没有合适的资源?快使用搜索试试~ 我知道了~
首页verilog PS2键盘解码程序
资源详情
资源评论
资源推荐

verilog PS2 键盘解码程序
时间:2009-10-28 来源: 作者: 点击:1061 字体大小:【大 中 小】
之前探讨过 PS/2 键盘编解码以及数据传输协议,这次自己动手实现了利用 FPGA 接收键盘编码,
然后通过串口传输到 PC。做的比较简单,只是通过 FPGA 把大写字母 A-Z 转换成相应的 ASCII 码,
只要字母按键被按下,就能在串口调试助手里显示相应大写字母。下面就共享代码吧!
除了顶层模块,三个底层模块分别为 PS/2 传输处理模块、串口传输模块以及串口波特率选择模
块(下面只给出顶层模块和 PS/2 传输处理模块的 verilog 代码)。
module ps2_key(clk,rst_n,ps2k_clk,ps2k_data,rs232_tx);
input clk; //50M 时钟信号
input rst_n; //复位信号
input ps2k_clk; //PS2 接口时钟信号
input ps2k_data; //PS2 接口数据信号
output rs232_tx; // RS232 发送数据信号
wire[7:0] ps2_byte; // 1byte 键值
wire ps2_state; //按键状态标志位
wire bps_start; //接收到数据后,波特率时钟启动信号置位
wire clk_bps; // clk_bps 的高电平为接收或者发送数据位的中间采样点
ps2scan ps2scan( .clk(clk), //按键扫描模块
.rst_n(rst_n),
.ps2k_clk(ps2k_clk),
.ps2k_data(ps2k_data),
.ps2_byte(ps2_byte),
.ps2_state(ps2_state)
);
speed_select speed_select( .clk(clk),
.rst_n(rst_n),
.bps_start(bps_start),
.clk_bps(clk_bps)
);
my_uart_tx my_uart_tx( .clk(clk),
.rst_n(rst_n),
.clk_bps(clk_bps),
.rx_data(ps2_byte),
.rx_int(ps2_state),
.rs232_tx(rs232_tx),
.bps_start(bps_start)
);
Endmodule
module ps2scan(clk,rst_n,ps2k_clk,ps2k_data,ps2_byte,ps2_state);
input clk; //50M 时钟信号
input rst_n; //复位信号
input ps2k_clk; //PS2 接口时钟信号
input ps2k_data; //PS2 接口数据信号
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论4