1 设计一个占空比为 50 % 的五分频时钟
设计5分频时钟时,由于属于奇数分频,故需要添加两种计数器和时钟进行逻辑组合操作。
首先设计时钟上升沿有效的计数器进行计数,计数到 5 (要进行分频的个数)
置零。
时钟 clk1 是上升沿有效,初始为 高,计数到 大于 5/2 (奇数计数的一半)时拉低,计数器为0时在拉高。
另一个计数器设置时钟下降沿有效,同理计数到 5 置零 。
时钟 clk2 为下降沿有效,逻辑同时钟 clk1 。
此处 时钟 clk1 和 clk2 占空比都为 40% 。二者不同为时钟 clk2 相比于 clk1 要晚半个时钟才会改变值,所以最终时钟 clk_out 将 clk1 和 clk2 进行或逻辑就能得到最终的占空比为 50% 的5分频时钟。
verilog 设计代码如下图所示 :
TB 代码如下图所示 :
仿真波形图如图所示 :
图中蓝色信号为最终的占空比为50%的5分频时钟,可以看到,从 510ns开始复位拉高,之后为有效信号。从 510 ns 到 610 ns 为 clk_out 的一个时钟周期,等于输入时钟 clk 的五个时钟周期,同时 clk_out 的占空比为 50%。
2 设计一个占空比为 50 % 的六分频时钟
设计一个占空比为 50 % 的偶数分频时钟比设计奇数分频时钟要简单。只需要设计一个计数器和一个时钟即可。(二者都是靠时钟上升沿触发的,无需下降沿)
具体 前端 verilog 代码如图所示 :
tb 文件和 1 中类似,不过多叙述 。
仿真波形图如下图所示 :
延伸
若想设计其他任意的奇数偶数分频器,则只需要将计数逻辑和时钟逻辑中的判定数改成需要进行分频的数即可。