基于FPGA的矩阵键盘接口电路的设计综述_第1页
基于FPGA的矩阵键盘接口电路的设计综述_第2页
基于FPGA的矩阵键盘接口电路的设计综述_第3页
基于FPGA的矩阵键盘接口电路的设计综述_第4页
基于FPGA的矩阵键盘接口电路的设计综述_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、EDA课程设计设计题目:矩阵键盘控制接口设计学 专 姓 班 学院:业:名:级:号:电子与电气工程学院电气工程及其自动化*2011级专(2)班*指导老师:时 间:2014年12月10号摘要20 世纪 90 年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电 子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在 电子技术设计领域,可编程逻辑器件(如 CPLD、FPGA)的应用,已得到广泛的普及, 这些器件为数字系统的设计带来了极大的灵活性。 这一切极大地改变了传统的数字系统 设计方法、设计过程和设计观念,促进了 EDA 技术的迅速发展。本次设计在EDA开发平台Q

2、UARTUS II 7.2上利用VHDL语言设计矩阵键盘控制接 口电路。要求设计一个4X 9矩阵键盘,一共有三个模块,分别为:扫描电路模块、时 钟产生模块、键盘译码电路和按键标志位产生电路。扫描模块中是为了产生扫描信号, 来利用扫描信号来扫描键盘中是否有按键按下。 键盘译码电路和按键标志位产生电路也 是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信 号,以便和外部电路握手。时钟产生电路是为了产生不同频率的信号,来驱动上面两个 电路的运转。通过对课题的分析研究,掌握了 VHDL 语言编程方法, 同时也增强了个人的学习能 力和动手能力。关键词:FPGA/CPLD;矩阵键盘

3、;仿真目录1. 绪论 11.1 FPGA 概况 11.2 本课题的研究意义 22. VHDL 语言介绍与 Quartus II 7.2 (32-Bit) 软件介绍 32.1 VHDL 语言的介绍 32.1.1 VHDL 语言概述 32.1.2 VHDL 语言的优点 42.1.3 利用 VHDL 语言设计数字系统的特点 62.1.4 VHDL 语言的基本结构 72.2 Quartus II 7.2 (32-Bit) 软件介绍及其用法 82.2.1 Quartus II 7.2 软件介绍 82.2.2 Quartus II 软件的用法 103. 矩阵键盘接口电路的原理与总体设计 143.1 矩阵键

4、盘接口电路的原理 143.2 总体设计 164. 各模块的设计及仿真 174.1 键盘扫描电路 174.2 键盘译码电路和按键标志位产生电路 194.3 时钟产生模块 244.4 键盘接口电路顶层电路实现 27结 论 29致 谢 30参考文献 31附录程序 321. 绪论1.1 FPGA 概况早期的可编程逻辑器件只有可编程只读存储器 ( PROM) 、紫外线可擦除只读存储器 (EPROM)和电可擦除只读存储器(E2PROM)三种。由于结构的限制,它们只能完成简 单的数字逻辑功能。其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的 PLD 由一

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

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

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

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

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

10、平,检查列线的输入。如果列线信号趣味高 电平,则代表低电平信号所在的行中无按键按下,反之,则有,则在低电平信号所在的 行和出现低电平的交叉处有按键按下。一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标 志位产生电路。扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中中是否 有按键按下。 键盘译码电路和按键标志位产生电路是为了配合扫描模块来扫描电路中是 否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。时钟产生电 路是为了产生不同频率的信号,来驱动上面两个电路的运转。在设计完各个模块后,还要对每个模块进行仿真,在仿真的过程中要对参数精心设 计,要不然

11、看不出结果的。2. VHDL 语言介绍与 Quartus II 7.2 (32-Bit) 软件介绍2.1 VHDL 语言的介绍2.1.1 VHDL 语言概述VHDL 语言的英文全名是 Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。 HDL发展的技术源头是:在 HDL形成 发展之前,已有了许多程序设计语言,如汇编、 C 、Pascal 、 Fortran 、Prolog 等。 这些语言运行在不同硬件平台和不同的操作环境中,它们适合于描述过程和算法,不适 合作硬件描述。 CAD 的出现

12、,使人们可以利用计算机进行建筑、服装等行业的辅助设 计,电子辅助设计也同步发展起来。在从 CAD 工具到 EDA 工具的进化过程中,电子 设计工具的人机界面能力越来越高。在利用 EDA 工具进行电子设计时,逻辑图、分立 电子原件作为整个越来越复杂的电子系统的设计已不适应。任何一种 EDA 工具,都需 要一种硬件描述语言来作为 EDA 工具的工作语言。这些众多的 EDA 工具软件开发 者,各自推出了自己的 HDL 语言。HDL 发展的社会根源是:美国国防部电子系统项目有众多的承包公司,由于各公 司技术路线不一致,许多产品不兼容,他们使用各自的设计语言,使得甲公司的设计不 能被乙公司重复利用,造成

13、了信息交换困难和维护困难。美国政府为了降低开发费用, 避免重复设计,国防部为他们的超高速集成电路提供了一种硬件描述语言,以期望 VHDL 功能强大、严格、可读性好。政府要求各公司的合同都用它来描述,以避免产生 歧义。由政府牵头, VHDL 工作小组于 1981 年 6 月成立,提出了一个满足电子设计各 种要求的能够作为工业标准的 HDL 。 1983 年第 3 季度,由 IBM 公司、 TI 公司、 Intermetrics。公司签约,组成开发小组,工作任务是提出语言版本和开发软件环境。 1986 年 IEEE 标准化组织开始工作,讨论 VHDL 语言标准,历时一年有余,于 1987 年 12

14、 月通过 标准审查,并宣布实施, 即 IEEE STD 1076 - 1987LRM87 。 1993 年 VHDL 重新修订, 形成了新的标准,即 IEEE STD 1076 - 1993LRM93 。从此以后,美国国防部实施新的技术标准,要求电子系统开发商的合同文件一律采 用 VHDL 文档。即第一个官方 VHDL 标准得到推广、实施和普及。HDL 语言在国外有上百种。高等学校、科研单位、 EDA 公司都有自己的 HDL 语 言。现选择较有影响的作简要介绍Candence 公司是一家著名的 EDA 公司,财力雄厚。该公司的 Verilog HDL 于 1983 年由 Gate Way De

15、sign Automatic 公司的 Phil Moorby 首创。他在 1984-1985 年间成功设 计了 Verilog-XL 仿真器,于 1986年提出了快速门级仿真的 XL 算法,使 Verilog HDL 语 言变得更加丰富和完善,从而受到了 EDA工具设计公司的青睐。1989年Candence公司 购买了 GDA 公司, Verilog HDL 语言从此变为 Candence 公司的“私有财产”成为 Can de nee公司的EDA设计环境上的硬件描述语言。经过Candence公司的努力,Verilog HDL于1995年成为IEEE标准,也是民间公司第一个硬件描述语言标准, 即

16、Verilog HDL 1364-1995。由于 Verilog HDL 语言从 C 语言发展来,所以有 C 语言基础的设计人员能 够较快入门。ALTERA 公司是一家半导体器件公司,其 CPLD 器件在世界市场上占主导地位。 这家公司不仅是硬件生产厂商,也是 EDA 工具开发商,它的 EDA 工具 MAX+plus II 、 Quartus 由于人机界面友好、易于使用、性能优良,而受到 FPGA、CPLD 器件设计人员 的欢迎。运行在 MAX+plus II 环境下的 VHDL 语言具有 C 语言设计风格,好学好用, 因此被众多用户使用。HDL 语言来自不同地方,由不同语言演变而来,为了各平

17、台之间相互转换,又推 出了 EDIF (Electronic Design Interchange Format)。它不是一种语言,而是用于不同数据 格式的 EDA 工具之间的交换设计数据。2.1.2 VHDL 语言的优点传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件的要求, 详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和系统控制流图,对 系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就进行各功 能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电 路连接起来再进行系统的调试,最后完成整个系统的硬件设计。采用传统方法设

18、计数字 系统,特别是当电路系统非常庞大时,设计者必须具备较好的设计经验,而且繁杂多样 的原理图的阅读和修改也给设计者带来诸多的不便。为了提高开发的效率,增加已有开 发成果的可继承性以及缩短开发周期,各 ASIC 研制和生产厂家相继开发了具有自己特 色的电路硬件描述语言(Hardware Description Language,简称HDL)。但这些硬件描述 语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间的相互交流带 来了极大的困难。因此,开发一种强大的、标准化的硬件描述语言作为可相互交流的设 计环境已势在必行。 于是,美国于 1981 年提出了一种新的、标准化的 HDL ,称

19、之为 VHSIC(Very High Speed Integrated Circuit) Hardware Description Language 简称 VHDL 。这是 一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。 设计者可以利用这种语 言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门级 电路,最后用 PLD 实现其功能。综合起来讲, VHDL 语言具有如下优点:(1) VHDL 语言功能强大,设计方式多样。 VHDL 语言具有强大的语言结构 , 只需采用简单明确的 VHDL 语言程序就可以描述十分复杂的硬件电路。同时 , 它还具有多层次的电路设计描述

20、功能。此外, VHDL 语言能够同时支持同步电路、异 步电路和随机电路的设计实现 , 这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法 , 也支持层次化设计方法。(2) VHDL 语言具有强大的硬件描述能力。 VHDL 语言具有多层次的电路设计 描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行 为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时, VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。 VHDL 语言的强大描述能力还体现在它具

21、有丰富的数据类型。 VHDL 语言既支持 标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较 大的自由度。(3) VHDL 语言具有很强的移植能力。 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟 器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工 作平台上去执行。(4) VHDL 语言的设计描述与器件无关。 采用 VHDL 语言描述硬件电路时 , 设 计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员 集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电

22、路的设计描 述完成以后 ,VHDL 语言允许采用多种不同的器件结构来实现。(5) VHDL 语言程序易于共享和复用。 VHDL 语言采用基于库 ( library )的设计方 法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬 件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。 这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中, 就可以在以后的设计中进行复用。 32.1.3 利用 VHDL 语言设计数字系统的特点当电路系统采用 VHDL 语言设计其硬件时,与传统的电路设计方法相比较, 具有如 下的特点:( 1 )采用自上而下的设计方

23、法。即从系统总体要求出发,自上而下地逐步将设计的内容细化,最后完成系统硬件的 整体设计。在设计的过程中,对系统自上而下分成三个层次进行设计:第一层次是行为描述。所谓行为描述,实质上就是对整个系统的数学模型的描述。 一般来说,对系统进行行为描述的目的是试图在系统设计的初始阶段,通过对系统行为 描述的仿真来发现设计中存在的问题。在行为描述阶段,并不真正考虑其实际的操作和 算法用何种方法来实现, 而是考虑系统的结构及其工作的过程是否能到达系统设计的要 求。第二层次是 RTL 方式描述。这一层次称为寄存器传输描述(又称数据流描述) 。如 前所述,用行为方式描述的系统结构的程序,其抽象程度高,是很难直接

24、映射到具体逻 辑元件结构的。 要想得到硬件的具体实现, 必须将行为方式描述的 VHDL 语言程序改写 为 RTL 方式描述的 VHDL 语言程序。也就是说,系统采用 RTL 方式描述,才能导出系 统的逻辑表达式,才能进行逻辑综合。第三层次是逻辑综合。即利用逻辑综合工具,将 RTL 方式描述的程序转换成用基 本逻辑元件表示的文件(门级网络表) 。此时,如果需要,可将逻辑综合的结果以逻辑 原理图的方式输出。此后可对综合的结果在门电路级上进行仿真,并检查其时序关系。 应用逻辑综合工具产生的门级网络表,将其转换成 PLD 的编程码点,即可利用 PLD 实 现硬件电路的设计。由自上而下的设计过程可知,从

25、总体行为设计开始到最终的逻辑综合,每一步都要 进行仿真检查,这样有利于尽早发现设计中存在的问题,从而可以大大缩短系统的设计 周期。( 2)系统可大量采用 PLD 芯片。由于目前众多制造 PLD 芯片的厂家,其工具软件均支持 VHDL 语言的编程。所以 利用 VHDL 语言设计数字系统时,可以根据硬件电路的设计需要,自行利用 PLD 设计 自用的 ASIC 芯片,而无须受通用元器件的限制。(3)采用系统早期仿真。从自上而下的设计过程中可以看到,在系统设计过程中要进行三级仿真,即行为层次仿真、 RTL 层次仿真和门级层次仿真。这三级仿真贯穿系统设计的全过程,从而可以 在系统设计的早期发现设计中存在

26、的问题,大大缩短系统设计的周期,节约大量的人力 和物力。(4) 降低了硬件电路设计难度。在传统的设计方法中, 往往要求设计者在设计电路之前写出该电路的逻辑表达式或 真值表(或时序电路的状态表) 。这一工作是相当困难和繁杂的,特别是当系统比较复 杂时更是如此。而利用 VHDL 语言设计硬件电路时, 就可以使设计者免除编写逻辑表达 式或真值表之苦,从而大大降低了设计的难度,也缩短了设计的周期。( 5)主要设计文件是用 VHDL 语言编写的源程序。与传统的电路原理图相比, 使用 VHDL 源程序有许多好处: 其一是资料量小, 便于 保存。其二是可继承性好。当设计其他硬件电路时,可使用文件中的某些库、

27、进程和过 程等描述某些局部硬件电路的程序。其三是阅读方便。阅读程序比阅读电路原理图要更 容易一些,阅读者很容易在程序中看出某一电路的工做原理和逻辑关系。而要从电路原 理图中推知其工作原理则需要较多的硬件知识和经验。2.1.4 VHDL 语言的基本结构一个完整的 VHDL 语言程序通常包含实体 ( Entity) 、构造体 ( Architecture) 、配置 (Configuration)、程序包(Package和库(Library)5个部分。前4个部分是可分别编译的 源设计单元。实体用于描述所设计的系统的外接口信号;构造体用于描述系统内部的结 构和行为;程序包存放各种设计模块都能共享的数据

28、类型、常数和子程序等;配置用于 从库中选取所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、程 序包和配置。库可由用户生成或由 ASIC 芯片制造商提供,以便于在设计中为大家所共 享。722 Quartus II 7.2 (32-Bit)软件介绍及其用法2.2.1 Quartus II 7.2 软件介绍Quartus II设计软件提供完整的多平台设计环境,能够直接满足特定设计需要,为可编程芯片系统(SOPC)提供全面的设计环境。Quartusll软件含有FPGA和CPLD设 计所有阶段的解决方案(图2.1)。图2.1 Quartusll软件含有 FPGA和CPLD设计所有阶段的解

29、决方案综合系统级设计:SOPC BuilderDSP Builder基于模块的设计:LogicLock 窗口 时序逼近布局 VQM写入此外,Quartus II软件为设计流程的每个阶段提供Quartus II图形用户界面、EDA工具界面以及命令行界面。可以在整个流程中只使用这些界面中的一个,也可以在设计 流程的不同阶段使用不同界面。本章介绍适用于每个设计流程的选项。图形用户界面设 计流程:(图2.2)设计输入文本编辑器 模块和符号编辑器Megawizard插件管理器约束输入分配编辑器 引脚规划器 设置对话框 时序逼近布局 设计分区窗口EDA 接口:分析和综合VHDL、Verilog HDL 和

30、 AHDL 设计助手RTL查看器技术射影查看器渐进式综合8功耗分析:PowerPlay功耗分析器PowerPla早期功耗估算器EDA网表写入布局布线: 适配器 分配编辑器 时序逼近布局 渐进式编译 报告窗口 资源优化向导 设计空间管理器 芯片编辑器时序逼近:时序逼近布局LogicLock 窗口时序优化向导 设计空间管理器 渐进式编译时序分析TimeQuest时序分析器 标准时序分析器 报告窗口技术映射查看器调试:SignalTap 2SignalProbe在系统存储内容编辑器RTL查看器芯片编辑器仿真:仿真器波形编辑器工程更改管理:芯片编辑资源属性编辑器更改管路编程:汇编器 编程器 转换编程文

31、件图2.2 图形用户界面设计流程Quartus II软件包括一个模块化编译器。编译器包括以下模块(标有星号的模块 表示在完整编译时,可根据设置选择使用):分析和综合分区合并*适配器汇编器*标准时序分析器和TimeQuest时序分析器*设计助手*EDA网表写入器*HardCopy?网表写入器*EDA工具与Quartus II软件配合使用时的基本设计流程:(1) 创建新工程并指定目标器件或器件系列。(2) 指定与Quartus II软件一同使用的EDA设计输入、综合、仿真、时序分析、 板级验证、形式验证以及物理综合工具,为这些工具指定其他选项。(3) 使用标准文本编辑器建立 Verilog HDL

32、 或者 VHDL 设计文件,也可以使用 MegaWizard 插件管理器建立宏功能模块的自定义变量。(4) 使用 Quartus II 支持的 EDA 综合工具之一综合您的设计,并生成 EDIF 网表文 件(.edf)或 Verilog Quartus 映射文件(.vqm)。(5) (可选)使用 Quartus II 支持的仿真工具之一对您的设计进行功能仿真。(6) 在Quartus II软件中对设计进行编译。运行EDA网表写入器,生成输出文件,供其他 EDA 工具使用。(7) (可选)使用 Quartus II 支持的 EDA 时序分析或者仿真工具之一对设计进 行时序分析和仿真。(8) (可

33、选)使用 Quartus II 支持的 EDA 形式验证工具之一进行形式验证,确保Quartus布线后网表与综合网表一致。(9) (可选)使用 Quartus II 支持的 EDA 板级验证工具之一进行板级验证。(10) (可选)使用 Quartus II 支持的 EDA 物理综合工具之一进行物理综合。(11) 使用编程器和 Altera 硬件对器件进行编程。2.2.2 Quartus II 软件的用法在建立新设计时,应重视考虑 Quartus II 软件提供的设计方法,包括自上而下或自 下而上的渐进式设计流程以及基于模块的设计流程。不管是否使用 EDA 设计输入和综 合工具,都可以使用这些设

34、计流程。自上而下与自下而上的设计方法比较Quartus II 软件同时支持自上而下和自下而上的编译流程。在自上而下的编译过程 中,一个设计人员或者工程负责人在软件中对整个设计进行编译。不同的设计人员或者 IP 提供者设计并验证设计的不同部分,工程负责人在设计实体完成后将其加入到工程 中。工程负责人从整体上编译并优化顶层工程。设计中完成的部分得到适配结果,当设 计的其他部分改动时,其性能保持不变。自下而上的设计流程中,每个设计人员在各自 的工程中对其设计进行优化后,将每一个底层工程集成到一个顶层工程中。渐进式编译 提供导出和导入功能来实现这种设计方法。作为底层模块设计人员,您可以针对他们的 设计

35、,导出优化后的网表和一组分配 (例如 LogicLock 区域)。然后,工程负责人将每 一个设计模块作为设计分区导入到顶层工程中。在这种情况下,工程负责人必须指导底 层模块设计人员,保证每一分区使用适当的器件资源。在完整的渐进式编译流程中,您 应该认识到,如果以前出于保持性能不变的原因而采用自下而上的方法,那么现在可以 采用自上而下方法来达到同样的目的。这一功能之所以重要是出于两方面的原因。第一,自上而下流程要比对应的自下而 上流程执行起来简单一些。例如,不需要导入和导出底层设计。第二,自上而下的方法 为设计软件提供整个设计的信息, 因此,可以进行全局优化。 在自下而上的设计方法中, 软件在编

36、译每一个底层分区时,并不知道顶层设计其他分区的情况,因此,必须进行资 源均衡和时序预算。自上而下渐进式编译设计流程自上而下渐进式编译设计流程重新使用以前的编译结 果,确保只对修改过的设计重新编译,因此能够保持设计性能不变,节省编译时间。自 上而下的渐进式编译流程在处理其他设计分区时,可以只修改设计中关键单元的布局, 也可以只对设计的指定部分限定布局,使编译器能够自动优化设计的其余部分,从而改 进了时序。在渐进式编译流程中,您可以为设计分区分配一个设计实体实例,然后使用 时序逼近布局图和 LogicLock 功能为分区分配一个器件物理位置, 进行完整的设计编译。 在编译过程中,编译器将综合和适配

37、结果保存在工程数据库中。第一次编译之后,如果 对设计做进一步的修改,只有改动过的分区需要重新编译。 完成设计修改后,您可以 只进行渐进式综合,节省编译时间,也可以进行完整的渐进式编译,不但能够显著节省 编译时间,而且还可以保持性能不变。在这两种情况中, Quartus II 软件为所选的任务合并所有的分区。由于渐进式编译 流程能够防止编译器跨分区边界进行优化, 因此编译器不会象常规编译那样对面积和时 序进行大量优化。为获得最佳的面积和时序结果,建议您记录设计分区的输入和输出, 尽量将设计分区数量控制在合理范围内,避免跨分区边界建立过多的关键路径,不要建 立太小的分区,如数量少于 1000 的逻

38、辑单元和自适应逻辑模块 (ALM) 分区。(1) 设计输入Quartus? II 工程包括在可编程器件中最终实现设计需要的所有设计文件, 软件源文 件和其他相关文件。使用修订,可以比较工程多个版本的设置和分配,更快、更有效地 满足设计要求。使用 Quartus II 模块编辑器、文本编辑器、 MegaWizard? 插件管理器 和 EDA 设计输入工具可以建立包括 Altera? 宏功能模块、参数化模块库( LPM )功 能和知识产权(IP)功能在内的设计。图2.3为设计输入流程:EDA综合工具(2)建立工程单击File菜单中的New Project Wizard或者运行quartus_map

39、可执行文件建立 新工程。建立新工程时,指定工程工作目录,分配工程名称,指定顶层设计实体的名称。 还可以指定在工程中使用的设计文件、其它源文件、用户库和EDA工具,以及目标器件。表2.1列出了一个 Quartus II工程的设置文件和工程文件。一旦建立了工程,可以在Settings对话框的Files页面中,从工程中添加和删除设 计文件以及其他文件。在执行分析和综合过程期间,Quartus II软件将按文件在Files页 面中显示的顺序来处理文件。 单击Project菜单中的Copy Project命令,将整个工程复 制到新的目录下,包括工程设计数据库文件、设计文件、设置文件和报告文件,然后在 新

40、目录下,打开该工程。如果还没有建立新目录,Quartus II将生成该目录。ProjectNavigator显示与当前修订相关的信息并且以图形表示工程层次、文件和设计单元,以 及各种菜单命令的快捷键。您也可以右键单击信息,点击Customize Colum ns命令,自定义Project Navigator所显示的信息。表2.1 Quartus II工程文件文件解说Quartus II工程文件(.qpf)指定用来建立工程和与工程相关修订的Quartus II软件版本。Quartus II设置文件(qsf)包括分配编辑器、平面布局编辑器、Settings 对话框、Tel 脚本、Quartus I

41、I 可执行文件产生的所有修订范围内或者独Sy nopsys设计约束文件(.sdc)立的分配。工程中每个修订有一个QSF。含有以业界标准Synopsys设计约束格式表示的设计约束和时序分配。Syn opsysQuartus II工作空间文件(.qws)设计约束文件中的约束米用Tel工具命令语言进行描述,符合Tel语法规则。包含用户偏好和其他信息,例如窗口位 置,窗口中打开文件及其位置。Quartus II默认设置文件(.qdf)位于win 目录下,包括所有全局默认设置。QSF中的设置将替代这些设置。363. 矩阵键盘接口电路的原理与总体设计3.1矩阵键盘接口电路的原理在键盘中按键数量较多时,为了

42、减少I/O 口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个 按键加以连接。这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成 20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要 复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的FPGA的I/O 口作为输出端,而列线所接的I/O 口则作为输入。这样,当按键没有按下时, 所有的输出端都是高电平,代表无键按下

43、。行线输出是低电平,一旦有键按下, 则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。行列式键盘的电路原理如图3.1所示:(为了说明问题以4*4为例)+5v图3.1行列式键盘的电路原理如图设置扫描信号为关系如表3.1所示:keydrv3keydrv0,列线按键输入信号 keyin3keyinO与按键位置的表3.1扫描信号和列线按键输入信号与按键之间的关系表keydrv3keydrv0key in 3key in0对应的按键111011110110121011301114111051101110161011701118111091011110101011A0111B1110C

44、01111101D1011E0111F3.2总体设计系统结构的总体设计图3.2 键盘接口电路结构图由行列式键盘原理就可以知道,要正确的完成键盘输入工作必须有按键扫描电路产生keydrv3keydrv0信号。同时还必须有按键译码电路从keydrv3keydrv0信号和keyin3key in0信号中译码出按键的值。此外,一般还需要一个按键发生信号用于和其他模块 接口,通知其他模块键盘上有按键动作发生,并可以从键盘上读取按键的键值。由于各 个模块需要的时钟频率是不一样的,因此时钟产生模块就是用于产生各个模块需要的时 钟信号。因此得到接盘接口电路的结构如上图所示。4. 各模块的设计及仿真4.1 键盘

45、扫描电路键盘扫描电路是用于产生keydrv3keydrv0信号,其变化的顺序依次是1110-110 1-1011-0111-周而复始地扫描。其停留在某个状态的时间大约为10ms。更短的停留时间是没有必要的,因为人按键的时间大约为10ms,不可能有更快的按键动作发生;另外,更短的停留时间还容易采集到抖动信号,会干扰判断。而太长的停留时 间则会使某些较快的按键东走丢失。键盘扫描电路的外部接口电路如图 4.1所示,其中clk_scan是周期为10ms的扫描时 钟,keydrv为输出到键盘的扫描信号,宽度为 4位。图4.1键盘扫描电路的外部接口电路图其VHDL苗述如下:LIBRARY ieee;USE

46、 ieee.std_logic_1164.all;-Entity DeclarationENTITY key_scan IS-ALTERA_IO_BEGIN DO NOT REMOVE THIS LINE!PORT(-扫描时钟,周期10msclk_scan : IN STD_LOGIC;keydrv : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)-输出扫描信号);- ALTERA_IO_END DO NOT REMOVE THIS LINE!END key_scan;- Architecture BodyARCHITECTURE key_scan_architecture

47、 OF key_scan ISCONSTANT s0 :STD_LOGIC_VECTOR(3DOWNTO0):=1110 ;-定义状态机编码CONSTANTs1 :STD_LOGIC_VECTOR(3DOWNTO0):=11010):=1011 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 cl

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

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

50、值的电 路,它的真值表就是以前行扫描信号、列扫描与按键位置的关系图。按键标志位产生电路是产生按键标志位信号keypressed的电路。由于这两个电路关系紧密,因此放入同一 个模块中实现。其外部接口图如图4.3所示。其中clk为局信号,它是由FPGA芯片的外部晶振给出的。clk在系统中的频率是最高,其他时 钟都是它的分频产生。keydrv为键盘扫描信号,keyin为键盘输入信号,keyvalue为键 值(代表按键所在的位置),keypressed表示有一个按键被按下,每发生一次按键动作, keypressec就输出一个宽度为全局时钟周期的正脉冲。该信号用于与其他模块握手,负 责通知其他模块键盘是

51、否有按键发生。其他模块在keypressed有效时,可以读取键值。亠巧坛:uL 匚1keyvalwe3. .OJp = t+1nr图4.3键盘译码电路的外部接口其VHDL实现如下:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY keydecoder ISPORT(clk : IN STD_LOGIC;-全局时钟clk_sca n : IN STD_LOGIC;-扫描时钟keyin : IN STD_LOGIC_VECTOR(8 DOWNTO 0);-键盘输入keydrv : IN STD_

52、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_pressed: STD_LOGIC;SIGNAL keypressed_asy:

53、STD_LOGIC;SIGNAL q1,q2,q3,q4,q5,q6 :STD_LOGIC; BEGINtemp=keyin & keydrv;-译码进程 参见附录程序-按键标志产生电路 process (clk_scan) beginif (clk_scanevent and clk_scan=1) then q1=temp_pressed; q2=q1;q3=q2;q4=q1;end if;keypressed_asy=q1or q2 or q3 or q4 ; end process;-同步化 keypressed_asy process(clk) beginif(clkevent and clk=1) then q5=keypressed_asy; q6=q5;end if; keypressed=q5 and not(q6) ; end process;END keydecoder_architecture;上面程序是改进的程序,原程序是:-同步化有键被按下PROCESS (clk)BEGINIF (clkevent and clk =1)THENq1v=temp_pressed;q2=q1;END IF;keypressed=q1 and not(q2);END PROCESS;END keydecoder_architectur

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论