矩阵键盘EDA技术课程设计.doc

上传人:hw****26 文档编号:3117550 上传时间:2019-05-22 格式:DOC 页数:19 大小:786.02KB
下载 相关 举报
矩阵键盘EDA技术课程设计.doc_第1页
第1页 / 共19页
矩阵键盘EDA技术课程设计.doc_第2页
第2页 / 共19页
矩阵键盘EDA技术课程设计.doc_第3页
第3页 / 共19页
矩阵键盘EDA技术课程设计.doc_第4页
第4页 / 共19页
矩阵键盘EDA技术课程设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、 电子设计 EDA课程设计专 业: 电子信息科学与技术 班 级:2010 级电信本(1)班 姓 名: * 学 号: * 指导老师: * 完成时间: 2012.112012.12 教师评分: 2目 录一、绪论 .11.1 FPGA 概况 .11.2 本课题的研究意义 .2二、课程设计的任务和目的 .3三、矩阵键盘接口电路的原理与总体设计 .33.1 矩阵键盘接口电路的原理 .33.2 总体设计 .5四、各模块的设计及仿真 .64.1 键盘扫描电路 .64.2 键盘译码电路和按键标志位产生电路 .84.3 时钟产生模块 .104.4 键盘接口电路顶层电路实现 .12五、参考文献 .13六、心得体会

2、 .13七、附录 .147.1 源程序代码 .140题目:矩阵键盘控制接口设计一、绪论1.1 FPGA 概况早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的 PLD 由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与或”表达式来描述,所以 PLD 能以乘积和的形式完成大量的组合逻辑功能。这一阶段的产品主要有 PAL(可编程阵列逻辑)和 GAL(通

3、用阵列逻辑)。 PAL 由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL 器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和 E2PROM 技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA 器件既有现场可编程的,也有掩膜可编程的。在 PAL 的基础上又发展了一种通用阵列逻辑(GAL、Generic ArrayLogic),如 GAL16V8、GAL22V10 等。它采用了 EPROM 工艺,实现了电可擦除、电可改写,其输出结构

4、是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的 PLD 器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。为了弥补这一缺陷,20 世纪 80 年代中期,Altera 和 Xilinx 分别推出了类似于PAL 结构的扩展型 CPLD(Complex Programmable Logic Dvice)和与标准门阵列类似的FPGA(FieldProgrammable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了 PLD 和通用门阵列的优点,可实现较大规模

5、的电路,编程也很灵活。与门阵列等其他 ASIC(Application Specific IC)相比,1它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品不需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在 10 000 件以下)之中。几乎所有应用门阵列、PLD 和中小规模通用数字集成电路的场合均可应用 FPGA 和 CPLD 器件。1.2 本课题的研究意义近年来 EDA 技术在电子领域引发的技术革命,推动着电子技术的迅猛发展,为世人所瞩目,而 FPGA 为代表的可编程逻辑器件的应用,更是受到业内人士的普遍关注。伴随着大规模集成电路和计算机

6、技术的高速发展,在设计工业自动化,仪器仪表,计算机设计与应用、通信、国防等领域的电子系统中,FPGA 技术的含量正以惊人的速度提升。将尽可能大的完整的电子系统在单一 FPGA 芯片中实现已成为现实,电子类新技术项目的开发也更多地依赖于 FPGA 技术的应用。作为 FPGA 研究课题之一的矩阵键盘控制接口电路的设计,在 FPGA 设计中是一个经常被提到的话题,就像是利用 PFGA 设计数字中一样,虽然简单,但是却是一个很有研究意义的话题,涉及到怎么样才能是 FPGA 资源更加充分利用,现在很多电子产品都涉及到按键,小的有独立按键,大的有 N*N 的矩阵键盘,独立按键由于案件的个数少,也就没必要考

7、虑资源的利用问题了。而矩阵键盘,由于按键多,对整个系统的影响大,所以肯定要考虑资源的利用问题,而且还要考虑一下电路里面的时序问题。本次设计要求设计一个 4*9 矩阵键盘,也就是行为 4,列为 9,一共可以设计 36 个按键。其中设计方法为:一般判断键盘中有没有按键按下是通过航线送入扫描信号,然后从列线中读取状态得到的,其方法是依次给行线送入低电平,检查列线的输入。如果列线信号趣味高电平,则代表低电平信号所在的行中无按键按下,反之,则有,则在低电平信号所在的行和出现低电平的交叉处有按键按下。一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。扫描模块中是为了产生

8、扫描信号,来利用扫描信号来扫描键盘中中是否有按键按下。键盘译码电路和按键标志位产生电路是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。在设计完各个模块后,还要对每个模块进行仿真,在仿真的过程中要对参数精心2设计,要不然看不出结果的。二、课程设计的任务和目的20 世纪 90 年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如 CPLD、FPGA)的应用,已得到广

9、泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了 EDA 技术的迅速发展。 本次设计在 EDA 开发平台 QUARTUS7.2 上利用 VHDL 语言设计矩阵键盘控制接口电路。要求设计一个 49 矩阵键盘,一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中是否有按键按下。键盘译码电路和按键标志位产生电路也是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。时钟产生电路是为了产生不同频率

10、的信号,来驱动上面两个电路的运转。通过对课题的分析研究,掌握了 VHDL 语言编程方法,同时也增强了个人的学习能力和动手能力。3、矩阵键盘接口电路的原理与总体设计本章首先介绍矩阵键盘的设计思路,总体来说行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。最后介绍 4*9 键盘的总体设计思路。3.1 矩阵键盘接口电路的原理在键盘中按键数量较多时,为了减少 I/O 口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成 4*4=16 个按键,比之直接将端口线用于键

11、盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成 20 键的键盘,而直接用端口线则只能多出一键(9 键) 。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,3列线通过电阻接正电源,并将行线所接的 FPGA 的 I/O 口作为输出端,而列线所接的I/O 口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。行列式键盘的电路原理如图 3.1.1 所示:(为了说明问题以 4*4 为例)Key

12、in3Keyin2Keyin1Keyin0FPGAKeydrv0Keydrv0Keydrv0Keydrv0152 3 46 7 89 0 A BC D E F+5v+ 5 V图 3.1.1 行列式键盘的电路原理图设置扫描信号为 keydrv3keydrv0,列线按键输入信号 keyin3keyin0 与按键位置的关系如表 3.1.1 所示:表 3.1.1 扫描信号和列线按键输入信号与按键之间的关系表keydrv3keydrv0 keyin3keyin0 对应的按键1110 11101 211101011 30111 41110 51101 611011011 740111 81110 9110

13、1 01011 A10110111 B1110 C0111 1101 D1011 E0111 F3.2 总体设计矩阵键盘控制系统的总体设计如图 3.2.1 所示:键盘译码电路按键标志产生电路4*9 键盘 时钟产生电路扫描电路keyvaluekeypressedclkKeyin8.0Keydrv3.0图 3.2.1 键盘接口电路结构图由行列式键盘原理就可以知道,要正确的完成键盘输入工作必须有按键扫描电路产生 keydrv3keydrv0 信号,同时还必须有按键译码电路从 keydrv3keydrv0 信号和keyin3keyin0 信号中译码出按键的值。此外,一般还需要一个按键发生信号用于和其他

14、模块接口,通知其他模块键盘上有按键动作发生,并可以从键盘上读取按键的键值。由于各个模块需要的时钟频率是不一样的,因此时钟产生模块就是用于产生各个模块5需要的时钟信号。因此得到键盘接口电路的结构如上图所示。四、各模块的设计及仿真4.1 键盘扫描电路键盘扫描电路是用于产生 keydrv3keydrv0 信号,其变化的顺序依次是 1110-1101-1011-0111-周而复始地扫描。其停留在某个状态的时间大约为 10ms。更短的停留时间是没有必要的,因为人按键的时间大约为 10ms,不可能有更快的按键动作发生;另外,更短的停留时间还容易采集到抖动信号,会干扰判断,而太长的停留时间则会使某些较快的按

15、键东走丢失。键盘扫描电路的外部接口电路如图 4.1.1 所示,其中 clk_scan 是周期为 10ms 的扫描时钟,keydrv 为输出到键盘的扫描信号,宽度为 4 位。图 4.1.1 键盘扫描电路的外部接口电路图其 VHDL 描述如下:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY key_scan IS- ALTERA_IO_BEGIN DO NOT REMOVE THIS LINE!PORT(clk_scan : IN STD_LOGIC; -扫描时钟,周期 10mskeydrv : OUT STD_LOGIC_VECTOR(3 DOWN

16、TO 0) -输出扫描信号);- ALTERA_IO_END DO NOT REMOVE THIS LINE!END key_scan;- Architecture BodyARCHITECTURE key_scan_architecture OF key_scan ISCONSTANT s0 :STD_LOGIC_VECTOR (3 DOWNTO 0):=“1110“ ;-定义状态机编码CONSTANT s1 :STD_LOGIC_VECTOR (3 DOWNTO 0):=“1101“ ;CONSTANT s2 :STD_LOGIC_VECTOR (3 DOWNTO 0):=“1011“ ;

17、6CONSTANT s3 :STD_LOGIC_VECTOR (3 DOWNTO 0):=“0111“ ;SIGNAL present_state:STD_LOGIC_VECTOR(3 DOWNTO 0);-状态机现态SIGNAL next_state:STD_LOGIC_VECTOR(3 DOWNTO 0); -状态机次态BEGIN-状态更新进程PROCESS(clk_scan)BEGINIF(clk_scanevent and clk_scan=1) thenpresent_statenext_statenext_statenext_statenext_statenext_state=s0;END CASE;END PROCESS;-输出译码keydrv=present_state;END key_scan_architecture;以上程序采用一个状态机来实现扫描电路。该状态机是一个 one-hot 状态机,并且输出值就是状态机的状态,没有通过一个逻辑电路来做输出译码。这样的好处是得到的输出信号比较“干净” ,没有毛刺。其仿真波形如图 4.1.2 所示:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。