最近刚开始学习FPGA,准备使用verlog实现一些分频电路,偶数倍分频比较好操作,奇数倍分频相对来说要复杂一点点,我在网上查阅了一些资料,我来用我自己的话总结下。
1、最简单最好理解的实现(不推荐)
使用一个计数器 对基准时钟的上升沿和下降沿计数。计数范围 [0 N-1] , 在N-1对输出信号进行翻转并复位计数值。 以三分频为例子,下面给出代码理解一下
//三分频实验
reg div3_o_r = 0;
reg [1:0] div3_cnt;
assign div3_o = div3_o_r;
always @(posedge clk_i or negedge clk_i or negedge rst_n_i)
if(!rst_n_i)
div3_cnt <= 1'd0;
else if(div3_cnt==2) begin //0-2 中已经包含三次计数
div3_o_r <= ~div3_o_r;
div3_cnt <= 1'b0;
end
else
div3_cnt <= div3_cnt + 1;
仿真结果:
我认为这是最简单的一种方案,可是网上几乎没有人这么