




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 FPGA 的矩阵键盘接口电路的设计 1 目 录 目录 1 1 绪论 3 1 1 FPGA 概况 3 1 2 本课题的研究意义 4 1 3 本章小结 4 2 VHDL 语言 5 2 1 VHDL 语言概述 5 2 2 VHDL 语言的优点 6 2 3 利用 VHDL 语言设计数字系统的特点 8 2 4 VHDL 语言的基本结构 9 2 5 本章小结 10 3 矩阵键盘接口电路原理和数码管显示原理 10 3 1 矩阵键盘接口电路的原理 10 3 2 数码管显示原理 12 3 3 本章小结 12 4 总体设计和各模块设计 13 4 1 时钟产生模块 13 基于 FPGA 的矩阵键盘接口电路的设计 2 4 2 键盘扫描模块 14 4 3 数码管显示模块 14 4 4 顶层电路实现 14 4 5 本章小结 14 附录 1 总体设计电路原理图 15 附录 2 硬件实物图 15 附录 3 EP1C3T144C8N 的 PCB 电路图 16 附录 4 顶层电路实现的具体程序 16 附录 5 时钟产生模块实现的具体程序 17 附录 6 键盘扫描模块实现的具体程序 18 附录 7 数码管显示模块实现的具体程序 24 5 心得体会 26 基于 FPGA 的矩阵键盘接口电路的设计 3 1 绪论 1 1 FPGA 概况 早期的可编程逻辑器件只有可编程只读存储器 PROM 紫外线可擦除只 读存储器 EPROM 和电可擦除只读存储器 E2PROM 三种 由于结构的限制 它们只能完成简单的数字逻辑功能 其后出现了一类结构上稍复杂的可编程芯片 即可编程逻辑器件 PLD 它能够完成各种数字逻辑功能 典型的 PLD 由一个 与 门和一个 或 门阵 列组成 而任意一个组合逻辑都可以用 与 或 表达式来描述 所以 PLD 能 以乘积和的形式完成大量的组合逻辑功能 这一阶段的产品主要有 PAL 可编程阵列逻辑 和 GAL 通用阵列逻辑 PAL 由一个可编程的 与 平面和一个固定的 或 平面构成 或门的输出可 以通过触发器有选择地被置为寄存状态 PAL 器件是现场可编程的 它的实现 工艺有反熔丝技术 EPROM 技术和 E2PROM 技术 还有一类结构更为灵活的 逻辑器件是可编程逻辑阵列 PLA 它也由一个 与 平面和一个 或 平面 构成 但是这两个平面的连接关系是可编程的 PLA 器件既有现场可编程的 也有掩膜可编程的 在 PAL 的基础上又发展了一种通用阵列逻辑 GAL Generic ArrayLogic 如 GAL16V8 GAL22V10 等 它采用了 E PROM 工艺 实现了电可擦除 电可改写 其输出结构是可编程的逻辑宏 单元 因而它的设计具有很强的灵活性 至今仍有许多人使用 这些早期的 PLD 器件的一个共同特点是可以实现速度特性较好的逻辑功能 但其过于简单 的结构也使它们只能实现规模较小的电路 为了弥补这一缺陷 20 世纪 80 年代中期 Altera 和 Xilinx 分别推出了类似 于 PAL 结构的扩展型 CPLD Complex Programmable Logic Dvice 和与标准门阵 列类似的 FPGA FieldProgrammable Gate Array 它们都具有体系结构和逻辑单 元灵活 集成度高以及适用范围宽等特点 这两种器件兼容了 PLD 和通用门阵 列的优点 可实现较大规模的电路 编程也很灵活 与门阵列等其他 ASIC Application Specific IC 相比 它们又具有设计开发周期短 设计制造成本 低 开发工具先进 标准产品不需测试 质量稳定以及可实时在线检验等优点 因此被广泛应用于产品的原型设计和产品生产 一般在 10 000 件以下 之中 几乎所有应用门阵列 PLD 和中小规模通用数字集成电路的场合均可应用 FPGA 和 CPLD 器件 基于 FPGA 的矩阵键盘接口电路的设计 4 1 2 本课题的研究意义 近年来 EDA 技术在电子领域引发的技术革命 推动着电子技术的迅猛发展 为世人所瞩目 而 FPGA 为代表的可编程逻辑器件的应用 更是受到业内人士 的普遍关注 伴随着大规模集成电路和计算机技术的高速发展 在设计工业自 动化 仪器仪表 计算机设计与应用 通信 国防等领域的电子系统中 FPGA 技术的含量正以惊人的速度提升 将尽可能大的完整的电子系统在单一 FPGA 芯片中实现已成为现实 电子类新技术项目的开发也更多地依赖于 FPGA 技术 的应用 作为 FPGA 研究课题之一的矩阵键盘控制接口电路的设计 在 FPGA 设计 中是一个经常被提到的话题 就像是利用 PFGA 设计数字中一样 虽然简单 但是却是一个很有研究意义的话题 涉及到怎么样才能是 FPGA 资源更加充分 利用 现在很多电子产品都涉及到按键 小的有独立按键 大的有 N N 的矩阵 键盘 独立按键由于案件的个数少 也就没必要考虑资源的利用问题了 而矩 阵键盘 由于按键多 对整个系统的影响大 所以肯定要考虑资源的利用问题 而且还要考虑一下电路里面的时序问题 本次设计要求设计一个 4 9 矩阵键盘 也就是行为 4 列为 9 一共可以设计 36 个按键 其中设计方法为 一般判断 键盘中有没有按键按下是通过航线送入扫描信号 然后从列线中读取状态得到 的 其方法是依次给行线送入低电平 检查列线的输入 如果列线信号趣味高 电平 则代表低电平信号所在的行中无按键按下 反之 则有 则在低电平信 号所在的行和出现低电平的交叉处有按键按下 一共有三个模块 分别为 扫描电路模块 时钟产生模块 键盘译码电路 和按键标志位产生电路 扫描模块中是为了产生扫描信号 来利用扫描信号来 扫描键盘中中是否有按键按下 键盘译码电路和按键标志位产生电路是为了配 合扫描模块来扫描电路中是否有按键按下 而且还要求它来产生按键标志信号 以便和外部电路握手 时钟产生电路是为了产生不同频率的信号 来驱动上面 两个电路的运转 在设计完各个模块后 还要对每个模块进行仿真 在仿真的过程中要对参 数精心设计 要不然看不出结果的 1 3 本章小结 本章首先介绍了 FPGA 的发展史 主要介绍了一下 FPGA 的发展年代 以 基于 FPGA 的矩阵键盘接口电路的设计 5 及是怎么样发展起来的 在第二节里面介绍了以下本文的研究意义 在研究意 义里面介绍了一下矩阵键盘的设计方法以及本次设计的主要设计模块 最后介 绍了一下各个模块的作用和特点 2 VHDL 语言 2 1 VHDL 语言概述 VHDL 语言的英文全名是 Very High Speed Integrated Circuit Hardware Description Language 即超高速集成电路硬件描述语言 HDL 发展的技术源 头是 在 HDL 形成发展之前 已有了许多程序设计语言 如汇编 C Pascal Fortran Prolog 等 这些语言运行在不同硬件平台和不同的操作 环境中 它们适合于描述过程和算法 不适合作硬件描述 CAD 的出现 使 人们可以利用计算机进行建筑 服装等行业的辅助设计 电子辅助设计也同步 发展起来 在从 CAD 工具到 EDA 工具的进化过程中 电子设计工具的人机 界面能力越来越高 在利用 EDA 工具进行电子设计时 逻辑图 分立电子原 件作为整个越来越复杂的电子系统的设计已不适应 任何一种 EDA 工具 都 需要一种硬件描述语言来作为 EDA 工具的工作语言 这些众多的 EDA 工具 软件开发者 各自推出了自己的 HDL 语言 HDL 发展的社会根源是 美国国防部电子系统项目有众多的承包公司 由 于各公司技术路线不一致 许多产品不兼容 他们使用各自的设计语言 使得 甲公司的设计不能被乙公司重复利用 造成了信息交换困难和维护困难 美国 政府为了降低开发费用 避免重复设计 国防部为他们的超高速集成电路提供 了一种硬件描述语言 以期望 VHDL 功能强大 严格 可读性好 政府要求 各公司的合同都用它来描述 以避免产生歧义 由政府牵头 VHDL 工作小组于 1981 年 6 月成立 提出了一个满足电 子设计各种要求的能够作为工业标准的 HDL 1983 年第 3 季度 由 IBM 公 司 TI 公司 Intermetrics 公司签约 组成开发小组 工作任务是提出语言版本和开发软件环境 1986 年 IEEE 标准化组织开始工作 讨论 VHDL 语言标准 历时一年有余 于 1987 年 12 月通过标准审查 并宣布实施 即 IEEE STD 1076 1987 LRM87 1993 年 VHDL 重新修订 形成了新的标准 即 IEEE STD 1076 1993 LRM93 基于 FPGA 的矩阵键盘接口电路的设计 6 从此以后 美国国防部实施新的技术标准 要求电子系统开发商的合同文 件一律采用 VHDL 文档 即第一个官方 VHDL 标准得到推广 实施和普及 HDL 语言在国外有上百种 高等学校 科研单位 EDA 公司都有自己的 HDL 语言 现选择较有影响的作简要介绍 Candence 公司是一家著名的 EDA 公司 财力雄厚 该公司的 Verilog HDL 于 1983 年由 Gate Way Design Automatic 公司的 Phil Moorby 首创 他在 1984 1985 年间成功设计了 Verilog XL 仿真器 于 1986 年提出了快速门级仿真 的 XL 算法 使 Verilog HDL 语言变得更加丰富和完善 从而受到了 EDA 工 具设计公司的青睐 1989 年 Candence 公司购买了 GDA 公司 Verilog HDL 语 言从此变为 Candence 公司的 私有财产 成为 Candence 公司的 EDA 设计环 境上的硬件描述语言 经过 Candence 公司的努力 Verilog HDL 于 1995 年成 为 IEEE 标准 也是民间公司第一个硬件描述语言标准 即 Verilog HDL 1364 1995 由于 Verilog HDL 语言从 C 语言发展来 所以有 C 语言基础的设计人员 能够较快入门 ALTERA 公司是一家半导体器件公司 其 CPLD 器件在世界市场上占主导 地位 这家公司不仅是硬件生产厂商 也是 EDA 工具开发商 它的 EDA 工具 MAX plus II Quartus 由于人机界面友好 易于使用 性能优良 而受到 FPGA CPLD 器件设计人员的欢迎 运行在 MAX plus II 环境下的 VHDL 语 言具有 C 语言设计风格 好学好用 因此被众多用户使用 HDL 语言来自不同地方 由不同语言演变而来 为了各平台之间相互转换 又推出了 EDIF Electronic Design Interchange Format 它不是一种语言 而是 用于不同数据格式的 EDA 工具之间的交换设计数据 2 2 VHDL 语言的优点 传统的硬件电路设计方法是采用自下而上的设计方法 即根据系统对硬件 的要求 详细编制技术规格书 并画出系统控制流图 然后根据技术规格书和 系统控制流图 对系统的功能进行细化 合理地划分功能模块 并画出系统的 功能框图 接着就进行各功能模块的细化和电路设计 各功能模块电路设计 调试完成后 将各功能模块的硬件电路连接起来再进行系统的调试 最后完成 整个系统的硬件设计 采用传统方法设计数字系统 特别是当电路系统非常庞 大时 设计者必须具备较好的设计经验 而且繁杂多样的原理图的阅读和修改 也给设计者带来诸多的不便 为了提高开发的效率 增加已有开发成果的可继 基于 FPGA 的矩阵键盘接口电路的设计 7 承性以及缩短开发周期 各 ASIC 研制和生产厂家相继开发了具有自己特色的 电路硬件描述语言 Hardware Description Language 简称 HDL 但这些硬件描 述语言差异很大 各自只能在自己的特定设计环境中使用 这给设计者之间的 相互交流带来了极大的困难 因此 开发一种强大的 标准化的硬件描述语言 作为可相互交流的设计环境已势在必行 于是 美国于 1981 年提出了一种新的 标准化的 HDL 称之为 VHSIC Very High Speed Integrated Circuit Hardware Description Language 简称 VHDL 这是一种用形式化方法来描述数字电路和 设计数字逻辑系统的语言 设计者可以利用这种语言来描述自己的设计思想 然后利用电子设计自动化工具进行仿真 再自动综合到门级电路 最后用 PLD 实现其功能 综合起来讲 VHDL 语言具有如下优点 1 VHDL 语言功能强大 设计方式多样 VHDL 语言具有强大的语言 结构 只需采用简单明确的 VHDL 语言程序就可以描述十分复杂的硬件电 路 同时 它还具有多层次的电路设计描述功能 此外 VHDL 语言能够 同时支持同步电路 异步电路和随机电路的设计实现 这是其他硬件描述语 言所不能比拟的 VHDL 语言设计方法灵活多样 既支持自顶向下的设计 方式 也支持自底向上的设计方法 既支持模块化设计方法 也支持层次化 设计方法 2 VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电 路设计描述功能 既可描述系统级电路 也可以描述门级电路 描述方式 既可以采用行为描述 寄存器传输描述或者结构描述 也可以采用三者的 混合描述方式 同时 VHDL 语言也支持惯性延迟和传输延迟 这样可以 准确地建立硬件电路的模型 VHDL 语言的强大描述能力还体现在它具有 丰富的数据类型 VHDL 语言既支持标准定义的数据类型 也支持用户定义 的数据类型 这样便会给硬件描述带来较大的自由度 3 VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要 体现在 对于同一个硬件电路的 VHDL 语言描述 它可以从一个模拟器 移植到另一个模拟器上 从一个综合器移植到另一个综合器上或者从一个工 作平台移植到另一个工作平台上去执行 4 VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路 时 设计人员并不需要首先考虑选择进行设计的器件 这样做的好处是可以 基于 FPGA 的矩阵键盘接口电路的设计 8 使设计人员集中精力进行电路设计的优化 而不需要考虑其他的问题 当 硬件电路的设计描述完成以后 VHDL 语言允许采用多种不同的器件结构来 实现 5 VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 library 的设计方法 在 设计过程中 设计人员可以建立各种可再次利用的模块 一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计 而是一些模块的累加 这些模块可以预先设计或者使用以前设计中的存档模 块 将这些模块存放在库中 就可以在以后的设计中进行复用 2 3 利用 VHDL 语言设计数字系统的特点 当电路系统采用 VHDL 语言设计其硬件时 与传统的电路设计方法相比较 具有如下的特点 1 采用自上而下的设计方法 即从系统总体要求出发 自上而下地逐步将设计的内容细化 最后完成系 统硬件的整体设计 在设计的过程中 对系统自上而下分成三个层次进行设计 第一层次是行为描述 所谓行为描述 实质上就是对整个系统的数学模型 的描述 一般来说 对系统进行行为描述的目的是试图在系统设计的初始阶段 通过对系统行为描述的仿真来发现设计中存在的问题 在行为描述阶段 并不 真正考虑其实际的操作和算法用何种方法来实现 而是考虑系统的结构及其工 作的过程是否能到达系统设计的要求 第二层次是 RTL 方式描述 这一层次称为寄存器传输描述 又称数据流描 述 如前所述 用行为方式描述的系统结构的程序 其抽象程度高 是很难直 接映射到具体逻辑元件结构的 要想得到硬件的具体实现 必须将行为方式描 述的 VHDL 语言程序改写为 RTL 方式描述的 VHDL 语言程序 也就是说 系 统采用 RTL 方式描述 才能导出系统的逻辑表达式 才能进行逻辑综合 第三层次是逻辑综合 即利用逻辑综合工具 将 RTL 方式描述的程序转换 成用基本逻辑元件表示的文件 门级网络表 此时 如果需要 可将逻辑综合 的结果以逻辑原理图的方式输出 此后可对综合的结果在门电路级上进行仿真 并检查其时序关系 应用逻辑综合工具产生的门级网络表 将其转换成 PLD 的 编程码点 即可利用 PLD 实现硬件电路的设计 由自上而下的设计过程可知 从总体行为设计开始到最终的逻辑综合 每 基于 FPGA 的矩阵键盘接口电路的设计 9 一步都要进行仿真检查 这样有利于尽早发现设计中存在的问题 从而可以大 大缩短系统的设计周期 2 系统可大量采用 PLD 芯片 由于目前众多制造 PLD 芯片的厂家 其工具软件均支持 VHDL 语言的编 程 所以利用 VHDL 语言设计数字系统时 可以根据硬件电路的设计需要 自 行利用 PLD 设计自用的 ASIC 芯片 而无须受通用元器件的限制 3 采用系统早期仿真 从自上而下的设计过程中可以看到 在系统设计过程中要进行三级仿真 即行为层次仿真 RTL 层次仿真和门级层次仿真 这三级仿真贯穿系统设计的 全过程 从而可以在系统设计的早期发现设计中存在的问题 大大缩短系统设 计的周期 节约大量的人力和物力 4 降低了硬件电路设计难度 在传统的设计方法中 往往要求设计者在设计电路之前写出该电路的逻辑 表达式或真值表 或时序电路的状态表 这一工作是相当困难和繁杂的 特别 是当系统比较复杂时更是如此 而利用 VHDL 语言设计硬件电路时 就可以使 设计者免除编写逻辑表达式或真值表之苦 从而大大降低了设计的难度 也缩 短了设计的周期 5 主要设计文件是用 VHDL 语言编写的源程序 与传统的电路原理图相比 使用 VHDL 源程序有许多好处 其一是资料量 小 便于保存 其二是可继承性好 当设计其他硬件电路时 可使用文件中的 某些库 进程和过程等描述某些局部硬件电路的程序 其三是阅读方便 阅读 程序比阅读电路原理图要更容易一些 阅读者很容易在程序中看出某一电路的 工做原理和逻辑关系 而要从电路原理图中推知其工作原理则需要较多的硬件 知识和经验 2 4 VHDL 语言的基本结构 一个完整的 VHDL 语言程序通常包含实体 Entity 构造体 Architecture 配置 Configuration 程序包 Package 和库 Library 5 个部分 前 4 个部分是 可分别编译的源设计单元 实体用于描述所设计的系统的外接口信号 构造体 用于描述系统内部的结构和行为 程序包存放各种设计模块都能共享的数据类 型 常数和子程序等 配置用于从库中选取所需单元来组成系统设计的不同版 本 库存放已经编译的实体 构造体 程序包和配置 库可由用户生成或由 基于 FPGA 的矩阵键盘接口电路的设计 10 ASIC 芯片制造商提供 以便于在设计中为大家所共享 2 5 本章小结 本章开始介绍了 VHDL 语言的设计分格以及设计中注意的问题 目前国内 IT 行业快速发展 以及 ASIC 合了 Avant 和 CO Design Cadence 合了 GDA 等 形成了几大巨头的局面 而各可编程器件厂商 像 Xilinx 和 Altera 也积极与 EDA 紧密合作 针对目前硬件描述语言的发展 和国家芯片制造生产的发展战略 国内如何在原 EDA 基础薄弱的情况下迅速发 展 使 EDA 成为一个合理 健康而必比可少产业 将基础研究活动与独立产生 的作用合理地结合 建议开展如下的工作 为了实现我国的芯片设计自主化 必须夯实基础 再结合 VHDL 的基础上 推广 Verilog HDL 设计语言 使硬件设计的底层单元库可以自主研制 根据目前芯片系统的发展趋势 对系统级语言进行比较研究 在 Superlog SystemC 等语言中作出选则 并进行相关工具的推广 以及与相关企 业进行合作等 深入 HDL 语言的综合和仿真等模型的研究 努力在与国外合作的基础山 建立自主知识产权的 EDA 公司 积极加入 EDA 目前正在进行的标准化工作 做到了解 学习 应用 吸收 参与并重 政府积极加入 重视生产 学习 研发的合作 开展卓有成效的发展模式 3 矩阵键盘接口电路原理和数码管显示原理 3 1 矩阵键盘接口电路的原理 在键盘中按键数量较多时 为了减少I O 口的占用 通常将按键排列成 矩阵形式 在矩阵式键盘中 每条水平线和垂直线在交叉处不直接连通 而是通过 一个按键加以连接 这样 一个端口就可以构成4 4 16 个按键 比之直 接将端口线用于键盘多出了一倍 而且线数越多 区别越明显 比如再多加 一条线就可以构成 20 键的键盘 而直接用端口线则只能多出一键 9 键 基于 FPGA 的矩阵键盘接口电路的设计 11 由此可见 在需要的键数比较多时 采用矩阵法来做键盘是合理的 矩 阵式结构的键盘显然比直接法要复杂一些 识别也要复杂一些 列线通过电 阻接正电源 并将行线所接的 FPGA 的 I O 口作为输出端 而列线所接的 I O 口则作为输入 这样 当按键没有按下时 所有的输出端都是高电平 代表无键按下 行线输出是低电平 一旦有键按下 则输入线就会被拉低 这样 通过读入输入线的状态就可得知是否有键按下了 4 4 行列式键盘的电路原理如下图所示 图 3 1 4 4 行列式键盘的电路原理图 设置扫描信号为 keydrv3 keydrv0 列线按键输入信号 keyin3 keyin0 与按 键位置的关系如表 3 1 所示 表 3 1 扫描信号和列线按键输入信号与按键之间的关系表 key x 3 key x 0key y 3 key y 0对应的按键 11100 110111110 10112 01113 11104 110151101 10116 key y 3 key y 2 key y 1 key y 0 FPGA key x 0 key x 0 key x 0 key x 0 1 5 234 678 90AB CDEF 5 v 基于 FPGA 的矩阵键盘接口电路的设计 12 01117 11108 11019 1011A 1011 0111B 1110C 01111101D 1011E 0111F 3 2 数码管显示原理 数码管的显示数据的方式有静态显示和动态显示之分 所谓静态显示 就是将被显示的数据的 BCD 码通过各自的 4 7 8 显示译码 器译码后 分别接到显示译码器的显示驱动端 a g p 而公共端 COM 则根 据数码管的类型 共阴 共阳 分别接 GND VCC 所谓动态显示 就是将被显示的数据的 BCD 码按照一定的变化频率 在不 同的时刻周期性地分别送到一个数据总线上 再通过一个公共的 4 7 8 显示译 码器译码后 接到多个显示译码的公共显示驱动端口 a g p 上 同时 在 不同的时刻周期性的选通对应的数码管的公共端口 COM 本设计采用的是共阴极数码管 采用的显示方式是静态显示 其电路中只 用到一个数码管 当有键按下时 数码管将显示出对应的键码值 3 3 本章小结 本章首先介绍了一下矩阵键盘的设计思路 总体来说行线输出是低电平 一旦有键按下 则输入线就会被拉低 这样 通过读入输入线的状态就可得知 是否有键按下了 最后介绍了一下 4 4 键盘的总体设计思路 另外还简单地介 绍了一下数码管的显示原理 基于 FPGA 的矩阵键盘接口电路的设计 13 4 总体设计和各模块设计 系统结构的总体设计如下 由行列式键盘原理就可以知道 要正确的完成键盘输入工作必须有按键扫 描电路产生 key x3 key x0 信号 同时还必须有按键译码电路从 key y3 key y0 信号和 key x3 key x0 信号中译码出按键的值 由于各个模块需要的时钟频率是不一样的 因此时钟产生模块就是用于产 生各个模块需要的时钟信号 因此得到接盘接口电路的结构如上图所示 4 1 时钟产生模块 本设计中设计了一个带 参数的时钟分频模块 只要 在软件中设置要分频的参数 就可以得到预分的频率 从 而实现了模块复用和代码的 数码管显示 4 4 矩阵键盘 时钟产生键盘扫描 duan 7 0 clk key y 3 0 key y 3 0 基于 FPGA 的矩阵键盘接口电路的设计 14 灵活性 时钟产生模块是用于扫 描时钟的 它的输出共给键盘扫描模块和数码管显示模块 时钟产生模块的具体程序请在附录程序里查阅 4 2 键盘扫描模块 键盘扫描模块是用于产生 key x3 key x0 信号 其变化的顺序依次是 1110 1101 1011 0111 周而复始地扫描 其停留 在某个状态的时间大约为 10ms 更短的停留时间是没有必要的 因为人按键的时间大约为 10ms 不可能有更快的按键动作发生 另外 更短的停留时间还容易采集到抖动信号 会干扰判断 而太长的停留时间则会使某 些较快的按键东走丢失 键盘扫描模块的具体程序请在附录里查阅 4 3 数码管显示模块 本设计采用 1 为数码管静态扫描显示 矩阵键盘输出的键值 具体程序请在附录 里查阅 4 4 顶层电路实现 本设计采用元件例化语句 在顶层电 路模块里综合的调用时钟产生模块 键盘 扫描模块和数码管显示模块 从而实现矩 阵键盘接口电路的设计 顶层电路实现的 具体程序请在附录里查阅 4 5 本章小结 基于 FPGA 的矩阵键盘接口电路的设计 15 本章具体介绍了矩阵键盘接口电路的总体设计和各模块的具体设计及其外 部接口电路 具体阐述了 矩阵键盘接口电路的总体设计思路和各个模块是如 何有机的组成一个实现矩阵键盘接口电路的系统 附录 1 总体设计电路原理图 附录 2 硬件实物图 基于 FPGA 的矩阵键盘接口电路的设计 16 附录 3 EP1C3T144C8N 的 PCB 电路图 附录 4 顶层电路实现的具体程序 module TOP file input clk input rst n input 3 0 key x output wire 3 0 key y 基于 FPGA 的矩阵键盘接口电路的设计 17 output wire wei output wire 7 0 duan wire clk 50K clk 50HZ 分频例化 clkdiv M 1000 1000 分频 50KHZ clkdiv 50K clk clk clk div M clk 50K clkdiv M 1000 1000 分频 50HZ 给键盘扫描 clkdiv 50HZ clk clk 50K clk div M clk 50HZ 键盘例化 wire 3 0 keyboard val SCAN SCAN 1 key clk clk 50HZ 键盘扫描时钟 20ms rst n rst n 异步复位 key y key y 矩阵键盘的列 FPGA 输出 key x key x 矩阵键盘的行 FPGA 输入 keyboard val keyboard val 最终的键值 数码管例化 数码管设计例化 SMG SMG 1 clk clk 50K data in keyboard val duan duan endmodule 附录 5 时钟产生模块实现的具体程序 module clkdiv 基于 FPGA 的矩阵键盘接口电路的设计 18 parameter M 50 参数定义 默认为 50 即 50 分频 input wire clk output wire clk div M localparam N log2 M 2 M 2 值所需位数 reg clk div r 0 assign clk div M clk div r reg N 1 0 cnt 0 分频计数器 always posedge clk begin if cnt M 2 1 begin cnt 0 clk div r clk div r end else cnt cnt 1 b1 end log2 constant function function integer log2 input integer n integer i begin log2 1 for i 0 2 i现态 if rst n current state NO KEY PRESSED 基于 FPGA 的矩阵键盘接口电路的设计 20 else current state next state end always begin 第二段 根据现态 确定次 态 current state case current state NO KEY PRESSED 无键按下状态 if key x 4 hf 如果检测到有键按下 则开始进 行键盘扫描 next state SCAN COL0 else begin next state NO KEY PRESSED end SCAN COL0 if key x 4 hF next state KEY PRESSED else next state SCAN COL1 SCAN COL1 if key x 4 hF next state KEY PRESSED else next state SCAN COL2 SCAN COL2 if key x 4 hF next state KEY PRESSED else next state SCAN COL3 SCAN COL3 基于 FPGA 的矩阵键盘接口电路的设计 21 if key x 4 hF next state KEY PRESSED else next state NO KEY PRESSED KEY PRESSED if key x 4 hf 如果检测到有键按下 则开始 进行键盘扫描 next state KEY PRESSED else next state NO KEY PRESSED default next state NO KEY PRESSED endcase end reg key PRESSED flag 有按键按下标志位 1 有按键按下 0 无 按键按下 reg 3 0 key x value key y value always posedge key clk or negedge rst n begin 第三段 根据次 态 给相应寄存器赋值 if rst n begin key PRESSED flag 0 key y 4 h0 end else case next state NO KEY PRESSED begin 无键按下状态 key PRESSED flag 0 key y 4 h0 基于 FPGA 的矩阵键盘接口电路的设计 22 end SCAN COL0 key y 4 b1110 SCAN COL1 key y 4 b1101 SCAN COL2 key y 4 b1011 SCAN COL3 key y 4 b0111 KEY PRESSED begin key y value key y 锁存列值 key x value key x 锁存行值 key PRESSED flag 1 置键盘按下 标志 end default begin 无键按下状态 key PRESSED flag 0 key y 4 h0 end endcase end 状态机结束 键值的读取 扫描行列值部分 开始 always posedge key clk negedge rst n if rst n begin keyboard val 4 hf end else 基于 FPGA 的矩阵键盘接口电路的设计 23 if key PRESSED flag case key y value key x value 8 b1110 1110 keyboard val 4 h0 8 b1110 1101 keyboard val 4 h4 8 b1110 1011 keyboard val 4 h8 8 b1110 0111 keyboard val 4 hC 8 b1011 1110 keyboard val 4 h1 8 b1011 1101 keyboard val 4 h5 8 b1011 1011 keyboard val 4 h9 8 b1011 0111 keyboard val 4 hD 8 b1101 1110 keyboard val 4 h2 8 b1101 1101 keyboard val 4 h6 8 b1101 1011 keyboard val 4 hA 8 b1101 0111 keyboard val 4 hE 8 b0111 1110 keyboard val 4 h3 基于 FPGA 的矩阵键盘接口电路的设计 24 8 b0111 1101 keyboard val 4 h7 8 b0111 1011 keyboard val 4 hB 8 b0111 0111 keyboard val 4 hF default keyboard val 4 h4 en
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中级财务会计(河南财经政法大学)知到智慧树答案
- 死因监测培训试题及答案
- 2025大连安居客平台全程监管下的二手房买卖合同
- 2025年度绿色金融垫资撤押贷款合同及碳排放权抵押担保协议
- 2025版蔬菜种植与农产品电商平台合作合同
- 2025年新型农业灌溉系统安装与运营管理合同
- 2025年水利工程桩基施工与生态修复合同
- 2025版跨境电商合作万能合同范本
- 数据驱动的实时监控与异常检测-洞察及研究
- 2025二手公寓房买卖及贷款担保与房屋租赁服务合同
- 2025年学历类自考专业(学前教育)学前儿童发展-学前教育原理参考题库含答案解析(5套)
- 日本设备销售合同范本
- 2025年芜湖市鸠江区医院招聘16名工作人员笔试参考题库附答案解析
- T-CBDA 86-2025 建筑幕墙、采光顶及金属屋面工程质量验收标准
- 厨房消防安全培训
- 小陈 税务风险应对常见指标与答复思路
- 2025年《中华人民共和国档案法》知识培训试题及答案
- 2025至2030年中国建筑膜行业市场调查研究及发展趋势预测报告
- 变电站新员工培训课件
- 《海上风电场工程测量规程》(NB-T 10104-2018)
- 2021年成都中医药大学辅导员招聘笔试试题及答案解析
评论
0/150
提交评论