参照网上资料写了个6分频程序,仿真也是对的。程序如下:
always @(posedge clk or negedge reset)
begin
if(!reset)
begin
k <=4'd0;
out <=1'b0;
end
else
begin
if(k==2)
begin
k <=4'd0;
out <=~out;
end
else
k <=k+1;
end
但是自己就是弄不明白:
N/2-1 = 6/2-1 =2,也就是计数到2时输出波形翻转,按我的理解,第0个CLK上升沿到来时和第1个clk上升沿到来时,程序都是执行k=k+1 ,此时k=2。在第2个clk上升沿到来时,程序就if(k==2)成立执行k <=0,和波形翻转了。这样不就是2个clk输出波形就翻转了吗,整个周期算出来应该是4分频啊 ? 我哪理解错了 ?