对于绝大多数的FPGA初学者来说,时钟都是一个非常重要的学习项目,很多开发板需要特定的时钟来驱动,而我们赛灵思和Altera也内部集成了PLL锁相环功能,来输出特定的时钟,但对于时钟要求不高的设计,一个分频器就可以实现功能。
可能在FPGA的学习中,偶数分频对于我们更加熟悉,因为它代码原理简单,只需要几个计数器就可以实现,也不需要时钟延时,但奇数分频就相对复杂一些。所以这篇文章我想以自己的理解来讲一下奇数分频。可能有人会觉得奇数分频会出现以下几个问题:
1.奇数分频波形的占空比不是50%;
2.奇数分频占空比达到50%时,会有较大的时间延时。
我想说,上面两个问题都是不存在的!奇数分频可以实现50%占空比而且经过测试时间延时不大!
下面我想以三分频为例,与大家分享一下奇分频:
其基本原理就是一个2:3的分频器得到clk_p,然后对此2:3分频器延时半个时钟周期(采用下降沿触发)得到clk_n,两个信号clk_p与clk_n相与可得50%占空比的五分频。
代码如下:
module CLK_DIV5(
input clk_i,
input rst_n,
output clk_o
);
reg [