您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > VHDL语言设计四人抢答器
VHDL语言设计四人抢答器学院:机械电子信息工程学院班级:电子信息工程专业12级姓名:周建澜学号:201210350119指导老师:付莉老师一.VHDL语言介绍以及EDA应用VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL语言主要具有以下优点:(1)VHDL语言功能强大,设计方式多样VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。(2)VHDL语言具有强大的硬件描述能力VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL语言的强大描述能力还体现在它具有丰富的数据类型。VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。(3)VHDL语言具有很强的移植能力VHDL语言很强的移植能力主要体现在:对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。(4)VHDL语言的设计描述与器件无关采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。(5)VHDL语言程序易于共享和复用VHDL语言采用基于库(library)的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。二.设计要求l、设计用于竞赛的四人抢答器,功能如下:(1)有多路抢答器,台数为四,能显示抢答台号;(2)具有抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警;(3)能显示超前抢答台号并显示犯规警报;2、系统复位后进入抢答状态,当有一路抢答键按下时,该路抢答信号将其余各路抢答封锁,同时铃声响,直至该路按键松开,显示牌显示该路抢答台号。3、用VHDL语言设计符合上述功能要求的四人抢答器,并用层次设计方法设计该电路。三.电路工作原理简易逻辑数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。电路主要由脉冲产生电路、锁存电路、编码及译码显示电路、倒计时电路和音响产生电路组成。当有选手抢答时,首先锁存,阻止其他选手抢答,然后编码,再经译码器将数字显示在显示器上同时产生音响。主持人宣布开始抢答时,倒计时电路启动由20计到0,如有选手抢答,倒计时停止,如20秒后无人抢答,则会显示报警。四.设计思路使用VHDL语言编写的四人抢答器设计,根据现有知识及翻阅资料,经过反复推敲,基本设计思路可分为以下两点:(一)抢答鉴别锁存及显示模块根据设计要求,首先要有清零开关clr,主持人开关en,四人抢答按钮a、b、c、d,并由一个LED数码显示管显示选手组别,为了实现当有选手抢答后锁存电路使其他选手无法抢答的功能,设置两个锁存信号tmp1、tmp2。按下清零开关(clr=1),tmp1、tmp2=0,若主持人开关未开启(en=0),此时有人抢答,则tmp2=1,关闭抢答电路,并由数码显示管输出抢答组别,同时speaker报警;若主持人按下开关后(en=1),此时有人抢答,则tmp1=1,关闭抢答电路,并由数码显示管输出抢答组别。(二)数码管倒计时,暂停及报警模块设计由两个数码管显示20秒抢答倒计时,在程序中,由8位二进制矢量数count控制,高四位表示十位,低四位表示个位,由给定的时钟信号clk高电平触发。按下清零开关(clr=1),数码管显示20(count=“00100000”),主持人按下开关后(en=1),开始20秒倒计时,当低四位为“0000”时,则赋值为9(“1001”),同时高四位表示的十位数自减1,当低四位不为0时则自减1,由此实现了20秒倒计时。为实现有人抢答则暂停计时以及20秒时间到停止计时并报警的功能,设置暂停锁存信号tmp3,按下清零开关(clr=1),tmp3=0,主持人按下开关后(en=1),开始20秒倒计时,当有人抢答,则tmp3=1,暂停倒计时,若一直无人抢答,当20秒倒计时结束(count=“00000000”)时,则tmp3=1,停止倒计时并由speaker报警。speaker报警可由脉冲信号clk0与(tmp3oraorborcord)信号相与输出,从而实现选择性输出报警信号。五.仿真波形(一)无人抢答的仿真波形由上图可知,当en=0时此时主持人并没有提出开始抢答的信号.en=1,开始抢答的时候20秒倒计时,时间到而无人抢答。(count=00000000),则speaker报警,按下清零开关(clr=1),重新开始20秒倒计时进行下一轮(二)有人抢答的仿真波形由上图可知,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报警。六.源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityqdqisport(clr,clk,clk0,en,a,b,c,d:instd_logic;dps:outstd_logic_vector(3downto0);count:outstd_logic_vector(7downto0);speaker:outstd_logic);end;architectureoneofqdqissignaldps1:std_logic_vector(3downto0);signalcount1:std_logic_vector(7downto0);signaltmp1,tmp2,tmp3:std_logic;beginp1:process(clr,en,tmp1,tmp2)beginifclr='1'thentmp1='0';tmp2='0';dps1=0000;elsifen='1'theniftmp1='0'thenifa='1'thentmp1='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'theniftmp2='0'thenifa='1'thentmp2='1';dps1=0001;endif;ifb='1'thentmp2='1';dps1=0010;endif;ifc='1'thentmp2='1';dps1=0011;endif;ifd='1'thentmp2='1';dps1=0100;endif;endif;endif;endprocess;p2:process(clr,clk,tmp1,tmp3)beginifclk'eventandclk='1'thenifclr='1'thencount1=00100000;tmp3='0';elsifen='1'andtmp1='0'andtmp3='0'thenifcount1=00000000thentmp3='1';elsifcount1(3downto0)=0000thencount1(3downto0)=1001;count1(7downto4)=count1(7downto4)-'1';elsecount1(3downto0)=count1(3downto0)-'1';endif;endif;endif;endprocess;count=count1;dps=dps1;speaker=((tmp3oraorborcord)andclk0);end;七.设计心得体会通过这次对抢答器的设计与实践,让我了解了关于抢答器设计的基本原理与设计理念,进一步加深了对EDA程序设计的了解,让我对它有了更加浓厚的兴趣。特别是当每一个模块编译调试成功时,兴奋之情溢于言表。通过这次课程设计我懂得了理论与实践相结合的重要性,从理论中反复琢磨得出的真知才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。在设计过程中可谓困难重重,同时在此间发现了自己的许多不足之处,对以前所学过的知识理解的不够深刻,掌握的不够牢固。在课程设计的这段时间里,我的收获还是很多的,不但进一步掌握了数字电子技术的基础知识及一门专业仿真软件的基本操作,还提高了自己的设计能力和动手能力,同时对于智能抢答器的设计来了个系统的总结。更多的是让我清楚的认识到,凡事都需要足够的耐心,实践是检验学习成效的唯一标准。理论知识的不足在这次课程设计中表现的极为明显,这将有助于我今后更努力的学习,端正自己的学习态度,从而也提高了我的综合能力,使我在各方面都得到了锻炼。非常感谢我们的指导老师付老师给予的悉心指导,使我们这次的课程设计任务圆满完成。总的来说,这次设计的智能四人抢答器还是比较成功的,在设计中遇到的困难在老师的悉心指导下也都迎刃而解。终于觉得平时所学的知识有了实用价值,达到了理论与实践相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使我对以后的道路有了更加清楚的认识,同时,对未来也有了更多信心。
本文标题:VHDL语言设计四人抢答器
链接地址:https://www.777doc.com/doc-5469392 .html