VHDL语言设计竞赛抢答器设计方案Word格式文档下载.docx
《VHDL语言设计竞赛抢答器设计方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《VHDL语言设计竞赛抢答器设计方案Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
突出优点是可反复编程,系统上电时,给FPGA加载不同的配置数据,即可令其完成不同的硬件功能。
这种配置的改变甚至可以在系统的运行中进行,实现系统功能的动态重构。
传统的数字逻辑设计使用TTL电平和小规模的数字集成电路来完成逻辑电路图。
使用这些标准的逻辑器件已经被证实是最便宜的手段,但是要求做一些布线和复杂的电路集成板(焊接调试)等工作,如果出现错误,改动起来特别麻烦。
因此,采用传统电子设计方案人员的很大一部分工作主要集中在设备器件之间物理连接、调试以及故障解决方面。
正是因为FPGA的EDA技术使用了更高级的计算机语言,电路的生成基本上是由计算机来完成,将使用户能较快地完成更复杂的数字电路设计,由于没有器件之间的物理连接,因此调试及故障排除更迅速、有效[3]。
2.1.2传统FPGA的不足与改进
在现今的数字系统设计中,以“嵌入式微控制器+FPGA”为核心的体系结构因其强大的处理能力和灵活的工作方式而被广泛采用。
嵌入式微控制器的优势在于将微处理器核与丰富多样的外围接口设备紧密结合,在提供强大的运算、控制功能的同时,降低了系统成本和功耗,因而适合作为数字系统的控制核心;
FPGA的优势在于超高速、丰富的逻辑资源以及用户可灵活配置的逻辑功能,适用于逻辑接口功能多种多样、灵活可变的场合。
将二者结合形成优势互补,如有需要,再配以适当的专用芯片(例如音视频编解码器、数字调制解调器等)。
这种体系结构适用于大多数复杂数字系统的设计。
如系统中包含可编程器件,就必须考虑其功能配置的问题。
然而,传统的FPGA配置方案(例如调试阶段的专用下载电费方式、成品阶段的专用存储器方式)在成本、效率、灵活性等方面都存在着明显的不足。
针对这样的实际问题,基于嵌入式微控制器与FPGA广泛共存于复杂数字系统的背景,考虑到大量数字系统要求接入Internet的现状,借鉴软件无线电“一机多能”的思想,提出了一种基于嵌入式系统和Internet的FPGA动态配置方案。
该方案的提出,旨在基于系统现有的、通用的软硬件资源,尽可能地提高FPGA配置的效率和灵活性。
实践证明,该方案可行、实用,达到了设计目的。
2.1.3FPGA工作原理
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片RAM中的程序来设置其工作状态的,因此,工作时需要对片的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
2.1.4FPGA配置模式
FPGA有多种配置模式:
并行主模式为一片FPGA加一片EPROM的方式;
主从模式可以支持一片PROM编程多片FPGA;
串行模式可以采用串行PROM编程FPGA;
外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题[4]。
如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。
2.1.5FPGA系统设计流程
一般说来,一个比较大的完整的项目应该采用层次化的描述方法:
分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是TOPDOWN(自顶向下)的设计方法。
目前这种高层次的设计方法已被广泛采用。
高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。
CPLD/FPGA系统设计的工作流程如图2-2所示。
流程说明:
1).工程师按照“自顶向下”的设计方法进行系统划分。
2).输入VHDL代码,这是设计中最为普遍的输入方式。
此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。
3).将以上的设计输入编译成标准的VHDL文件。
4).进行代码级的功能仿真,主要是检验系统功能设计的正确性。
这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。
一般情况下,这一仿真步骤可略去。
5).利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。
综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。
6).利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。
一般的设计,也可略去这一步骤。
图2CPLD/FPGA系统设计流程
7).利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。
8).在适配完成后,产生多项设计结果:
(a)适配报告,包括芯片部资源利用情况,设计的布尔方程描述情况等;
(b)适配后的仿真模型;
(c)器件编程文件。
根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。
如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。
最后将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片CPLD/FPGA中。
2.2VHDL语言
2.2.1VHDL语言简介
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用围较小的设计语言[5]。
VHDL的英文全写是:
VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage.翻译成中文就是超高速集成电路硬件描述语言。
因此它的应用主要是应用在数字电路的设计中。
目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。
当然在一些实力较为雄厚的单位,它也被用来设计ASIC。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和部(或称不可视部分),既涉及实体的部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成外部分的概念是VHDL系统设计的基本点[6]。
2.2.2VHDL系统设计的特点
与其他硬件描述语言相比,VHDL具有以下特点:
功能强大、设计灵活。
VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。
它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。
VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言虽不能比拟的。
VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;
既支持模块化设计,又支持层次化设计。
支持广泛、易于修改。
由于VHDL已经成为IEEE标准所规的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。
在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。
强大的系统硬件描述能力。
VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。
而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。
另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。
VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。
独立于器件的设计、与工艺无关。
设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。
当设计描述完成后,可以用多种不同的器件结构来实现其功能。
很强的移植能力。
VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。
易于共享和复用。
VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。
这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。
2.2.3VHDL系统优势
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计[8]。
2.3EDA
EDA(ElectronicDesignAutomation,电子设计自动化)是90年代发展起来的从事电子线路设计与分析的一门技术。
EDA技术主要以计算机为工具[9]。
设计者在EDA平台上,用相关软件完成设计工作,然后由计算机自动完成逻辑编译、化简、优化、布局、布线和仿真,直到对目标芯片的适配编译、逻辑映射以及编程下载等工作。
传统设计方法的缺点是:
1)复杂电路的设计、调试十分困难。
2)如果某一过程存在错误,查找和修改十分不便。
3)设计过程中产生大量文档,不易管理。
4)对于集成电路设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差。
5)只有在设计出样机或生产出芯片后才能进行实测。
EDA技术有很大不同:
1)采用硬件描述语言作为设计输入。
2)库(Library)的引入。
3)设计文档的管理。
4)强大的系统建模、电路仿真功能。
5)适用于高效率大规模系统设计的自顶向下设计方案。
6)全方位地利用计算机自动设计、仿真和测试技术。
7)对设计者的硬件知识和硬件经验要求低。
8)高速性能好。
9)纯硬件系统的高可靠性。
图3.EDA设计流程
2.4QuartusII
2.4.1QuartusII简介
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点[10]。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;
支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法[11]。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
支持MAX7000/MAX3000等乘积项器件。
2.4.2QuartusII主要特点
1).QuartusII支持其他公司所提供的EDA工具接口。
2).提供了与结构无关的可编程逻辑设计环境。
3).提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能器件。
4).软件支持硬件描述语言设计输入选项,包括VHDL、VerilogHDL和Altera自己的硬件描述语言AHDL。
3设计思路与系统结构
作为现代集成电路设计的重点与热点,FPGA设计一般采用自顶向下、由粗到细、逐步求精的方法。
设计最顶层是指系统的整体要求,最下层是指具体的逻辑电路实现[12]。
自顶向下是将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大则进一步分解为更小的子系统和模块,层层分解,直至整个系统中各子模块关系合理、便于设计实现为止。
本文运用EDA中的OuartusII作为软件开发平台,设计了一款基于FPGA的智力竞赛抢答器。
3.1课题研究的容
1)、设计一个可容纳4组参赛的数字式抢答器,每组设一个按钮,供抢答使用。
2)、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
3)、设置一个主持人“复位”按钮。
4)、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2-3秒的音响。
5)、设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。
3.2设计思路
本系统设计一个智力竞赛抢答器要求具有四路抢答输入,能够识别最先抢答的信号,显示该台号;
对回答问题所用的时间进行计时、显示、超时报警同时具有复位功能和倒计时启动功能。
在设计过程中先将系统模块化,然后逐步实现,系统设计原理图如图4。
图4抢答器系统原理图
3.3电子抢答器的设计
3.3.1功能模块划分
根据对抢答器的功能要求,把要设计的系统划分为六个功能模块:
抢答信号判别模块,锁存模块,转换模块,扫描模块,定时与报警模块,译码与显示模块。
3.3.2功能分析
判断模块:
该模块用以判断各选手抢答的先后,记录最先抢答的选手并不再接受其它输入信号。
锁存模块:
该模块用以锁存最先抢答的选手,以便输出显示。
转换模块:
该模块用来将抢答选手的信息转换为二进制数,以便译码显示。
扫描模块:
该模块主要用来扫描显示数据,扫描频率可以调整,便于动态显示。
该模块主要完成两个任务:
扫描信号的建立和数码管的选择[13]。
定时与报警模块:
该模块用来对选手进行答题限时,答题时间到后输出报警信号。
译码与显示模块:
对数据进行译码送出数码管显示。
该模块主要任务是完成二进制数到段码的转换。
二进制数主要记录最先抢答的选手和时间信号,显示结果由3个数码管经过扫描信号依次点亮[14,15]。
3.3.3模块的设计
根据上述分析设计了各功能模块问的结构关系,如图5。
各个模块存MAX+PLUSⅡ环境下用VHDL语言来实现,顶层文件采用原理图输入。
FENG模块是抢答判断模块,在各个选手1,2,3,4抢答操作后,将四路信号相与,并送出高电平Q给锁存器,锁存当时的按键状态,由于抢答信号是低电平有效,故相与后的结果可以识别最先抢答选手,由于没有时钟同步,所以锁存的延时时间只是硬件延时时间,从而实现锁存错误的概率接近零。
LOCKB模块是锁存器模块,在任一选手按下按键后锁存,锁存的同时送出AIM信号。
clr信号为0时,d1,d2,d3,d4的输出都为0;
当c1r信号为1时,将dl赋给q1,d2赋给q2,d3赋给q3,d4赋给q4,同时将alm输出为高电平。
COUNT模块是定时模块,实现答题倒计时,在计满100S后送出报警提示。
设计中100S时间用00到99表示,显示分为高位h,底位l,另外还有限时报警sound。
设计时先将低位从9开始逐一自减,当到0时高位自减1,也就是低位每减少1O,高位就减少1。
当高位从9减少到0时,报警就输出高电平。
CH31A模块为扫描模块,轮流送出需要显示的数据。
当sel为000时,将d1赋值给q1,同时将01111111赋值给WX选通数码管;
当sel为001时,将d2赋值给q2,同时将1011lll1赋值给WX选通数码管;
当sel为011时,将d3赋值给q3,同时将11011111赋值给WX选通数码管。
图5抢答器的顶层原理图
CH41A模块是抢答结果转换模块,将抢答结果转换为二进制数。
抢答结果低电平有效,当抢答结果dld2d3d4为Olll时,输出q为0001;
当抢答结果dld2d3d4为1011时,输出q为0010;
当抢答结果dld2d3d4为1l0l时,输出q为0011;
当抢答结果dld2d3d4为111O时,输出q为0100。
SEL模块为片选模块。
产生片选信号。
此模块相当一个计数器,在时钟下自加。
DISP模块为译码模块,用于将数据转换成段码,以便数码管能正确显示。
5电子抢答器的仿真
采用EDA开发T具MAX+PLUSⅡ对各个模块的VHDL源程序及顶层电路进行编译、逻辑综合,并对各个模块以及顶层电路都进行了波形仿真。
南于文章篇幅原因,本文给出顶层电路的仿真波形。
图3是顶层电路模块整体的仿真波形,CK1为系统时钟,CIK2为动态扫描时钟,h为主持人控制开始键,高电平有效;
1、2、3、4表示