分频器的Verilog实现
写在前面的话:找工作过程中经常遇到的分频类型,在此简单整理,代码亲自验证过,如有问题,烦请告知。
1.偶分频
偶分频比较简单,对于N(N为偶数)分频,只需计数到N/2-1,然后时钟翻转、计数清零,如此循环就可以得到N(偶)分频。
(二分频)
module div_2 (q,clk,rst_n);
input rst_n;
input clk;
output reg q;

always @ (posedge clk or negedge rst_n)beginif(rst_n==1'b0)q<=1'b0; elseq<=~q; end

endmodule

二分频仿真结果图
(六分频)
module div_6(clk_out,clk,rst_n);

 output clk_out;
input clk;
input rst_n;reg [1:0] cnt;
reg clk_out;parameter N=6;always @ (posedge clk or negedge rst_n)beginif(rst_n==1'b0)begincnt <= 0;clk_out<= 0;endelse  if(cnt==N/2-1)  begin clk_out<=~clk_out; cnt<=0; endelsecnt <= cnt + 1'b1;end

endmodule

六分频仿真结果图
2.奇分频(占空比50%)
实现奇数(N)分频,分别用上升沿计数到(N-1)/2,再计数到N-1;用下降沿计数到(N-1)/2,再计数到N-1,得到两个波形,然后把它们相或即可得到N分频。
(3分频)
module div_3 (q,clk,rst_n);
output q;
input rst_n;
input clk;

reg q1,q2;
reg [1:0] count1,count2;always@(posedge clk or negedge rst_n)begin if(rst_n==1'b0)beginq1<=1'b0;count1<=2'b00;endelse if(count1==0)beginq1<=~q1;count1<=count1+1'b1;endelse if(count1==1)beginq1=~q1;count1<=count1+1'b1;endelse count1<=2'b00;endalways@(negedge clk or negedge rst_n)begin    if(rst_n==1'b0)beginq2<=1'b0;count2<=2'b00;endelse if(count2==0)beginq2<=~q2;count2<=count2+1'b1;endelse if(count2==1'b1)beginq2=~q2;count2<=count2+1'b1;endelse count2<=2'b00;
end
assign q=q1|q2;

endmodule

3分频仿真图
(5分频)//5分频原理与3分频一样,只不过代码设计上简化了一点,不影响结果。
module test(
input clk,
input rst_n,
output q
);

reg [2:0] cnt;
reg q1, q2;always@(posedge clk or negedge rst_n) beginif(~rst_n) begincnt <= 0;endelse if(cnt <3'd4) begincnt <= cnt + 1'b1;endelse cnt <= 0;endalways@(posedge clk or negedge rst_n) beginif(~rst_n) beginq1 <= 1'b1;endelse if(cnt == 3'd1) beginq1 <= ~q1;endelse if(cnt == 3'd4) beginq1 <= ~q1;endelse  q1 <= q1;
endalways@(negedge clk or negedge rst_n) beginif(~rst_n) beginq2 <= 1'b1;endelse q2 <= q1;
endassign q = q1 | q2;

endmodule


5分频仿真结果图
3.占空比不为50%
在此拿三分频举例,分别给出1/3、2/3占空比例子。对于任意占空比首先要知道占空比是高电平与周期之比,然后通过计数产生高电平个数、取反,再计数到N-1取反,计数器置零。
(1)占空比2/3
module div3(clk,rst_n,q);

input            clk;input           rst_n;output    reg q;reg [1:0] cnt;always@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)begincnt<=2'd0;q<=0;endelse if(cnt==2'd0)beginq<=~q;cnt<=cnt+1'b1;endelse if(cnt==2'd2)beginq<=~q;cnt<=2'd0;endelse beginq<=q;cnt<=cnt+1'b1;end
end

endmodule

占空比2/3仿真图
(2)占空比1/3
module div3(clk,rst_n,q);

input            clk;input           rst_n;output    reg q;reg [1:0] cnt;always@(posedge clk or negedge rst_n)beginif(rst_n==1'b0)begincnt<=2'd0;q<=0;endelse if(cnt==2'd1)//代码仅此处计数值不同beginq<=~q;cnt<=cnt+1'b1;endelse if(cnt==2'd2)beginq<=~q;cnt<=2'd0;endelse beginq<=q;cnt<=cnt+1'b1;end
end

endmodule

占空比1/3
通过以上1/3、2/3可以知道对于其余不同占空比N分频应该可以有所理解。

分频器的Verilog实现相关推荐

  1. 分频器的Verilog实现(偶数分频、奇数分频)

    偶数分频器的Verilog实现 核心思想 对于占空比为50%.分频系数为N的偶数分频,其核心思想是使用计数范围为[0, (N/2)-1]的计数器,每当计数器计到最大值时输出时钟翻转一次,其余时间保持不 ...

  2. 分频器的Verilog设计

    分频器是指使输出频率为输入频率的M分之一的数字电路,其中M为整数.下面介绍的是常用的50%占空比的分频器及Verilog代码: 偶分频 偶分频是指分频系数M为偶数的分频器. 现以4分频为例,即M=4. ...

  3. 五分频器(Verilog)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 标题设计思路如下: 标题设计思路如下: 采用计数器进行计数,在时钟上升沿进行加 1 操作,计数器的值为 0.1 时,输出时钟 ...

  4. 【实验室学习】时钟分频器,2、3、4、8分频 verilog实现

    0引言 记录时钟分频器的Verilog代码编写,主要掌握分频器设计思路 1设计----2.3.4.8分频 2.4.8分频设计较为容易: 2分频-设计一个1位的寄存器,当原时钟上升沿时取反即可 代码展示 ...

  5. 分频器 偶分频 奇分频 任意分频

    今天学习了一下分频器及其Verilog实现 1.偶分频 实现一个NUM_DIV分频的分频器,下面代码中 NUM_DIV= 6,占空比50% 设计代码 module divider_even(clk,r ...

  6. 8分频verilog线_Verilog设计分频器(面试必看)

    分频器是指使输出信号频率为输入信号频率整数分之一的电子电路.在许多电子设备中如电子钟.频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种 ...

  7. Verilog设计分频器(面试必看)

    分频器是指使输出信号频率为输入信号频率整数分之一的电子电路.在许多电子设备中如电子钟.频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种 ...

  8. n分频器 verilog_基于Verilog的分频器实现

    分频器是指使输出信号频率为输入信号频率整数分之一的电子电路.在许多电子设备中如电子钟.频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种 ...

  9. n分频器 verilog_时钟分频系列——分数分频电路的Verilog实现

    IC君的第47篇原创文章 上一篇文章时钟分频系列--偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家聊聊分数分频的具体设计实现. 一个分 ...

最新文章

  1. IntelliJ IDEA 小技巧: Stream Trace 功能!
  2. 2021-07-29 labelme注释、分类和Json文件转化(转化成彩图mask)
  3. oracle数值类型--LOB+ROWID/UROWID
  4. 自动装箱和==和equals
  5. java实现Comparable接口和Comparator接口,并重写compareTo方法和compare方法
  6. 第三十四期:花了一个星期,我终于把RPC框架整明白了!
  7. (计算机组成原理)第二章数据的表示和运算-第二节5:定点数乘法运算(原码/补码一位乘法)
  8. PAT:组个最小数(C++)
  9. jinja2模板注入_Flask(Jinja2) 服务端模板注入漏洞
  10. c语言无符号扩展,C语言中的无符号扩展和带符号扩展
  11. 算法——排序——堆排序图解动画
  12. 排版侠html怎么复制,排版侠| 3分钟完美编辑变排版达人
  13. matlab中uigetfile函数使用方法 (选择文件提示框)
  14. 对训练样本分布不均的思考
  15. 极米newz6x和newz8x区别 极米newz6x和newz8x哪款好 哪个性价比高
  16. [SUCTF 2019]EasySQL1
  17. 开发错题集(陆续更新...)
  18. 微信开发者工具元素快速定位审查元素
  19. refresh方法_Android Shake to Refresh教程
  20. 英特尔发布重大技术架构的改变和创新,面向CPU、GPU和IPU

热门文章

  1. bp1048仿真器的使用
  2. 从普通回溯到三色标记法法
  3. 今日早报 每天一分钟知晓天下事 3-13
  4. 原创 | GPT-4 震撼登场,惊艳四座,然而...
  5. “创意不是想出来的”
  6. 机构树的数据库设计与查询构想-使用递归算法
  7. 玩转NVIDIA Jetson AGX Xavier(3)--- 使用JetPack 4.1为Xavier刷机
  8. 微信小程序点击图片预览真机无法显示的问题
  9. 信号类型(雷达)——连续波雷达(二)
  10. CSS---各种分割线