verilog如何用矩阵键盘按三次输入三位数(0-999)?
时间:10-02
整理:3721RD
点击:
verilog如何用矩阵键盘按三次输入三位数(0-999)?
module key4x4
(
clk,
rst_n,
row,
col,
key_val
);
input clk;
input rst_n;
input [3:0] row; // 矩阵键盘 行
output reg[3:0] col; // 矩阵键盘 列
output reg[3:0] key_val; // 键盘值
按键每按一次只会输出一个数字,连续按需要如下处理:
num=key_val;
key_data=(key_data)*10+num;
这样如何实现?
module key4x4
(
clk,
rst_n,
row,
col,
key_val
);
input clk;
input rst_n;
input [3:0] row; // 矩阵键盘 行
output reg[3:0] col; // 矩阵键盘 列
output reg[3:0] key_val; // 键盘值
按键每按一次只会输出一个数字,连续按需要如下处理:
num=key_val;
key_data=(key_data)*10+num;
这样如何实现?
求问~~这个问题怎么实现呢,想了好久了!谢谢~~
你列出的模块,只是矩阵扫描的程序,通过key_val来表示按下什么值。但有个问题:key_val什么时候有效?例如它等于0时,表示没按下,还是按下时值为0。 如果想要实现你所需要的功能。你必须这样设计:增加一个输出指示key_vld,当key_vld有效时,表示捕捉到一个按下,并且值为key_val。 另外,再增加一个模块,来确认key_vld有效的次数和对应的key_val值并寄存下来。当key_vld三次有效了,那就有三个值了。那就组成三位数。 我是从明德扬的视频里学来的