EDA课程实践——数字式竞赛抢答器基本要求:(1)设计一个可容纳四组参赛的数字式抢答器,每组设一个按钮供抢答使用。抢答器具有第一信号鉴别和锁存功能,使除第一个抢答者外的按钮不起作用;(2)设置一个主持人“复位”按钮,主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,用指示灯显示抢答组别,扬声器发出2~3秒音响。(3)设置犯规电路,对提前抢答和超时答题(例如3分钟)的组别鸣笛示警,并由组别显示电路显示出犯规组别。(4)设置一个计分电路,每组开始预置10分,由主持人记分,答对一次加1分,答错一次减1分。一、分析问题由上述基本要求可知,首先系统得有4个抢答按钮A、B、C和D。其次要有两个清零端:CLR1和CLR2,一个清除抢答声音,另一个清除抢答组别。而且还得有抢答计时模块和答题计时模块,,给答完题的选手进行记分。系统结构图如下所示:由上述分析可得,整个系统得有抢答模块、抢答计时模块、答题计时模块。系统工作原理如下:首先主持人按下EN1,此时开始对抢答进行计时。四位选手开始抢答,如果有抢答,那么发出警报声音,并且显示相应的抢答组别,另外送出停止抢答计时信号,此时应该关掉抢答计时电路。打开答题计时使能端,对答题进行计时,时间到时,会发出警报声。如果没人抢答,那么当抢答计时电路计时时间到时,会发出报警声音。当有人抢答后,主持人首先应该按下CLR2,清除抢答声音,答题完毕后,再按下CLR1,清除抢答组别,准备下一轮抢答。二、确定算法通过上述分析可知,抢答的关键在于锁存,即怎么样才可以在第一抢答信号送过来后,马上将其锁存,使其余的抢答信号再也不能起到任何的作用。也就是说,抢答组别上显示的应该是第一抢答信号。因此,一旦有抢答信号出现时,那么应该马上不执行任何操作,直接结束。因为锁存就是保存原来的状态,让这个状态不要改变,所以就不能有任何的操作。而对于计时,由于采用倒计时,所以当个位减到0时,十位减1,个位变成9,然后个位再减1,到0时,再重复上述变化。三、,states抢答组别sound抢答后声音报警qdxh送至抢答计时模块,有抢答,停止倒计时CLR1清除抢答组别statesCLR2清除sound、qdxh。,LL表示倒计时个位,HH表示倒计时十位,sound表示倒计时时间到时发出警报声音。四、:系统整体时序仿真图:抢答系统整体电路图中各个模块源程序:(QD)LIBRARYIEEE;;;ENTITYQDISPORT(clk:inbit;CLR1,clr2:INSTD_LOGIC;A,B,C,D:INSTD_LOGIC;--4个组sound:outbit;--qdxh:OUTSTD_LOGIC;states:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYQD;t8:std_logic_vector(3DOWNTO0);t10:std_logic;BEGINPROCESS(CLR1,clr2,A,B,C,t10)BEGINIFCLR1='1't8<="0000";elsifclr2='1't9<='0';cnt10<='0';t8/="0000"thennull;elsifA='1't8<="0001";cnt10<='1';cnt9<='1';elsifB='1't8<="0010";cnt10<='1';cnt9<='1';elsifC='1't8<="0011";cnt10<='1';cnt9<='1';elsifD='1't8<="0100";cnt10<='1';cnt9<='1';--sound<=cnt9;endif;--endif;endprocess;t9)t9='1'thensound<=clk;elsesound<='0';endif;endprocess;states<=cnt8;--qdxh<=cnt10;ENDARCHITECTUREone;(qdjs)libraryieee;;;entityqdjsisport(clk1:inbit;clk,en:instd_logic;--stop:instd_logic;H,L:outstd_logic_vector(3downto0);sound:outbit);endqdjs;architectureoneofqdj
数字式竞赛抢答器 来自淘豆网m.daumloan.com转载请标明出处.