EDA电子抢答器实训报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
一、设计目的及意义 (2)
二、设计任务、要求和提示 (2)
1、设计任务 (2)
2、设计要求 (2)
3、设计提示 (2)
三、原理及总体框架 (3)
1、原理 (3)
2、总体框架 (4)
四、各级模块设计及仿真 (4)
1、抢答鉴别模块和功能仿真图 (4)
2、计分模块和功能仿真图 (7)
3、抢答译码显示模块和功能仿真图 (10)
4、总电路图和功能仿真图 (11)
五、总结与体会 (12)
六、参考文献 (13)
一、设计目的及意义
课程设计的主要目的是通过EDA数字式电子抢答器的综合设计,熟悉EDA数字式电子抢答器的设计过程,设计要求,以完成的操作内容和具体的设计方法,通过设计,有助于复习巩固以往的教学内容和能够熟练的运用quartus ii,达到灵活应用的目的。
二、设计任务、要求和提示
1、设计任务
设计EDA数字式电子抢答器
2、设计要求
a、设计一个可容纳6组(或4 组)参赛的数字式抢答器,每组设一个按钮,供抢答使用。
b、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。
c、设置一个主持人“复位”按钮。
d、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,
扬声器发出2~3秒的音响。
e、设置一个计分电路,每组开始预置100 分,由主持人记分,答对一次加10分,答错一
次减10分。
3、设计提示
此设计问题的关键是准确判断出第一抢答者并将其锁存,实现
的方法可使用触发器或锁存器,在得到第一信号后将输入封锁,使其它组的抢答信号无效。
形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别,用第一抢答信号推动扬声器发出音响。
计分电路采用十进制加/减计数器、数码管显示,由于每次都是加/减10分,所以个位始终为零,只要十位、百位进行加/减运算即可。
三、原理及总体框架
1、基本原理
本设计为四路智能抢答器,所以这种抢答器要求有四路不同组别的抢答输入信号,并能识别最先抢答的信号,直观地通过数显和蜂鸣等方式显示出组别,同时该系统还应有复位、计分功能。
抢答过程:主持人按下系统复位键(RST),系统进入抢答状态,计分模块输出初始信号给数码显示模块并显示出初始值。
当某参赛组抢先将抢答键按下时,系统将其余三路抢答信号封锁,同时扬声器发出声音提示,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直保持到下一轮主持人将系统清零为止。
主持人对抢答结果进行确认并让选手进行回答,在规定的时间内根据答题的正误来确定加分或减分,并通过数码显示模块将成绩显示出来。
主持人按下复位键,即RST为高电平有效状态,清除前一次的抢答组别,又可开始新的一轮的抢答。
此抢答器的设计中采用自顶向下的设计思路,运用VHDL硬件描述语言对各个模块进行层次化、系统化的描述,并且先设计一个顶层文件,再把各个模块连接起来。
2、设计框图
四、各级模块设计及仿真
1、抢答鉴别模块和功能仿真图
a 、模块
在这个模块中主要实现抢答过程中的抢答功能,还能记录抢答者的台号并发出嗡鸣声,并且能实现当有一路抢答按键按下时,该路抢答信号将其余过滤抢答封锁的功能。
其中有四个抢答信号A 、B 、C 、D ;RST 是复位信号;STA 是开始抢答信号;A1、B1、C1、D1显示抢答组指示灯的输入信号;SPEAKER 是嗡鸣声信号;STATE 是显示组别信号;START 是指示灯信号。
抢答启动
选手抢答
加减分
显示
(抢答选手号、
选手得分) 蜂鸣器 图1 总体框图
b、VHDL源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY JB IS
PORT(STA: IN STD_LOGIC;
RST: IN STD_LOGIC;
A,B,C,D: IN STD_LOGIC;
SPEAKER: OUT STD_LOGIC;
A1,B1,C1,D1: OUT STD_LOGIC;
STATES: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
START: OUT STD_LOGIC);
END ENTITY JB;
ARCHITECTURE ART OF JB IS
CONSTANT W1: STD_LOGIC_VECTOR:="0001";
CONSTANT W2: STD_LOGIC_VECTOR:="0010";
CONSTANT W3: STD_LOGIC_VECTOR:="0100";
CONSTANT W4: STD_LOGIC_VECTOR:="1000";
SIGNAL SINOR: STD_LOGIC;
SIGNAL NSINOR: STD_LOGIC;
SIGNAL S_START: STD_LOGIC;
BEGIN
SINOR<=A OR B OR C OR D;
NSINOR<=NOT(A OR B OR C OR D);
START<=S_START;
PROCESS(STA,NSINOR) IS
BEGIN
IF (STA='1') THEN
S_START<='1';
ELSIF(NSINOR'EVENT AND NSINOR='1')THEN
S_START<='0';
END IF;
END PROCESS;
PROCESS (RST,STA,SINOR,NSINOR) IS
BEGIN
IF (RST='1' OR STA='1'OR NSINOR='1')THEN
A1<='0'; B1<='0'; C1<='0';D1<='0';
ELSIF (SINOR'EVENT AND SINOR='1') THEN
IF (S_START='1') THEN
IF (A='1') THEN
A1<='1';B1<='0';C1<='0';D1<='0';SPEAKER<='1';
ELSIF (B='1') THEN
A1<='0';B1<='1';C1<='0';D1<='0';SPEAKER<='1';
ELSIF(C='1') THEN
A1<='0';B1<='0';C1<='1';D1<='0';SPEAKER<='1'; ELSIF(D='1') THEN
A1<='0';B1<='0';C1<='0';D1<='1';SPEAKER<='1'; END IF ;
END IF;
END IF;
END PROCESS;
PROCESS(SINOR) IS
BEGIN
IF (RST='1')THEN
STATES<="0000";
ELSIF(SINOR'EVENT AND SINOR='1') THEN
IF(S_START='1') THEN
IF (A='1') THEN
STATES<=W1;
ELSIF (B='1') THEN
STATES<=W2;
ELSIF (C='1') THEN
STATES<=W3;
ELSIF (D='1') THEN
STATES<=W4;
END IF;
END IF;
END IF;
END PROCESS;
END ARCHITECTURE ART;
c、仿真图
2、计分模块和功能仿真图
a、模块
b、VHDL源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY JF IS
PORT(RST: IN STD_LOGIC;
ADD: IN STD_LOGIC;
CHOSE: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
AA2,AA1,AA0,BB2,BB1,BB0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
CC2,CC1,CC0,DD2,DD1,DD0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END ENTITY JF;
ARCHITECTURE ART OF JF IS
BEGIN
PROCESS(RST,ADD,CHOSE) IS
VARIABLE A2,A1:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE B2,B1:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE C2,C1:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE D2,D1:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF(RST='1') THEN
A2:="0001";A1:="0000";
B2:="0001";B1:="0000";
C2:="0001";C1:="0000";
D2:="0001";D1:="0000";
ELSIF (ADD'EVENT AND ADD='1') THEN IF CHOSE="0001" THEN
IF A1="1001" THEN
A1:="0000";
IF A2="1001" THEN
A2:="0000";
ELSE
A2:=A2+'1';
END IF;
ELSE
A1:=A1+'1';
END IF;
ELSIF CHOSE="0010" THEN IF B1="1001" THEN
B1:="0000";
IF B2="1001" THEN
B2:="0000";
ELSE
B2:=B2+'1';
END IF;
ELSE
B1:=B1+'1';
END IF;
ELSIF CHOSE="0100"THEN
IF C1="1001" THEN
C1:="0000";
IF C2="1001" THEN
C2:="0000";
ELSE
C2:=C2+'1';
END IF;
ELSE
C1:=C1+'1';
END IF;
ELSIF CHOSE="1000" THEN
IF D1="1001" THEN
D1:="0000";
IF D2="1001" THEN
D2:="0000";
ELSE
D2:=D2+'1';
END IF;
ELSE
D1:=D1+'1';
END IF;
END IF;
END IF;
AA2<=A2;AA1<=A1;AA0<="0000";
BB2<=B2;BB1<=B1;BB0<="0000";
CC2<=C2;CC1<=C1;CC0<="0000";
DD2<=D2;DD1<=D1;DD0<="0000";
END PROCESS;
END ARCHITECTURE ART;
C、仿真图
3、译码显示模块和功能仿真图
a、模块
b、VHDL源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY YM IS
PORT(IN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
OUT7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END YM;
ARCHITECTURE ART OF YM IS
BEGIN
PROCESS(IN4)
BEGIN
CASE IN4 IS
WHEN"0000"=>OUT7<="0111111";
WHEN"0001"=>OUT7<="0000110";
WHEN"0010"=>OUT7<="1011011";
WHEN"0011"=>OUT7<="1001111";
WHEN"0100"=>OUT7<="1100110";
WHEN"0101"=>OUT7<="1101101";
WHEN"0110"=>OUT7<="1111101";
WHEN"0111"=>OUT7<="0000111";
WHEN"1000"=>OUT7<="1111111";
WHEN"1001"=>OUT7<="1101111";
WHEN OTHERS=>OUT7<="0000000";
END CASE;
END PROCESS;
END ARCHITECTURE ART;
c、仿真图
4、总电路图和功能仿真图
a、电路图
b、仿真图
五、总结与体会
这次EDA课程设计了两个星期,在这期间学到了很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。
特别是当每一个子模块编写调试成功时,心里特别的开心。
但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
总的来说,这次设计的数字抢答器还是比较成功的,在设计中遇
到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
六、参考文献
[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.
[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.
[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.
[4] 崔建明主编,电工电子EDA仿真技术北京:高等教育出版社,2004
[5]侯继红, 李向东主编,EDA实用技。