资源描述:
《四人抢答器设计报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、四人抢答器设计报告一、设计任务及要求1、设计用于竞赛的四人抢答器(1)有多路抢答器,台数为四;(2)具有抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警;(3)能显示超前抢答台号并显示犯规报警;2、系统复位后进入抢答状态,当有一路抢答键按下时,该路抢答信号将其余各路抢答封锁,同时铃声响起,直至该路按键放松,显示牌显示该路抢答台号;3、用VHDL语言设计符合上述功能要求的四人抢答器,并用层次设计方法设计该电路;4、完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。二、四人抢
2、答器框图及设计说明系统复位后,反馈信号为一个高电平,K1、K2、K3、K4输入有效。当抢答开始后,在第一位按键后,保持电路低电平,同时送显示电路,让其保存按键的台号并输出,同时反馈给抢答台,使所有抢答台输入无效,计时电路停止;当在规定的时间内无人抢答时,倒计时电路输出超时信号;当主持人开始说话未说完有人抢先按键时,显示犯规信号。当选手回答正确时加分,回答错误时减分。由主持人控制加减分数。三、设计思路:根据设计框图和设计要求,本次实验可以采用模块化设计方法来实现智力竞赛四人抢答器。将抢答器划分为抢
3、答鉴别保持模块,倒计时模块,记分模块和判断显示模块。再利用元件例化语句将这四个模块组成总的抢答器的设计电路。选用模式五进行程序的下载。四、VHDL语言设计与分析1、鉴别模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjianbieisport(nu1,nu2,nu3,nu4:instd_logic;clk,en,rst:instd_logic;warn:outstd_logic;back:
4、bufferstd_logic;s:outstd_logic_vector(3downto0));endjianbie;architecturejianbiebehofjianbieissignalnum,warnd:std_logic;signalcnt:std_logic_vector(2downto0);beginnum<=nu1ornu2ornu3ornu4;p1:process(rst,nu1,nu2,nu3,nu4,back)--判断抢答信号beginifrst='1'thenbac
5、k<='1';s<="0000";elsifback='1'thenifnu1='1'thens<="0001";back<='0';--一号台抢答,输出S为1elsifnu2='1'thens<="0010";back<='0';--二号台抢答,输出S为2elsifnu3='1'thens<="0011";back<='0';--三号台抢答,输出S为3elsifnu4='1'thens<="0100";back<='0';--四号台抢答,输出S为4elseback<='1';s<="0000"
6、;--无人抢答,输出S为0endif;endif;endprocessp1;p2:process(clk,en,back,rst,cnt)beginifrst='1'thencnt<="000";warnd<='0';elsifclk'eventandclk='1'thenifen='0'andback='0'thenifcnt<"111"thenwarnd<=notwarnd;cnt<=cnt+1;elsewarnd<='0';endif;endif;endif;endprocessp2;wa
7、rn<=warnd;endjianbiebeh;鉴别保持模块由两个进程组成,进程一主要用于鉴别强大信号,进程二用于鉴别是否为超前抢答,若是超前抢答,则输出报警信号。其中鉴别保持模块的波形如下:如图所示,抢答开始前需要一个RST信号,其由主持人控制。当RST为高电平时则抢答开始。输出S显示为抢答台号,当主持人还没有复位就有选手抢答,则输出一个WARN的高电平信号。2、计时模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsig
8、ned.all;entityjishibaojingisport(clk,rst,agree,stop:instd_logic;warn:bufferstd_logic;cone:bufferstd_logic_vector(3downto0);cten:bufferstd_logic_vector(3downto0));endjishibaojing;architecturejishibehofjishibaojingissignalcc:std_logic;beginp1:process(w