EDA课程设计智能抢答器.docx
《EDA课程设计智能抢答器.docx》由会员分享,可在线阅读,更多相关《EDA课程设计智能抢答器.docx(15页珍藏版)》请在冰豆网上搜索。
EDA课程设计智能抢答器
1智能抢答器的设计
1.1基于VHDL的智能抢答器
1.1.1设计目的及要求
EDA技术作为现代电子设计最新技术的结晶,其广阔的应用前景和深远的影
响已毋庸置疑,它在信息工程类专业中的基础地位和核心作用也逐渐被人们所认
识。
许多高等学校开设了相应的课程,并为学生提供了课程设计、综合实践、电
子设计竞赛、毕业设计、科学研究和产品开发等EDA技术的综合应用实践环节。
相关的工程技术人员也特别重视学习EDA技术,并渴望提高其工程应用能力。
对于迅猛发展的EDA技术的综合应用,从EDA技术的综合应用系统的深度来
分,可分为3个层次:
①功能电路模块的设计;②算法实现电路模块的设计;
③片上系统/嵌入式系统/现代DSP系统的设计。
从EDA技术的综合应用系统的最终主要硬件构成来分,已出现6种形式:
①CPLD/FPGA系统;②"CPLD/FPGA+MCU"系统;③"CPLD/FPGA+专用DSP
处理器"系统;④基于FPGA实现的现代DSP系统;⑤基于FPGA实现的SOC片
上系统;⑥基于FPGA实现的嵌入式系统。
从EDA技术的综合应用系统的完善层次来分,可分为3个层次:
①"EDA综
合系统"主体电路的设计、仿真及硬件验证;②"EDA综合系统"主体电路的设计、
仿真、硬件验证+系统外围电路PCB的设计与制作;③"EDA综合系统"主体电路
的设计、仿真、硬件验证+系统整体电路PCB的设计与制作及系统的组装、调试。
在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置
一台抢答器,通过数显、灯光及音响等各种手段批示出第一抢答者。
同时,还可
以设置计分、犯规及奖惩记录等各种功能。
本设计的具体要求是:
1.设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。
2.电路具有第一抢答信号的鉴别和锁存功能。
在主持人交系统复位并发出抢
答指令后,若抢答开关,则该组指示灯亮并用组别显示电路显示抢答者的组别,
同时扬声器发出“嘀嘟”的双音音响,且持续2~3秒。
此时,电路应具备自锁功
能,使别组的抢答开关不起作用。
3.设置计分电路。
每组在开始时预置成100分,抢答后由诗人计分,答对一次加10分,否则减10分。
4.设置犯规电路。
对提前抢答和超时抢答的组别鸣喇叭示警,并由组别显示
电路显示出犯规组别。
1.1.2设计分析与设计思路
设计分析与设计思路设计分析与设计思路:
根据系统设计要求可知,系统的输入信号有:
各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;系统的输出信号有:
四个组抢答成功与否的指示灯控制信号输出口LEDA、LESB、LEDC、LEDD,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。
本系统应具有的功能有:
第一抢答信号的鉴别和锁存功能;抢答计时功能;各组得分的累加和动态显示功能;抢答犯规记录功能。
2抢答器各模块的原理及介绍
2.1系统的框图及介绍
2.1.1结构框图及系统框图
图2.1抢答器系统及结构框图
原理分析:
将电路分为三个主要模块:
抢答鉴别模块QDJB;计时模块JSQ;
记分模块JFQ。
可用静态显示,使用4个数码管,两个显示计时,
一个显示组别,一个显示分数。
2.2模块的介绍
2.2.1抢答鉴别模块QDJB
图2.2QDJB
在抢答鉴别电路设计中,A、B、C、D四组抢答,理论上应该有16种可
能情况,但实际上由于芯片反应速度快到一定程度时,两组以上同时抢答成
功的可能性非常小,因此我们可设计成只有四种情况,这大大简化了电路的
设计复杂性。
2.2.2计时模块JSQ
图2.3JSQ
本系统中的计时器电路既有计时初始值的预置功能,又有减计数功能,
功能比较齐全。
其中初始值的预置功能是将时间的两位数(单位为秒)分解
成两个数分别进行预置,默认时间为60秒倒计时。
TA、TB端分别预置两位
数值,再经过LDN端确认所置时间,EN端为高电平后开始计时。
每个数的预置则采用高电平计数的方式进行,CLK接时钟信号,操作简洁。
2.2.3记分模块JFQ
图2.4JFQ
在计分器电路的设计中,按照一般的设计原则,按一定数进制进行加减
即可,但是随着计数数目的增加,要将计数数目分解成十进制并进行译码显
示分变得越来越麻烦。
因此为了减少译码显示的麻烦,一般是将一个大的进
制数分解成数个十进制以内的时制数,计数器串级连接。
但随着位数的增加,
电路的接口增加因此本设计采用IF语句从低往高判断是否有进位,以采取相
应的操作,而且由于设计要求加减分均为10的倍数故而可以将个位一直设为
0,这样既减少了接口,又大大地简化了设计。
2.2.4译码器显示模块YMQ
图2.5YMQ
本译码器用于将抢答鉴别模块抢答成功的组别和计时器的时间进行显
示,AIN4[3..0]端输入需显示的二进制数组,DOUT7[6..0]端输出显示在数
码管,显示显示范围为0~9。
2.3系统的源程序
2.3.1抢答鉴别模块QDJB
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYQDJBIS
PORT(CLR:
INSTD_LOGIC;
A,B,C,D:
INSTD_LOGIC;--4个组
A1,B1,C1,D1:
OUTSTD_LOGIC;
STATES:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDENTITYQDJB;
ARCHITECTUREARTOFQDJBIS
signala_1,b_1,c_1,d_1:
STD_LOGIC;
BEGIN
PROCESS(CLR,A,B,C,D)IS
BEGIN
IFCLR='1'THENSTATES<="0000";
a_1<='0';b_1<='0';c_1<='0';d_1<='0';--清零
ELSIFa_1='1'orb_1='1'orc_1='1'ord_1='1'thennull;--锁存,当有一组选中时其他组再抢答没作用
ELSIFa='1'thena_1<='1';
STATES<="0001";
ELSIFb='1'thenb_1<='1';
STATES<="0010";
ELSIFc='1'thenc_1<='1';
STATES<="0011";
ELSIFd='1'thend_1<='1';
STATES<="0100";
ENDIF;
a1<=a_1;b1<=b_1;c1<=c_1;d1<=d_1;
ENDPROCESS;
ENDARCHITECTUREART;
2.3.2计时模块JSQ
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJSQIS
PORT(CLR,LDN,EN,CLK:
INSTD_LOGIC;
TA,TB:
INSTD_LOGIC;
QA:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
QB:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
baoj:
OUTSTD_LOGIC);
ENDENTITYJSQ;
ARCHITECTUREARTOFJSQIS
SIGNALDA:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALDB:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALQ:
STD_LOGIC;
BEGIN
PROCESS(TA,TB,CLR)IS
BEGIN
IFCLR='1'THEN
DA<="0000";
DB<="0000";
ELSE
IFTA='1'THEN
DA<=DA+'1';
ENDIF;
IFTB='1'THEN
DB<=DB+'1';
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CLK)
VARIABLETMPA:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLETMPB:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFCLR='1'THENTMPA:
="0000";TMPB:
="0110";baoj<='0';Q<='1';
ELSIFCLK'EVENTANDCLK='1'ANDQ='1'THEN
IFLDN='1'THENTMPA:
=DA;TMPB:
=DB;
ELSIFEN='1'THEN
IFTMPA="0000"THEN
TMPA:
="1001";
IFTMPB="0000"THENTMPB:
="0110";
ELSETMPB:
=TMPB-1;
ENDIF;
ELSETMPA:
=TMPA-1;
ENDIF;
IFTMPB="0000"ANDTMPA="0000"THEN------------------
baoj<='1';Q<='0';
ENDIF;
ENDIF;
ENDIF;
QA<=TMPA;QB<=TMPB;
ENDPROCESS;
ENDART;
2.3.3记分模块JFQ
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJFQIS
PORT(RST:
INSTD_LOGIC;
ADD:
INSTD_LOGIC;
SUB:
INSTD_LOGIC;
CHOS:
INSTD_LOGIC_VECTOR(3DOWNTO0);
AA2,AA1,AA0,BB2,BB1,BB0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CC2,CC1,CC0,DD2,DD1,DD0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDJFQ;
ARCHITECTUREARTOFJFQIS
BEGIN
PROCESS(RST,ADD,SUB,CHOS)
VARIABLEPOINTS_A2,POINTS_A1:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_B2,POINTS_B1:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_C2,POINTS_C1:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_D2,POINTS_D1:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFRST='1'THEN
POINTS_A2:
="0001";POINTS_A1:
="0000";
POINTS_B2:
="0001";POINTS_B1:
="0000";
POINTS_C2:
="0001";POINTS_C1:
="0000";
POINTS_D2:
="0001";POINTS_D1:
="0000";
--ENDIF;
ELSIFADD='1'THEN
IFCHOS="0001"THEN
IFPOINTS_A1="1001"THEN
POINTS_A1:
="0000";
IFPOINTS_A2="1001"THEN
POINTS_A2:
="0000";
ELSE
POINTS_A2:
=POINTS_A2+"0001";
ENDIF;
ELSE
POINTS_A1:
=POINTS_A1+"0001";
ENDIF;
ELSIFCHOS="0010"THEN
IFPOINTS_B1="1001"THEN
POINTS_B1:
="0000";
IFPOINTS_B2="1001"THEN
POINTS_B2:
="0000";
ELSE
POINTS_B2:
=POINTS_B2+"0001";
ENDIF;
ELSE
POINTS_B1:
=POINTS_B1+"0001";
ENDIF;
ELSIFCHOS="0011"THEN
IFPOINTS_C1="1001"THEN
POINTS_C1:
="0000";
IFPOINTS_C2="1001"THEN
POINTS_C2:
="0000";
ELSE
POINTS_C2:
=POINTS_C2+"0001";
ENDIF;
ELSE
POINTS_C1:
=POINTS_C1+"0001";
ENDIF;
ELSIFCHOS="0100"THEN
IFPOINTS_D1="1001"THEN
POINTS_D1:
="0000";
IFPOINTS_D2="1001"THEN
POINTS_D2:
="0000";
ELSE
POINTS_D2:
=POINTS_D2+"0001";
ENDIF;
ELSE
POINTS_D1:
=POINTS_D1+"0001";
ENDIF;
ENDIF;
ELSIF(SUB='1')THEN
IFCHOS="0001"THEN
IFPOINTS_A1="0000"THEN
POINTS_A1:
="1001";
IFPOINTS_A2="0000"THEN
POINTS_A2:
="1001";
ELSE
POINTS_A2:
=POINTS_A2+"1111";
ENDIF;
ELSE
POINTS_A1:
=POINTS_A1+"1111";
ENDIF;
ELSIFCHOS="0010"THEN
IFPOINTS_B1="0000"THEN
POINTS_B1:
="1001";
IFPOINTS_B2="0000"THEN
POINTS_B2:
="1001";
ELSE
POINTS_B2:
=POINTS_B2+"1111";
ENDIF;
ELSE
POINTS_B1:
=POINTS_B1+"1111";
ENDIF;
ELSIFCHOS="0011"THEN
IFPOINTS_C1="0000"THEN
POINTS_C1:
="1001";
IFPOINTS_C2="0000"THEN
POINTS_C2:
="1001";
ELSE
POINTS_C2:
=POINTS_C2+"1111";
ENDIF;
ELSE
POINTS_C1:
=POINTS_C1+"1111";
ENDIF;
ELSIFCHOS="0100"THEN
IFPOINTS_D1="0000"THEN
POINTS_D1:
="1001";
IFPOINTS_D2="0000"THEN
POINTS_D2:
="1001";
ELSE
POINTS_D2:
=POINTS_D2+"1111";
ENDIF;
ELSE
POINTS_D1:
=POINTS_D1+"1111";
ENDIF;
ENDIF;
ENDIF;
AA2<=POINTS_A2;AA1<=POINTS_A1;AA0<="0000";
BB2<=POINTS_B2;BB1<=POINTS_B1;BB0<="0000";
CC2<=POINTS_C2;CC1<=POINTS_C1;CC0<="0000";
DD2<=POINTS_D2;DD1<=POINTS_D1;DD0<="0000";
ENDPROCESS;
ENDART;
2.3.4译码器显示模块YMQ
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYYMQIS
PORT(AIN4:
INSTD_LOGIC_VECTOR(3DOWNTO0);
DOUT7:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDYMQ;
ARCHITECTUREARTOFYMQIS
BEGIN
PROCESS(AIN4)
BEGIN
CASEAIN4IS
WHEN"0000"=>DOUT7<="0111111";--0
WHEN"0001"=>DOUT7<="0000110";--1
WHEN"0010"=>DOUT7<="1011011";--2
WHEN"0011"=>DOUT7<="1001111";--3
WHEN"0100"=>DOUT7<="1100110";--4
WHEN"0101"=>DOUT7<="1101101";--5
WHEN"0110"=>DOUT7<="1111101";--6
WHEN"0111"=>DOUT7<="0000111";--7
WHEN"1000"=>DOUT7<="1111111";--8
WHEN"1001"=>DOUT7<="1101111";--9
WHENOTHERS=>DOUT7<="0000000";
ENDCASE;
ENDPROCESS;
ENDART;
2.3.5顶层原理图文件
图2.6顶层原理图
3仿真波形
3.1仿真波形
3.1.1抢答鉴别模块QDJB
图3.1抢答鉴别模块QDJB
CLR低电平有效,当其为高电平时,输出无效。
当其为低电平时,A,B,
C,D哪一个为高电平则输出哪个,对应的LED灯亮。
3.1.2计时模块JSQ
图3.2计时模块JSQ
CLR低电平有效,当CLR为高电平时,电路不工作。
当CLR为低电平时开始
计时。
如没人抢答,时间到后发出提示音。
如有人抢答,答题时间到后,发出提
示音。
输入:
QA个位,QB十位,输出:
TA个位,TB十位。
3.1.3记分模块JFQ
图3.3记分模块JFQ
初始分数为100分,当ADD经过第一个上升沿时,CHOS【3】输出高电平则对应的给D加上10分
表3.1十进制数字对应的LED译码器表示
十进制
二进制
LED共阴极译码器输出
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
4实习总结
4.1实习总结
在这次设计中,我花了不少的时间,其中有苦也有泪。
苦的是我付出了不少
的汗水,乐的是在付出的过程中我得到了许多,也学会了许多。
因为一个人的能力毕竟有限,在设计方面难免会出现这样那样的错误,但正
是这些错误促进了我的进步。
根据电路的特点,我用层次化结构化设计概念,将此项设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试,这培养了我们合作的精神,同时加深了层次化设计的概念。
在这次课程设计中,我真正体会到了知识的重要性。
在设计的过程中,遇到问题我会先独立思考,到自己不能解决的时候我就会和同学讨论,实在解决不了我就会向指导老师请教,应该说从功能的实现到流程图的绘制,从程序的编写到程序的检查,从程序的调试到实验报告的写作,其间每一个过程都凝聚着大家对我的帮助。
最后,在设计的过程中我进一步养成了软件设计的方法,完成一个项目的的程序,进一步了解了设计的步骤,进一步加深了对《EDA技术实用教程》这门课的理解,增强了以后学习的兴趣,为以后的工作积累了一定的经验。
参考文献
(1)、《EDA技术与VHDL》潘松黄继业2009.09
(2)、《EDA技术课程设计》孙俊逸刘江海2009.05
(3)、《EDA技术与VHDL电路开发应用实践》刘欲晓方强2009.04