verilog如何用矩阵键盘按三次输入三位数(0-999)?

2019-03-25 07:34发布

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;
这样如何实现????????????
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
yuxuanwlfei
1楼-- · 2019-03-26 08:28
yuxuanwlfei 发表于 2015-9-2 11:24
可否将你所说的方式例程公布一下?!

        jzjp jzjp(
                .row(row),
                .col(col),
                .real_number(number),
                .clk(clk_slow),
                .rst_n(rst_n),
                .flag(flag),
                .opcode(opcode)
        );       
       
        conv conv(
                .clk(clk_slow),
                .opcode(opcode),
                .flag(flag),
                .number(number),
                .rst_n(rst_n),
                .data_in(data),
                .fuhao(fuhao),
                .dp(dp)
        );

我参考过至芯的计算器例程,但下载到板子中无法实现,每次按键按下,会连续显示好几个数字。如果每次按下一个数字,产生一个flag,然后

if(flag)
begin
num=key_val;
key_data=(key_data)*10+num;
end
okhxyyo
2楼-- · 2019-03-26 11:57
个人觉得移位加空格(或其他一个专用按键)判断数字是否输入结束是比较习惯常规的做法。像判断等待时间那种其实不好说把?还要实验多少时间比较合适。而且键盘处理一般要来个去抖的把。如果新手的话,一开始其实不必讲究太深。先学会基本技能然后再深入研究。
chenzhufly
3楼-- · 2019-03-26 12:09
已功能键作为数字输入的结束符呗
小梅哥
4楼-- · 2019-03-26 17:38
 精彩回答 2  元偷偷看……
5525
5楼-- · 2019-03-26 21:26
input [3:0] row;      // 矩阵键盘 行
总共4个键,
一个总输入,一个确定兼移位,一个输入单个0到9, 一个确认

一周热门 更多>