基于VHDL的多路抢答器的设计方案.docx
- 文档编号:8144839
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:22
- 大小:569.62KB
基于VHDL的多路抢答器的设计方案.docx
《基于VHDL的多路抢答器的设计方案.docx》由会员分享,可在线阅读,更多相关《基于VHDL的多路抢答器的设计方案.docx(22页珍藏版)》请在冰豆网上搜索。
基于VHDL的多路抢答器的设计方案
基于VHDL的多路抢答器的设计方案
1绪论
随着集成技术的发展,尤其是中、大规模和超大规模集成电路的发展,数字电子技术的应用越来越多地渗透到国民经济的各个部门,目前数字电子技术已经广泛应用于计算机、自动控制、电子测量仪表、电视、雷达、通信等各个领域。
其中,抢答器就是典型的一种运用数字集成的设备。
在日常生活中,各种智力竞赛越来越多,而抢答器是必不可少的设备之一,答题时一般分为必答和抢答两种。
必答有时间限制,到时要告警。
而抢答则要求参赛者做好充分准备,由主持人宣读完题目后,参赛者开始抢答,谁先按下按钮,就由谁答题,但竞赛过程中很难准确判断出谁先按下按键,因此使用抢答器来完成这一功能是很有必要的。
它能够准确、公正、直观地判断出首轮抢答者,并且通过抢答器的数码显示和警示蜂鸣等方式指示出首轮抢答者。
以下几章主要介绍抢答器的抢答鉴别、计分和报警功能的实现,VHDL语言的特点及发展趋势,QuatusII6.0开发平台的仿真等。
2整体方案设计
2.1系统设计要求
一般来说,设计一台智能抢答器,必须能够准确判断出第一位抢答者,并且通过数显、蜂鸣这些途径能让人们很容易得知谁是抢答成功者,并设置一定的回答限制时间,让抢答者在规定时间答题,主持人根据答题结果实行增减分的操作,并将分数显示在屏幕上,评出最终赢家。
所以我们在设计智能抢答器的模块需要满足鉴别、计时、计分、数显等功能,具体设计要求如下:
(1)抢答器可容纳四组选手,并为每组选手设置一个按钮供抢答者使用;为主持人设置一个控制按钮,用来控制系统清零(组别显示数码管灭灯)和抢答开始;
(2)电路具有对第一抢答信号的锁存、鉴别和显示等功能。
在主持人将系统复位并发出抢答指令后,蜂鸣器提示抢答开始,计时显示器显示初始时间并开始倒计时,若参赛选手按下抢答按钮,则该组别的信号立即被锁存,并在组别显示器上显示该组别,同时扬声器也给出音响提示,此时,电路具备自锁功能,使其他抢答按钮不起作用。
(3)如果无人抢答,计时器倒计时到零,蜂鸣器有抢答失败提示,主持人可以按复位键,开始新一轮的抢答。
(4)抢答器具有限时抢答的功能,且一次抢答的时间由主持人设定,本抢答时间设定为60秒。
当主持人启动开始键后,要求计时器采用倒计时,同时最后十秒扬声器会发出声响提示;
(5)参赛选手在设定的时间抢答,则抢答有效,定时器停止工作,主持人根据抢答结果给出分数,并由数码管显示选手的组别抢答分数,并一直保持到主持人将系统清零为止。
2.2系统设计方案
本设计为四路智能抢答器,所以这种抢答器要求有四路不同组别的抢答输入信号,并能识别最先抢答的信号,直观地通过数显和蜂鸣等方式显示出组别;对回答问题所用的时间进行计时、显示、超时报警、预置答题时间,同时该系统还应有复位、倒计时启动功能。
抢答过程:
主持人按下系统复位键(RST),系统进入抢答状态,计时模块和计分模块输出初始信号给数码显示模块并显示出初始值。
当某参赛组抢先将抢答键按下时,系统将其余三路抢答信号封锁,同时扬声器发出声音提示,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直保持到下一轮主持人将系统清零为止。
主持人对抢答结果进行确认,随后,计时模块送出倒计时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时,在规定的时间根据答题的正误来确定加分或减分,并通过数码显示模块将成绩显示出来。
计时至0时,停止计时,扬声器发出超时报警信号,以中止未回答完问题。
当主持人给出倒计时停止信号时,扬声器停止鸣叫。
若参赛者在规定时间回答完为题,主持人可给出倒计时计数停止信号,以免扬声器鸣叫。
主持人按下复位键,即RST为高电平有效状态,清除前一次的抢答组别,又可开始新的一轮的抢答。
此抢答器的设计中采用自顶向下的设计思路,运用VHDL硬件描述语言对各个模块进行层次化、系统化的描述,并且先设计一个顶层文件,再把各个模块连接起来。
【3】系统的总体框图如下:
图2-1系统的总体框图
2.3子模块的设计思想和实现
根据对抢答器的功能要求,把要设计的系统划分为五个功能模块:
抢答信号鉴别模块、计时模块、计分模块、数码显示模块和扬声器控制电路,具体的说,显示模块又包含最先抢答的组别显示电路、计时值显示电路和计分显示电路。
计时模块、计分模块、数码显示模块和扬声器控制电路,
3.1抢答鉴别模块
抢答鉴别模块用来准确直观地判断A、B、C、D四组抢答者谁最先按下按钮,并为显示端送出信号,通过数显和蜂鸣等途径使观众能够清楚地知道是哪一组抢答成功,是整个系统的核心部分。
同时组别显示端为下一模块输入信号,以方便主持人为该组抢答成功者进行加减分的操作。
抢答鉴别模块的元件图如下图所示:
图3-1鉴别模块元件框图
引脚作用:
输入信号:
各组的抢答按钮A、B、C、D,系统清零信号INI。
输出信号:
各组的抢答按钮显示端A1、B1、C1、D1,组别显示端G[3..0]。
原理:
第一个按下键的小组,抢答信号判定电路LOCK通过缓冲输出信号的反馈将本参赛组抢先按下按键的信号锁存,并且以异步清零的方式将其他参赛组的锁存器清零,组别显示、计时和计分会保存到主持人对系统进行清零操作时为止。
当INI=1时系统复位,使组别显示信号G=0000,各组的指示灯信号A1=0,B1=0,C1=0,D1=0;当INI=0,即低电平有效,使其进入抢答鉴别状态,到CLK的上升沿到来时,以A组抢答成功为例,当输入信号为A=1,B=0,C=0,D=0,输出信号G=1000,A1=1,即为鉴别出A组抢答成功,同时屏蔽其他组的输入信号,以免发生错误。
同理其他组别抢答成功也是这样的鉴别过程。
【3】
备注:
理论上来说,A、B、C、D四组抢答,应该有从0000—1111等16种可能情况,但是由于时钟信号的频率很高而且是在时钟信号上升沿的状况下才做出的鉴别,所以在这里两组以上同时抢答成功的可能性非常小,因此可以只设计四种情况,即A、B、C、D分别为1000、0100、0010、0001,这大大简化了电路的设计复杂性。
其用VHDL语言进行编程的流程图如下图所示:
图3-2抢答鉴别模块的流程图
3.2计时模块
当抢答鉴别模块成功判别出最先按下抢答按钮的参赛组后,在成功鉴别出哪组最先抢答后,主持人按下计时信号,则进入计时状态。
计时模块可分作两部分:
(1)预置数;
(2)60秒倒计时。
60秒时间用两个数码管QA,QB显示,其中QA表示60秒的个位,QB表示60秒的十位。
计时模块开始工作从预置初始值开始以秒计时,计时至0秒时停止,时间耗尽时,扬声器会发出超时报警信号,以中止答题。
图3-3计时模块的元件图
该系统输入信号有:
系统清零信号CLR,计时预置控制端LDN,计时使能端EN,系统时钟信号CLK,计时预置数据调整按钮TA、TB。
系统输出信号有:
倒计时输出端QA[3..0]、QB[3..0]。
当清零信号CLR=1时,模块输出信号QA=0000,QB=0000。
当预置数控制信号LDN=1可通过TA来调整QA,TA来一次高电平,则QA的数值就加1;用TB来调整QB,通过这两个调整信号可调整参赛者答题所需要的时间。
在CLR=0,LDN=0,EN=1时,通过时钟信号CLK的上升沿来进行60秒到计时。
【1】其用VHDL语言进行编程的流程图如下:
开始
LDN=0
CLR=0
LDN=1
CLK上升沿
EN=1
TA=1
TA=0
QA<=QA+1
QB<=QB=1
图3-4抢答计时模块的流程图
3.3计分模块
计分模块的运行方式是按照十进制进行加减,即当时钟出现上升沿时就进行加一或者减一的操作。
记分模块为哪组进行记分取决于鉴别模块的输入信号G,当G=1000时表示A组最先抢答,则在此模块中为A组记分,当G=0100时表示B组最先抢答,则在此模块中为B组记分,当G=0010时表示C组最先抢答,则在此模块中为C组记分,当G=0001时表示D组最先抢答,则在此模块中为D组记分。
以A组为例来说明此模块的设计,当复位信号RST=1时,系统复位且A组的分值显示初始值,为100分。
当RST=0时,如果该组选手答题正确,则主持人按下加分键,即ADD=1,此时对该组进行加分操作;如果该组选手答题错误,则主持人按下减分键,即SUB=1,此时对该组进行减分操作。
计分模块的元件图如下图所示:
图3-5计分模块的元件图
系统的输入信号有:
计分复位端RST,加分按钮端ADD,减分按钮端SUB,组别号输入端CHOS[3..0]。
系统的输出信号有:
A组分数输出端AA2[3..0]、AA1[3..0]、AA0[3..0],B组分数输出端BB2[3..0]、BB1[3..0]、BB0[3..0],C组分数输出端CC2[3..0]、CC1[3..0]、CC0[3..0],D组分数输出端DD2[3..0]、DD1[3..0]、DD0[3..0]。
计分模块用VHDL语言进行编程的流程图如下:
图3-6计分模块的设计状态图
注:
在设计中减法的实现是以加法运算来实现的。
也以A为例,由于每次减分都是减去10分,即每次为POINTS_A1减一,所以可以用POINTS_A1+"1111"来实现。
如:
0111-0001=0110,用加法实现:
0111+1111=10110。
由于POINTS_A1:
STD_LOGIC_VECTOR(3DOWNTO0),所以POINTS_A1=0110。
3.4译码显示模块
该模块实际上是一个译码器,译码器是组合逻辑电路的一个重要的器件,其可以分为:
变量译码和显示译码两类。
变量译码一般是一种较少输入变为较多输出的器件,一般分为2n译码和8421BCD码译码两类。
显示译码主要解决二进制数显示成对应的十、或十六进制数的转换功能,一般其可分为驱动LED和驱动LCD两类。
译码是编码的逆过程。
图3-7译码显示模块的元件图
主要原理是四位二进制BCD编码转换成七段二进制数字,以阿拉伯数字的形式输出在数码管上,使观众能够更直观的看到结果。
译码器的译码对照表如下所示:
显示的数字/字母
BCD编码
七段数码管2进制
0
0000
0111111
1
0001
0000110
2
0010
1011011
3
0011
1001111
4
0100
1100110
5
0101
1101101
6
0110
1111101
7
0111
0000111
8
1000
1111111
9
1001
1101111
X
XXXX
0000000
表3-1译码器的译码对照表
备注:
在程序中只考虑0000-1001(即0-9)的情况,将其转化为相应的七段显示器的码子,其他情况不予考虑。
[4]
3.5抢答器的系统实现
单独模块只有彼此联系起来构成一个完整的系统,才能实现其功能,这个过程有两种实现方法:
①元件例化。
也是用编程的方式将它们各个程序、信号、输入输出之间的关系用VHDL语言来叙述清楚,还关系到程序的调用问题,需要设计者思路清晰,设计合理;②元器件图示连线。
这种连线方法思路清晰可见,而且用的时候很简单方便,出现错误也很好检查。
在设计中选择的是这种方法。
通过总的顶层元件图可以很清晰的看到模块连接的原理。
图3-8顶层元件图
注:
本设计中,抢答器组别信号A、B、C、D为高电平时,其功能为有效状态。
同样,系统清零信号CLR、预置及倒计时控制信号LDN,亦为高电平有效。
当CLR有效时,抢答信号判别电路清零,为判别优先抢答信号做出准备。
当计时使能端EN为低电平,预置时间设置信号LDN=1时,通过计时预置数据调整按钮TA、TB进行预置数。
当计时使能端EN为高电平,有系统时钟信号CLK时,进行一分钟倒计时。
输入时钟CLK一方面作为扬声器控制电路的输入信号,另一方面作为抢答信号判别电路中锁存器时钟,为使扬声器音调较为悦耳,且是抢答判别电路有较高的准确度(对信号判别的最大误差是一个时钟周期),CLK信号频率高低应适中,可取500Hz-1KHz;同时CLK信号经过分频后向倒计时电路提供信号。
附表:
输入/输出引脚的作用:
端口名
功能
CLK
系统时钟信号
A,B,C,D
抢答信号输入
CLR
系统清零
EN
计时使能信号
RST
记分复位
CHOS(3…..0)
组别信号输入
DOUT7(6…..0)
译码管输出信号
G(3.….0)
组别显示
LDN
计时预置控制信号
AIN4(3..….0)
译码管输入
表3-2输入/输出引脚的作用
4多路抢答器子模块的仿真验证
4.1鉴别模块的仿真验证
利用QuartusII进行编译,综合,仿真,时序图如下:
图4-1鉴别模块的仿真时序图
引脚作用:
系统输入信号:
各组的抢答按钮A、B、C、D,系统清零信号CLR,CLK时钟信号。
系统的输出信号:
各组的抢答按钮显示端A1、B1、C1、D1,组别显示端控制信号G[3..0]。
仿真分析:
当鉴别模块的清零信号CLR为高电平时,无论A、B、C、D四组参赛者谁按下抢答按钮,系统输出均为零,同时组别显示端G输出信号也显示为零;当清零信号CLR为低电平时,A、B、C、D四组参赛者谁先按下抢答按钮,组别显示端就显示该组别的。
假如C组按下抢答按钮时,组别输出为0010,同时C组的显示灯被点亮。
仿真图上显示的为A先抢答,因为在0-1.28微秒之间A、C虽然都按抢答键,但CLR为有效状态,所以在此时间段的抢答无效。
4.2计时模块的仿真验证
利用QuartusII进行编译,综合,仿真,时序图如下:
图4-2计时模块的仿真时序图
引脚作用:
系统输入信号:
系统清零信号CLR,计时预置控制端LDN,计时使能端EN,系统时钟信号CLK,计时预置数据调整按钮TA、TB。
系统输出信号:
倒计时输出端QA[3..0]、QB[3..0]。
仿真分析:
当系统清零信号CLR=1时,计时器的时钟信号回到计时预置倒计时起始状态,此时倒计时输出端QA=0000,QB=0000.当计时使能端EN=0,计时预置控制端LDN=1时,通过计时预置数据调整按钮TA、TB进行预制数,并且通过TA,TB来调整QA,QB即当TA=1时,则QA的数值加1,当TB=1时,则QB的数值也加1。
当计时使能端EN=1,系统清零信号CLR=0,并且计时预置控制端LDN=0时,通过时钟信号上升沿CLK来进行60秒倒计时。
4.3计分模块的仿真验证
利用QuartusII进行编译,综合,仿真,时序图如下:
图4-3计分模块的仿真时序图
引脚作用:
系统的输入信号有:
计分复位端RST,加分按钮端ADD,减分按钮端SUB,组别号输入端CHOS[3..0]。
系统的输出信号有:
A组分数输出端AA2[3..0]、AA1[3..0]、AA0[3..0],B组分数输出端BB2[3..0]、BB1[3..0]、BB0[3..0],C组分数输出端CC2[3..0]、CC1[3..0]、CC0[3..0],D组分数输出端DD2[3..0]、DD1[3..0]、DD0[3..0]。
仿真分析:
首先应该清楚,在计分器电路的设计中,按十进制进行加减分操作的,当出现时钟信号上升沿CLK就可以完成对参赛者加减分操作。
智能抢答器记分模块的仿真时以加分操作为例。
由仿真图3-10可知以下情况:
(1)系统设计过程中,当计分复位端RST=1时,并且组别输入信号CHOS=0000,其中的组别输入信号是抢答鉴别模块的输出信号,计分器复位,此时以上四组都不会产生加减分操作。
(2)然而当计分复位端RST=0时,此时计分器可以计分。
当CHOS=0001时,组别显示为A组,此时主持人利用计分器对A组进行加减分操作;当CHOS=0010时,组别显示为B组,此时主持人则利用计分器对B组进行加减分操作;当CHOS=0100时,组别显示为C组,此时系统对C组进行加减分操作;当CHOS=1000时,组别显示为D组,此时对D组进行加减分操作。
由仿真图可知,当主持人按下系统复位键RST键时,使分数复位,每位设置的初始分数为100分。
当CHOS=1000时,即D抢答成功时,加分键ADD输入四个脉冲,DD1加到4,说明加分成功,成绩变为140分。
其他抢答者抢答成功后的加分操作与此相同。
减分的仿真与此类似,因为是以加法实现,本质与加分相同,当计分复位端RST=0时,可以计分。
由仿真图可知,初始成绩均为100分。
当CHOS=1000时,即D抢答成功时,减分键SUB输入四个脉冲,DD1加到4,说明减分成功,成绩变为60分。
其他抢答者抢答成功后的减分操作与此相同。
4.4数显模块的仿真验证
利用QuartusII进行编译,综合,仿真,时序图如下:
图4-4数显模块的仿真时序图
引脚作用:
输入信号:
AIN4;
输出信号:
DOUT7。
仿真分析:
当AIN4="0000",DOUT7输出"1111110",此时数码管显示0;
当AIN4="0001",DOUT7输出"0110000",此时数码管显示1;
当AIN4="0010",DOUT7输出"1101101",此时数码管显示2;
当AIN4="0011",DOUT7输出"1111001",此时数码管显示3;
当AIN4="0100",DOUT7输出"0110011",此时数码管显示4;
当AIN4="0101",DOUT7输出"1011011",此时数码管显示5;
当AIN4="0110",DOUT7输出"1011111",此时数码管显示6;
当AIN4="0111",DOUT7输出"1110000",此时数码管显示7;
当AIN4="1000",DOUT7输出"1111111",此时数码管显示8;
当AIN4="1001",DOUT7输出"1111011",此时数码管显示9;
4.5系统整体的仿真验证
图4-5系统整体的仿真时序图
注:
为使仿真波形图清晰明了,且某些引脚在一定时间总是保持同一值不变,故特将其简化,不予在此图中显示。
5总结
5.1此次抢答器设计结果
通过QuartusII的仿真,证明了本产品在实际运用中的正确性,完全可以实现预期任务的要求,在有一组信号抢答成功后蜂鸣器发出警报,在两组或两组以上信号同时抢答时视抢答无效,蜂鸣器不予响应。
且计分器在实现计分功能时能够准确计数并将分数呈三位数显示,计时器在按下计时开始按钮后可以从60秒倒计时并通过译码器实时显示计时结果。
5.2对该设计的建议
1.在抢答鉴别模块中,抢答成功后各组台号灯具有记忆功能,这一点会造成即使下一轮抢答没有抢答成功者(即有两人或两人以上同时按下抢答器),之前被点亮的led灯会仍然保持点亮状态。
虽然此时可以根据有没有警报声来提示抢答是否有效,但是仍然不够完善;
2.在计时器模块应增加计时结束报警功能,但是由于小组成员对vhdl语言运用不够熟练,在设计该项程序时遇到很多问题,进程之间不能很好的协调,故最终没有实现这一功能;
3.在波形仿真时,当信号之间配合不当时有可能造成预期的结果不能在波形上得到正确显示,故应协调各个开关的功能及其有效时间然后进行仿真,方能得出正确的仿真波形。
4.另外,本产品还有需要改进的地方,如管脚过多,实际连接时不够简洁,容易造成连接错误。
故应将各个模块综合起来设计总电路,但是由于成员对顶层程序设计这一部分不甚了解,故没有完成这一环节。
通过这次毕业设计我发现自己的不足。
首先,感觉简单,以为利用学过的课程做应该没什么问题。
考虑不周全,导致系统功能设定时遇到不少困难。
也耽搁了不少时间。
其次,我发现自己对课本知识不是太熟悉,对开发工具的利用掌握的也不是很熟练,导致在编程、仿真时遇到不少麻烦。
最后,由于大学期间接触电脑的机会不是太多,对基本的Word文档的掌握不是很熟练,在对论文的格式进行修改时花费了不少时间。
这次设计也使我意识到,理论与时间之间的距离有多大。
深刻体会到“纸上得来终觉浅,绝知此事要躬行”这句古话的含义了。
在以后的学习生活中,我会尽量弥补我在这方面的欠缺和不足。
由于本人能力有限,设计还有许多不足之处,还请老师给予指点。
致
经过几个月的时间,毕业设计已经结束,本设计是在老师的指导下完成的。
我是一个积极爱学习的人,在老师督促与耐心指导下我才能将我的毕业设计完成。
在此首先老师的指导。
在整个设计过程中,我身边的同学特别是我的舍友,他们为我提供电脑、网络,使我查找资料更加方便。
在此还要感实验室的老师们,你们在我需要的时候为我打开实验室的门,你们的信任。
我的同组成员也给了我很大的帮助。
帮我解决了很多细节上的问题,使我能够更好更顺利的完成我的毕业设计,你们。
通过做毕业设计我学到了很多,无论是理论知识还是实际操作,都让我受益匪浅。
这些很大程度上得益于帮助过我的老师和同学,真的非常感你们。
最后,我还是要向百忙之中给我莫大帮助的老师表示感。
还要感的是我亲爱的三峡学院以及学院的每一位领导、老师和同学。
你们!
参考文献
[1].国洪,明山主编.EDA技术与实验[M].机械工业,2008:
2-11.
[2].欣,海燕主编,VHDL数字系统设计[M].科学,2009:
28—30.
[3].皱彦,庄严,皱宁等编著,EDA技术与数字系统设计[M].电子工业:
69—76.
[4].开绪.数字式抢答器的设计与实现[J].电子工程师.2005.9:
69-71.
[5].汪国强.EDA技术与应用[M].电子工业.2006.60-76.
[6].祥.可编程逻辑器件在数字系统中的应用[J].国外电子元器.2001(5):
58-59.
[7].高曙光.可编程逻辑器件原理开发与应用[M].电子科技.2002:
122-125.
[8].章忠全.电子技术基础实验与课程设计[M].中国电力.1999:
95-99.
[9].胡丹.基于VHDL智力竞赛抢答器的设计与实现[J].现代机械.2007(3):
54-55.
[10].延文,唐庆玉,段玉生.EDA技术是实现电工学研究性教学的良好手段[J].实验设计与管理.2006(8):
65-68.
[11].郭勇.EDA技术基础(第2版)[M].机械工业.2005.314-320.
[12].常青,辉煌.可编程专用集成电路及其应用与设计实践经验[M].国防工业.1998:
38-45.
[13].EnochOHwang.DigitalLogicandMicroprocessorDesignwithVHDL[M].Thomson-Engineering.2005:
10-15.
[14].SudhakarYalamanchili.IntroductoryVHDL:
fromsimulationtosynthesis[M].PrenticeHall.2001:
56-60.
附录源代码
1抢答器鉴别模块源代码LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYLOCKIS
PORT(CLK,CLEAR:
INSTD_LOGIC;
WARN:
INSTD_LOGIC;
S0,S1,S2,S3:
INStd_Logic;
STATES:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
STO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 抢答 设计方案
![提示](https://static.bdocx.com/images/bang_tan.gif)