欢迎来到天天文库
浏览记录
ID:42894115
大小:474.50 KB
页数:7页
时间:2019-09-23
《硬件描述语言实验结课实验报告-------四人抢答器VHDL》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、硬件描述语言实验结课实验题目:抢答器——设计报告姓名学号班级:时间一、实验要求设计一个四人抢答的抢答器的逻辑模块,模块功能如下描述:(1)上一轮抢答结束后,主持人按下清零按钮,系统初始化,此时除了禁止抢答灯外,所有灯灭,而禁止抢答灯亮。(2)主持人按下允许抢答按钮,允许抢答灯亮,模块开始计时;(时钟)当达到设定的允许抢答的时间时,允许抢答灯灭(0),禁止抢答灯亮(1)。(3)参赛选手在允许抢答的时间内按下自己的抢答按钮,谁第一个按下,他的抢答成功灯亮,其他选手在抢答无效。(4)选手在禁止抢答的时间段按下抢答的按钮,他的犯规灯亮,多个选手犯规,他们的犯规灯都亮。由上述功
2、能可确定模块的引脚:每个按钮对应一个输入信号,按钮按下输入为高电平;每个灯对应一个输出信号,输出高电平灯亮。为了计时,还有一个时钟信号输入,允许抢答的时间为16个时钟周期。二、设计思想原理(1)看到题之后首先弄清有几个按钮和灯,即输入输出信号的个数,如上黄色区域代表输入的信号:清零按钮——rest允许抢答按钮——allow时钟输入信号——clk抢答按钮——answer红色字体代表输出信号:禁止抢答灯——stop_lamp允许抢答灯——allow_lamp抢答成功灯——answer_success抢答犯规灯——answer_foul时钟输出相关信号——co,q(2)时钟
3、设计该时钟沿用前面实验所做的十进制计数器,仅需将q的设定值改为二进制中的15即可,即“1111,另外该时钟的开始是在允许按钮按下、允许灯亮的的条件以及抢答成功灯没有亮的条件下(即一有人抢答成功时钟就停止,allow=1,answe_success=’0’),时钟可单独设置在一个进程中时钟进程如下:nclk:process(clk,allow)isbeginif(rest='1')thenq<="0000";co<='0';elseif(allow_lamp='1')thenif(clk'eventandclk='1')and(answer_success="0000"
4、)thenif(q="1111")thenq<="0000";co<='1';elseq<=q+'1';co<='0';endif;endif;endif;endif;endprocess;(1)清零按钮设计首先想到的是将清零按钮及其所有结果设计在同一进程中,即rest对stop_lamp、allow_lamp、answer_success以及answer_foul都在同一进程里由rest的改变为条件而全部赋值为零,后发现另外再在抢答成功的模块里还需对answer_success灯进行赋值,这样则出现多驱动的错误,因此仅将stop_lamp和allow_lamp的清零
5、设置在同一进程中清零后,禁止灯为禁止灯和允许灯的清零设置代码如下:lemp_rest_allow:process(rest,allow,co)isbeginif(rest='1')thenstop_lamp<='1';allow_lamp<='0';抢答成功灯和抢答犯规灯的设计则需要在抢答成功模块和强大犯规模块中分别加入代码如下:lemp_answer:process(allow_lamp,answer,rest,alamp)isbeginif(rest='1')thenanswer_success<="0000";(抢答成功灯的清零设置)lemp_foul:proc
6、ess(stop_lamp,answer)isbeginif(rest='1')thenanswer_foul<="0000";(抢答犯规灯的清零设置)(2)禁止灯和允许灯设计允许灯和禁止灯的清零设计在rest中有所体现,除此之外(即在rest=’0’时),其在允许按钮按下(allow=’1)和时钟时间到时(co=’1’)两种情况下会有所改变当allow=’1’时,被允许答题后,stop_lamp<=’0’,allow_lamp<=’1’,即允许灯亮,禁止灯灭当时间到时,禁止灯亮,stop_lamp<=’1’,允许灯灭,allow_lamp<=’0’代码如下:if(a
7、llow='1')thenallow_lamp<='1';stop_lamp<='0';endif;endif;if(co='1')thenallow_lamp<='0';stop_lamp<='1';endif;(1)抢答成功灯和抢答犯规灯设计首先在实体中设置两个信号变量用于亮灯的控制条件:signalalamp:std_logic;signalfoul:std_logic_vector(3downto0);1、抢答成功部分若有第一个人在允许的时间内抢答,则他抢答成功,抢答成功灯亮,而其他人不能再按下抢答按钮成功灯也不能亮了;因此设置一个已有人成功
此文档下载收益归作者所有