Verilog按键控制数码管代码求助

2019-07-15 23:23发布

本帖最后由 徐林如风 于 2015-10-21 00:39 编辑
  1. module key_led(key_add, key_sub, Rst_n, out_sel, out_bit);

  2.         input key_add;
  3.         input key_sub;
  4.         input Rst_n;
  5.         output [5:0]out_sel;
  6.         output [7:0]out_bit;
  7.         
  8.         reg [5:0]out_sel;     //数码管段控制
  9.         reg [7:0]out_bit;     //数码管位控制
  10.         reg [3:0]counter;
  11.         
  12.         always@(negedge key_add or negedge key_sub or negedge Rst_n)
  13.                 begin
  14.                         if (Rst_n == 0)
  15.                                 counter <= 4'd0;
  16.                         else if (key_add == 0)
  17.                                 counter <= counter + 1'b1;
  18.                         else if (key_sub == 0)
  19.                                 counter <= counter - 1'b1;
  20.                         else
  21.                                 counter <= counter;
  22.                 end
  23.                         
  24.         always
  25.                 begin
  26.                         out_sel = 6'b011111;
  27.                 end
  28.                
  29.         always@(counter)
  30.                 begin
  31.                         case (counter)
  32.                                 4'd0: out_bit = 8'b1100_0000;
  33.                                 4'd1: out_bit = 8'b1111_1001;
  34.                                 4'd2: out_bit = 8'b1010_0100;
  35.                                 4'd3: out_bit = 8'b1011_0000;
  36.                                 4'd4: out_bit = 8'b1001_1001;
  37.                                 4'd5: out_bit = 8'b1001_0010;
  38.                                 4'd6: out_bit = 8'b1000_0010;
  39.                                  4'd7: out_bit = 8'b1111_1000;
  40.                                 4'd8: out_bit = 8'b1000_0000;
  41.                                 4'd9: out_bit = 8'b1001_1111;
  42.                                 default: out_bit = 8'b1111_1111;
  43.                         endcase
  44.                 end
  45.                
  46. endmodule
  47.                  
复制代码



一个很简单的功能,就是设定counter为计数器,key_add电平变化时counter加一,key_sub电平变化时counter减一,然后把counter的数值送到数码管中显示出来。在运行的时候总是出现一些很诡异的问题,不知是何原因,还请各位大神帮忙看看,谢谢了!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。