FPGA七路抢答器

主持人按下复位键进入抢答状态,某人抢答时,其他路封锁,译码显示模块送出信号给数码显示模块,从而显示出抢答成功组好,并一直保持到主持人下一次抢答开始。

顶层电路图

逻辑电路图: 

引脚分配:

部分代码
entity decide7 is
	port(key:in std_logic_vector(6 downto 0);   %七名选手
		  sn:in std_logic;                       %允许抢答位
		  fw:in std_logic;                       %复位键
		  clk:in std_logic;                      %时钟信号
		  seg:out std_logic_vector(7 downto 0);  %七段数码管
		  wh:out std_logic_vector(6 downto 0);   %七盏小灯泡
		  led:out std_logic	);               %允许抢答标志灯
end decide7;
architecture a of decide7 is
signal sel1 :std_logic_vector(2 downto 0);
-----------------------------------------------------------------
begin
	process(key,clk)
	variable n:integer  range 0 to 10;
	variable x:std_logic;      %变量x充当锁存的功能
	begin
当变量x=0时,并且使能键为低电平(被摁下)时,将使能标志位点亮,即置led=1,x=1;
当变量x=1时,根据s2~s8不同的抢答情况会进入不同的case语句。首先根据抢答情况,将变量n赋值为抢答组号,并将x置为0、led置为0。并且点亮对应的灯泡。
该代码中,x=0并且sn=0时,会将led和x置为1;此时可以抢答,一旦进行了抢答的动作之后,又会将x置为0,但此时sn不等于0,即不允许抢答,此时再摁其他的键不会有下一步的动作。达到了锁存的功能。
if CLK='1'AND CLK'EVENT then
		 if x='0'then
		  if sn='0'then led<='1'; x:='1';
		  end if;
		 end if;
		 if x='1' then
			case key is
			 	when "1111110" =>n:=1;x:='0';led<='0';wh<="0000001";
				when "1111101" =>n:=2;x:='0';led<='0';wh<="0000010";
				when "1111011" =>n:=3;x:='0';led<='0';wh<="0000100";
				when "1110111" =>n:=4;x:='0';led<='0';wh<="0001000";
				when "1101111" =>n:=5;x:='0';led<='0';wh<="0010000";
				when "1011111" =>n:=6;x:='0';led<='0';wh<="0100000";
				when "0111111" =>n:=7;x:='0';led<='0';wh<="1000000";
				when others => wh<="0000000";
			end case;
		 end if;
		 
---------------------------------------------------------------
复位键(s9)被摁下,会将led(使能标志位)、x、n、灯泡都置为0。
		  if fw='0'then wh<="0000000";
		     n:=0;led<='0';x:='0';
		  end if;
		 end if;
变量n代表了要在数码管上显示的数字,下列case为输入字形码在七段数码管上显现。
			   case n is
				   when 1 =>seg<="00000110";
				   when 2 =>seg<="01011011";
					when 3 =>seg<="01001111";
					when 4 =>seg<="01100110";
					when 5 =>seg<="01101101";
					when 6 =>seg<="01111101";
					when 7 =>seg<="00000111";
					when others => seg<="00000000";
				end case;
			
	end process;
end a;			

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
智力竞赛抢答计时的设计 一、 课题说明在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答,通过数显、灯光及音响等多种手段指示出第一抢答者。同时,还可以设置计时、计分、犯规奖惩计录等多种功能。 二、 设计要求 1、设计一个4组参加的智力竞赛抢答计时。每组设置一个抢答按钮供抢答者使用。 2、电具有第一抢答信号的鉴别和锁存功能。在主持人将系统复位并发出抢答指令后,当有某一组参赛者首先按下抢答开关时,数码管显示相应组别并伴有声响。此时,电应具备自锁功能,使别组的抢答开关不起作用。 3、电具有回答问题时间控制功能。要求回答问题时间小于等于100s(显示为0~99),时间显示采用倒计时方式。当达到限定时间时,发出声响以示报警。 三、设计思根据设计要求可知,系统的输入信号有:各组的抢答按钮d1、d2、d3、d4,主持人按钮host,系统时钟信号clk,数码管的片选信号;系统的输出信号有:首先按下按钮的组别信号sel, 声音信号sound,倒计时显示信号q[6..0]。为实现设计要求,电抢答鉴别模块、锁存模块、转换模块、倒计时模块、片选信号产生模块、3选1模块、显示译码模块和一些门电组成。总体框图如图16-1所示。 四、设计文件 1、顶层原理图智力竞赛抢答计时的顶层原理图如图16-1所示图16-1 智力抢答的原理图 2、底层源程序 (1)抢答鉴别模块FENG的VHDL源程序抢答鉴别模块FENG如图16-2所示,该模块在第一个选手按下按键后,输出高电平给锁存,锁存当时的按键状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值