西北工业大学 电子信息学院 08021103班
再接收到下一个数据后清零
reg ps2_state_r; //键盘当前状态,ps2_state_r=1表示有键被按下
reg[7:0] ps2_asci;
always @ (posedge clk2 or negedge rst_n) begin //接收数据的相应处理,这里只对1byte的键值进行处理 if(!rst_n) begin key_f0 <= 1'b0; ps2_state_r <= 1'b0; end
else if(num==4'd10) begin//刚传送完一个字节数据 if(temp_data == 8'hf0) key_f0 <= 1'b1; else begin
if(!key_f0) begin //说明有键按下 ps2_state_r <= 1'b1;
ps2_byte_r <= temp_data; //锁存当前键值
end else begin
ps2_state_r <= 1'b0; key_f0 <= 1'b0;
- 21 -
西北工业大学 电子信息学院 08021103班
end end end end
//接收数据的相应ASCII码 reg[3:0] data;
always @ (ps2_byte_r) begin
case (ps2_byte_r) //键值转换为ASCII码 8'h70:
begin
ps2_asci
8'b1100_0000;data<=4'b0000;end //0 8'h69:
begin
ps2_asci
8'b1111_1001;data<=4'b0001;end //1 8'h72:
begin
ps2_asci
8'b1010_0100;data<=4'b0010;end //2 8'h7A:
begin
ps2_asci
8'b1011_0000;data<=4'b0011;end //3 8'h6B:
begin
ps2_asci
8'b1001_1001;data<=4'b0100;end //4 8'h73:
begin
ps2_asci
8'b1001_0010;data<=4'b0101;end //5
- 22 -
<=
<=
<=
<=
<=
<=
西北工业大学 电子信息学院 08021103班
8'h74: begin ps2_asci 8'b1000_0010;data<=4'b0110;end //6 8'h6C:
begin
ps2_asci
8'b1111_1000;data<=4'b0111;end //7 8'h75:
begin
ps2_asci
8'b1000_0000;data<=4'b1000;end //8 8'h7D:
begin
ps2_asci
8'b1001_0000;data<=4'b1001;end //9 8'h79: begin data<=4'b1010;end//''+'' 8'h7B: begin data<=4'b1011;end//''-'' 8'h7C: begin data<=4'b1100;end//''*'' 8'h4A: begin data<=4'b1101;end//''/'' 8'h5A: begin data<=4'b1110;end//''='' /*
//数字小键盘的键码 8'h70 //0 8'h69 //1 8'h72 //2 8'h7A //3 8'h6B //4 8'h73 //5 8'h74 //6
- 23 -
<=
<=
<=
<=
西北工业大学 电子信息学院 08021103班
8'h6C //7 8'h75 //8 8'h7D //9 8'h71 //小数点 8'h5A //回车 8'h79 //加 8'h7B //减 8'h7C //乘 8'h4A //除 8'h77 //numlock键 8'h66 //删除键 */
default: ; endcase end
assign ps2_byte = ps2_asci; assign ps2_state = ps2_state_r; reg[5:0] i; reg[31:0] rsm_db;
- 24 -
西北工业大学 电子信息学院 08021103班
always@(negedge ps2_state or negedge rst_n )begin if(!rst_n) begin
rsm_db<=32'b11111111_11111111_11111111_11111111; end else begin case(i)
0:begin rsm_db[31:24]<=ps2_byte;i<=i+1;end
1:begin rsm_db[23:16]<=ps2_byte;i<=i+1;end
2:begin i<=i+1; end
- 25 -