📄 data_scanc.v
字号:
/*
本实验下载SOF后数码管显示0080,有键按下后将有数值变化
可看到数码管高2位显示扫描码,低2位显示ASCII码。
在采集扫描码时如果有一位错位,那么后面的码都会出错,
在数码管高2位会显示出错误的扫描码,而低2位一直显示80没有变化。
因为出现了错位,如果得不到F0断码的开始标志,则转换器会认为没有键按下,
会一直显示80,直到F0到来。这时可以按reset进行复位更正。
*/
module data_scanC
( sys_clk,
k_data,
k_clock,
reset,
data,
PA,
ZHJS
);
input sys_clk;
input k_data;
input k_clock;
input reset;
output [7:0] data;
inout [7:0] PA;
inout ZHJS;
reg [11:0] tmp;
reg now_kbclk, pre_kbclk;
wire ZHJS;
reg [3:0] counter ;
wire enable;
always @(posedge sys_clk or negedge reset)
begin
if(!reset) begin
counter <= 0;
tmp[11:0] <= 0;
end
else begin
pre_kbclk <= now_kbclk;
now_kbclk <= k_clock;
if({pre_kbclk , now_kbclk}==2'b01) //键盘时钟上升沿判断
begin
tmp[counter] <= k_data;
if(counter == 4'd11)
counter <= 4'd1;
else
counter <= counter + 1'b1;
end
end
end
assign ZHJS = (counter == 4'd11) ? 1'b0 : 1'b1;//完成
assign enable = (counter > 4'd1 && counter <4'd10 ) ? 1'b1:1'b0;
assign PA = enable ? 8'b0000_0000 : tmp[8:1];
assign data = PA;
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -