正在尝试使用Verilog检测交换机更改

  • 本文关键字:交换机 Verilog verilog
  • 更新时间 :
  • 英文 :


意图

我想使用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至零
  • 当计数器达到参数值时,我想输入真的很高,这不仅仅是一个小故障
  • 当计数器达到零时,我想输入真的很低,这不仅仅是一个小故障

最新更新