我想用3个显示器(abc)创建一个0-999计数器,显示三个显示器中的那些,数十和数百。
我写了这个程序但是9到10之间有一个不合适的值,那就是' A'。我会很高兴任何人都可以帮我修理它。
module counter(clk,reset,a,b,c);
input clk,reset;
output [3:0] a,b,c;
reg[3:0] a,b,c;
initial begin
a=0;
b=0;
c=0;
end
always@(posedge clk)
if(reset) begin
a<=0;
b<=0;
c<=0;
end
else if(c>9) begin
c<=0;
b<=b+1;
end
else if(b>9) begin
c<=0;
b<=0;
a<=a+1;
end
else if(a>9) begin
a<=0;
b<=0;
c<=0;
end
else
c<=c+1;
endmodule
答案 0 :(得分:0)
您的代码的设置方式是c
,b
和a
必须在翻转发生前从0到10进行计数。如果您考虑触发当前条件如何重置计数器,您会注意到计数值必须超过9,即在计数器重置之前的一个周期达到10,从而获得一些字符的额外周期(在此case十六进制10,这是A;如工具所述)。但是,在修复代码时,您需要小心触发翻转事件,因为将所有条件转换为小于8将无效。
答案 1 :(得分:0)
尝试更改所有&gt; to&gt; =所以在适当的时间发生翻转。