1、基于FPGA的矩阵键盘接口电路的设计EDA课程设计设计题目:矩阵键盘控制接口设计学 院:电子与电气工程学院专 业:电气工程及其自动化 姓 名: * 班 级: 2011级专(2)班 学 号: * 指导老师: 时 间: 2014年12月10号摘 要20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的
2、迅速发展。 本次设计在EDA开发平台QUARTUS7.2上利用VHDL语言设计矩阵键盘控制接口电路。要求设计一个49矩阵键盘,一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中是否有按键按下。键盘译码电路和按键标志位产生电路也是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。时钟产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。通过对课题的分析研究,掌握了VHDL语言编程方法,同时也增强了个人的学习能力和动手能力。关键词: FPGA/CPLD;矩
3、阵键盘;仿真1. 绪论1.1 FPGA概况早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。 PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门
4、的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通用阵列逻辑(GAL、Generic ArrayLogic),如GAL16V8、GAL22V10等。它采用了EPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共
5、同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL结构的扩展型CPLD(Complex Programmable Logic Dvice)和与标准门阵列类似的FPGA(FieldProgrammable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其他ASIC(Application Specific IC)相比,它们又具有设计开发周期短
6、、设计制造成本低、开发工具先进、标准产品不需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10 000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。121.2 本课题的研究意义近年来EDA技术在电子领域引发的技术革命,推动着电子技术的迅猛发展,为世人所瞩目,而FPGA为代表的可编程逻辑器件的应用,更是受到业内人士的普遍关注。伴随着大规模集成电路和计算机技术的高速发展,在设计工业自动化,仪器仪表,计算机设计与应用、通信、国防等领域的电子系统中,FPGA技术的含量正以惊人的速度提升。将尽可能大的完整
7、的电子系统在单一FPGA芯片中实现已成为现实,电子类新技术项目的开发也更多地依赖于FPGA技术的应用。作为FPGA研究课题之一的矩阵键盘控制接口电路的设计,在FPGA设计中是一个经常被提到的话题,就像是利用PFGA设计数字中一样,虽然简单,但是却是一个很有研究意义的话题,涉及到怎么样才能是FPGA资源更加充分利用,现在很多电子产品都涉及到按键,小的有独立按键,大的有N*N的矩阵键盘,独立按键由于案件的个数少,也就没必要考虑资源的利用问题了。而矩阵键盘,由于按键多,对整个系统的影响大,所以肯定要考虑资源的利用问题,而且还要考虑一下电路里面的时序问题。本次设计要求设计一个4*9矩阵键盘,也就是行为
8、4,列为9,一共可以设计36个按键。其中设计方法为:一般判断键盘中有没有按键按下是通过航线送入扫描信号,然后从列线中读取状态得到的,其方法是依次给行线送入低电平,检查列线的输入。如果列线信号趣味高电平,则代表低电平信号所在的行中无按键按下,反之,则有,则在低电平信号所在的行和出现低电平的交叉处有按键按下。一共有三个模块,分别为:扫描电路模块、时钟产生模块、键盘译码电路和按键标志位产生电路。扫描模块中是为了产生扫描信号,来利用扫描信号来扫描键盘中中是否有按键按下。键盘译码电路和按键标志位产生电路是为了配合扫描模块来扫描电路中是否有按键按下,而且还要求它来产生按键标志信号,以便和外部电路握手。时钟
9、产生电路是为了产生不同频率的信号,来驱动上面两个电路的运转。在设计完各个模块后,还要对每个模块进行仿真,在仿真的过程中要对参数精心设计,要不然看不出结果的。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
10、 、Prolog 等。这些语言运行在不同硬件平台和不同的操作环境中,它们适合于描述过程和算法,不适合作硬件描述。 CAD 的出现,使人们可以利用计算机进行建筑、服装等行业的辅助设计,电子辅助设计也同步发展起来。在从 CAD 工具到 EDA 工具的进化过程中,电子设计工具的人机界面能力越来越高。在利用 EDA 工具进行电子设计时,逻辑图、分立电子原件作为整个越来越复杂的电子系统的设计已不适应。任何一种 EDA 工具,都需要一种硬件描述语言来作为 EDA 工具的工作语言。这些众多的 EDA 工具软件开发者,各自推出了自己的HDL 语言。 HDL发展的社会根源是:美国国防部电子系统项目有众多的承包公
11、司,由于各公司技术路线不一致,许多产品不兼容,他们使用各自的设计语言,使得甲公司的设计不能被乙公司重复利用,造成了信息交换困难和维护困难。美国政府为了降低开发费用,避免重复设计,国防部为他们的超高速集成电路提供了一种硬件描述语言,以期望 VHDL 功能强大、严格、可读性好。政府要求各公司的合同都用它来描述,以避免产生歧义。 由政府牵头, VHDL 工作小组于1981 年 6 月成立,提出了一个满足电子设计各种要求的能够作为工业标准的HDL 。1983年第 3 季度,由 IBM 公司、 TI 公司、 Intermetrics。公司签约,组成开发小组,工作任务是提出语言版本和开发软件环境。1986
12、 年 IEEE 标准化组织开始工作,讨论 VHDL 语言标准,历时一年有余,于1987 年 12 月通过标准审查,并宣布实施,即 IEEE STD 1076 - 1987LRM87。1993 年 VHDL 重新修订,形成了新的标准,即 IEEE STD 1076 - 1993LRM93。 从此以后,美国国防部实施新的技术标准,要求电子系统开发商的合同文件一律采用 VHDL 文档。即第一个官方VHDL标准得到推广、实施和普及。HDL 语言在国外有上百种。高等学校、科研单位、EDA公司都有自己的HDL语言。现选择较有影响的作简要介绍。 Candence 公司是一家著名的EDA公司,财力雄厚。该公司
13、的 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 标准,也是民间公司第
14、一个硬件描述语言标准,即Verilog HDL 1364-1995。由于Verilog HDL语言从C语言发展来,所以有C语言基础的设计人员能够较快入门。 ALTERA 公司是一家半导体器件公司,其CPLD器件在世界市场上占主导地位。这家公司不仅是硬件生产厂商,也是EDA工具开发商,它的EDA工具MAX+plus II、Quartus由于人机界面友好、易于使用、性能优良,而受到FPGA、CPLD器件设计人员的欢迎。运行在MAX+plus II环境下的VHDL语言具有C语言设计风格,好学好用,因此被众多用户使用。 HDL语言来自不同地方,由不同语言演变而来,为了各平台之间相互转换,又推出了EDI
15、F (Electronic Design Interchange Format)。它不是一种语言,而是用于不同数据格式的EDA 工具之间的交换设计数据。2.1.2 VHDL语言的优点传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。采用传统方法设计数字系统,特别是当电路系统非常庞大时,设计者必
16、须具备较好的设计经验,而且繁杂多样的原理图的阅读和修改也给设计者带来诸多的不便。为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发周期,各ASIC研制和生产厂家相继开发了具有自己特色的电路硬件描述语言(Hardware Description Language,简称HDL)。但这些硬件描述语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间的相互交流带来了极大的困难。因此,开发一种强大的、标准化的硬件描述语言作为可相互交流的设计环境已势在必行。于是,美国于1981年提出了一种新的、标准化的HDL,称之为VHSIC(Very High Speed Integrated Cir
17、cuit)Hardware Description Language,简称VHDL。这是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。设计者可以利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门级电路,最后用PLD实现其功能。综合起来讲,VHDL语言具有如下优点:(1)VHDL 语言功能强大,设计方式多样。VHDL语言具有强大的语言结构, 只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VH
18、DL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。(2)VHDL 语言具有强大的硬件描述能力。VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL语言的强大描述能力还体现在它具有丰富的数据类型。VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。(3)VHDL语言具有很强的移
19、植能力。VHDL语言很强的移植能力主要体现在: 对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。 (4)VHDL语言的设计描述与器件无关。采用VHDL语言描述硬件电路时, 设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。(5)VHDL语言程序易于共享和复用。VHDL语言采用基于库(library)的设计方法。在设计过程中,设计人员可以建
20、立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。32.1.3 利用VHDL语言设计数字系统的特点当电路系统采用VHDL语言设计其硬件时,与传统的电路设计方法相比较,具有如下的特点:(1)采用自上而下的设计方法。即从系统总体要求出发,自上而下地逐步将设计的内容细化,最后完成系统硬件的整体设计。在设计的过程中,对系统自上而下分成三个层次进行设计:第一层次是行为描述。所谓行为描述,实质上就是对整个系统的数学模型的描述。一般来说,对系统进行行
21、为描述的目的是试图在系统设计的初始阶段,通过对系统行为描述的仿真来发现设计中存在的问题。在行为描述阶段,并不真正考虑其实际的操作和算法用何种方法来实现,而是考虑系统的结构及其工作的过程是否能到达系统设计的要求。第二层次是RTL方式描述。这一层次称为寄存器传输描述(又称数据流描述)。如前所述,用行为方式描述的系统结构的程序,其抽象程度高,是很难直接映射到具体逻辑元件结构的。要想得到硬件的具体实现,必须将行为方式描述的VHDL语言程序改写为RTL方式描述的VHDL语言程序。也就是说,系统采用RTL方式描述,才能导出系统的逻辑表达式,才能进行逻辑综合。第三层次是逻辑综合。即利用逻辑综合工具,将RTL
22、方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。此时,如果需要,可将逻辑综合的结果以逻辑原理图的方式输出。此后可对综合的结果在门电路级上进行仿真,并检查其时序关系。应用逻辑综合工具产生的门级网络表,将其转换成PLD的编程码点,即可利用PLD实现硬件电路的设计。由自上而下的设计过程可知,从总体行为设计开始到最终的逻辑综合,每一步都要进行仿真检查,这样有利于尽早发现设计中存在的问题,从而可以大大缩短系统的设计周期。(2)系统可大量采用PLD芯片。由于目前众多制造PLD芯片的厂家,其工具软件均支持VHDL语言的编程。所以利用VHDL语言设计数字系统时,可以根据硬件电路的设计需要,自行利用
23、PLD设计自用的ASIC芯片,而无须受通用元器件的限制。(3)采用系统早期仿真。从自上而下的设计过程中可以看到,在系统设计过程中要进行三级仿真,即行为层次仿真、RTL层次仿真和门级层次仿真。这三级仿真贯穿系统设计的全过程,从而可以在系统设计的早期发现设计中存在的问题,大大缩短系统设计的周期,节约大量的人力和物力。(4)降低了硬件电路设计难度。在传统的设计方法中,往往要求设计者在设计电路之前写出该电路的逻辑表达式或真值表(或时序电路的状态表)。这一工作是相当困难和繁杂的,特别是当系统比较复杂时更是如此。而利用VHDL语言设计硬件电路时,就可以使设计者免除编写逻辑表达式或真值表之苦,从而大大降低了
24、设计的难度,也缩短了设计的周期。(5)主要设计文件是用VHDL语言编写的源程序。与传统的电路原理图相比,使用VHDL源程序有许多好处:其一是资料量小,便于保存。其二是可继承性好。当设计其他硬件电路时,可使用文件中的某些库、进程和过程等描述某些局部硬件电路的程序。其三是阅读方便。阅读程序比阅读电路原理图要更容易一些,阅读者很容易在程序中看出某一电路的工做原理和逻辑关系。而要从电路原理图中推知其工作原理则需要较多的硬件知识和经验。2.1.4 VHDL语言的基本结构一个完整的VHDL语言程序通常包含实体(Entity)、构造体(Architecture)、配置(Configuration)、程序包(
25、Package)和库(Library)5个部分。前4个部分是可分别编译的源设计单元。实体用于描述所设计的系统的外接口信号;构造体用于描述系统内部的结构和行为;程序包存放各种设计模块都能共享的数据类型、常数和子程序等;配置用于从库中选取所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、程序包和配置。库可由用户生成或由ASIC芯片制造商提供,以便于在设计中为大家所共享。2.2 Quartus II 7.2 (32-Bit)软件介绍及其用法2.2.1 Quartus II 7.2软件介绍Quartus II设计软件提供完整的多平台设计环境,能够直接满足特定设计需要,为可编程芯片系统(S
26、OPC)提供全面的设计环境。QuartusII 软件含有 FPGA 和 CPLD 设计所有阶段的解决方案 (图2.1)。图2.1 QuartusII 软件含有 FPGA 和 CPLD 设计所有阶段的解决方案此外,Quartus II 软件为设计流程的每个阶段提供 Quartus II 图形用户界面、EDA工具界面以及命令行界面。可以在整个流程中只使用这些界面中的一个,也可以在设计流程的不同阶段使用不同界面。本章介绍适用于每个设计流程的选项。图形用户界面设计流程:(图2.2 )图2.2 图形用户界面设计流程Quartus II 软件包括一个模块化编译器。编译器包括以下模块(标有星号的模块表示在完
27、整编译时,可根据设置选择使用): 分析和综合 分区合并* 适配器 汇编器 * 标准时序分析器和TimeQuest时序分析器* 设计助手* EDA网表写入器* HardCopy 网表写入器 *EDA 工具与 Quartus II 软件配合使用时的基本设计流程:(1)创建新工程并指定目标器件或器件系列。(2)指定与 Quartus II 软件一同使用的 EDA 设计输入、综合、仿真、时序分析、板级验证、形式验证以及物理综合工具,为这些工具指定其他选项。(3)使用标准文本编辑器建立 Verilog HDL 或者 VHDL 设计文件,也可以使用MegaWizard 插件管理器建立宏功能模块的自定义变量
28、。(4)使用Quartus II支持的EDA综合工具之一综合您的设计,并生成EDIF网表文件(.edf)或 Verilog Quartus映射文件(.vqm)。(5)(可选)使用Quartus II支持的仿真工具之一对您的设计进行功能仿真。(6)在Quartus II软件中对设计进行编译。运行 EDA网表写入器,生成输出文件,供其他 EDA工具使用。(7)(可选)使用Quartus II支持的EDA时序分析或者仿真工具之一对设计进行时序分析和仿真。(8)(可选)使用Quartus II支持的EDA形式验证工具之一进行形式验证,确保Quartus布线后网表与综合网表一致。(9)(可选)使用Qua
29、rtus II 支持的EDA板级验证工具之一进行板级验证。(10)(可选)使用Quartus II 支持的EDA物理综合工具之一进行物理综合。(11)使用编程器和 Altera 硬件对器件进行编程。2.2.2 Quartus II 软件的用法在建立新设计时,应重视考虑 Quartus II 软件提供的设计方法,包括自上而下或自下而上的渐进式设计流程以及基于模块的设计流程。不管是否使用EDA设计输入和综合工具,都可以使用这些设计流程。 自上而下与自下而上的设计方法比较Quartus II 软件同时支持自上而下和自下而上的编译流程。在自上而下的编译过程中,一个设计人员或者工程负责人在软件中对整个设
30、计进行编译。不同的设计人员或者IP提供者设计并验证设计的不同部分,工程负责人在设计实体完成后将其加入到工程中。工程负责人从整体上编译并优化顶层工程。设计中完成的部分得到适配结果,当设计的其他部分改动时,其性能保持不变。自下而上的设计流程中,每个设计人员在各自的工程中对其设计进行优化后,将每一个底层工程集成到一个顶层工程中。渐进式编译提供导出和导入功能来实现这种设计方法。作为底层模块设计人员,您可以针对他们的设计,导出优化后的网表和一组分配 (例如 LogicLock区域)。然后,工程负责人将每一个设计模块作为设计分区导入到顶层工程中。在这种情况下,工程负责人必须指导底层模块设计人员,保证每一分
31、区使用适当的器件资源。在完整的渐进式编译流程中,您应该认识到,如果以前出于保持性能不变的原因而采用自下而上的方法,那么现在可以采用自上而下方法来达到同样的目的。这一功能之所以重要是出于两方面的原因。第一,自上而下流程要比对应的自下而上流程执行起来简单一些。例如,不需要导入和导出底层设计。第二,自上而下的方法为设计软件提供整个设计的信息,因此,可以进行全局优化。在自下而上的设计方法中,软件在编译每一个底层分区时,并不知道顶层设计其他分区的情况,因此,必须进行资源均衡和时序预算。自上而下渐进式编译设计流程自上而下渐进式编译设计流程重新使用以前的编译结果,确保只对修改过的设计重新编译,因此能够保持设
32、计性能不变,节省编译时间。自上而下的渐进式编译流程在处理其他设计分区时,可以只修改设计中关键单元的布局,也可以只对设计的指定部分限定布局,使编译器能够自动优化设计的其余部分,从而改进了时序。在渐进式编译流程中,您可以为设计分区分配一个设计实体实例,然后使用时序逼近布局图和LogicLock功能为分区分配一个器件物理位置,进行完整的设计编译。在编译过程中,编译器将综合和适配结果保存在工程数据库中。第一次编译之后,如果对设计做进一步的修改,只有改动过的分区需要重新编译。 完成设计修改后,您可以只进行渐进式综合,节省编译时间,也可以进行完整的渐进式编译,不但能够显著节省编译时间,而且还可以保持性能不变。在这两种情况中,Quartus II 软件为所选的任务合并所有的分区。由于渐进式编译流程能够防止编译器跨分区边界进行优化,因此编译器不会象常规编译那样对面积和时序进行大量优化。为获得最佳的面积和时序结果,建议您记录设计分
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1