西北工业大学 电子信息学院 08021103班
.vga_b(vga_b) ); Endmodule //计算器模块 module
Verilog1(clk2,rst_n,ps2k_clk,ps2k_data,ps2_byte,ps2_state,sm_db,buff,clk3);
input clk2; //50M时钟信号 input rst_n; //复位信号
input ps2k_clk; //PS2接口时钟信号 input ps2k_data; //PS2接口数据信号 output clk3; output [15:0] buff;
output[31:0] sm_db; //7段数码管寄存器
output[7:0] ps2_byte; // 1byte键值,只做简单的按键扫描
output ps2_state; //键盘当前状态,ps2_state=1表示有键被按下
//------------------------------------------ reg ps2k_clk_r0,ps2k_clk_r1,ps2k_clk_r2; //ps2k_clk状态寄存器
- 16 -
西北工业大学 电子信息学院 08021103班
//wire pos_ps2k_clk; // ps2k_clk上升沿标志位 wire neg_ps2k_clk; // ps2k_clk下降沿标志位 //====================================== reg clk3;
always @ (posedge clk2) begin
clk3 <= !clk3; end
//===================================
always @ (posedge clk2 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;
- 17 -
西北工业大学 电子信息学院 08021103班
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 clk2 or negedge rst_n) begin if(!rst_n) begin num <= 4'd0; temp_data <= 8'd0; end
else if(neg_ps2k_clk) begin //检测到ps2k_clk的下降沿
case (num)
4'd0: num <= num+1'b1; 4'd1: begin
- 18 -
西北工业大学 电子信息学院 08021103班
num <= num+1'b1;
temp_data[0] <= ps2k_data; //bit0 end 4'd2: begin
num <= num+1'b1;
temp_data[1] <= ps2k_data; end 4'd3: begin
num <= num+1'b1;
temp_data[2] <= ps2k_data; end 4'd4: begin
num <= num+1'b1;
temp_data[3] <= ps2k_data; end 4'd5: begin
num <= num+1'b1;
temp_data[4] <= ps2k_data; end 4'd6: begin
num <= num+1'b1;
temp_data[5] <= ps2k_data; end
- 19 -
//bit1 //bit2 //bit3 //bit4 //bit5
西北工业大学 电子信息学院 08021103班
4'd7: begin
num <= num+1'b1;
temp_data[6] <= ps2k_data; //bit6 end 4'd8: begin
num <= num+1'b1;
temp_data[7] <= ps2k_data; //bit7 end 4'd9: begin
num <= num+1'b1; //奇偶校验位,不做处理
end 4'd10: begin
num <= 4'd0; // num清零 end default: ; endcase end end
reg key_f0; //松键标志位,置1表示接收到数据8'hf0,
- 20 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数电课程设计--简易两位数计数器(4)在线全文阅读。
相关推荐: