偶数2分频

 由偶数二分频波形可知,每次在时钟的上升沿,输出寄存器的状态进行翻转,就能得到二分频后的时钟。


代码如下:

module div2_clk
(
input       clk,
input       rst,output      clk_div);reg                          clk_div_r;
assign                       clk_div     =   clk_div_r;always@(posedge clk)
beginif(rst)beginclk_div_r   <=  1'b0;endelsebeginclk_div_r   <=  ~clk_div_r   ;end
endendmodule

二分频电路如下:

偶数N分频

方法:用模为N/2的计数器实现占空比为50%的偶数N分频时钟信号,计数器为N/2 - 1时,输出时钟寄存器状态翻转。

代码如下(div_coe代表分频数):

module even_div
#(parameter div_coe =   2)
(
input       clk,
input       rst,output      clk_div);localparam                   div_even    =    div_coe>>1;
reg                         clk_div_r;
reg   [div_even-1:0]        cnt;
assign                       clk_div     =   clk_div_r;always@(posedge clk)
beginif(rst)beginclk_div_r   <=  1'b0;cnt         <=  0;endelse if(cnt ==  div_even - 1)begin   clk_div_r   <=  ~clk_div_r;cnt         <=  0;endelsebegincnt         <=  cnt + 1;end
endendmodule

测试代码如下:

module tset_clk_div#(parameter div_coe = 6)( );reg     clk;
reg     rst;
wire    clk_div;initial
beginclk = 0;rst = 0;#50rst = 1;#25rst = 0;
end
always #5 clk = ~clk;even_div#div_coeU0
(
.clk(clk),
.rst(rst),.clk_div(clk_div));   endmodule

6分频仿真波形为:

N分频电路如下:

奇数N分频,要求分频后时钟占空比为50%

以3分频为例,在时钟clk的作用下,先产生占空比为1/3的时钟clk_div_r;然后时钟clk取反,得到时钟clk_n,在clk_n的作用下,产生占空比为1/3的时钟clk_div_r1;clk_div_r与clk_div_r1只差半个时钟周期,二者相或运算得到占空比为50%的三分频时钟。

总结产生时钟占空比为50%的奇数N分频时钟方法:
1、在时钟clk的作用下,计数器cnt在(N-1)/2以及N-1状态时,时钟寄存器clk_div_r进行状态翻转,得到占空比为[(N-1)/2]/N的分频时钟;
2、在取反后的时钟clk_n的作用下,计数器cnt1在(N-1)/2以及N-1状态时,时钟寄存器clk_div_r1进行状态翻转,得到占空比为[(N-1)/2]/N的分频时钟;
3、clk_div_r与clk_div_r1相或,得到占空比为50%的奇数N分频时钟

代码如下(div_coe代表分频数):

module odd_div
#(parameter div_coe =   3)
(
input       clk,
input       rst,output      clk_div);localparam                   div_odd     =    (div_coe - 1)>>1;
reg                         clk_div_r;
reg   [div_coe-1:0]         cnt;
reg                         clk_div_r1;
reg   [div_coe-1:0]         cnt1;
wire                        clk_n;
assign                       clk_n  =   ~clk;
assign                       clk_div     =   clk_div_r || clk_div_r1;always@(posedge clk)
beginif(rst)begincnt         <=  0;endelse if(cnt ==  div_coe - 1)begincnt         <=  0;endelsebegincnt         <=  cnt + 1;end
endalways@(posedge clk_n)
beginif(rst)begincnt1         <=  0;endelse if(cnt1 ==  div_coe - 1)begincnt1         <=  0;endelsebegincnt1         <=  cnt1 + 1;end
endalways@(posedge clk)
beginif(rst)beginclk_div_r   <=  1'b0;endelse if(cnt ==  div_odd)beginclk_div_r   <=  ~clk_div_r;endelse if(cnt == div_coe - 1)beginclk_div_r   <=  ~clk_div_r;end
endalways@(posedge clk_n)
beginif(rst)beginclk_div_r1   <=  1'b0;endelse if(cnt1 ==  div_odd)beginclk_div_r1   <=  ~clk_div_r1;endelse if(cnt1 == div_coe - 1)beginclk_div_r1   <=  ~clk_div_r1;end
endendmodule

需要注意的是:上述奇偶分频实现的时钟一般只用于应付面试。

分频电路的verilog实现相关推荐

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

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

  2. 8分频verilog线_时钟分频系列——分数分频电路的Verilog实现

    IC君的第47篇原创文章 (欢迎关注公众号 icstudy) 上一篇文章时钟分频系列--偶数分频/奇数分频/分数分频,IC君介绍了各种分频器的设计原理,其中分数分频器较为复杂,这一篇文章IC君再跟大家 ...

  3. FPGA笔试题解析(五):串并转换与奇分频电路

    题目:使用状态机实现序列检测器? 序列检测器的状态机实现,以前的博文写的很多,这里贴出两个简单易懂的,看需要的部分即可: 序列检测器的Moore状态机实现 序列检测器的Mealy状态机实现 题目:用V ...

  4. FPGA分频电路实现(奇数,偶数,小数半分频,任意分频)

    https://blog.csdn.net/weixin_43950612/article/details/104687942(简介明了,奇数,偶数,小数,任意分频) http://www.myexc ...

  5. 一看就会的奇偶分频电路

    目录 前言 题目 二分频电路 第一步:画波形图 第二步:写状态机 三分频电路--1/3占空比 第一步:画波形图 第二步:写状态机 三分频电路--1/2占空比 第一步:画波形图 第二步:写状态机 4/5 ...

  6. 【FPGA】分频电路设计(Verilog HDL设计)(良心博文)

    目录 前言 分频器分类 偶分频 奇分频 占空比为50%的奇分频 占空比不限定的奇数分频器 前言 虽然在实际工程中要产生分频时钟一般采用FPGA的时钟管理器来进行分频.倍频,通过设置一下IP核中的参数即 ...

  7. 【Verilog HDL 训练】第 11 天(分频电路)

    设计一个占空比50%的三分频电路. 针对这个分频器,博文的末尾会给出一个反面教材,这是我上次写的一个分频器,看起来很好,其实是不能综合的.针对其中的错误,我令立博文记录之:[ Verilog ]alw ...

  8. 题目:用Verilog实现三分频电路,要求输出50%占空比。

    题目:用Verilog实现三分频电路,要求输出50%占空比. module Div_three(input clk,input rst_n,output div_three ); reg [1:0] ...

  9. 一、verilog编写三分频电路

    1.目标:使用verilog编写三分频电路,要求占空比大小为50%. 2.方法:分别使用上升沿和下降沿计数cnt_p以及cnt_n,并且计数从0到N-1(N为分频的次数,此时为3):分别对clk_p以 ...

最新文章

  1. 为什么Tomcat的webapps目录下新建的目录不能访问html文件?
  2. kali 安装java jdk
  3. jquery实现滚动条滚动到一定高度导航固定不变
  4. Ethereum-EIPs
  5. php把excel转化为csv,php如何把excel转化为csv
  6. 用函数判断考试得分:
  7. 软件测试黑马程序员课后答案_软件测试课后答案
  8. 为什么饿着饿着就不饿了
  9. python后台Flask 快速入门
  10. BX+CX+loop
  11. 我的 HTTP/1.1 好慢啊!
  12. 《白帽子讲web安全》第一篇 世界观安全
  13. opencv 摄像头基本使用
  14. u盘虚拟启动cd linux,[CDLinux]制作U盘CDLinux系统启动盘
  15. FindBugs 汇总(持续修改)
  16. ティラミス / 龙枪
  17. 一台电脑控制多部手机怎么实现
  18. oracle归档日志存储路径,oracle 归档日志路径三个参数DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST和LOG_ARCHIVE_DEST_n的关系...
  19. 关于人发声的原理及模型
  20. 米思齐触控+RGB灯实现红绿蓝灯循环切换

热门文章

  1. 服务器内存占用过高处理步骤
  2. X洛克D烦恼[HDTC-720P.MKV][638MB][国语中英]
  3. html5水墨背景,好看的水墨画背景图片
  4. Oracle database oracle12c 完全卸载 一键卸载
  5. sangoma 蓝色逍遥盒
  6. 折腾Transmission实现固定IP服务器BT做种教程
  7. A. Banana 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
  8. 蓝桥杯单片机——中断系统(7)
  9. ac1900 linksys 恢复_AC1900路由器怎么恢复出厂设置?
  10. R手册(Common)--R语言入门