VHDL语言设计四人抢答器(三种设计方案)

来源:电子发烧友整理 作者:2018年01月29日 15:25

本文为大家带来三种四人抢答器的VHDL语言设计方案介绍。

VHDL语言设计四人抢答器方案一

设计要求

l、设计用于竞赛的四人抢答器,功能如下:

(1)有多路抢答器,台数为四,能显示抢答台号;

(2)具有抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警;

(3)能显示超前抢答台号并显示犯规警报;

2、系统复位后进入抢答状态,当有一路抢答键按下时,该路抢答信号将其余各路抢答封锁,同时铃声响,直至该路按键松开,显示牌显示该路抢答台号。

3、用VHDL语言设计符合上述功能要求的四人抢答器,并用层次设计方法设计该电路。

电路工作原理

简易逻辑数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。

电路主要由脉冲产生电路、锁存电路、编码及译码显示电路、倒计时电路和音响产生电路组成。当有选手抢答时,首先锁存,阻止其他选手抢答,然后编码,再经译码器将数字显示在显示器上同时产生音响。主持人宣布开始抢答时,倒计时电路启动由20计到0,如有选手抢答,倒计时停止,如20秒后无人抢答,则会显示报警。

源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

enTItyqdqis

port(clr,clk,clk0,en,a,b,c,d:instd_logic;

dps:outstd_logic_vector(3downto0);

count:outstd_logic_vector(7downto0);

speaker:outstd_logic);

end;

architectureoneofqdqis

signaldps1:std_logic_vector(3downto0);

signalcount1:std_logic_vector(7downto0);

signaltmp1,tmp2,tmp3:std_logic;

begin

p1:process(clr,en,tmp1,tmp2)

begin

ifclr=‘1’then

tmp1<=‘0’;tmp2<=‘0’;

dps1<=“0000”;

elsifen=‘1’then

iftmp1=‘0’then

ifa=‘1’then

tmp1<=‘1’;

dps1<=“0001”;

endif;

ifb=‘1’thentmp1<=‘1’;

dps1<=“0010”;

endif;

ifc=‘1’thentmp1<=‘1’;

dps1<=“0011”;

endif;

ifd=‘1’thentmp1<=‘1’;

dps1<=“0100”;

endif;

endif;

elsifen=‘0’then

iftmp2=‘0’then

ifa=‘1’then

tmp2<=‘1’;

dps1<=“0001”;

endif;

ifb=‘1’then

tmp2<=‘1’;

dps1<=“0010”;

endif;

ifc=‘1’then

tmp2<=‘1’;

dps1<=“0011”;

endif;

ifd=‘1’then

tmp2<=‘1’;

dps1<=“0100”;

endif;

endif;

endif;

endprocess;

p2:process(clr,clk,tmp1,tmp3)

begin

ifclk‘eventandclk=’1‘then

ifclr=’1‘thencount1<=“00100000”;

tmp3<=’0‘;

elsifen=’1‘andtmp1=’0‘andtmp3=’0‘then

ifcount1=“00000000”then

tmp3<=’1‘;

elsifcount1(3downto0)=“0000”then

count1(3downto0)<=“1001”;

count1(7downto4)<=count1(7downto4)-’1‘;

elsecount1(3downto0)<=count1(3downto0)-’1‘;

endif;

endif;

endif;

endprocess;

count<=count1;

dps<=dps1;

speaker<=((tmp3oraorborcord)andclk0);

end;

仿真波形

(一)无人抢答的仿真波形

VHDL语言设计四人抢答器(三种设计方案)

由上图可知,当en=0时此时主持人并没有提出开始抢答的信号.en=1,开始抢答的时候20秒倒计时,时间到而无人抢答。(count=“00000000”),则speaker报警,按下清零开关(clr=1),重新开始20秒倒计时进行下一轮

(二)有人抢答的仿真波形

VHDL语言设计四人抢答器(三种设计方案)

由上图可知,clr=1,系统进入初始状态,即count=“00100000”,dps=“0000”;en=0时,此时主持人并没有提出开始抢答的信号是不允许抢答的,若有人抢答(b=1),则speaker报警,且数码管显示组别(dps=“0010”)显示出犯规的组别;en=1时,开始正常抢答而且count开始20秒倒计时,在15秒时(count=“00010101”)有人抢答(a=1),倒计时暂停同时锁存器工作将其他组别的信号锁存后面的信号将视为无效,数码管显示组别(dps=“0001”),且speaker报警。

123下一页全文

本文导航

  • 第 1 页:VHDL语言设计四人抢答器(三种设计方案)
  • 第 2 页:方案二
  • 第 3 页:方案三

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
声明:电子发烧友网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:
发表评论

elecfans网友

分享到:

用户评论(0