PS2键盘编码Verilog源程序Word格式文档下载.docx
- 文档编号:22499839
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:8
- 大小:15.84KB
PS2键盘编码Verilog源程序Word格式文档下载.docx
《PS2键盘编码Verilog源程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《PS2键盘编码Verilog源程序Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
//接收到数据后,波特率时钟启动信号置位
wireclk_bps;
//clk_bps的高电平为接收或者发送数据位的中间采样点
ps2scanps2scan(.clk(clk),//按键扫描模块
.rst_n(rst_n),
.ps2k_clk(ps2k_clk),
.ps2k_data(ps2k_data),
.ps2_byte(ps2_byte),
.ps2_state(ps2_state)
);
speed_selectspeed_select(.clk(clk),
.rst_n(rst_n),
.bps_start(bps_start),
.clk_bps(clk_bps)
my_uart_txmy_uart_tx(.clk(clk),
.clk_bps(clk_bps),
.rx_data(ps2_byte),
.rx_int(ps2_state),
.rs232_tx(rs232_tx),
.bps_start(bps_start)
Endmodule
moduleps2scan(clk,rst_n,ps2k_clk,ps2k_data,ps2_byte,ps2_state);
output[7:
//1byte键值,只做简单的按键扫描
outputps2_state;
//键盘当前状态,ps2_state=1表示有键被按下
//------------------------------------------
regps2k_clk_r0,ps2k_clk_r1,ps2k_clk_r2;
//ps2k_clk状态寄存器
//wirepos_ps2k_clk;
//ps2k_clk上升沿标志位
wireneg_ps2k_clk;
//ps2k_clk下降沿标志位
always@(posedgeclkornegedgerst_n)begin
if(!
rst_n)begin
ps2k_clk_r0<
=1'
b0;
ps2k_clk_r1<
ps2k_clk_r2<
end
elsebegin//锁存状态,进行滤波
=ps2k_clk;
=ps2k_clk_r0;
=ps2k_clk_r1;
assignneg_ps2k_clk=~ps2k_clk_r1&
ps2k_clk_r2;
//下降沿
reg[7:
0]ps2_byte_r;
//PC接收来自PS2的一个字节数据存储器
0]temp_data;
//当前接收数据寄存器
reg[3:
0]num;
//计数寄存器
num<
=4'
d0;
temp_data<
=8'
elseif(neg_ps2k_clk)begin//检测到ps2k_clk的下降沿
case(num)
4'
d0:
=num+1'
b1;
d1:
begin
temp_data[0]<
=ps2k_data;
//bit0
d2:
temp_data[1]<
//bit1
d3:
temp_data[2]<
//bit2
d4:
temp_data[3]<
//bit3
d5:
temp_data[4]<
//bit4
d6:
temp_data[5]<
//bit5
d7:
temp_data[6]<
//bit6
d8:
temp_data[7]<
//bit7
d9:
//奇偶校验位,不做处理
d10:
//num清零
default:
;
endcase
end
regkey_f0;
//松键标志位,置1表示接收到数据8'
hf0,再接收到下一个数据后清零
regps2_state_r;
//键盘当前状态,ps2_state_r=1表示有键被按下
always@(posedgeclkornegedgerst_n)begin//接收数据的相应处理,这里只对1byte的键值进行处理
key_f0<
ps2_state_r<
elseif(num==4'
d10)begin//刚传送完一个字节数据
if(temp_data==8'
hf0)key_f0<
elsebegin
key_f0)begin//说明有键按下
ps2_byte_r<
=temp_data;
//锁存当前键值
0]ps2_asci;
//接收数据的相应ASCII码
always@(ps2_byte_r)begin
case(ps2_byte_r)//键值转换为ASCII码,这里做的比较简单,只处理字母
8'
h15:
ps2_asci<
h51;
//Q
h1d:
h57;
//W
h24:
h45;
//E
h2d:
h52;
//R
h2c:
h54;
//T
h35:
h59;
//Y
h3c:
h55;
//U
h43:
h49;
//I
h44:
h4f;
//O
h4d:
h50;
//P
h1c:
h41;
//A
h1b:
h53;
//S
h23:
h44;
//D
h2b:
h46;
//F
h34:
h47;
//G
h33:
h48;
//H
h3b:
h4a;
//J
h42:
h4b;
//K
h4b:
h4c;
//L
h1z:
h5a;
//Z
h22:
h58;
//X
h21:
h43;
//C
h2a:
h56;
//V
h32:
h42;
//B
h31:
h4e;
//N
h3a:
h4d;
//M
assignps2_byte=ps2_asci;
assignps2_state=ps2_state_r;
endmodule
WelcomeTo
Download!
!
欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PS2 键盘 编码 Verilog 源程序