Verilog实现分频器时,计数注意事项

 发布日期:2018-08-18 09:28:12  阅读次数:阅读数:35  来源:

本来我是想设计一个四分频,但是结果却是六分频?

后来仔细分析了一下波形后,发现这是时序电路

代码:

module fenpinqi(clk, clr, q0, state);
input clk, clr;
output reg q0;
output reg [1:0] state;
always@(posedge clk)
begin
if(clr)
begin
q0 <= 0;
state <=2'b00;
end
if(!clr)
begin
if(state == 2'b10)
begin
q0 <= ~q0;
state <= 2'b00;
end
else
begin
state <= state +2'b01;
q0 <= q0;
end

end
end

endmodule

波形图为:


在state变成0010(2)的时候,Q0并没有实现反转,而在下一上升沿反转,导致变成了六分频

这是因为,当state=01(1)的时候,不反转,并且state+1,要进入下一个上升沿才进入state=2的if语句中实现反转

如果您有好的新闻与建议,欢迎点击文章投稿

    发表评论

    电子邮件地址不会被公开。

  • 内容

  • 网名