⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.v

📁 dds设计
💻 V
字号:
//Key.v   v0.92   2006-04-05
//8按键扫描输入,与FPGA母板配套
//每个键可以独立设置为四种按键模式ModeIn(32'hxxxxxxxx)之一
//一种是琴键模式(4'h1)[//需用模式//],一种是乒乓键模式(4'h2)
//一种是单脉冲模式(4'h4),一种是连续脉冲键模式(4'h8)
//其它按键模式均为禁用,输出0
//有效按键:每按下并弹起算一次有效按键
//琴键模式:按下输出高电平1,不按输出低电平0
//乒乓键模式:每按动一次键,输出键值翻转一次
//单脉冲模式:一次有效按键输出一个时钟宽度的正脉冲
//连续脉冲模式:一次有效按键先输出一个时钟宽度的正脉冲,
//              若按键保持1s(DELAY)以上,则以10Hz(PF)的频率输出正脉冲序列
//按键和释键的去抖时间均为10ms(LEN)
//系统时钟:Clk用M为单位输入
module Key(clk,keyin,keyout);
input clk;
input[7:0] keyin;
output[7:0] keyout;
reg [7:0] nkeyout;
reg[16:0] scan;

//parameter n=100000;           //实际
parameter n=1000;            //测试用
always@(posedge clk)
begin
   if(keyin!=8'hff)
      if(scan!=n)
          scan=scan+1'b1;
      else
          scan=scan;
    
   else if(keyin==8'hff)
      if(scan!=0)
        scan=scan-1'b1;
      else
        scan=scan;
end
  
always@(posedge clk)
begin
   
   if((scan==n)&&(keyin!=8'hff))
       begin         
         nkeyout=keyin;
       end
   else if((scan==0)&&(keyin==8'hff))
        begin  
         nkeyout=8'h00;
        end
end
assign keyout=nkeyout;
endmodule   

⌨️ 快捷键说明

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