基于FPGA的数字抢答器的设计Word文件下载.docx
《基于FPGA的数字抢答器的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字抢答器的设计Word文件下载.docx(15页珍藏版)》请在冰点文库上搜索。
同时,还可以设置计分、犯规及奖惩记录等各种功能。
本设计的具体要求是:
1.设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。
2.电路具有第一抢答信号的鉴别和锁存功能。
在主持人交系统复位并发出抢答指令后,若抢答开关,则该组指示灯亮并用组别显示电路显示抢答者的组别,同时扬声器发出“嘀嘟”的双音音响,且持续2~3秒。
此时,电路应具备自锁功能,使别组的抢答开关不起作用。
3.设置计分电路。
每组在开始时预置成100分,抢答后由诗人计分,答对一次加10分,否则减10分。
4.设置犯规电路。
对提前抢答和超时抢答的组别鸣喇叭示警,并由组别显示电路显示出犯规组别。
二、系统设计方案
根据系统设计要求可知,系统的输入信号有:
各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;
系统的输出信号有:
四个组抢答成功与否的指示灯控制信号输出口LEDA、LESB、LEDC、LEDD,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。
本系统应具有的功能有:
第一抢答信号的鉴别和锁存功能;
抢答计时功能;
各组得分的累加和动态显示功能;
抢答犯规记录功能。
根据以上的分析,我们可将整个系统分为三个主要模块:
抢鉴别模块QDJB;
抢答计时模块JSQ;
抢答计分模块JFQ;
对于需显示的信息,需增加或外接译码器,进行显示译码。
考虑到FPGA、CPLD的可用接口及一般EDA实验开发系统的输出显示资源的限制,这里我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。
整个系统的组成框图如图1所示:
图1智力抢答器的组成框图
系统的工作原理如下:
当主持人按下使能端EN时,抢答器开始工作,A、B、C、D四个抢答者谁最先抢答成功则此选手的台号灯(LEDA—LEDD)将点亮,并且主持人前的组别显示数码将显示出抢答成功者的台号;
接下来主持人提问,若回答正确,主持人按加分按钮ADD,抢答计分模块JFQ将给对应的组加分,并将该组的总分显示在对应的选手计分数码管JF2_A~JF0_A、JF2_B~JF0_B、JF2_C~JF0_C、JF2_D~JF0_D、上。
在此过程中,主持人可以采用计时手段(JSQ),打开计时器使计时预置控制端LDN有效,输入限制的时间,使计时使能端EN有效,开始计时。
完成第一轮抢答后,主持人清零,接着重新开始,步骤如上。
三、主要VHDL源程序与系统模块
1.抢答鉴别电路QDJB的VHDL源程序和模块
--QDJB.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYQDJBIS
PORT(CLR:
INSTD_LOGIC;
A,B,C,D:
A1,B1,C1,D1:
OUTSTD_LOGIC;
STATES:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDENTITYQDJB;
ARCHITECTUREARTOFQDJBIS
CONSTANTW1:
STD_LOGIC_VECTOR:
="
0001"
;
CONSTANTW2:
0010"
CONSTANTW3:
0100"
CONSTANTW4:
1000"
BEGIN
PROCESS(CLR,A,B,C,D)IS
IFCLR='
1'
THENSTATES<
="
0000"
ELSIF(A='
ANDB='
0'
ANDC='
ANDD='
)THEN
A1<
='
B1<
C1<
D1<
STATES<
=W1;
=W2;
=W3;
=W4;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
图2抢答鉴别电路的模块
2.计分器电路JFQ的VHDL源程序
--JFQ.VHD
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJFQIS
PORT(RST:
ADD:
CHOS:
INSTD_LOGIC_VECTOR(3DOWNTO0);
AA2,AA1,AA0,BB2,BB1,BB0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CC2,CC1,CC0,DD2,DD1,DD0:
ENDENTITYJFQ;
ARCHITECTUREARTOFJFQIS
PROCESS(RST,ADD,CHOS)IS
VARIABLEPOINTS_A2,POINTS_A1:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_B2,POINTS_B1:
VARIABLEPOINTS_C2,POINTS_C1:
VARIABLEPOINTS_D2,POINTS_D1:
BEGIN
IF(ADD'
EVENTANDADD='
IFRST='
THEN
POINTS_A2:
POINTS_A1:
POINTS_B2:
POINTS_B1:
POINTS_C2:
POINTS_C1:
POINTS_D2:
POINTS_D1:
ELSIFCHOS="
IFPOINTS_A1="
1001"
IFPOINTS_A2="
ELSE
=POINTS_A2+'
ELSE
=POINTS_A1+'
IFPOINTS_B1="
IFPOINTS_B2="
=POINTS_B2+'
=POINTS_B1+'
ELSIFCHOS="
IFPOINTS_C1="
IFPOINTS_C2="
=POINTS_C2+'
=POINTS_C1+'
IFPOINTS_D1="
IFPOINTS_D2="
=POINTS_D2+'
=POINTS_D1+'
ENDIF;
AA2<
=POINTS_A2;
AA1<
=POINTS_A1;
AA0<
BB2<
=POINTS_B2;
BB1<
=POINTS_B1;
BB0<
CC2<
=POINTS_C2;
CC1<
=POINTS_C1;
CC0<
DD2<
=POINTS_D2;
DD1<
=POINTS_D1;
DD0<
图3计分器电路JFQ的模块
3.计时器电路JSQ的VHDL源程序
--JSQ.VHD
ENTITYJSQIS
PORT(CLR,LDN,EN,CLK:
TA,TB:
QA:
QB:
ENDENTITYJSQ;
ARCHITECTUREARTOFJSQIS
SIGNALDA:
SIGNALDB:
PROCESS(TA,TB,CLR)IS
IFCLR='
DA<
DB<
IFTA='
=DA+'
;
IFTB='
=DB+'
PROCESS(CLK)IS
VARIABLETMPA:
VARIABLETMPB:
THENTMPA:
TMPB:
0110"
ELSIFCLK'
EVENTANDCLK='
IFLDN='
=DA;
=DB;
ELSIFEN='
IFTMPA="
TMPA:
IFTMPB="
THENTMPB:
ELSETMPB:
=TMPB-1;
ELSETMPA:
=TMPA-1;
QA<
=TMPA;
QB<
=TMPB;
图4计时器电路JSQ的模块
4.译码器电路YMQ的VHDL源程序
--YMQ.VHD
ENTITYYMQIS
PORT(AIN4:
DOUT7:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDYMQ;
ARCHITECTUREARTOFYMQIS
PROCESS(AIN4)
CASEAIN4IS
WHEN"
=>
DOUT7<
0111111"
--0
0000110"
--1
1011011"
--2
0011"
1001111"
--3
1100110"
--4
0101"
1101101"
--5
1111101"
--6
WHEN"
0111"
0000111"
--7
1111111"
--8
1101111"
--9
WHENOTHERS=>
0000000"
ENDCASE;
图5译码器电路YMQ的模块
5.智力抢答器在CYCLONE中所用的框图
注:
由于集成板的差别,该框图与原来设计的框图有一定的出入
图5智力抢答器在设计中所用的框图
图中的引脚号是本次在CYCLONE的EP1C12Q240C8中所用的引脚接口
四、系统仿真
1、系统的有关仿真
系统仿真后的结果分别如图6、图7、图8、图9所示。
图6抢答鉴别电路QDJB仿真图
图7计分器电路JFQ仿真图
图8计时器电路JSQ仿真图
图9译码器电路YMQ仿真图
五、设计技巧分析
1.在抢答鉴别电路设计中,A、B、C、D四组抢答,理论上应该有16种可能情况,但实际上由于芯片反应速度快到一定程度时,两组以上同时抢答成功的可能性非常不,因此我们可设计成只有四种情况,这大大简化了电路的设计复杂性。
2.在计分器电路的设计中,按照一般的设计原则,按一定数进制进行加减即可,但是随着计数数目的增加,要将计数数目分解成十进制并进行译码显示分变得越来越麻烦。
因此为了减少译码显示的麻烦,一般是将一个大的进制数分解成数个十进制以内的时制数,计数器串级连接。
但随着位数的增加,电路的接口增加因此本设计采用IF语句从低往高判断是否有进位,以采取相应的操作,既减少了接口,又大大地简化了设计。
3.本系统中的计时器电路既有计时初始值的预置功能,又有减计数功能,功能比较齐全。
其中初始值的预置功能是将两位数分解成两个数分别进行预置,每个数的预置则采用高电平计数的方式进行。
减计数的功能与上述的加法计数类似,非常简洁。
六、系统扩展思路
1.设计外围电路:
系统用方波信号源、直流工作电源。
2.可将系统扩展为8组抢答器,同时当抢答错误时,具备扣分功能。
3.若为课程设计,除可要求设计调试程序、外围电路外,还可要求设计制作整个系统,包括PCB的制作。
七、设计心得
在这次设计中,我花了不少的时间,其中有苦也有泪。
苦的是我付出了不少的汗水,乐的是在付出的过程中我得到了许多,也学会了许多。
因为一个人的能力毕竟有限,在设计方面难免会出现这样那样的错误,但正是这些错误促进了我的进步。
根据电路的特点,我用层次化结构化设计概念,将此项设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试,这培养了我们合作的精神,同时加深了层次化设计的概念。
在这次课程设计中,我真正体会到了知识的重要性。
在设计的过程中,遇到问题我会先独立思考,到自己不能解决的时候我就会和同学讨论,实在解决不了我就会向指导老师请教,应该说从功能的实现到流程图的绘制,从程序的编写到程序的检查,从程序的调试到实验报告的写作,其间每一个过程都凝聚着大家对我的帮助。
最后,在设计的过程中我进一步养成了软件设计的方法,完成一个项目的的程序,进一步了解了设计的步骤,进一步加深了对《EDA技术实用教程》这门课的理解,增强了以后学习的兴趣,为以后的工作积累了一定的经验,感谢石老师给我们提供这次设计的机会。
参考文献:
[1]沈明山. EDA技术及可编程器件应用实训. 科学出版社
[2]曾繁泰,陈美金. VHDL程序设计. 北京:
清华大学出版社
[3]谭会生,张昌凡. EDA技术及应用. 西安:
西安电子科技大学出版社
[4]李国丽,朱维勇. EDA与数字系统设计. 北京:
机械工业出版社
[5]苏光大. 图像并行处理技术. 北京: