【发布时间】:2017-01-20 17:05:35
【问题描述】:
我正在 Nexys4 FPGA 上编写秒表程序。我可以启动、停止和重置秒表,但在实现增量功能时遇到了问题。增量功能是一个按钮,当按下该按钮时,时钟将增加 1 毫秒。因此,如果七段显示器显示 1:002,按下增量按钮,显示器将显示 1:003。这是我的计数器代码的 sn-p:
always @ (posedge (clk), posedge(rst))
begin
if (rst == 1'b1)begin
Dig0 <= 4'b0000;
Dig1 <= 4'b0000;
Dig2 <= 4'b0000;
Dig3 <= 4'b0000;
end
//increment if inc
else if(state == 2'b11)// && Dig3 < 4'b1001)begin
begin
Dig0 <= Dig0 + 4'b0001;
state <= 2'b00;
end
//only continue if Cen is 01 & not inc
else if(Cen == 2'b01)begin
//add 1 to first digit up till 9
Dig0 <= Dig0 + 1'b1;
//reset if == 10
if(Dig0 > 4'b1001)begin
Dig0 <= 4'b0000;
//add 1 to second digit (when first resets) up till 9
Dig1 <= Dig1 + 1'b1;
end
//reset if == 10
if(Dig1 == 4'b1010)begin
Dig1 <= 4'b0000;
//add 1 to third digit (when second reset) up till 9
Dig2 <= Dig2 + 1'b1;
end
//reset if == 10
if(Dig2 == 4'b1010)begin
Dig2 <= 4'b0000;
//add 1 to fourth digit (when third reset) up till 9
Dig3 <= Dig3 + 1'b1;
end
//reset if == 10
if(Dig3 > 4'b1001)begin
Dig3 <= 4'b0000;
end
end
Cen 来自一个状态机,其中状态 2'b11 是递增,2'b01 是计数,2'b00 是停止。我不知道如何让它只增加一点。每当我点击增量时,就会永远计数。有什么想法吗?
谢谢
【问题讨论】:
-
拥有 1 个计数器并将其解码为显示数字不是更容易吗?整理代码缩进也会更容易阅读和发现错误。
-
正如摩根所说,修复你的缩进。