EDA课程设计智能抢答器.docx

上传人:b****3 文档编号:5313539 上传时间:2022-12-15 格式:DOCX 页数:15 大小:558.75KB
下载 相关 举报
EDA课程设计智能抢答器.docx_第1页
第1页 / 共15页
EDA课程设计智能抢答器.docx_第2页
第2页 / 共15页
EDA课程设计智能抢答器.docx_第3页
第3页 / 共15页
EDA课程设计智能抢答器.docx_第4页
第4页 / 共15页
EDA课程设计智能抢答器.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

EDA课程设计智能抢答器.docx

《EDA课程设计智能抢答器.docx》由会员分享,可在线阅读,更多相关《EDA课程设计智能抢答器.docx(15页珍藏版)》请在冰豆网上搜索。

EDA课程设计智能抢答器.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1