verilog PS2键盘解码程序

[09-08 11:50:26]   来源:http://www.88dzw.com  单片机学习   阅读:8181

文章摘要: .clk_bps(clk_bps), .rx_data(ps2_byte), .rx_int(ps2_state), .rs232_tx(rs232_tx), .bps_start(bps_start)

verilog PS2键盘解码程序,标签:单片机开发,单片机原理,http://www.88dzw.com
                                   .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接口数据信号
output[7:0] ps2_byte;    // 1byte键值,只做简单的按键扫描
output ps2_state;    //键盘当前状态,ps2_state=1表示有键被按下
//------------------------------------------
reg ps2k_clk_r0,ps2k_clk_r1,ps2k_clk_r2;  //ps2k_clk状态寄存器
//wire pos_ps2k_clk;     // ps2k_clk上升沿标志位
wire neg_ps2k_clk;   // ps2k_clk下降沿标志位
always @ (posedge clk or negedge rst_n) begin
    if(!rst_n) begin
           ps2k_clk_r0 <= 1'b0;
           ps2k_clk_r1 <= 1'b0;
           ps2k_clk_r2 <= 1'b0;
       end
    else begin                         //锁存状态,进行滤波
           ps2k_clk_r0 <= ps2k_clk;
           ps2k_clk_r1 <= ps2k_clk_r0;
           ps2k_clk_r2 <= ps2k_clk_r1;
       end
end
assign neg_ps2k_clk = ~ps2k_clk_r1 & ps2k_clk_r2;    //下降沿
//------------------------------------------
reg[7:0] ps2_byte_r;     //PC接收来自PS2的一个字节数据存储器
reg[7:0] temp_data;  //当前接收数据寄存器
reg[3:0] num; //计数寄存器
always @ (posedge clk or negedge rst_n) begin
    if(!rst_n) begin
           num <= 4'd0;

上一页  [1] [2] [3] [4] [5] [6]  下一页


Tag:单片机学习单片机开发,单片机原理维修教程知识 - 单片机学习

《verilog PS2键盘解码程序》相关文章