📄 key.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 + -