FPGA学习笔记. 二分频和三分频
二分频和三分频
二分频:将输入频率CLK分为原来的 1/2 。
实现:在每次CLK的上升沿或下降沿将输出翻转。
三分频:
1/3占空比。
实现:可使用上升沿或下降沿计数生成输出。需要一个两位计数器。
- 第一个CLK,输出Q翻转,计数器加1;
- 第二个CLK,输出Q不变,计数器加1;
- 第三个CLK,输出Q翻转,计数器清零。
50%占空比。
实现:将上升沿生成的Q1和下降沿生成的Q2两个1/3占空比相或。
code:
module DividerMultiple(
input clk_i,
input rst_n_i,
output div2_o,
output div3_o,
output [:]div3p_o,
output [:]div3n_o
// output [1:0]div3_r,
// output div3_75
);
//***************
reg div2_o_r;
//****************
reg [:] pos_cnt;
reg [:] neg_cnt;
reg div3_o_r0;
reg div3_o_r1;
//reg div3p_o;
//reg div3n_o;
//reg [1:0]div3_r;
//reg div3_75;
//******************* //always@(posedge clk_i or negedge rst_n_i)
//begin
// if(!rst_n_i)begin
// div3_r <= 2'b00;
// div3_75 <= 1'b0;
// end
// else begin
// if(div3_r == 2'b00) begin
// div3_75 <= ~div3_75;
// div3_r <= div3_r + 1'b1;
// end
// else if(div3_r == 2'b10) begin
// div3_75 <= ~div3_75;
// div3_r <= 2'b00;
// end
// else
// div3_r <= 2'b00;
// end
//end //two divided-frequency
always@(posedge clk_i or negedge rst_n_i)
begin
if(!rst_n_i)begin
div2_o_r <= 'b0;
end
else begin
div2_o_r <= ~div2_o_r;
end
end //three divided-frequency
always@(posedge clk_i or negedge rst_n_i) //上升沿计数
begin
if(!rst_n_i)begin
pos_cnt<='b00;
end
else begin
if(pos_cnt=='d2)
pos_cnt<='b00;
else
pos_cnt<=pos_cnt+'b1;
end
end
always@(negedge clk_i or negedge rst_n_i) //下降沿计数
begin
if(!rst_n_i)begin
neg_cnt<='b00;
end
else begin
if(neg_cnt=='d2) begin
neg_cnt<='b00;
end
else
neg_cnt<=neg_cnt+'b1;
end
end
always@(posedge clk_i or negedge rst_n_i)
begin
if(!rst_n_i)
div3_o_r0<='b0;
else
if(pos_cnt<'d1) div3_o_r0<=1'b1;
else div3_o_r0<='b0;
end
always@(negedge clk_i or negedge rst_n_i)
begin
if(!rst_n_i)
div3_o_r1<='b0;
else
if(neg_cnt<'d1) div3_o_r1<=1'b1;
else div3_o_r1<='b0;
end assign div2_o = div2_o_r;
assign div3_o = div3_o_r0 | div3_o_r1; //相或
assign div3p_o = div3_o_r0;
assign div3n_o = div3_o_r1; endmodule
testbench
module Divider_Multiple_tb;
// Inputs
reg clk_i;
reg rst_n_i;
// Outputs
wire div2_o;
wire div3_o;
wire [:]div3p_o;
wire [:]div3n_o;
// Instantiate the Unit Under Test (UUT)
DividerMultiple uut (
.clk_i(clk_i),
.rst_n_i(rst_n_i),
.div2_o(div2_o),
.div3_o(div3_o) ,
.div3p_o(div3p_o) ,
.div3n_o(div3n_o)
);
initial begin
// Initialize Inputs4
clk_i = ;
rst_n_i = ;
// Wait 100 ns for global reset to finish
#; rst_n_i=;
end
always
begin
# clk_i=~clk_i;
end
endmodule
仿真结果:

FPGA学习笔记. 二分频和三分频的更多相关文章
- 【Unity Shaders】学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert
[Unity Shaders]学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert 转载请注明出处:http://www.cnblogs.com/-867259 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第三章:变换
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第三章:变换 学习目标 理解如何用矩阵表示线性变换和仿射变换: 学习在 ...
- FPGA学习笔记(二)——FPGA学习路线及开发流程
###### [该随笔部分内容转载自小梅哥] ######### 一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -& ...
- 20145316许心远《Java学习笔记》第三周总结
20145316许心远<Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: 类定义时使用class关键字 如果要将x绑定到新建的对象上,可以使用"="制定 ...
- MySQL实战45讲学习笔记:第三十九讲
一.本节概况 MySQL实战45讲学习笔记:自增主键为什么不是连续的?(第39讲) 在第 4 篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧 ...
- Java菜鸟学习笔记--数组篇(三):二维数组
定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...
- 【EF6学习笔记】(三)排序、过滤查询及分页
本篇原文地址:Sorting, Filtering, and Paging 说明:学习笔记参考原文中的流程,为了增加实际操作性,并能够深入理解,部分地方根据实际情况做了一些调整:并且根据自己的理解做了 ...
- 学习笔记-AngularJs(三)
学习笔记-AngularJs(二)写了个所有程序语言入门时都必须要写的Hello World,那么从现在开始做那个之前说过的互联网大佬介绍的学习例子,当然这里开始会慢慢按照之前说过的目录来搭建这个学习 ...
- FPGA学习笔记(三)—— 数字逻辑设计基础(抽象的艺术)
FPGA设计的是数字逻辑,在开始用HDL设计之前,需要先了解一下基本的数字逻辑设计-- 一门抽象的艺术. 现实世界是一个模拟的世界,有很多模拟量,比如温度,声音······都是模拟信号,通过对模拟信号 ...
随机推荐
- PAT甲题题解-1055. The World's Richest (25)-终于遇见一个排序的不水题
题目简单,但解题的思路需要转换一下,按常规思路肯定超时,推荐~ 题意:给出n个人的姓名.年龄和拥有的钱,然后进行k次查询,输出年龄在[amin,amx]内的前m个最富有的人的信息.如果财富值相同就就先 ...
- thinkphp在wamp 配置去掉url中index.php方法
http://blog.csdn.net/youmypig/article/details/45008971
- 20135220谈愈敏Linux Book_5
第五章 系统调用 内核提供了用户进程与内核进行交互的一组接口. 应用程序发出请求->内核负责满足 目的:保证系统稳定可靠 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层 ...
- PHP 执行命令时sudo权限的配置
PHP 执行命令时sudo权限的配置 1.先写一个PHP文件 <?php system('whoami'); 先看自己的apache2的用户是谁,下面是笔者的截图,笔者使用apche2的用户是w ...
- 贝叶斯先验解释l1正则和l2正则区别
这里讨论机器学习中L1正则和L2正则的区别. 在线性回归中我们最终的loss function如下: 那么如果我们为w增加一个高斯先验,假设这个先验分布是协方差为 的零均值高斯先验.我们在进行最大似然 ...
- Objective-C语言--self和super关键字解析
看代码: @implementation Son : Father - (id)init{ self = [super init]; if (self){ } return self; } self是 ...
- 从零开始学Kotlin-操作符(3)
从零开始学Kotlin基础篇系列文章 冒号操作符 ":" 和 "::" :操作符用来定义变量.类的继承等 var name: String//定义变量 clas ...
- Java的4种保留4位小数的方法(转)
上网查到的4种方法 其实刚学java……谁知道java里面的这么多方法啊……java里面重要的包本来就不少啊 ……跟我学粤语的小徒弟问我的东东…… 写两种方式……直接在main函数里面写的.还有就是利 ...
- PAT 甲级 1029 Median
https://pintia.cn/problem-sets/994805342720868352/problems/994805466364755968 Given an increasing se ...
- Hyper-V下WINXP无网卡问题解决