意图
我想使用Verilog制作一个打地鼠模块,为了完成这项工作,我想使用10个开关作为用户点击地鼠的输入信号,如果信号出现(开关状态0->1或1->0),并且相应的LED亮起(每个周期只有一个LED亮起,每个周期为1秒),则得分计数器加1。
我的变量的一部分
下面是我的一些变量。
input [9:0]SW; // 10 switch input as an array
output reg[9:0] LED; // 10 LED output as an array
reg [5:0] score; // the score counter, in the beginning initialize to 0
reg [4:0] clk; // this clk is a 1 Hz clock
为什么我不能这样做
完成此操作后,分数计数器只是随机跳到不同的值。我该怎么做才能修复?
always@(SW[0])begin // if switch 0 goes from 0 to 1 or 1 to 0
if(LED[0]) // if LED lights up
begin
score=score+1; // score counter +1
end
end
我会看看数字故障过滤器,我总是在这种用例中使用它们。或者,你可以看看模拟故障滤波器。通常我实现这样的数字:
- 我有一个数字参数,例如0。。255
- 我创建了一个具有必要位数的计数器(这里例如8)
- 当输入为高时,我将计数器增加1直到参数值
- 当输入为低时,我将计数器递减1至零
- 当计数器达到参数值时,我想输入真的很高,这不仅仅是一个小故障
- 当计数器达到零时,我想输入真的很低,这不仅仅是一个小故障