本文主要是介绍Verilog实现分频器时,计数注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本来我是想设计一个四分频,但是结果却是六分频?
后来仔细分析了一下波形后,发现这是时序电路
代码:
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语句中实现反转
这篇关于Verilog实现分频器时,计数注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!