基于QuartusII的四组智力抢答器的设计与仿真Word格式文档下载.docx
《基于QuartusII的四组智力抢答器的设计与仿真Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于QuartusII的四组智力抢答器的设计与仿真Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
ABSTRACT
Thisdesignimplementsthelogicfunctionofthefour-groupintelligenceResponder.Itismainlycomposedoftheidentificationmoduleofansweringmachine,scoringmodule,7-segmentdecodedisplaymodule,top-levelmoduleandsoon.ThewholecodeisdescribedintheVHDLHardwareDescriptionLanguage,andcarriedonthecompilingandtestingintheQuartus||6.0.Byanalyzingtheresultsofsimulation,itshowsthattheansweringmachinehasmeettheexpectedfunctionsandrequirements.
Keywords:
VHDL;
QuartusII6.0;
Responder
第1章绪论
1.1研究背景
人类社会进入到高度发达的信息化社会,信息社会的发展离不开电子产品的进步。
现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。
前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管;
后者的核心就是EDA技术。
没有EDA技术的支持,想要完成上述超大规模集成电路的设计制造是不可想象的,但是面对当今飞速发展的电子产品市场,设计师需要更加实用、快捷的EDA工具,使用统一的集体化设计,改变传统的设计思路,将精力集中到设计构想、方案比较和寻找优化设计等方面,需要以最快的速度,开发出性能优良、质量一流的电子产品,对EDA技术提出了更高的要求。
传统的EDA设计方法采用自底向上的设计方法,一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试,由于无法进行硬件系统功能仿真,如果某一过程存在错误,查找和修改十分不便,所以这是一种费时、费力的设计方法,而现代电子设计技术(EDA)是自顶向下且先进高效的。
在电子产品的设计理念、设计方式、系统硬件构成、设计的重用性、知识产权、设计周期等方面,EDA技术具有一定的优势
。
所以本次设计的抢答器抛弃了传统的设计方法,选择了采用主流的EDA技术进行设计。
1.2研究目的
智力竞赛是“快乐学习”这一教育模式的典范,它采用在规定的一段时间内抢答和必答等方式,在给人们的生活带来乐趣的同时,也使参与者和观众在愉悦的氛围中学到一些科学知识和生活知识,因此很受大家的喜欢。
但是,在这类比赛中,对于谁先谁后抢答,在何时抢答,如何计算答题时间等等问题,若是仅凭主持人的主观判断,就很容易出现误判。
所以,我们就需要一种具备自动锁存,置位,清零等功能智能抢答器来解决这些问题。
智能竞赛抢答器是一种应用十分广泛的设备,在各种竞赛、抢答场合中,它都能客观、迅速地判断出最先获得发言权的选手。
早期的抢答器只是由三个三极管、可控硅、发光管等器件组成的,能通过发光管的指示辨认出选手号码。
现在大多数智能抢答器都是由单片机或数字集成电路构成的,并且新增了许多功能,如选手号码显示,抢按前或抢按后的计时,选手得分显示等功能
第2章EDA简介
20世纪末,电子技术获得飞速的发展,作为现代电子设计的核心EDA扮演的角色也越来越重要。
由于电子领域的变化可谓是日新月异,所以本章就简单的介绍一下EDA技术和EDA中几个重要的名词。
2.1EDA技术介绍
电子设计技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。
EDA技术已有30年的发展历程,大致可分为三个阶段。
70年代为计算机辅助设计(CAD)阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作。
80年代为计算机辅助工程(CAE)阶段。
与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。
CAE的主要功能是:
原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。
90年代为电子系统设计自动化(EDA)阶段。
高层次设计是一种“自顶向下”的全新设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。
在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。
然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路
由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
2.2VHDL简介
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。
归纳起来,VHDL语言主要具有以下优点:
VHDL语言功能强大、设计方式多样、VHDL语言具有强大的硬件描述能力、VHDL语言具有很强的移植能力、VHDL语言的设计描述与器件无关、语言程序易于共享和复用
2.3QuartusII简介
EDA给出的实验和设计多是基于QuartusⅡ的,其应用方法和设计流程对于其他流行的EDA工具而言具有一定的典型性和一般性,所以对此作一些介绍。
QuartusⅡ是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。
QuartusⅡ在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plusⅡ的更新换代品,其界面友好,使用快捷。
Altera的QuartusⅡ提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合环境和SOPC开发的基本设计工具,并为AlteraDSP开发包进行系统模型设计提供了集成综合环境。
QuartusⅡ设计工具完全支持Verilog,VHDL的设计流程,其内部嵌有Verilog,VHDL逻辑综合器。
QuartusⅡ也可以利用第三方的综合工具,如LeonardoSpectrum,SynplifyPro,DC-FPGA,并能直接调用这些工具,如ModelSim。
此外,QuartusⅡ与MATLAB和DSPBuilder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。
QuartusⅡ包括模块化的编译器。
编译器包括的功能模块有分析/综合器(Analyzersis&
Synthesis),适配器(Fitter),时序分析器(TimingAnalyer),设计辅助模块(DesignAssistant),EDA网表文件生成器(EDANetlistWriter)等。
此外QuartusⅡ还包括十分有用的LPM(LibraryofParameterizedModules)模块,他们是复杂或高级系统构建的重要组成部分,也可以是QuartusⅡ中与普通设计文件一起使用
QuartusⅡ编译器支持的硬件描述语言有VHDL,Verilog,SystemVerilog及AHDL
2.4可编译逻辑器件FPGA/CPLD简介
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
根据对抢答器的功能要求,把要设计的系统划分FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
第3章四组智力抢答器的设计
3.1系统设计要求
一般来说,设计一台智力抢答器,必须能够准确判断出第一位抢答者,并且通过数显、蜂鸣这些途径能让人们很容易得知谁是抢答成功者,让抢答者在规定时间内答题,主持人根据答题结果实行增减分的操作,并将分数显示在屏幕上,评出最终赢家。
所以我们在设计智力抢答器的模块需要满足鉴别、计分、数显等功能,具体设计要求如下:
设计一个四组智力抢答器系统,每组有一个对应的按钮,编号分别为A,B,C,D。
在主持人的主持下,参赛者通过抢先按下抢答按钮获得答题资格。
当某一组按下按钮并获得答题资格后,LED显示出改组编号,并有抢答成功显示,同时锁定其他组的抢答器,使其他组抢答无效。
如果主持人在未按下开始按钮前,已有人按下抢答按钮,属于违规,并显示违规组的编号,同时蜂鸣器发音提示,其他按钮无效。
获得回答资格后,若改组回答的问题正确,则加一分,否则减一分。
抢答器设有复位开关,有主持人控制。
根据抢答器的设计要求,可以使用多个不同的单元模块,并通过顶层模块对子模块单元的调用来得到抢答系统。
这些单元模块包括抢答判决模块、计分模块和7段LED显示驱动模块。
3.2顶层模块的设计
顶层模块的实体中需要定义清零信号输入端(CLR)、抢答许可控制输入端(EN)、四组抢答输入端(分别为A,B,C,D)、计分脉冲输入端(ADD_SUB_SIGN)、加/减分控制输入端(CONT_SIGN)、A组得分结果显示输出端(AA2_DISP、AA1_DISP、AA0_DISP)、B组得分结果显示输出端(BB2_DISP、BB1_DISP、BB0_DISP)、C组得分结果显示输出端(CC2_DISP、CC1_DISP、CC0_DISP)、D组得分结果显示输出端(DD2_DISP、DD1_DISP、DD0_DISP)、成功抢答组号显示输出端(T_DISP)、提前抢答报警输出端(F_DISP)和抢答成功提示灯(LED_A、LED_B、LED_C、LED_D)
顶层模块程序编写如下:
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_unsigned.all;
ENTITYTOPIS
Port(CLR:
instd_logic;
EN:
A,B,C,D:
ADD_SUB_SIGN:
INSTD_LOGIC;
CONT_SIGN:
INBIT;
LED_A:
OUTSTD_LOGIC;
LED_B:
LED_C:
LED_D:
T_DISP:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
F_DISP:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
AA2_DISP:
AA1_DISP:
AA0_DISP:
BB2_DISP:
BB1_DISP:
BB0_DISP:
CC2_DISP:
CC1_DISP:
CC0_DISP:
DD2_DISP:
DD1_DISP:
DD0_DISP:
OUTSTD_LOGIC_VECTOR(6DOWNTO0)
);
ENDTOP;
ARCHITECTUREEXOFTOPIS
COMPONENTQDPBIS
PORT(CLR:
T_LED:
F_LED:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
);
ENDCOMPONENTQDPB;
COMPONENTCONTIS
PORT(
CHOS:
INSTD_LOGIC_VECTOR(3DOWNTO0);
AA2,AA1,AA0:
BB2,BB1,BB0:
CC2,CC1,CC0:
DD2,DD1,DD0:
ENDCOMPONENTCONT;
COMPONENTLED_DRIVIS
PORT(DIN:
DOUT:
ENDCOMPONENTLED_DRIV;
SIGNALT_LED:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALAA2_POINTS:
SIGNALAA1_POINTS:
SIGNALAA0_POINTS:
SIGNALBB2_POINTS:
SIGNALBB1_POINTS:
SIGNALBB0_POINTS:
SIGNALCC2_POINTS:
SIGNALCC1_POINTS:
SIGNALCC0_POINTS:
SIGNALDD2_POINTS:
SIGNALDD1_POINTS:
SIGNALDD0_POINTS:
BEGIN
U0:
QDPBPORTMAP(CLR=>
CLR,EN=>
EN,A=>
A,B=>
B,C=>
C,D=>
D,
LED_A=>
LED_A,LED_B=>
LED_B,LED_C=>
LED_C,LED_D=>
LED_D,
T_LED=>
T_LED,F_LED=>
F_DISP);
U1:
CONTPORTMAP(ADD_SUB_SIGN=>
ADD_SUB_SIGN,
CONT_SIGN=>
CONT_SIGN,CHOS=>
T_LED,
AA2=>
AA2_POINTS,AA1=>
AA1_POINTS,AA0=>
AA0_POINTS,
BB2=>
BB2_POINTS,BB1=>
BB1_POINTS,BB0=>
BB0_POINTS,
CC2=>
CC2_POINTS,CC1=>
CC1_POINTS,CC0=>
CC0_POINTS,
DD2=>
DD2_POINTS,DD1=>
DD1_POINTS,DD0=>
DD0_POINTS);
U2:
LED_DRIVPORTMAP(DIN=>
T_LED,DOUT=>
T_DISP);
U3:
AA2_POINTS,DOUT=>
AA2_DISP);
U4:
AA1_POINTS,DOUT=>
AA1_DISP);
U5:
AA0_POINTS,DOUT=>
AA0_DISP);
U6:
BB2_POINTS,DOUT=>
BB2_DISP);
U7:
BB1_POINTS,DOUT=>
BB1_DISP);
U8:
BB0_POINTS,DOUT=>
BB0_DISP);
U9:
CC2_POINTS,DOUT=>
CC2_DISP);
U10:
CC1_POINTS,DOUT=>
CC1_DISP);
U11:
CC0_POINTS,DOUT=>
CC0_DISP);
U12:
DD2_POINTS,DOUT=>
DD2_DISP);
U13:
DD1_POINTS,DOUT=>
DD1_DISP);
U14:
DD0_POINTS,DOUT=>
DD0_DISP);
ENDEX;
系统输入信号是复位信号CLR,允许抢答信号EN,计分脉冲信号ADD_SUB_SIGN,计分加/减信号CONT_SIGN;
系统输出信号是各组的抢答成功指示灯LED_A、LED_B、LED_C、LED_D,显示成功抢答组号T_LED,显示报警提前抢答的组号F_LED。
A组计分显示信号:
AA2,AA1,AA0、B组计分显示信号:
BB2,BB1,BB0、C组计分显示信号:
CC2,CC1,CC0、D组计分显示信号:
DD2,DD1,DD0;
当CLR为低电平,EN为高电平,ADD_SUB_SIGN为时钟信号,CONT_SIGN为高电平。
如果A组抢答成功则T_LED显示A组组号。
A组回答正确A组计分显示信号进行加一分否则减一分。
当CLR为低电平,EN为高电平,ADD_SUB_SIGN=‘1’。
如果B组抢答成功则T_LED显示B组组号。
B组回答正确B组计分显示信号进行加一分否则减一分。
如果C组抢答成功则T_LED显示C组组号。
C组回答正确C组计分显示信号进行加一分否则减一分。
当CLR为低电平,EN为高电平,ADD_SUB_SIGN=‘1’。
如果D组抢答成功则T_LED显示D组组号。
D组回答正确A组计分显示信号进行加