VHDL四人抢答器.docx

上传人:b****1 文档编号:11163801 上传时间:2023-05-29 格式:DOCX 页数:10 大小:373.93KB
下载 相关 举报
VHDL四人抢答器.docx_第1页
第1页 / 共10页
VHDL四人抢答器.docx_第2页
第2页 / 共10页
VHDL四人抢答器.docx_第3页
第3页 / 共10页
VHDL四人抢答器.docx_第4页
第4页 / 共10页
VHDL四人抢答器.docx_第5页
第5页 / 共10页
VHDL四人抢答器.docx_第6页
第6页 / 共10页
VHDL四人抢答器.docx_第7页
第7页 / 共10页
VHDL四人抢答器.docx_第8页
第8页 / 共10页
VHDL四人抢答器.docx_第9页
第9页 / 共10页
VHDL四人抢答器.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VHDL四人抢答器.docx

《VHDL四人抢答器.docx》由会员分享,可在线阅读,更多相关《VHDL四人抢答器.docx(10页珍藏版)》请在冰点文库上搜索。

VHDL四人抢答器.docx

VHDL四人抢答器

四人抢答器设计

一、设计任务及要求:

(1)设计用于竞赛抢答的四人抢答器;

①有多路抢答,抢答台数为8;

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

③能显示超前抢答台号并显示犯规警报;

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

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

(4)完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。

二、设计思路

设计制作一个竞赛抢答器,每组受控于一个抢答开关,分别为S1,S2,S3,S4,低电平表示抢答有效;设置主持人控制键K,用于控制整个系统清0和抢答有效控制,按下复位键时,K=0,系统清零;抬起复位键时,K=1,抢答开始;系统具有第一抢答信号鉴别和锁存功能。

在主持人将系统复位并使抢答有效开始后,第一抢答者按下抢答按钮,对应的输入引脚接低电位0,电路应记忆下第一抢答者的组别,并封锁其他各组的按钮,即其他任何一组按键都不会使电路响应;系统以两种方式指示第一抢答者:

其一是通过译码程序显示其组别号;其二是在第一抢答者产生时,蜂鸣器警示;设置违规电路单元,当抢答者在主持人按下复位清零按钮之前就已经按下抢答按钮时,则给出违规信号为高电平。

对应组别的红色信号灯亮;当20秒倒计时后无人抢答显示超时,并报警。

系统设计框图如图1所示。

 

图1整体设计框图

三、VHDL程序实现

1、正常抢答程序及仿真

此模块包括正常抢答第一信号鉴别和显示抢答台号,并发生声音提示。

其中S1,S2,S3,S4为抢答按钮,当对应的按钮信号为0时表示有抢答信号;K为主持人按钮,按下复位键K时,K=0,系统清零;抬起复位键时,K=1,抢答开始;G为报警信号。

其VHDL源程序如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

--------------------------------------------------------------------

entityqiangdais

port(S1,S2,S3,S4:

instd_logic;--输入:

表示4个人,为0表示有抢答

K:

instd_logic;--主持人抢答开始键

G:

outstd_logic;--报警信号

ledag:

outstd_logic_vector(6downto0);

Dout:

outstd_logic_vector(3downto0));--抢答结果显示

endqiangda;

--------------------------------------------------------------------

architecturebehaveofqiangdais

signalEnable_Flag:

std_logic;--允许抢答控制变量,为1表示允许抢答

signalS:

std_logic_vector(3downto0);

signalD:

std_logic_vector(3downto0);

begin

process(S1,S2,S3,S4,K)--允许抢答控制

begin

S<=S1&S2&S3&S4;

If(K='1')then

Enable_Flag<='1';

elsif(S/="1111")then

Enable_Flag<='0';

endif;

endprocess;

process(S1,S2,S3,S4,K)--抢答结果显示

begin

if(K='0')then

D<="0000";

Elsif(Enable_Flag='1')then

if(S1='0')then

D(0)<='1';

G<='0';

elsif(S2='0')then

D

(1)<='1';

G<='0';

elsif(S3='0')then

D

(2)<='1';

G<='0';

elsif(S4='0')then

D(3)<='1';

G<='0';

endif;

dout<=d;

endif;

endprocess;

process(d)--显示抢答成功者号码

begin

casedis

when"0000"=>ledag<="0111111";

when"0001"=>ledag<="0000110";

when"0010"=>ledag<="1011011";

when"0100"=>ledag<="1001111";

when"1000"=>ledag<="1100110";

whenothers=>ledag<="0000000";

endcase;

endprocess;

endbehave;

 

以上VHDL程序的系统框图如图2所示。

图2抢答部分框图

通过MAX+PLUSⅡ软件仿真结果如图3所示。

从图中可看出S1和S2选手抢答情况,在K为高电平时,S1选手为低电平,抢答成功,报警信号G为低电平,给出报警信号,同时七段数码管译码为06H,显示1。

图3抢答部分仿真图

2、抢答倒计时程序

此模块为抢答20s倒计时程序,在主持人按下按钮K后此模块即开始工作,在20s倒计时完后会有声音提示,G为声音报警信号。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCOUNTIS

PORT(CLK,Enable_Flag:

INSTD_LOGIC;

H,L:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

G:

OUTSTD_LOGIC);--声音报警

ENDCOUNT;

ARCHITECTURECOUNT_ARCOFCOUNTIS

BEGIN

PROCESS(CLK,Enable_Flag)

VARIABLEHH,LL:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFEnable_Flag='1'THEN

IFLL=0ANDHH=0THEN

G<='1';

ELSIFLL=0THEN

LL:

="1001";

HH:

=HH-1;

ELSE

LL:

=LL-1;

ENDIF;

ELSE

G<='0';

HH:

="1001";

LL:

="1001";

ENDIF;

ENDIF;

H<=HH;

L<=LL;

ENDPROCESS;

ENDCOUNT_ARC;

其模块结构图如图4所示:

图4倒计时结构图

3、超前犯规抢答程序及仿真

此模块为违规电路。

当抢答者在主持人复位系统之前就已按下抢答按钮,即当RESET=0时,有抢答信号出现,则Y=11表示某组违规,当RESET=1时,显示违规组别。

其中K为主持人按钮,S1,S2,S3,S4为抢答按钮,R1,R2,R3,R4为对应组别犯规红色显示灯。

其VHDL源程序如下:

LIBRARYieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYwgIS

PORT(K:

INstd_logic;

S1,S2,S3,S4:

INstd_logic;

R1,R2,R3,R4:

OUTstd_logic;--红色灯指示超前抢答台号

y:

OUTstd_logic_VECTOR(1DOWNTO0));

ENDwg;

ARCHITECTUREaOFwgIS

SIGNALTEMP1:

STD_LOGIC;

SIGNALTEMP2:

STD_LOGIC_VECTOR(1DOWNTO0);

BEGIN

TEMP1<=S1ORS2ORS3ORS4;

TEMP2<=K&TEMP1;

process(TEMP2)--显示抢答成功者号码

begin

caseTEMP2is

when"01"=>Y<="11";

when"10"=>Y<="00";

when"11"=>Y<="00";

whenothers=>Y<="00";

endcase;

if(K<='0')then

if(S1='0')then

R1<='0';

elsif(S2='0')then

R2<='0';

elsif(S3='0')then

R3<='0';

elsif(S4='0')then

R4<='0';

endif;

endif;

endprocess;

ENDa;

通过VHDL程序可生成其对应的框图如图5所示:

图5犯规部分框图

同样在MAX+PLUSⅡ环境下可得到其对应的仿真分析图如图6所示。

从仿真分析可看出在为高电平前,S1按钮有超前抢答低电平出现,故Y=11表示有超前抢答产生,同时R1为低电平,对应S1选手的红灯亮,指示其违规抢答。

图6犯规模块仿真图

四、总结

由以上描述及仿真结果可知,本次抢答器的设计在理论上基本上满足了设计任务的要求。

通过这次课程设计的实践,弥补了平时仅仅学习理论知识的不足,在实践中发现了许多问题,这些问题的解决,加深了对所学知识的理解,收获颇丰。

在FPGA试验箱上下载运行了正常抢答部分程序,能够正常抢答和显示报警功能。

此部分的引脚分配图如图7所示:

由于是我的第一次系统设计电路,虽然参照了一些电路程序,毕竟掌握水平有限,在设计成的交通灯中可能存在着一些问题和不足,希望老师给予指正。

图7引脚分配图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2