ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:81.64KB ,
资源ID:10366262      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10366262.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(矩阵键盘键信号检测电路设计eda课程设计报告说明书.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

矩阵键盘键信号检测电路设计eda课程设计报告说明书.docx

1、矩阵键盘键信号检测电路设计eda课程设计报告说明书课程设计说明书题 目 EDA 技术与应用系(部)专业(班级)姓名学号指导教师起止日期EDA 技术课程设计任务书系(部): 专业: 指导教师:课题名称 矩阵键盘键信号检测电路设计设计内容及要 求设计一个 4X4 矩阵键盘键信号检测电路,当按下某键后,电路可以辨别 和读取键信息,并能够判断按键为短按或长按(按键时间超过 3 秒则视为长 按),例如:第 2 排第 1 个按键的键号为 4,按住该键超过 3 秒钟,则数码管 显示 04-CA 。;若按住该键的时间不足 3 秒,则显示 04-DA ;要求可设置或取 消按键音。系统提供 50MHZ 频率的时钟

2、源。 完成该系统的硬件和软件的设计, 并制 作出实物装置,调试好后并能实际运用(指导教师提供制作所需的器件) ,最 后就课程设计本身提交一篇课程设计说明书。设 计 工 作 量1、VHDL 语言程序设计;2、波形仿真;3、在实验装置上进行硬件测试,并进行演示;4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、硬件测试、调试过程,参考文献、设计总结等。进度安起止日期(或时间量)设计内容(或预期目标)备注第1天课题介绍,答疑,收集材料第2天设计方案论证排第3天进一步讨论方案 , 对设计方案进行必要的修 正,方案确定后开始进行 VHDL 语言程序设 计第4天设计 VHDL

3、语言程序第 59 天在实验装置上进行硬件测试,对 VHDL 语言程序进行必要的修正,并进行演示第 10 天编写设计说明书教研室 意见年月日系(部)主 管领导意见年月日引言 5 一、绪论 5 1.1FPGA概况 5 1.2.6.此课题的研究意义三、各模块的设计及仿真 8 3.1键盘扫描电路 8 3.2键盘译码电路和按键标志位产生电路 113.3时钟产生模块 163.4键盘接口电路顶层电路实现 18四、硬件测试 1.9 五、实验设备 1.9 六、总结 2.0 参考文献 2.0 矩阵键盘键信号检测电路设计引言人类文明已进入到高度发达的信息化社会。 信息化社会的发展离不开电子信息产品开发技术、 产品

4、品质的提高和进步。 电子信息产品随着科学技术的进步, 其电子器件和设计方法更新换代的速度日新月 异。实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化 (EDA, Electronic Design Automation )技术, EDA 技术的发展和推广应用又极大地推动了电子信息产 业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求, EDA 技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成 “EDA 热”,完全可以说, 掌握 EDA 技术是电子信息类专业学生、 工程技术人员所必备的

5、基本能力和技能。 Word 文档此设计主要利用 VHDL 硬件描述语言在 EDA平台 Quartus II上设计一个 44 阵列键盘扫描电路, 将行扫描信号输入阵列键盘,读取列信号的值,输出按键编码,从而判断出按键按下的位置。并且进行 模拟仿真,下载到 EDA 实验箱进行硬件验证。一、绪论1.1FPGA 概况早期的可编程逻辑器件只有可编程只读存储器 (PROM) 、紫外线可擦除只读存储器 (EPROM)和电可 擦除只读存储器 (E2PROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件 (PLD),它能够完成各种数字逻辑功能。典

6、型的 PLD 由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与或”表达式 来描述,所以 PLD 能以乘积和的形式完成大量的组合逻辑功能。这一阶段的产品主要有 PAL(可编程阵列逻辑 )和 GAL(通用阵列逻辑 )。 PAL 由一个可编程的“与”平 面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。 PAL 器件是现场 可编程的,它的实现工艺有反熔丝技术、 EPROM技术和 E2PROM 技术。还有一类结构更为灵活的逻辑 器件是可编程逻辑阵列 (PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是 可编程的。 PLA 器件

7、既有现场可编程的,也有掩膜可编程的。在 PAL 的基础上又发展了一种通用阵列 逻辑(GAL、 Generic ArrayLogic) ,如 GAL16V8 、 GAL22V10 等。它采用了 EPROM 工艺,实现了电可擦 除、电可改写, 其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性, 至今仍有许多人 使用。这些早期的 PLD 器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结 构也使它们只能实现规模较小的电路。为了弥补这一缺陷, 20 世纪 80 年代中期, Altera 和 Xilinx 分别推出了类似于 PAL 结构的扩展型 CPLD(Complex P

8、rogrammable Logic Dvice) 和与标准门阵列类似的 FPGA(FieldProgrammable Gate Array) ,它们都具有体系结构和逻辑单元灵活、 集成度高以及适用范围宽等特点。 这两种器件兼容了 PLD 和通用门阵列的优点, 可实现较大规模的电路, 编程也很灵活。 与门阵列等其他 ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品不需测试、质量稳 定以及可实时在线检验等优点, 因此被广泛应用于产品的原型设计和产品生产 (一般在 10 000 件以下) 之中。几乎所有应用门阵列、 PL

9、D和中小规模通用数字集成电路的场合均可应用 FPGA和 CPLD 器件。1.2此课题的研究意义近年来 EDA技术在电子领域引发的技术革命, 推动着电子技术的迅猛发展, 为世人所瞩目, 而 FPGA 为代表的可编程逻辑器件的应用, 更是受到业内人士的普遍关注。 伴随着大规模集成电路和计算机技术 的高速发展, 在设计工业自动化, 仪器仪表, 计算机设计与应用、 通信、国防等领域的电子系统中, FPGA技术的含量正以惊人的速度提升。将尽可能大的完整的电子系统在单一 FPGA 芯片中实现已成为现实, 电子类新技术项目的开发也更多地依赖于 FPGA 技术的应用。作为 FPGA研究课题之一的矩阵键盘控制接

10、口电路的设计, 在 FPGA 设计中是一个经常被提到的话题,就像是利用 PFGA 设计数字中一样,虽然简单,但是却是一个很有研究意义的话题,涉及到怎么样 才能是 FPGA 资源更加充分利用,现在很多电子产品都涉及到按键,小的有独立按键,大的有 N*N 的 矩阵键盘, 独立按键由于案件的个数少, 也就没必要考虑资源的利用问题了。 而矩阵键盘, 由于按键多, 对整个系统的影响大, 所以肯定要考虑资源的利用问题, 而且还要考虑一下电路里面的时序问题。 本次 设计要求设计一个 4*4 矩阵键盘,也就是行为 4,列为 4 ,一共可以设计 16 个按键。其中设计方法为: 一般判断键盘中有没有按键按下是通过

11、行线送入扫描信号, 然后从列线中读取状态得到的, 其方法是依 次给行线送入低电平, 检查列线的输入。 如果列线信号高电平, 则代表低电平信号所在的行中无按键按 下,反之,则有,则在低电平信号所在的行和出现低电平的交叉处有按键按下。二、矩阵键盘接口电路的原理与总体设计2.1 矩阵键盘接口电路的原理在键盘中按键数量较多时, 为了减少 I/O 口的占用, 通常将按键排列成矩阵形式。 在矩阵式键盘中, 每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成 4*4=16 个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一 条线就可以构成

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

13、01234Keydrv05678Keydrv090ABCDEFv图 2.1.1 行列式键盘的电路原理图设置扫描信号为 keydrv3keydrv0 ,列线按键输入信号 keyin3keyin0 与按键位置的关系如表 2.1.1所示:表 2.1.1 扫描信号和列线按键输入信号与按键之间的关系表keydrv3keydrv0keyin3keyin0对应的按键111011101110121011301114110111105110161011701118101111109110101011A0111B01111110C1101D1011E0111F2.2总体设计本次设计在 EDA 开发平台 QUART

14、US 9.0上利用 VHDL 语言设计矩阵键盘控制接口电路。由行列 式键盘原理就可以知道,要正确的完成键盘输入工作必须有按键扫描电路产生 keydrv3keydrv0 信号, 同时还必须有按键译码电路从 keydrv3keydrv0 信号和 keyin3keyin0 信号中译码出按键的值。此外, 一般还需要一个按键发生信号用于和其他模块接口, 通知其他模块键盘上有按键动作发生, 并可以从键 盘上读取按键的键值。 由于各个模块需要的时钟频率是不一样的, 因此时钟产生模块就是用于产生各个 模块需要的时钟信号。此课题的实验一共有三个模块, 分别为: 扫描电路模块、 时钟产生模块、键盘译码电路和按键标

15、志 位产生电路。 扫描模块中是为了产生扫描信号, 来利用扫描信号来扫描键盘中中是否有按键按下。 键盘 译码电路和按键标志位产生电路是为了配合扫描模块来扫描电路中是否有按键按下, 而且还要求它来产 生按键标志信号, 以便和外部电路握手。 时钟产生电路是为了产生不同频率的信号, 来驱动上面两个电 路的运转。三、各模块的设计及仿真3.1 键盘扫描电路键 盘 扫 描 电 路 是 用 于 产 生 keydrv3keydrv0 信 号 , 其 变 化 的 顺 序 依 次 是 1110-1101-1011-0111- 周而复始地扫描。其停留在某个状态的时间大约为 10ms 。更短的停留时间是没有必要的,因为

16、人按键的时间大约为 10ms ,不可能有更快的按键动作发生;另外,更短的停留时间还容易采集到抖动信号,会干扰判断,而太长的停留时间则会使某些较快的按键东走丢失。keydrv键盘扫描电路的外部接口电路如图 3.1.1 所示,其中 clk_scan 是周期为 10ms 的扫描时钟,为输出到键盘的扫描信号,宽度为 4 位。图 3.1.1 键盘扫描电路的外部接口电路图其 VHDL 描述如下:LIBRARY ieee;USE ieee.std_logic_1164.all; ENTITY key_scan IS- ALTERA_IO_BEGIN DO NOT REMOVE THIS LINE!PORT(

17、clk_scan : IN STD_LOGIC; - 扫描时钟,周期 10mskeydrv : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)- 输出扫描信号);- ALTERA_IO_END DO NOT REMOVE THIS LINE!END key_scan;- Architecture Body ARCHITECTURE key_scan_architecture OF key_scan ISCONSTANT s0 :STD_LOGIC_VECTOR (3 DOWNTO 0):=1110 ; - 定义状态机编码CONSTANT s1 :STD_LOGIC_VECTO

18、R (3 DOWNTO 0):=1101 ;CONSTANT s2 :STD_LOGIC_VECTOR (3 DOWNTO 0):=1011 ;CONSTANT 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)

19、 then present_statenext_statenext_statenext_statenext_statenext_state=s0;END CASE;END PROCESS;- 输出译码keydrv=present_state;END key_scan_architecture;以上程序采用一个状态机来实现扫描电路。该状态机是一个 one-hot 状态机,并且输出值就是状 态机的状态,没有通过一个逻辑电路来做输出译码。这样的好处是得到的输出信号比较“干净”,没有毛 刺。其仿真波形如图 3.1.2 所示:图 3.1.2 键盘扫描电路的仿真图从图 4.1.2 中很容易发现 prese

20、nt_state 的值的变化是随着扫描信号 key_scan 的上升沿的到来而变化 的,也就是 key_scan 每来一个脉冲,相应的 present_state 的值就变化一次。很容易发现 keydrv 的值的 变化顺序为 1110-1101-1011-0111 ,也就是每个 key_scan 来一个脉冲时, 保证 keydrv 相邻的值只有一个变化,这样为了防止产生不必要的毛刺。 present_state 值和 keydrv 值是相同的,只不过一个 用的是二进制,一个用的是十进制,所以它的变化为 14 1311 7。3.2键盘译码电路和按键标志位产生电路键盘译码电路是从 keydrv3k

21、eydrv0 和 keyin3keyin0 信号中译码出按键的键值的电路,它的真值 表就是以前行扫描信号、列扫描与按键位置的关系图。按键标志位产生电路是产生按键标志位信号 keypressed 的电路。由于这两个电路关系紧密,因此放入同一个模块中实现,其外部接口图如图 3.2.1 所示。其中 clk为局信号,它是由 FPGA芯片的外部晶振给出的。 clk 在系统中的频率是最高,其他时钟 都是它的分频产生。 keydrv 为键盘扫描信号, keyin 为键盘输入信号, keyvalue 为键值(代表按键所在 的位置), keypressed 表示有一个按键被按下,每发生一次按键动作, keypr

22、essed 就输出一个宽度为全局时钟周期的正脉冲。 该信号用于与其他模块握手, 负责通知其他模块键盘是否有按键发生。 其他模块 在 keypressed 有效时,可以读取键值。图 3.2.1 键盘译码电路的外部接口其 VHDL 实现如下:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY keydecoder ISPORT(clk : IN STD_LOGIC; - 全局时钟clk_scan : IN STD_LOGIC; - 扫描时钟keyin : IN STD_LOGIC_VECTOR(8

23、 DOWNTO 0); - 键盘输入keydrv : IN STD_LOGIC_VECTOR(3 DOWNTO 0); - 扫描信号 keyvalue : OUT STD_LOGIC_VECTOR(8 DOWNTO 0);- 键值 keypressed : OUT STD_LOGIC - 有按键按下);END keydecoder;ARCHITECTURE keydecoder_architecture OF keydecoder IS -TEMP =keyin & keydrv;SIGNAL temp:STD_LOGIC_VECTOR(12 DOWNTO 0) ;SIGNAL temp_pr

24、essed: STD_LOGIC;SIGNAL keypressed_asy: STD_LOGIC;SIGNAL q1,q2,q3,q4,q5,q6 :STD_LOGIC;BEGINtempkeyvalue=conv_std_logic_vector(1,9);temp_pressed =1;temp_pressed keyvalue=conv_std_logic_vector(3,9); temp_pressed keyvalue=conv_std_logic_vector(4,9);temp_pressed keyvalue=conv_std_logic_vector(5,9);temp_

25、pressed keyvalue=conv_std_logic_vector(6,9);temp_pressed keyvalue=conv_std_logic_vector(7,9);temp_pressed keyvalue=conv_std_logic_vector(8,9);temp_pressed keyvalue=conv_std_logic_vector(9,9);temp_pressed keyvalue=conv_std_logic_vector(10,9);temp_pressed keyvalue=conv_std_logic_vector(11,9);temp_pres

26、sed keyvalue=conv_std_logic_vector(12,9);temp_pressed keyvalue=conv_std_logic_vector(13,9);temp_pressed keyvalue=conv_std_logic_vector(14,9);temp_pressed keyvalue=conv_std_logic_vector(15,9);temp_pressed keyvalue=conv_std_logic_vector(16,9);temp_pressed =1;temp_pressed keyvalue=conv_std_logic_vector

27、(18,9); temp_pressed keyvalue=conv_std_logic_vector(19,9);temp_pressed keyvalue=conv_std_logic_vector(20,9);temp_pressed keyvalue=conv_std_logic_vector(21,9);temp_pressed keyvalue=conv_std_logic_vector(22,9);temp_pressed keyvalue=conv_std_logic_vector(23,9);temp_pressed keyvalue=conv_std_logic_vector(24,9);temp_pressed keyvalue=conv_std_logic_vector(25,9);temp_pressed keyvalue=conv_std

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1