1、四人抢答器设计 一、设计任务及要求:(1)设计用于竞赛抢答的四人抢答器;有多路抢答,抢答台数为 8;具有抢答开始后 20 秒倒计时,20 秒倒计时后无人抢答显示超时,并报警;能显示超前抢答台号并显示犯规警报;(2) 系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声想起,直至该路按键松开,显示牌显示该路抢答台号;(3) 用 VHDL 语言设计符合上述功能要求的四人抢答器,并用层次化设计方法设计该电路;(4) 完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。二、设计思路设计制作一个竞赛抢答器,每组受控于一个抢答开关,分别为S1, S2, S3,
2、 S4,低电平表示抢答有效;设置主持人控制键K,用于控制整个系统清0 和抢答有效控制,按下复位键时, K=0,系统清零;抬起复位键时,K=1,抢答开始;系统具有第一抢答信号鉴别和锁存功能。在主持人将系统复位并使抢答有效开始后,第一抢答者按下抢答按钮,对应的输入引脚接低电位0,电路应记忆下第一抢答者的组别,并封锁其他各组的按钮,即其他任何一组按键都不会使电路响应;系统以两种方式指示第一抢答者:其一是通过译码程序显示其组别号;其二是在第一抢答者产生时,蜂鸣器警示;设置违规电路单元,当抢答者在主持人按下复位清零按钮之前就已经按下抢答按钮时,则给出违规信号为高电平。对应组别的红色信号灯亮;当20秒倒计
3、时后无人抢答显示超时,并报警。系统设计框图如图1所示。一一一一一一一一一一一一一 一一一一一一一一一一一一一一一一一一一一 一一一一一一S1S2S3S4K图 1 整体设计框图三、VHDL 程序实现1、正常抢答程序及仿真此模块包括正常抢答第一信号鉴别和显示抢答台号,并发生声音提示。其中S1,S2,S3,S4 为抢答按钮,当对应的按钮信号为 0 时表示有抢答信号;K 为主持人按钮,按下复位键 K 时, K=0,系统清零;抬起复位键时,K=1,抢答开始;G 为报警信号。其 VHDL 源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee. st
4、d_logic_arith.all;use ieee. std_logic_unsigned.all;-entity qiangda isport( S1,S2,S3,S4 : in std_logic; -输入:表示 4 个人,为 0 表示有抢答K : in std_logic; -主持人抢答开始键G : out std_logic; -报警信号ledag : out std_logic_vector (6 downto 0); Dout : out std_logic_vector(3 downto 0) ); -抢答结果显示end qiangda;-architecture behave
5、 of qiangda issignal Enable_Flag : std_logic;-允许抢答控制变量,为 1 表示允许抢答signal S : std_logic_vector(3 downto 0);signal D : std_logic_vector(3 downto 0);beginprocess(S1,S2,S3,S4,K) -允许抢答控制beginSledagledagledagledagledagledagYYYY=“00“;end case;if(K=0) thenif(S1=0) thenR1=0;elsif(S2=0) thenR2=0;elsif(S3=0) th
6、enR3=0;elsif(S4=0) thenR4=0;end if;end if;end process; END a;通过 VHDL 程序可生成其对应的框图如图 5 所示:图 5 犯规部分框图同样在 MAX+PLUS环境下可得到其对应的仿真分析图如图 6 所示。从仿真分析可看出在为高电平前,S1 按钮有超前抢答低电平出现,故 Y=11 表示有超前抢答产生,同时 R1 为低电平,对应 S1 选手的红灯亮,指示其违规抢答。图 6 犯规模块仿真图四、总结由以上描述及仿真结果可知,本次抢答器的设计在理论上基本上满足了设计任务的要求。通过这次课程设计的实践,弥补了平时仅仅学习理论知识的不足,在实践中发现了许多问题,这些问题的解决,加深了对所学知识的理解,收获颇丰。在 FPGA 试验箱上下载运行了正常抢答部分程序,能够正常抢答和显示报警功能。此部分的引脚分配图如图 7 所示:由于是我的第一次系统设计电路,虽然参照了一些电路程序,毕竟掌握水平有限,在设计成的交通灯中可能存在着一些问题和不足,希望老师给予指正。图 7 引脚分配图