您的位置 首页 新能源

根据EDA技能的矩阵键盘及显现电路设计

FPGA/ CPLD 在数字系统设计中的广泛应用,影响到了生产生活的各个方面。在FPGA/ CPLD 的设计开发中,V HDL 语言作为一种主流的硬件描述语言,具有设计效率

FPGA/ CPLD 在数字体系规划中的广泛运用,影响到了出产日子的各个方面。在FPGA/ CPLD 的规划开发中,V HDL 言语作为一种干流的硬件描绘言语,具有规划效率高, 牢靠性好, 易读易懂等许多长处 。作为一种功用强壮的FPGA/ CPLD 数字体系开发环境,Altera 公司推出的Quart us Ⅱ,为规划者供给了一种与结构无关的规划环境,使规划者能方便地进行规划输入、快速处理和器材编程,为运用V HDL 言语进行FPGA/ CPLD 规划供给了极大的便当 。矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的运用,经过7 段数码管将按键数值进行显现也是一种常用的数据显现方法。在规划机械式矩阵键盘操控电路时,按键防抖和按键数据的译码显现是两个重要方面。本文在Quart us Ⅱ开发环境下,选用V HDL言语规划了一种按键防抖并能接连记载并显现8 次按键数值的矩阵键盘显现电路

1 矩阵键盘及显现电路规划思路

矩阵键盘及显现电路能够将机械式4 ×4矩阵键盘的按键值顺次显现到8 个7段数码管上,每次新的按键值显现在最右端的第0 号数码管上,原有第0~6号数码管显现的数值全体左移到第1~7号数码管上显现,见图1 。整体而言,矩阵键盘及显现电路的规划可分为4 个部分:

(1) 矩阵键盘的行及列的扫描操控和译码。该规划所运用的键盘是经过将列扫描信号作为输入信号,操控行扫描信号输出,然后依据行及列的扫描成果进行译码。

(2) 机械式按键的防抖规划。因为机械式按键在按下和弹起的进程中均有5~10 ms 的信号颤动时刻,在信号颤动时刻内无法有用判别按键值,因而按键的防抖规划是十分要害的,也是该规划的一个要点。

(3) 按键数值的移位存放。因为该规划需求在8 个数码管上顺次显现前后共8 次按键的数值,因而对已有数据的存储和调用也是该规划的要点地点。

(4) 数码管的扫描和译码显现。因为该规划运用了8 个数码管,因而需求对每个数码管进行扫描操控,并依据按键值对每个数码管进行7 段数码管的译码显现。

2 矩阵键盘及显现电路的完成

本文所规划的矩阵键盘及显现电图2 所示。其间, clk 为时钟信号输入端(频率可为1 024~32 768 Hz) ; STart 为清零操控端;kbrow 为列扫描信号输入端; kbcol 为行扫描信号输出端; scan 为数码管地址扫描信号输出端; seg7 为数码管显现信号输出端。

图1 矩阵键盘及显现电路原理图

图2 矩阵键盘及显现电路的电路符号

限于篇幅,在此不胪陈所规划矩阵键盘及显现电路的悉数V HDL 代码,只对部分重要代码阶段进行具体阐明。

如图1 所示,悉数代码由7 个进程(process) 组成。其间,进程P1 和P2 用于对列扫描输入信号kbrow 进行读取,并经过或非运算发生行扫描使能操控信号en 对行扫描输出信号kbcol 进行操控,并生成一个与kbcol 对应的状况信号state。若没有按键被按下( 即kbrow =“0000”) ,则en =‘1’,行扫描输出信号kbcol 不断循环扫描各行;若有按键被按下,en =‘0’,则行扫描中止,并锁存当时kbcol 的值。进程P1 和P2 的代码如下:

进程P3 运用“case ?when”句子,依据状况信号state 的值(即kbcol 的值) 和列扫描输入信号kbrow 的值进行按键值译码, 生成一个4 位二进制按键数值信号dat ,用以记载当时按键值。例如,当kbcol =“0010”,kbrow =“0001 ”时“B”键按下, dat =“1011”。进程P3 的代码在此不再赘述。进程P4 和P5 用于按键的防抖和按键值的移位存放。经过将行扫描使能操控信号en 不断赋给一个8 位二进制变量reg8 ,再将reg8 赋给8 位二进制信号key ,完成对按键状况的记载,然后经过对key的各位数值进行与运算,生成防抖操控信号f nq。一旦有按键按下,en =‘0’,则即便是按键在颤动,key 中至少也有1 位数值为‘0’,然后使f nq =‘0’。只要当按键再次弹起,并且在接连8 个时钟周期内不再有新的按键按下,key 的数值全为‘1’,则f nq =‘1’,f nq发生一个上升沿,然后触发按键数值信号dat 进入数值存放信号temp (32 位二进制数) 的第0 ~ 3 位, 并将temp 本来的第0~27 位左移到第4~31 位,完成1 次按键按下的数值存储。进程P4 和P5 的代码如下:

进程P6 用于将数值存放信号temp 的32 位二进制数分配给8 个数码管,然后生成数码管地址扫描输出scan ,以及数码管数值信号data (4 位2 进制数) 。进程P6 代码如下:

进程P7 用于将数码管数值信号data 译码成为7 段数码管显现输出seg7 ,进程P7 的代码在此不再赘述。值得注意的是,本文规划的矩阵键盘及显现电路在按键防抖和数据存放部分规划得愈加简练牢靠,完成的功用愈加强壮,其具有如下特色:

(1) 为了完成按键防抖,本文选用对按键状况接连记载的方法,即在按键弹起后接连8 个时钟周期均无按键信号才承认1 次按键有用,然后防止了按键按下和弹起进程中的数据颤动,比较于运用计数器从按键按下开端计数, 直到5 ~ 10 ms 后才让按键有用的防抖方法 ,这儿规划的按键防抖愈加牢靠,且可有用防止长时刻按下按键发生的重复数据输出,使每次按键不管时刻长短均可且只会发生1 次数据输出。别的,当电路选用32 768 Hz 以上的时钟作为体系时钟时,能够经过添加按键状况接连记载的时钟周期数,完成牢靠的防抖。

(2) 该规划选用一个32 位一维数组temp 作为数据存放器,运用移位存放方法,完成了对接连8 次按键数据的存储和调用,然后能够在8 个数码管上接连显现数据。

3 仿真成果剖析

本文规划的矩阵键盘及显现电路在Quartus Ⅱ开发环境下进行了仿真验证。其间,按键防抖功用的仿真波形如图3 所示。仿真成果剖析如下:

(1) clk 为时钟输入信号,作为体系时钟;

(2) start 为清零操控端,当其为高电平时,按键有用;

(3) kbrow 为列扫输入信号,kbcol 为行扫输出信号,图3 中对kbrow[ 1 ]的输入波形进行设置,模拟了“A”键按下和弹起的进程;

(4) f nq 为防抖操控信号, scan 为数码管地址扫描输出,seg7 为数码管显现输出。由图3 可知,只要在按键弹起后,才有数据输出,然后完成防抖功用。

图3 矩阵键盘及显现电路按键防抖仿真波形

该规划的其他功用也能够经过仿真验证, 不再赘述。

4 结语

本文规划矩阵键盘及显现电路在Quartus Ⅱ开发环境下进行仿真验证后,下载到湖北众友科技实业股份有限公司的ZY11EDA13BE 试验箱中进行了硬件验证。该试验箱运用ACEX1K系列EP1K30QC208 芯片作为中心芯片。试验证明,当电路的体系时钟频率在1 024~32 768 Hz范围内时,电路均可安稳运转,按键防抖牢靠、功用完好。当体系时钟频率低于1 024 Hz 时,需求削减防抖记载时钟周期的个数,不然简单错失短时按键动作;当体系时钟频率高于32 768 Hz 时,需求添加防抖记载时钟周期的个数,以保证牢靠的按键防抖。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/154154.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部