找回密码
 注册
关于网站域名变更的通知
查看: 338|回复: 1
打印 上一主题 下一主题

数字计算器基于FPGA设计源码和电路全部分享

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-25 09:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
数字计算器基于FPGA设计源码和电路全部分享+ r" `' }2 l  R$ q

% E8 G( }* w% ]3 ~+ }4 f2 g
$ t1 c5 U! R8 n) N! k本实验,我们使用我们开发板上的矩阵键盘来设计一个简单的计算器,最终要实现多达任意六位数的“加、减、乘、除”运算(不考虑负数)。通过本项目的学习,大家可以掌握矩阵键盘的原理和驱动方式,同时也可以进一步体会模块化的设计方法和技巧。+ s0 u7 Q, }, N% W$ v' J9 ~
那么,在开始项目之前,我们首先应该明白矩阵键盘的基本原理,代码体现的是思路,只有在对外设原理足够清楚的前提下才可能建立起来正确的思路。矩阵键盘电路3 V# ~0 q6 c: K2 q0 T7 x& R
  - a% T! `( y0 N7 ^

! b0 o8 \/ m& x& I  n4 _- y3 n由上图可以看出,矩阵键盘的行row(行)与col(列)的交点,都是通过一个按键相连接。如果采用传统的“一个按键一个端口”的方法,要想实现16个按键,就需要16个端口;如果采用现在这个矩阵键盘的设计,要想实现16个按键,仅仅需要8个端口;如果使用16个端口来做矩阵键盘的话,则可以识别64个按键。相对于传统的键盘设计而言,矩阵键盘的设计大大提高了端口的利用率。& t+ z3 w' N3 |
因此如果需要的按键少,可以选择传统的按键设计,但如果需要的按键比较多,则建议采用这种矩阵键盘的设计。接下来我们就以扫描法为例来带领大家了解矩3 n7 a# K4 ^: ?7 g+ j
阵键盘的工作原理。
/ Q- D3 S) H9 t6 Q+ y# x首先col(列)是FPGA给矩阵键盘输出的扫描信号,而row(行)是矩阵键盘反馈给 FPGA 的输入信号,用于检测哪一个按键被按下。FPGA&nBSP; 给出扫描信号COL[3:0]:COL = 4’b0111,等下一个时钟周期COL  = 4’b1011,再等下一个时钟周期COL =  4’b1101,再等下一个时钟周期COL = 4’b1110,再等下一个时钟周期COL = 4’b0111,COL就是这样不断循环,给矩阵键盘一个低电平有效的扫描信号。当FPGA给矩阵键盘COL扫描信号的同时,FPGA也要在检测矩阵键盘给FPGA的的反馈信号ROW。举个例子,假若矩阵键盘中的9号按键被按下了:" n6 }$ Y* V8 n9 b( z4 R  `
当COL = 4’b0111,ROW = 4’b1111;6 q* o  t0 e) t% G# M& N
当COL = 4’b1011,ROW = 4’b1111;
. E& L5 j) A. m3 u/ a) \) X当COL = 4’b1011,ROW = 4’b1111;
( t8 G- G* O. m1 l" v当COL = 4’b1011,ROW = 4’b1111;
$ l( j9 Z6 y* L  @# C( b/ w有人问,为什么当COL = 4’b1101的时候,ROW  = 4’b1011呢?我们现在观察如图8-20所示的矩阵键盘的电路图,分析如下:% ?5 Q6 ~) v* e" R, C5 A
当9号按键被按下的时候,9号按键的电路就会被导通,扫描电路COL开始扫描,当扫描到 COL[1]的时候,由于 9 号按键的电路被导通了,COL[1]的电压等于ROW[2]的电压,所以会出现当COL  = 4’b1101的时候ROW = 4’b1011(扫描信号的频率大概1K左右)。4 k0 U! W4 k% f% _% `! K6 T: D/ Y5 i/ T
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种- r( J% a/ L5 V5 y3 A# H. O" b
现象而作的措施就是按键消抖。
& T0 O) x3 Z8 W1 E1 }抖动时间的长短由按键的机械特性决定,一般为 5ms~10ms。这是一个很重要的时间参数,在很多场合都会用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒(按键按下的时间一般都会大于20ms)。按键抖动会引起一次按键被误读多次,为确保 CPU对按键的一次闭合仅作一次处理,必须去除按键抖动。在按键闭合稳定时读取按键的电平状态,并且必须判别到按键释放稳定后再作处理。& Z4 j5 F7 H) `& _
然后我们就可以利用这些现象,来设计一个识别按键的电路。
# F2 M/ l' H6 \  O% @9 h3 ?, o# }8 p
游客,如果您要查看本帖隐藏内容请回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-9 20:36 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表