智力竞赛抢答器 说明书Word文件下载.docx
《智力竞赛抢答器 说明书Word文件下载.docx》由会员分享,可在线阅读,更多相关《智力竞赛抢答器 说明书Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
5.6动态显示模块12
5.6.1数码管显示模块的设计12
5.7主原理图14
5.8硬件测试15
6总结17
参考文献18
1前言
我国科技迅速发展,而电子行业这个新兴产业的发展更是日新月异,在很多行业和竞争场合都要求有公正的快速的裁决,例如体育竞技、证券、股票交易,以及各种智力竞赛等。
在现代社会中智力竞赛更是作为一种生动活泼的教育形式和方法来引起观众和参赛者的积极性。
在各种各样的竞赛中,往往有多组的选手参加,为了竞赛的公平,就要求人们能够设计一种电路来满足需求。
抢答器就是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路。
它给人们生活,工作等方面带来极大地方便。
现今,形式多样、功能完备的抢答器已广泛应用于电视台、商业机构、学校有着、企事业单位及社会团体组织中,它为各种知识竞赛增添了刺激性、娱乐性,在一定程度上丰富了人们的业余生活。
本设计介绍了一种用EDA技术来设计四路抢答器的方法。
该抢答器为全数字集成电路设计,具有分组数多、分辨率高等优点。
该抢答器除具有基本的抢答功能外,还具有优先选择、定时计时及复位等功能,具有很强的实用性与可行性。
2EDA技术介绍
EDA是电子设计自动化(ElectronicDesignAutomation)缩写。
EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA
技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
传统的设计方法采用自底向上的设计方法,一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试,由于无法进行硬件系统功能仿真,如果某一过程存在错误,查找和修改十分不便,所以这是一种费时、费力的设计方法,而现代电子设计技术(EDA)是自顶向下且先进高效的。
在电子产品的设计理念、设计方式、系统硬件构成、设计的重用性、知识产权、设计周期等方面,EDA技术具有一定的优势。
数字逻辑电路实验大多数都可以在计算机上利用EDA软件进行设计、仿真,只有极少量外部配件不能在计算机上进行仿真。
因此,在实验前期阶段,即实验预习阶段的主要应用工具是EDA软件,利用EDA软件可以设计、仿真实验课题,进行虚拟实验。
通过虚拟实验使实验者在进入真实实验前就能对预做的实验有相当的了解,甚至可以预测到实验的结果。
这样在实际做实验时,可以把许多设计型实验的难度降低,同时能有更多的时间让实验者动手做实验,研究问题,提高实验效率。
当前数字电路设计已由计算机辅助设计进入到以计算机为主的设计时代。
3VHDL简介
3.1硬件描述语言VHDL
硬件描述语言(VHDL)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。
例如一个32位的加法器,利用图形输入软件需要输人500至1000个门,而利用VHDL语言只需要书写一行“A=B+C”即可。
而且VHDL语言可读性强,易于修改和发现错误。
早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。
为了克服以上不足,1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL,1987年IEEE采纳VHDL为硬件描述语言标准(IEEE-STD-1076)。
VHDL是一种全方位的硬件描述语言,包括系统行为级。
寄存器传输级和逻辑门多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件俄语言的功能,整个自顶向下或由下向上的电路设计过程都可以用VHDL来完成。
传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;
然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;
接着就进行各功能模块的细化和电路设计;
各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。
采用传统方法设计数字系统,特别是当电路系统非常庞大时,设计者必须具备较好的设计经验,而且繁杂多样的原理图的阅读和修改也给设计者带来诸多的不便。
为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发周期,各ASIC研制和生产厂家相继开发了具有自己特色的电路硬件描述语言(HardwareDescriptionLanguage,简称HDL)。
但这些硬件描述语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间的相互交流带来了极大的困难。
因此,开发一种强大的、标准化的硬件描述语言作为可相互交流的设计环境已势在必行。
于是,美国于1981年提出了一种新的、标准化的HDL,称之为VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,简称VHDL。
这是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。
设计者可以利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门电路,最后用PLD实现其功能。
3.2VHDL语言的特点
具有良好的可读性,即容易被计算机接受,也容易被读者理解。
使用期长,不会因工艺变化而使描述过时。
因为VHDL的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的属性参数即可。
当电路系统采用VHDL语言设计其硬件时,与传统的电路设计方法相比较,具有如下的特点:
第一层次是行为描述。
所谓行为描述,实质上就是对整个系统的数学模型的描述。
一般来说,对系统进行行为描述的目的是试图在系统设计的初始阶段,通过对系统行为描述的仿真来发现设计中存在的问题。
在行为描述阶段,并不真正考虑其实际的操作和算法用何种方法来实现,而是考虑系统的结构及其工作的过程是否能到达系统设计的要求。
第二层次是RTL方式描述。
这一层次称为寄存器传输描述(又称数据流描述)。
如前所述,用行为方式描述的系统结构的程序,其抽象程度高,是很难直接映射到具体逻辑元件结构的。
要想得到硬件的具体实现,必须将行为方式描述的VHDL语言程序改写为RTL方式描述的VHDL语言程序。
也就是说,系统采用RTL方式描述,才能导出系统的逻辑表达式,才能进行逻辑综合。
第三层次是逻辑综合。
即利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。
此时,如果需要,可将逻辑综合的结果以逻辑原理图的方式输出。
此后可对综合的结果在门电路级上进行仿真,并检查其时序关系。
由自上而下的设计过程可知,从总体行为设计开始到最终的逻辑综合,每一步都要进行仿真检查,这样有利于尽早发现设计中存在的问题,从而可以大大缩短系统的设计周期。
由于目前众多制造PLD芯片的厂家,其工具软件均支持VHDL语言的编程。
所以利用VHDL语言设计数字系统时,可以根据硬件电路的设计需要,自行利用PLD设计自用的ASIC芯片,而无须受通用元器件的限制。
4QuartusII软件简介
4.1软件介绍
QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:
可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件,芯片(电路)平面布局连线编辑。
LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块,功能强大的逻辑综合工具,完备的电路功能仿真与时序逻辑仿真工具,定时/时序分析与关键路径延时分析,可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析,支持软件源文件的添加和创建,并将它们链接起来生成编程文件,使用组合编译方式可一次完成整体设计流程,自动定位编译错误,高效的期间编程与验证工具,可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件,能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
4.2QuartusII数字系统开发流程
用QuartusII软件进行数字系统开发,包括以下步骤。
(1)设计输入:
包括原理图输入、HDL文本输入、EDIF网表输入、波形输入等几种方式。
(2)编译:
先根据设计要求设定编译方式和编译策略,如器件的选择、逻辑综合方式的选择等;
然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真和编程使用。
(3)仿真与定时分析:
仿真和定时分析均属于设计校验,其作用是测试设计的逻辑功能和延时特性。
仿真包括功能仿真和时序仿真。
定时分析器可通过三种不同的分析模式分别对传播延时、时序逻辑性能和建立/保持时间进行分析。
(4)编程与验证:
用得到的编程文件通过编程电缆配置PLD,加入实际激励,进行在线测试。
在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重新测试。
5设计原理
5.1设计思路
本设计的总设计应用了原理图的方式,首先,让每一个模块实现相应的功能,并将元件进行符号化,最后通过连线来完成最后的设计。
依据任务书的要求,智力竞赛抢答器应用了抢答鉴别模块、计时模块、蜂鸣器模块、数码管显示模块、动态显示模块等模块组来完成的。
其效果显著,应用性能好。
模块简介:
(1)抢答鉴别模块:
根据设计要求,首先要有清零按钮rst,四人抢答按钮s1、s2、s3、s4,显示选手序号的输出项xvhao,和报警输出信号baojing。
按下清零开关rst=1,xvhao=0000000,baojing=0关闭抢答电路;
当clk上升沿到来且无人抢答时,锁存信号temp加1,当有人抢答时,输出抢答者序号且警报响起,当temp为2是警报解除开始答题。
(2)计时模块:
在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时。
其中有抢答时钟信号clk1,系统复位信号rst,抢答使能信号queren,警报信号baojing,禁止抢答信号jinzh,计时十位和个位信号shiw,gew。
,由给定的时钟信号clk1触发,主持人按下确认按钮(queren=1)后,开始倒计时。
当shiw=0000和gew=0000时,停止倒计时,且发出报警。
(3)蜂鸣器模块:
在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内有人抢答或是计数到时蜂鸣器开始报警,状态输入信号b,输出q,计数脉冲clk2。
(4)数码管显示模块:
在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。
将个位和十位输出的数字分别输入两个译码显示模块中,用7段数码管显示出来。
(5)动态显示模块:
在这个模块中主要实现将静态显示转换为动态显示。
输入有高频的脉冲信号clk0,和需要输出显示的信号gew,shiw,xvhao,分别显示在不同的段码和位码中。
5.2抢答鉴别模块
5.2.1抢答电路的设计
这个电路有五个输入和两个输出,其代码如下:
libraryieee;
useieee.std_logic_1164.all;
entityqdqis
port(rst,s1,s2,s3,s4,clk:
instd_logic;
baojing:
outstd_logic;
xvhao:
bufferstd_logic_vector(7downto0));
endqdq;
architecturebhvofqdqis
signaltemp:
integerrange0to2;
begin
process(s1,s2,s3,s4,rst)
if(rst='
1'
)then
xvhao<
="
00000000"
;
baojing<
='
0'
elsif(clk'
eventandclk='
)then
temp<
=temp+1;
if(xvhao="
if(s1='
)thenxvhao<
00000110"
=s1;
elsif(s2='
01011011"
=s2;
elsif(s3='
01001111"
=s3;
elsif(s4='
01100110"
=s4;
endif;
elsenull;
if(temp=2)then
endprocess;
endbhv;
其模块封装结果如图5-1。
5-1抢答电路封装图
5.2.2仿真波形
在QuartusII软件绘制上述原理图,再通过编译和时序仿真,可得到如下的仿真波形:
图5-2仿真波形
由上图仿真图可知在抢答开始时,先进行一次复位操作才能开始抢答,只有第一个抢答的人将会被标记,并做出输出,接下来的触发将不会影响输出,从而达到了抢答的效果。
直到下一轮抢答开始,又将使触发有效。
5.3计时模块
5.3.1计时模块设计
其代码如下:
useieee.std_logic_unsigned.all;
entityjishiis
port(clk1,jinzhi,queren,rst:
gew,shiw:
bufferstd_logic_vector(3downto0);
baojing:
outstd_logic);
endjishi;
architecturebhvofjishiis
process(clk1,queren,rst)
gew<
0000"
shiw<
0010"
elsif(queren='
if(jinzhi='
if(gew/="
orshiw/="
)then
if(clk1'
eventandclk1='
if(gew="
1001"
=shiw-"
0001"
else
=gew-"
ifgew="
andshiw="
then
else
在QuartusII软件中将上述代码形成一个封装如图5-3。
图5-3计时器封装
5.3.2仿真波形
在QuartusII软件上输入以上代码,再通过编译和时序仿真,可得到如下的仿真波形:
图10按键识别模块
图
图5-4计时模块仿真波形
从上面仿真图中可以得出当输入“0001”将会在数码管上显示1号码,当输入“0010”将会在数码管上显示2号码,当输入“0100”将会在数码管上显示3号码,当输入“1000”将会在数码管上显示4号码。
即可以将选手的号码在数码管上显示。
5.4蜂鸣器模块
5.4.1蜂鸣器模块设计
蜂鸣器就是用到了计数器,在本设计中用了大约2秒的计时(当时钟信号为1Hz时),就是只要有选手或者倒计时的时间到0时,都将触发蜂鸣器并进行计时,当计时间到后,会自动停止蜂鸣器。
entityfengmingis
port(clk2,b:
q:
endfengming;
architecturebhvoffengmingis
integerrange0to10;
process(clk2,b)
if(b='
q<
=clk2;
在QuartusII软件中将上述代码形成一个封装如图5-5。
图5-5蜂鸣器封装
5.4.2仿真波形
图5-6蜂鸣器计数器仿真波形
5.5数码管显示模块
5.5.1数码管显示模块的设计
该模块共有2个引脚(一个输入、一个输出),可以将计时时间和选手序号显示在数码管上,下面是其主代码:
entityxianshiis
port(xin:
instd_logic_vector(3downto0);
xout:
outstd_logic_vector(7downto0));
endxianshi;
architecturebhvofxianshiis
process(xin)
casexinis
when"
=>
xout<
00111111"
0011"
0100"
0101"
01101101"
0110"
01111101"
0111"
00000111"
1000"
01111111"
01101111"
whenothers=>
endcase;
在QuartusII软件中将上述代码形成一个封装如图5-7。
图5-7数码管显示封装
5.5.2仿真波形
在QuartusII软件上输入以上代码,再通过编译和时序仿真,可得到如下的仿真波形:
图5-8仿真波形
5.6动态显示模块
5.6.1动态管显示模块的设计
该模块是决定计时时间和选手序号显示在数码管什么位置上,下面是其主代码:
entitydongtaiis
port(clk0:
gew,shiw,xvhao:
instd_logic_vector(7downto0);
duanma,weima:
enddongtai;
architecturebhvofdongtaiis
integerrange0to3;
process(clk0)
if(clk0'
eventandclk0='
if(temp=3)then
=0;
casetempis
when0=>
duanma<
=gew;
weima<
00000001"
when1=>
=shiw;
00000010"
when2=>
=xvhao;
00001000"
NULL;
在QuartusII软件中将上述代码形成一个封装如图5-9。
图5-9动态显示封装
5.7主原理图
将上述模块进行端线的连接,并辅助一些其他的逻辑器件,就可以得到最终的原理图,该原理图共有13个引脚,其中,s1、s2、s3、s4为4个选手抢答信号输入端;
另外还有启停、复位、时钟信号输入端、蜂鸣器输出端口。
主原理图如图5-10。
图5-10总原理图
将其设成顶层文件进行仿真,仿真波形如下:
图5-11综合仿真波形
5.8硬件测试
智力竞赛抢答器工作流程如下:
(1)先进行一次复位并将使能端置为低电平;
(2)让选手进行抢答;
(3)当听到提示报警音后,终止抢答,由评委确定抢答选手号;
(4)由评委发出答题信号(使能端置高),倒计时开始,当选手在规定时间内答完,发出终止答题信号(使能端置低);
若在规定时间内没有答完,发出提示音,即终止答题;
(5)重新复位进入下一轮的抢答环节。
硬件下载如下图5-12。
图5-12硬件下载图
引脚锁定如下图5-13。
图5-13引脚锁定图
6