基于VHDL语言的八路数字抢答器设计说明.docx
- 文档编号:26461241
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:26
- 大小:165.71KB
基于VHDL语言的八路数字抢答器设计说明.docx
《基于VHDL语言的八路数字抢答器设计说明.docx》由会员分享,可在线阅读,更多相关《基于VHDL语言的八路数字抢答器设计说明.docx(26页珍藏版)》请在冰豆网上搜索。
基于VHDL语言的八路数字抢答器设计说明
题目:
基于VHDL语言的八路数字抢答器设计
【作者简介】班级:
班号:
某某:
学号:
摘要
抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,是竞赛问答中一种常用的必备装置;从原理上讲,它是一种典型的数字电路,其中包括了组合逻辑电路和时序逻辑电路.电路结构形式多种多样,可以利用简单的与非门构成,也可以利用触发器构成,也可以利用单片机来完成.利用单片机来设计抢答器,使得结果更简单,功能更优越。
本设计是基于单片机控制的六路抢答器,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进展计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发生提示。
同时系统能够实现:
在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答如下问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答如下问题时间倒记时显示,满时后系统计时自动复位与主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键词抢答器;EDA;VHDL语言
Abstract
Answerdevicesasanelectronicproducts,haslongbeenwidelyusedinavarietyofoccasions,intelligenceandknowledgepetitions,quizcontestsareessentialinamonlyuseddevice;fromtheprinciple,itisatypicaldigitalcircuit,includingabinationoflogiccircuitsandsequentiallogiccircuit.Circuitstructureofavarietyofforms,canmakeuseofsimpleandnon-gatestructurecanalsobeusedtotriggerposition,canalsobeusedtopletesingle-chipmicroputer.Answertheuseofsingle-chipdesign,andmakestheresultsmoresimplefunctionbetter.
Thedesignisbasedonthesix-waySCMAnswer,andtheuseofsingle-chiptimer/countertimingandnumberoftheprinciplesinmind,thehardwareandsoftwarebinetomakethesystemtimecorrectly,whilethedigitalcontrolabletocorrectlydisplaythetime.Switchthekeyboardtodowithoutput,speakerpromptedoccurred.Atthesametime,thesystemcanberealized:
IntheAnswer,onlyaftertheAnswertobevalid,ifatthebeginningofpre-AnswerAnswerinvalid;Answertoanswerthequestionoflimitedtimeandthetimecanbesetin1-99s;canshowwho'seffectiveandAnswerAnswerinvalid,thecorrectbuttonpromptafterthemusic;Answerquestiontimeandtime倒记时showfulltimeafterthesystemautomaticallyresetandmasterresetmandatory;keyslockedintheeffectivestate,thekeyisinvalidillegal.
Keywordsanswerdevices;EDA;VHDLlanguage
一、设计原理与技术方法:
(一)整体简介
Max+plusII(或写成Maxplus2,或MP2)是Altera公司推出的的第三代PLD开发系统(Altera第四代PLD开发系统被称为:
QuartusII,主要用于设计新器件和大规模CPLD/FPGA).使用MAX+PLUSII的设计者不需精通器件内部的复杂结构。
设计者可以用自己熟悉的设计工具〔如原理图输入或硬件描述语言〕建立设计,MAX+PLUSII把这些设计转自动换成最终所需的格式。
其设计速度非常快。
对于一般几千门的电路设计,使用MAX+PLUSII,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。
设计处理一般在数分钟内内完成。
特别是在原理图输入等方面,Maxplus2被公认为是最易使用,人机界面最友善的PLD开发软件,特别适合初学者使用。
使用Maxplus2根本上也是有以下
抢答器的逻辑结构主要由抢答鉴别lock模块、定时模块、译码模块和报警器模块组成。
在整个抢答器中最关键的是如何实现抢答封锁,在控制键按下的同时计数器倒计时显示有效剩余时间。
除此之外,整个抢答器还需有一个“复位开始〞信号,以便抢答器能实现清零和开始。
抢答器共有3个输出显示,选手代号、计数器的个位和十位,他们输出全都为BCD码输出,这样便于和显示译码器连接。
当主持人按下控制键、选手按下抢答键蜂鸣器短暂响起。
整体原理框图如图1所示。
图1整体原理框图
抢答器同时供8名选手或8个代表队比赛,分别用8个按钮[a1]~[a8]。
设置一个系统去除和抢答控制开关Reset,该开关由主持人控制。
抢答器具有锁存与显示功能。
即选手按动按钮,锁存相应的编号,扬声器发出声响提示,数码显示选手。
其他人再按键,系统进展了优先锁存,不再响应,优先抢答选手的编号一直保持到主持人将系统去除为止,下一次抢答开始。
扩展功能:
该电路具有犯规报警功能。
当主持人未按下开关开始抢答前,参赛选手假如按下开关,如此抢答系统发出蜂鸣声报警并显示犯规组别。
〔二〕抢答器工作流程
抢答器的根本工作原理:
在抢答竞赛或呼叫时,有多个信号同时或不同时送入主电路中,抢答器内部的存放器工作,并识别、记录第一个,同时内部的定时器开始工作,记录有关时间并产生超时信号。
在整个抢答器工作过程中,显示电路、语音电路等还要根据现场的实际情况向外电路输出相应信号。
抢答器的工作流程分为、系统复位、正常流程、犯规流程等几局部,如图2所示。
图2抢答器工作流程
〔三〕抢答器各局部电路
1、抢答器鉴别模块:
在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。
在这个模块输入端有WARN输入(以时间控制系统的WARN输出信号为信号源)、一个和“时间控制系统〞公用的CLEAR端、6人抢答输入信号端S0,S1,S2,S3,S4,S5和有一个时钟信号端CLK,这个时钟信号是个高频信号,用以扫描S0,S1,S2,S3是否有信号输入。
输出端有对应于S0,S1,S2,S3,S4,S5编号的6个指示灯LED和4线2进制输出端STATES〔用于锁存当前的状态〕,还有一个STOP端用于指示S0,S1,S2,S3,S4,S5按钮状态〔控制计时器停止〕。
在此模块中高频时钟信号一直作用,此时,假如主持人按下CLEAR即为开始抢答信号,所有输出端都自动清零。
在有效时间X围〔N秒〕内只要有人抢答,STOP就有高电平输出至“时间控制系统〞的STOP端以控制倒计时的停止,并且对应的LED指示灯点亮,STATES锁存输出到译码显示模块,用以显示优先抢答人的组号,并锁定输入端S以阻止系统响应其他抢答者的信号。
当有效时间到了之后还没有人抢答,如此记时模块发出报警信号,同时反应回来给抢答鉴别模块,禁止选手在抢答。
2、译码模块:
将抢答过程中锁存的BCD码转换成7段码用于LED的显示。
3、定时器模块:
这个模块的输入端有时钟信号CLK1、系统复位信号CLEAR和一个STOP输入信号;输出端有秒时间状态显示信号高位HIGH和低位LOW,无人抢答时计时中止警报信号WARN。
这个模块中主要实现抢答过程中的计时功能,在抢答开始后进展N秒的倒计时,并且在N秒倒计时后无人抢答的情况下显示超时并输出信号至WARN报警,或者只要N秒内有人抢答,由抢答鉴别模块输出的STOP信号控制停止计时,并显示优先抢答者的抢答时刻,输出一个信号经WARN传至“抢答鉴别系统〞,锁存不再让选手抢答。
4、报警模块:
在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内〔N秒内〕有人抢答或是倒计时到了之后蜂鸣器开始报警,输出SOUND有效电平为高。
假如有选手提前抢答或者延后抢答同时报警。
5、显示模块:
由于试验箱的限制,附加了显示电路的设计。
6、计分模块:
设置一个计分电路,每组开始设置100分,由主持人计分,答对一次加10分,答错一次减10分。
〔四〕单元电路元件设计
1、抢答器鉴别模块VHDL程序与模块:
在这个模块中主要实现抢答过程中的抢答功能,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。
在这个模块输入端有WARN输入(以时间控制系统的WARN输出信号为信号源)、一个和“时间控制系统〞公用的CLEAR端、6人抢答输入信号端S0,S1,S2,S3,S4,S5和有一个时钟信号端CLK,这个时钟信号是个高频信号,用以扫描S0,S1,S2,S3,S4,S5是否有信号输入。
输出端有对应于S0,S1,S2,S3,S4,S5编号的6个指示灯LED和4线2进制输出端STATES〔用于锁存当前的状态〕,还有一个STOP端用于指示S0,S1,S2,S3,S4,S5按钮状态〔控制计时器停止〕。
生成模块如图3所示。
图3LOCK模块图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYLOCKIS
PORT(CLK,CLEAR:
INSTD_LOGIC;
WARN:
INSTD_LOGIC;
S0,S1,S2,S3,S4,S5:
INSTD_LOGIC;
STATES:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
STOP:
OUTSTD_LOGIC;
LED:
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
ENDLOCK;
ARCHITECTUREONEOFLOCKIS
SIGNALG:
STD_LOGIC_VECTOR(5DOWNTO0);
BEGIN
PROCESS(CLEAR,CLK,S0,S1,S2,S3,S4,S5)
BEGIN
IFCLEAR='1'THENG<="000000";LED<="000000";STOP<='0';
ELSIFCLK'EVENTANDCLK='1'THEN
IFWARN='0'THEN
IF(S5='1')ANDNOT(G(0)='1'ORG
(1)='1'ORG
(2)='1'ORG(3)='1'ORG(4)='1')THEN
G(5)<='1';LED(5)<='1';
ELSIF(S4='1')ANDNOT(G(0)='1'ORG
(1)='1'ORG
(2)='1'ORG(3)='1'ORG(5)='1')THEN
G(4)<='1';LED(4)<='1';
ELSIF(S3='1')ANDNOT(G(0)='1'ORG
(1)='1'ORG
(2)='1'ORG(4)='1'ORG(5)='1')THEN
G(3)<='1';LED(3)<='1';
ELSIF(S2='1')ANDNOT(G(0)='1'ORG
(1)='1'ORG(3)='1'ORG(4)='1'ORG(5)='1')THEN
G
(2)<='1';LED
(2)<='1';
ELSIF(S1='1')ANDNOT(G(0)='1'ORG
(2)='1'ORG(3)='1'ORG(4)='1'ORG(5)='1')THEN
G
(1)<='1';LED
(1)<='1';
ELSIF(S0='1')ANDNOT(G
(1)='1'ORG
(2)='1'ORG(3)='1'ORG(4)='1'ORG(5)='1')THEN
G(0)<='1';LED(0)<='1';
ENDIF;
STOP<=G(0)ORG
(1)ORG
(2)ORG(3)ORG(4)ORG(5);
ENDIF;
ENDIF;
CASEGIS
WHEN"000001"=>STATES<="0001";
WHEN"000010"=>STATES<="0010";
WHEN"000100"=>STATES<="0011";
WHEN"001000"=>STATES<="0100";
WHEN"010000"=>STATES<="0101";
WHEN"100000"=>STATES<="0110";
WHENOTHERS=>STATES<="0000";
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREONE;
2、译码模块VHDL程序与模块:
将抢答过程中锁存的BCD码转换成7段码用于LED的显示。
生成模块图如图4所示。
图4CODE模块图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCODEIS
PORT(INSTATES:
INSTD_LOGIC_VECTOR(3DOWNTO0);
QOUT:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDCODE;
ARCHITECTURETWOOFCODEIS
BEGIN
PROCESS(INSTATES)
BEGIN
CASEINSTATESIS
WHEN"0000"=>QOUT<="0111111";
WHEN"0001"=>QOUT<="0000110";
WHEN"0010"=>QOUT<="1011011";
WHEN"0011"=>QOUT<="1001111";
WHEN"0100"=>QOUT<="1100110";
WHEN"0101"=>QOUT<="1101101";
WHEN"0110"=>QOUT<="1111101";
WHEN"0111"=>QOUT<="0000111";
WHEN"1000"=>QOUT<="1111111";
WHEN"1001"=>QOUT<="1101111";
WHENOTHERS=>QOUT<="0000000";
ENDCASE;
ENDPROCESS;
ENDARCHITECTURETWO;
3.定时模块VHDL程序与模块:
这个模块的输入端有时钟信号CLK、系统复位信号CLEAR和一个STOP输入信号;输出端有秒时间状态显示信号高位HIGH和低位LOW,无人抢答时计时中止警报信号WARN。
这个模块中主要实现抢答过程中的计时功能,在抢答开始后进展N秒的倒计时,并且在N秒倒计时后无人抢答的情况下显示超时并输出信号至WARN报警,或者只要N秒内有人抢答,由抢答鉴别模块输出的STOP信号控制停止计时,并显示优先抢答者的抢答时刻,输出一个信号经WARN传至“抢答鉴别系统〞,锁存不再让选手抢答。
生成的模块图如图5所示。
图5COUNT模块图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNTIS
PORT(CLK,CLEAR,STOP:
INSTD_LOGIC;
WARN:
OUTSTD_LOGIC;
HIGH,LOW:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOUNT;
ARCHITECTURETHREEOFCOUNTIS
SIGNALHS:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALLS:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IFCLEAR='1'THEN
HS<="1001";LS<="1001";WARN<='0';
ELSIFCLK'EVENTANDCLK='1'THEN
LS<=LS-1;
IFLS="0000"THEN
LS<="1001";HS<=HS-1;
IFHS="0000"ANDLS="0000"THEN
WARN<='1';HS<="0000";LS<="0000";
IFSTOP='1'THEN
HS<=HS;
LS<=LS;
WARN<='1';
ENDIF;
ENDIF;
ENDIF;
ENDIF;
HIGH<=HS;LOW<=LS;
ENDPROCESS;
ENDARCHITECTURETHREE;
4报警模块VHDL:
在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内〔N秒内〕有人抢答或是倒计时到了之后蜂鸣器开始报警,输出SOUND有效电平为高。
生成的模块图如图6所示。
图6ALARM模块图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYALARMIS
PORT(CLEAR,WARN:
INSTD_LOGIC;
SOUND:
OUTSTD_LOGIC);
END;
ARCHITECTUREFOUROFALARMIS
BEGIN
PROCESS(WARN,CLEAR)
BEGIN
IFCLEAR='1'THENSOUND<='0';
ELSIFWARN='1'THEN
SOUND<='1';
ELSESOUND<='0';
ENDIF;
ENDPROCESS;
ENDALARM;
具有犯规设置电路对提前抢答和超时抢答者,如此报警并显示组别。
生成的模块图如图7所示。
图7FOUL模块图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFOULIS
PORT(CLEAR:
INSTD_LOGIC;
S0,S1,S2,S3,S4,S5:
INSTD_LOGIC;
lede:
OUTSTD_LOGIC_VECTOR(5DOWNTO0);
warns:
OUTSTD_LOGIC);
ENDfoul;
ARCHITECTUREONEOFfoulIS
begin
PROCESS(CLEAR,S0,S1,S2,S3,S4,S5)
BEGIN
IFCLEAR='1'THEN
IFS5='1'THEN
lede(5)<='1';warns<='1';
ELSIFS4='1'THEN
lede(4)<='1';warns<='1';
ELSIFS3='1'THEN
lede(3)<='1';warns<='1';
ELSIFS2='1'THEN
lede
(2)<='1';warns<='1';
ELSIFS1='1'THEN
lede
(1)<='1';warns<='1';
ELSIFS0='1'THEN
lede(0)<='1';warns<='1';
ELSELEDe<="000000";warns<='0';
ENDIF;
ENDIF;
endprocess;
ENDONE;
5、显示模块设计:
由于试验箱的限制,附加了动态显示模块。
模块图如图8所示。
图8动态显示模块图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmux18IS
PORT(aa0,aa1,aa2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
bb0,bb1,bb2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
cc0,cc1,cc2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
dd0,dd1,dd2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
ee0,ee1,ee2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
ff0,ff1,ff2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
xx0,xx1,xx2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
choice:
STD_LOGIC_VECTOR(5DOWNTO0);
g,h,i:
INSTD_LOGIC;
yyy:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDmux18;
ARCHITECTURErt1OFmux18IS
SIGNALsel:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
sel<=i&h&g;
PROCESS(sel,choice)
BEGIN
IF(choice="000001")THEN
IF(sel="000")THEN
yyy<=aa0;
ELSIF(sel="001")THEN
yyy<=aa1;
ELSIF(sel="010")THEN
yyy<=aa2;
ENDIF;
ELSIF(choice="000010")THEN
IF(sel="000")THEN
yyy<=bb0;
ELSIF(sel="001")THEN
yyy<=bb1;
ELSIF(sel="010")THEN
yyy<=bb2;
ENDIF;
ELSIF(choice="000100")THEN
IF(sel="000")THEN
yyy<=cc0;
ELSIF(sel="001")THEN
yyy<=cc1;
ELSIF(sel="010")THEN
yyy<=cc2;
ENDIF;
ELSIF(choice="001000")T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 语言 八路 数字 抢答 设计 说明