1 / 7
文档名称:

硬件描述语言实验结课实验报告-------四人抢答器VHDL.doc.doc

格式:doc   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

硬件描述语言实验结课实验报告-------四人抢答器VHDL.doc.doc

上传人:wuxwivg046 2016/7/2 文件大小:0 KB

下载得到文件列表

硬件描述语言实验结课实验报告-------四人抢答器VHDL.doc.doc

相关文档

文档介绍

文档介绍:硬件描述语言实验结课实验题目:抢答器——设计报告姓名学号班级: 时间一、实验要求设计一个四人抢答的抢答器的逻辑模块,模块功能如下描述: (1) 上一轮抢答结束后, 主持人按下清零按钮, 系统初始化, 此时除了禁止抢答灯外, 所有灯灭, 而禁止抢答灯亮。(2 )主持人按下允许抢答按钮,允许抢答灯亮,模块开始计时; (时钟) 当达到设定的允许抢答的时间时,允许抢答灯灭( 0) ,禁止抢答灯亮( 1)。(3) 参赛选手在允许抢答的时间内按下自己的抢答按钮, 谁第一个按下, 他的抢答成功灯亮, 其他选手在抢答无效。(4 )选手在禁止抢答的时间段按下抢答的按钮,他的犯规灯亮,多个选手犯规,他们的犯规灯都亮。由上述功能可确定模块的引脚:每个按钮对应一个输入信号,按钮按下输入为高电平;每个灯对应一个输出信号,输出高电平灯亮。为了计时,还有一个时钟信号输入,允许抢答的时间为 16 个时钟周期。二、设计思想原理(1) 看到题之后首先弄清有几个按钮和灯,即输入输出信号的个数,如上黄色区域代表输入的信号:清零按钮—— rest 允许抢答按钮—— allow 时钟输入信号—— clk 抢答按钮—— answer 红色字体代表输出信号:禁止抢答灯—— stop_lamp 允许抢答灯—— allow_lamp 抢答成功灯—— ess 抢答犯规灯—— answer_foul 时钟输出相关信号—— co,q (2) 时钟设计该时钟沿用前面实验所做的十进制计数器, 仅需将 q 的设定值改为二进制中的 15 即可,即“ 1111 , 另外该时钟的开始是在允许按钮按下、允许灯亮的的条件以及抢答成功灯没有亮的条件下(即一有人抢答成功时钟就停止, allow=1 , ess= ’0’) ,时钟可单独设置在一个进程中时钟进程如下: nclk:process(clk,allow)is begin if(rest='1')then q<="0000"; co<='0'; else if(allow_lamp='1')then if(clk'event and clk='1') and (ess="0000")then if(q="1111")then q<="0000"; co<='1'; else q<=q+'1'; co<='0'; end if; end if; end if; end if; end process; (3) 清零按钮设计首先想到的是将清零按钮及其所有结果设计在同一进程中,即 rest 对 stop_lamp 、 allow_lamp 、 ess 以及 answer_foul 都在同一进程里由 rest 的改变为条件而全部赋值为零,后发现另外再在抢答成功的模块里还需对 ess 灯进行赋值,这样则出现多驱动的错误,因此仅将 stop_lam p 和 allow_lamp 的清零设置在同一进程中清零后,禁止灯为禁止灯和允许灯的清零设置代码如下: lemp_rest_allow:process(rest,allow,co)is begin if(rest='1')then stop_lamp<='1'; allow_lamp<='0'; 抢答成功灯和抢答犯规灯的设计则需要在抢答成功模块和强大犯规模块中分别加入代码如下: lemp_answer:process(allow_lamp