您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > eda数字式竞赛抢答器3
《数字逻辑系统设计实习报告》题目:数字式竞赛抢答器学院:电子工程信息技术班级:B0911姓名:孙全宝学号:38主要内容:设计一个可容纳6组参赛的数字式抢答器,当第一个人按下抢答按钮时,其他组的按钮不起作用。当主持人按下“复位”按钮,所有组的按键才可用。基本要求:1、设计一个可容纳6组参赛的数字式抢答器,每组设一个按钮,供抢答使用。2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。3、设置一个主持人“复位”按钮。4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2-3秒的音响。5、设置一个计分电路,每组开始预置100分,由主持人记分,答对一次加10分,答错一次减10分。一、总体设计思想1.基本原理本设计为六路智能抢答器,所以这种抢答器要求有六路不同组别的抢答输入信号,并能识别最先抢答的信号,直观地通过数显和蜂鸣等方式显示出组别;对回答问题所用的时间进行计时、显示、超时报警、预置答题时间,同时该系统还应有复位、倒计时启动功能。抢答过程:主持人按下系统复位键(RST),系统进入抢答状态,计时模块和计分模块输出初始信号给数码显示模块并显示出初始值。当某参赛组抢先将抢答键按下时,系统将其余三路抢答信号封锁,同时扬声器发出声音提示,组别显示模块送出信号给数码显示模块,从而显示出该抢答成功组台号,并一直保持到下一轮主持人将系统清零为止。主持人对抢答结果进行确认,随后,计时模块送出倒计时计数允许信号,开始回答问题,计时显示器则从初始值开始以计时,在规定的时间内根据答题的正误来确定加分或减分,并通过数码显示模块将成绩显示出来。计时至0时,停止计时,扬声器发出超时报警信号,以中止未回答完问题。当主持人给出倒计时停止信号时,扬声器停止鸣叫。若参赛者在规定时间内回答完为题,主持人可给出倒计时计数停止信号,以免扬声器鸣叫。主持人按下复位键,即RST为高电平有效状态,清除前一次的抢答组别,又可开始新的一轮的抢答。此抢答器的设计中采用自顶向下的设计思路,运用VHDL硬件描述语言对各个模块进行层次化、系统化的描述,并且先设计一个顶层文件,再把各个模块连接起来。2.设计框图主电路二、设计步骤和调试过程总体设计电路抢答按钮优先编码电路锁存器译码电路显示电路显示电路译码电路计分电路预制报警电路控制电路主持人控制开关1、模块设计和相应模块程序将该任务分成几个模块进行设计,分别为:抢答器鉴别模块、抢答器记分模块、译码模块、数选模块、报警模块,最后是撰写顶层文件。抢答器鉴别模块:在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是超前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余过滤抢答封锁的功能。其中有六个抢答信号s0、s1、s2、s3、s4、s5;抢答使能信号s;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号tmp。抢答鉴别模块图VHDL源程序libraryieee;--抢答鉴别模块useieee.std_logic_1164.all;rststates[3..0]clk2tmps0s1s2s3s4s5qdjbuseieee.std_logic_unsigned.all;entityqdjbisport(rst,clk2:instd_logic;s0,s1,s2,s3,s4,s5:instd_logic;states:bufferstd_logic_vector(5downto0);tmp:outstd_logic);endqdjb;architectureoneofqdjbissignalst:std_logic_vector(5downto0);beginp1:process(s0,rst,s1,s2,s3,s4,s5,clk2)beginifrst='0'thentmp='0';st=0000;elsifclk2'eventandclk2='1'thenif(s0='1'orst(0)='1')andnot(st(1)='1'orst(2)='1'orst(3)='1'orst(4)='1'orst(5)='1')thenst(0)='1';endif;if(s1='1'orst(1)='1')andnot(st(0)='1'orst(2)='1'orst(3)='1'orst(4)='1'orst(5)='1')thenst(1)='1';endif;if(s2='1'orst(2)='1')andnot(st(0)='1'orst(1)='1'orst(3)='1'orst(4)='1'orst(5)='1')thenst(2)='1';endif;if(s3='1'orst(3)='1')andnot(st(0)='1'orst(1)='1'orst(2)='1'orst(4)='1'orst(5)='1')thenst(3)='1';if(s4='1'orst(4)='1')andnot(st(0)='1'orst(1)='1'orst(2)='1'orst(3)='1'orst(5)='1')thenst(4)='1';endif;if(s5='1'orst(5)='1')andnot(st(0)='1'orst(1)='1'orst(2)='1'orst(3)='1'orst(5)='1')thenst(5)='1';endif;tmp=s0ors1ors2ors3ors4ors5;endif;endprocessp1;p2:process(states(0),states(1),states(2),states(3),states(4),states(5))beginif(st=0000)thenstates=0000;elsif(st=0001)thenstates=0001;elsif(st=0010)thenstates=0010;elsif(st=0100)thenstates=0011;elsif(st=0100)thenstates=0100;elsif(st=0101)thenstates=0101;elsif(st=1000)thenstates=0110;endif;endprocessp2;endone;数据选择模块:在这个模块中主要实现抢答过程中的数据输入功能,输入信号a[3..0]、b[3..0]、c[3..0];计数输出信号s;数据输出信号y;计数脉冲clk2,实现a、b、c按脉冲轮流选通,在数码管上显示。数据选择模块VHDL源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitysjxzisport(a,b,c:instd_logic_vector(3downto0);clk2,rst:instd_logic;s:outstd_logic_vector(1downto0);y:outstd_logic_vector(3downto0));endsjxz;architecturebody_chooserofsjxzissignalcount:std_logic_vector(1downto0);begins=count;process(clk2,rst)beginif(rst='0')thencount=00;elsif(clk2'eventandclk2='1')thenif(count=10)thencount=00;elsecount=count+1;endif;endif;a[3..0]s[1..0]b[3..0]y[3..0]c[3..0]clk2rstsjxzcasecountiswhen00=y=a;when01=y=b;when10=y=c;whenothers=null;endcase;endPROCESS;endbody_chooser报警模块:在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内有人抢答,有效电平输入信号i;状态输出信号q;计数脉冲clk2。报警模块图VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYALARMISPORT(CLK,I:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDALARM;ARCHITECTUREBEHAVEOFALARMISSIGNALWARN:STD_LOGIC;SIGNALN:INTEGERRANGE0TO20;BEGINQ=WARN;PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENIFI='0'THENWARN='0';ELSIF(I='1'ANDN=19)THENWARN=NOTWARN;N=N+1;ELSEWARN='0';CLKOIALARMENDIF;ENDIF;ENDPROCESS;ENDBEHAVE;译码模块:在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。译码模块图VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYYMQISPORT(AIN4:INSTD_LOGIC_VECTOR(3DOWNTO0);DOUT7:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDYMQ;ARCHITECTUREARTOFYMQISBEGINPROCESS(AIN4)BEGINCASEAIN4ISWHEN0000=DOUT7=1111110;--0WHEN0001=DOUT7=0110000;--1WHEN0010=DOUT7=1101101;--2WHEN0011=DOUT7=1111001;--3WHEN0100=DOUT7=0110011;--4WHEN0101=DOUT7=1011011;--5WHEN0110=DOUT7=1011111;--6WHEN0111=DOUT7=1110000;--7WHEN1000=DOUT7=1111111;--8WHEN1001=DOUT7=1111011;--9WHENOTHERS=DOUT7=0000000;ENDCASE;ENDPROCESS;ENDARCHITECTUREART;AJN4[3..0]DOUT7[6..0]YMQ译码显示电路图顶层文件:在这个模块中是对前面模块的综合编写的顶层文件。VHDL源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityqiangdaqiisport(clk,clk2,s,s0,s1,s2,s3,s4,s5,stop,rst:instd_logic;n,k,q_out:outstd_logic;m:outstd_logic_vector(1downto0);a,b,c,d,e,f,g:outstd_logic);endqiangdaqi;architecturebhvofqiangdaqiiscomponentqdjbisport(clk2,rst:instd_logic;s0,s1,s2,s3,s4,s5:instd_logic;tmp:outstd_logic;states:outstd_logic_vector(5downto0));endcomponent;componentjsisport(clk,rst,s,stop:instd
本文标题:eda数字式竞赛抢答器3
链接地址:https://www.777doc.com/doc-5831441 .html