1、(1) 抢答鉴别锁存及显示模块根据设计要求,首先要有复位开关 rst,主持人开关 start,四人抢答按钮a、b、c、d,并由一个 LED数码显示管显示选手组别,为了实现当有选手抢答后锁存电路使其他选手无法抢答的功能,设置两个锁存信号 tmp1、tmp2。按下复位开关(rst=1),tmp1、tmp2=0,若主持人开关未开启(start=0) ,此时有人抢答,则 tmp2=1,关闭抢答电路,并由数码显示管输出抢答组别,同时 light2红灯报警;若主持人按下开关后(start=1) ,此时有人抢答,则 tmp1=1,关闭抢答电路,并由数码显示管输出抢答组别,light1 绿灯亮。(2) 数码管
2、倒计时,暂停及报警模块设计由两个数码管显示 20秒抢答倒计时,在程序中,由 8位二进制矢量数 count控制,高四位表示十位,低四位表示个位,由给定的时钟信号 clk高电平触发。按下复位开关(rst=1) ,数码管显示 20(count=“00100000” ) ,主持人按下开关后(start=1) ,开始 20秒倒计时,当低四位为“0000”时,则赋值为 9(“1001” ) ,同时高四位表示的十位数自减 1,当低四位不为 0时则自减 1,由此实现了 20秒倒计时。为实现有人抢答则暂停计时以及 20秒时间到停止计时并报警的功能,设置暂停锁存信号 tmp3,按下复位开关(rst=1) ,tmp
3、3=0,主持人按下开关后(start=1) ,开始 20秒倒计时,当有人抢答,则 tmp3=1,暂停倒计时,若一直无人抢答,当 20秒倒计时结束(count=“00000000” )时,则 tmp3=1,停止倒计时并由 light2红灯报警。源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qdq isport(rst,clk,start,a,b,c,d:in std_logic;show,count1,count0:out std_logic_vector(3 downto 0
4、);light1,light2:out std_logic);end;architecture one of qdq issignal show1:std_logic_vector(3 downto 0);signal count3:std_logic_vector(3 downto 0);signal count2:std_logic_vector(3 downto 0);signal tmp1,tmp2,tmp3:std_logic;beginp1:process(rst,start,tmp1,tmp2)beginlight1=0;if rst=1 then tmp1=0;tmp2=0;s
5、how1=“0000“;elsif start=1 thenif tmp1=0 thenif a=1 then tmp1=1;show1=“0001“;light1=1;end if;if b=1 then tmp1=1;show1=“0010“;light1=1;end if;if c=1 then tmp1=1;show1=“0011“; light1=1;end if;if d=1 then tmp1=1;show1=“0100“; light1=1;end if;end if;elsif start=0 thenif tmp2=0 thenif a=1 then tmp2=1;show
6、1=“0001“; end if;if b=1 then tmp2=1;show1=“0010“; end if;if c=1 then tmp2=1;show1=“0011“; end if;if d=1 then tmp2=1;show1=“0100“; end if;end if;end if;end process;p2:process(rst,clk,tmp1,tmp3)beginif clkevent and clk=1 thenif rst=1 then count3=“0010“;count2=“0000“;tmp3=0;elsif start=1 and tmp1=0 and tmp3=0 thenif count3=“0000“ and count2=“0000“ then tmp3=1;elsif count2=“0000“ then count2=“1001“;count3=count3-1;else count2=count2-1;end if;end if;end if;end process;count1=count3;count0=count2;show=show1;light2=(tmp2 or tmp3);end;