key_measure.v

来自「基于FPGA的VHDL编程实现各种音频信号」· Verilog 代码 · 共 58 行

V
58
字号
// key_measure.v
//功能:消除抖动
//     每触发按一次键,键值加1
module key_measure(
                    clk,
                    rst_n,     //高电平复位
                    key_in,
                    key_out
                   );
input  clk;
input  rst_n;
input  key_in;
output [3:0]   key_out;


//--中间变量声明-----
reg  [16:0]  cnt;
reg          dout1,dout2,dout3;
wire          key_done;

always @(posedge clk)
begin
if (!rst_n)
    cnt<=0;
else
    cnt<=cnt+'d1;
end

always @(posedge cnt[16])
begin
      dout1<=key_in;
      dout2<=dout1;
      dout3<=dout2;
end
assign key_done=dout1&dout2&dout3;

//键值输出
reg    [3:0]   key_temp;
always @(posedge key_done or negedge rst_n)
begin
       if(!rst_n)
         key_temp<='d0;
       else
         if(key_temp>=4'd8)
            key_temp<=4'd1;
         else
            key_temp<=key_temp+'d1;

end

assign key_out=key_temp;






endmodule

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?