eda数字式竞赛抢答器(共14页).doc

上传人:飞****2 文档编号:13840899 上传时间:2022-05-01 格式:DOC 页数:13 大小:170KB
返回 下载 相关 举报
eda数字式竞赛抢答器(共14页).doc_第1页
第1页 / 共13页
eda数字式竞赛抢答器(共14页).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《eda数字式竞赛抢答器(共14页).doc》由会员分享,可在线阅读,更多相关《eda数字式竞赛抢答器(共14页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上数字逻辑系统设计实习报告 题目:数字式竞赛抢答器 学院:电子工程信息技术 班级:B0911 姓名:孙全宝 学号:38主要内容:设计一个可容纳6组参赛的数字式抢答器,当第一个人按下抢答按钮时,其他组的按钮不起作用。当主持人按下“复位”按钮,所有组的按键才可用。基本要求:1、设计一个可容纳6组参赛的数字式抢答器,每组设一个按钮,供抢答使用。2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。3、设置一个主持人“复位”按钮。4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2-3秒的音响。5、设置一个计分电路,每组

2、开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。一、总体设计思想1.基本原理本设计为六路智能抢答器,所以这种抢答器要求有六路不同组别的抢答输入信号,并能识别最先抢答的信号,直观地通过数显和蜂鸣等方式显示出组别;对回答问题所用的时间进行计时、显示、超时报警、预置答题时间,同时该系统还应有复位、倒计时启动功能。抢答过程:主持人按下系统复位键(RST),系统进入抢答状态,计时模块和计分模块输出初始信号给数码显示模块并显示出初始值。当某参赛组抢先将抢答键按下时,系统将其余三路抢答信号封锁,同时扬声器发出声音提示,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直

3、保持到下一轮主持人将系统清零为止。主持人对抢答结果进行确认,随后,计时模块送出倒计时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时,在规定的时间内根据答题的正误来确定加分或减分,并通过数码显示模块将成绩显示出来。计时至0时,停止计时,扬声器发出超时报警信号,以中止未回答完问题。当主持人给出倒计时停止信号时,扬声器停止鸣叫。若参赛者在规定时间内回答完为题,主持人可给出倒计时计数停止信号,以免扬声器鸣叫。主持人按下复位键,即RST为高电平有效状态,清除前一次的抢答组别,又可开始新的一轮的抢答。此抢答器的设计中采用自顶向下的设计思路,运用VHDL硬件描述语言对各个模块进行层次化、系统化的

4、描述,并且先设计一个顶层文件,再把各个模块连接起来。2.设计框图抢答按钮优先编码电路锁存器译码电路显示电路显示电路译码电路计分电路预制报警电路控制电路主持人控制开关主电路二、设计步骤和调试过程总体设计电路1、 模块设计和相应模块程序将该任务分成几个模块进行设计,分别为:抢答器鉴别模块、抢答器记分模块、译码模块、数选模块、报警模块,最后是撰写顶层文件。抢答器鉴别模块:在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是超前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余过滤抢答封锁的功能。其中有六个抢答信号s0、s1、s2、s3、s4、s

5、5;抢答使能信号s;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号tmp。抢答鉴别模块图rst states3.0clk2 tmps0s1s2s3s4s5 qdjbVHDL源程序library ieee;-抢答鉴别模块use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qdjb isport(rst,clk2:in std_logic; s0,s1,s2,s3,s4,s5:in std_logic; states:buffer std_logic_vector(5 down

6、to 0);tmp:out std_logic);end qdjb;architecture one of qdjb issignal st:std_logic_vector(5 downto 0);beginp1:process(s0,rst,s1,s2,s3,s4,s5,clk2) begin if rst=0 then tmp=0;st=0000; elsif clk2event and clk2=1 then if (s0=1 or st(0)=1)and not( st(1)=1 or st(2)=1 or st(3)=1 or st(4)=1 or st(5)=1 ) then s

7、t(0)=1; end if ; if (s1=1 or st(1)=1)and not( st(0)=1 or st(2)=1 or st(3)=1 or st(4)=1 or st(5)=1) then st(1)=1; end if ; if (s2=1 or st(2)=1)and not( st(0)=1 or st(1)=1 or st(3)=1 or st(4)=1 or st(5)=1) then st(2)=1; end if ; if (s3=1 or st(3)=1)and not( st(0)=1 or st(1)=1 or st(2)=1 or st(4)=1 or

8、st(5)=1) then st(3)=1;if (s4=1 or st(4)=1)and not( st(0)=1 or st(1)=1 or st(2)=1 or st(3)=1 or st(5)=1) then st(4)=1; end if ; if (s5=1 or st(5)=1)and not( st(0)=1 or st(1)=1 or st(2)=1 or st(3)=1 or st(5)=1) then st(5)=1; end if ;tmp=s0 or s1 or s2 or s3 or s4 or s5;end if ;end process p1;p2:proces

9、s(states(0),states(1),states(2),states(3) ,states(4),states(5) begin if (st=0000) then states=0000; elsif (st=0001) then states=0001;elsif (st=0010) then states=0010; elsif (st=0100) then states=0011;elsif (st=0100) then states=0100; elsif (st=0101) then states=0101; elsif (st=1000) then states=0110

10、; end if; end process p2;end one;数据选择模块:在这个模块中主要实现抢答过程中的数据输入功能,输入信号a3.0、b3.0、c3.0;计数输出信号s;数据输出信号y;计数脉冲clk2,实现a、b、c按脉冲轮流选通,在数码管上显示。a3.0 s1.0b3.0 y3.0c3.0clk2rst sjxz数据选择模块VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity sjxz is port (

11、a,b,c: in std_logic_vector(3 downto 0);clk2,rst: in std_logic; s: out std_logic_vector(1 downto 0); y: out std_logic_vector(3 downto 0) ); end sjxz;architecture body_chooser of sjxz is signal count: std_logic_vector (1 downto 0); begin s=count; process(clk2,rst) begin if(rst=0)then count=10)then cou

12、nt=00; else countyyynull; end case; end PROCESS; end body_chooser报警模块:在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内有人抢答,有效电平输入信号i;状态输出信号q;计数脉冲clk2。报警模块图CLK OIALARMVHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALARM ISPORT(CLK,I:IN STD_LOGIC; Q:OUT STD_LOGIC);END ALARM

13、;ARCHITECTURE BEHAVE OF ALARM IS SIGNAL WARN:STD_LOGIC; SIGNAL N:INTEGER RANGE 0 TO 20;BEGIN Q= WARN; PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF I=0 THEN WARN =0; ELSIF(I=1AND N=19)THEN WARN =NOT WARN; N=N+1; ELSE WARN DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=; END CASE; END PRO

14、CESS;END ARCHITECTURE ART;译码显示电路图顶层文件:在这个模块中是对前面模块的综合编写的顶层文件。VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity qiangdaqi is port(clk,clk2,s,s0,s1,s2,s3,s4,s5,stop,rst:in std_logic; n,k,q_out:out std_logic; m:out std_logic_vector(1 dow

15、nto 0); a,b,c,d,e,f,g:out std_logic);end qiangdaqi;architecture bhv of qiangdaqi iscomponent qdjb is port(clk2,rst:in std_logic; s0,s1,s2,s3,s4,s5:in std_logic; tmp:out std_logic; states:out std_logic_vector(5 downto 0);end component;component js is port(clk,rst,s,stop:in std_logic; warn:out std_log

16、ic; ta,tb:buffer std_logic_vector(5 downto 0);end component;component sjxz is port(clk2,rst:in std_logic; s:out std_logic_vector(1 downto 0); a,b,c:in std_logic_vector(3 downto 0); y:out std_logic_vector(3 downto 0);end component;component ymq is port(ain4: in std_logic_vector (3 downto 0); dout7: o

17、ut std_logic_vector (6 downto 0);end component;component alarm is port(clk,i:in std_logic; q:out std_logic);end component;signal states_out,ta_out,tb_out,y_out:std_logic_vector(3 downto 0);signal ledout:std_logic_vector(6 downto 0);signal w:std_logic;begina=ledout(6);b=ledout(5);c=ledout(4);d=ledout

18、(3);e=ledout(2);f=ledout(1);gk,states=states_out);u2:js port map(clk,rst,s,stop,warn=n,ta=ta_out,tb=tb_out);u3:sjxz port map(clk2=clk2,rst=rst,s=m,a=states_out,b=ta_out,c=tb_out,y=y_out);u4:ymq port map(ain4=y_out,DOUT7=ledout);u5:alarm port map(clk2,s,q_out);end bhv;2、 仿真及仿真结果分析抢答鉴别模块仿真图数据选择模块仿真图报警

19、模块仿真图译码模块仿真图顶层文件仿真图CLK接高电平,s0,s1,s2,sl3,s4,s5六个选手接低电平,鉴别器的输出接指示灯,译码器的输出接LED数码管,计分器的输出接显示译码器。当主持人按下使能端时,六个选手同时抢答。如图所示,若s0抢答,即为高电平时,s0灯亮,若回答正确,对其加分,即当时钟出现上升沿时就进行加一或者减一的操作。3、 实验调试结果按下rst键清零,按下s键,观察数码管是否开始倒计时,扬声器是否发出报警声,按下s0,观察数码管是否显示1和抢答的时间,再按s1,s2,s3,s4.s5均不改变显示,按下rst键,观察是否清零,再按s键,不按别的,直到计时时间到,观察是否显示0

20、0,扬声器是否发出报警第一个按下键的小组,抢答信号判定电路LOCK通过缓冲输出信号的反馈将本参赛组抢先按下按键的信号锁存,并且以异步清零的方式将其他参赛组的锁存器清零,组别显示、计时和计分会保存到主持人对系统进行清零操作时为止。当INI=1时系统复位,使组别显示信号G=0000,各组的指示灯信号S0=0,S1=0,S2=0,S3=0,S4=0,S5=0;当INI=0,即低电平有效,使其进入抢答鉴别状态,到CLK的上升沿到来时,以A组抢答成功为例,当输入信号为A=1,B=0,C=0,D=0,输出信号G=1000,A1=1,即为鉴别出A组抢答成功,同时屏蔽其他组的输入信号,以免发生错误。三、结论及

21、心得体会这次EDA课程设计了一个星期,在这期间学到了很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。总的来说,这次设计的数字抢答器还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁