收藏 分销(赏)

vhdl课程设计四路抢答计时器设计学士学位论文.doc

上传人:胜**** 文档编号:2683536 上传时间:2024-06-04 格式:DOC 页数:18 大小:253.50KB
下载 相关 举报
vhdl课程设计四路抢答计时器设计学士学位论文.doc_第1页
第1页 / 共18页
vhdl课程设计四路抢答计时器设计学士学位论文.doc_第2页
第2页 / 共18页
vhdl课程设计四路抢答计时器设计学士学位论文.doc_第3页
第3页 / 共18页
vhdl课程设计四路抢答计时器设计学士学位论文.doc_第4页
第4页 / 共18页
vhdl课程设计四路抢答计时器设计学士学位论文.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、VHDL语言课程设计报告四路抢答计时器班级: 学号:姓名:第1章 课程设计概述1.1设计目的 本次设计的目的就是在掌握MAX+plus II实验开发系统的初步使用基础上,了解并掌握VHDL硬件描述语言的设计方法和思想,使自己能将已学过的数字电子系统设计、VHDL 程序设计等知识综合运用于电子系统的设计中,掌握运用VHDL 设计电子系统的流程和方法,加强和培养自己对电子系统的设计能力。任务是通过二周的时间,基本掌握EDA的基本方法,熟悉一种EDA软件(MAX+plus II),并能利用EDA软件设计一个电子技术综合问题。通过学习的VHDL语言结合电子电路的知识理论联系实际,掌握所学的课程知识,学

2、习基本单元电路的综合设计应用通过对四路抢答计时器的设计,巩固和综合运用所学的课程,摆脱一维的思维模式,以多维并发的思路来完成VHDL的程序设计。目前市场上已有各种各样的抢答器, 但绝大多数是早期设计的, 以模拟电路、数字电路或者模拟电路与数字电路相结合的产品。这部分抢答器已相当成熟, 但功能越多的电路相对来说就越复杂, 且成本偏高, 故障高, 显示方式简单( 有的甚至没有显示电路) , 无法判断提前抢按按钮的行为, 不便于电路升级换代。而与非门和非门后的反馈信号的高电平作为解锁存,用555定时器的模型来倒计时,同时以脉冲信号来控制加法器和减法器来控制抢答过程中的计分,应用二极管和数码显示管为主

3、要部件来设计扫描显示器则降低了其复杂性、高故障性以及显示方式简单的问题。通过课程设计深入理解VHDL语言的精髓和掌握运用所学的知识,达到课程设计的目标。1.2 设计内容通过VHDL程序设计一个4人参加的智力竞赛抢答计时器,当有某一参赛者首先按下抢答开关时,相应显示灯亮并伴有声响,此时抢答器不再接受其他输入信号。 电路具有回答问题时间控制功能。要求回答问题时间小于等于100s(显示为099),时间显示采用倒计时方式。当达到限定时间时,发出声响以示警告。 要完成以上功能,所用的的程序分为七大模块:1. 实现按键抢答与复位的模块LXL;2. 产生数码管片选信号的模块SEL;3. 能在任一选手按下按键

4、后锁存,锁存的同时送出ALM信号,实现声音提示的锁存器模块,命名为LOCKB;4. 将抢答的结果转换为二进制数的模块CH41A;5. 对应数码片选信号,送出需要显示的信号的模块CH31A;6. 模块COUNT,它实现答题计时器的倒计时功能,在计满100s后送出声音提示;7. 模块DISP,它是七段译码器,驱动数码管。而所需的声音提示功能需要利用上升沿触发实现,即在SOUND的上升沿送出一个始终周期的高电平,接蜂鸣器可做声音提示。在该抢答器中,设置其为四路抢答,在任一选手按下按键后,锁存器完成锁存,对其余选手的请求能不做响应,只有在主持人按下按键复位后才可以再次抢答。这个抢答器的抢答部分具有较高

5、的灵活性,可以在不变动很多代码的基础上将四路抢答器该为其他的如八路抢答器等,只是工作量加大而其中的原理类似,不用大的改动。而在倒计时模块中,同样存在着灵活多变的特点,倒计时可以实现100秒,当然也同样可以实现30秒或者其它。所以这个四路抢答计时器的灵活多变的特性就决定了它强大的功能。 第2章 四路抢答计时器的设计思想2.1 四路抢答计时器的总体思想利用VHDL设计该四路抢答计时器的各个模块,并使用MAX+plus II对各模块进行仿真验证。该四路抢答计时器的设计分为七个模块:LXL模块、SEL模块、LOCKB模块、CH41A模块、CH31A模块、COUNT模块、DISP模块。把各个模块整合后,

6、通过电路的输入输出对应关系连接起来。设计成一个有如下功能的抢答器:(1)具有第一抢答信号的鉴别锁存功能。在主持人发出抢答指令后,若有参赛者按抢答器按钮,则该组指示灯亮,显示器显示出抢答者的组别。同时电路处于自锁状态,使其他组的抢答器按钮不起作用。(2)具有倒计时功能。在初始状态时,主持人可以设置答题时间的初始值。在主持人对抢答组别进行确认,并给出倒计时计数开始信号以后,抢答者开始回答问题。此时,显示器从初始值开始计时,计至0时停止计数。(3)具有计分功能。在初始状态时,主持人可以给每组设置初始分值。第三者组抢答完毕后,由主持人打分,答对一次加10分阶段,错则减10分。 (4)扫描显示功能。在初

7、始状态时,各组计分给出一个固定的值并将它扫描显示在屏幕上,当计分或者要显示的数据发生变化时,再次扫描并显示出来。 鉴别锁存模块的关键是准确判断出第一抢答者并将其锁存,实现的方法可使用触发器或锁存器,在得到第一信号后将输入封锁,使其它组的抢答信号无效。形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别,控制扬声器发出音响,并启动答题计时电路。本模块采用74HC373芯片,一开始,当所有开关均未按下时,锁存器输出全为高电平,经输入与非门和非门后的反馈信号仍为高电平,该信号作为锁存器使能端控制信号,使锁存器处于等待接收触发输入状态;当任一开关按下时,输出信号中必有一路为低电平,则反馈

8、信号变为低电平,锁存器刚刚接收到的开关被锁存,这时其它开关信息的输入将被封锁。由此可见,触发锁存电路具有时序电路的特征,是实现抢答器功能的关键答题计时模块的任务是当主持人启动这个计时开关时开始计时,如果在规定的时间内答完题则答题有效,如果在规定的时间内没有完成,则答题无效。计时器从规定的时间倒计时,计时为零时计时结束。答题有无效作凭主持人来判断。本模块由比较器C1和C2,基本RS触发器和三极管T1组成。两个比较器的翻转分别由高电平触发THR和低电平触发TRI的输入电压与比较基准电压比较决定,其输出控制RS触发器和放电BJT晶体客T的状态。计分电路模块是给答题人计分用的,按照规定如果主持人判定答

9、题有效则加分,如无效则按照设定不加分或者扣分。并将分数显示在计分屏幕上。本模块采用74LS112芯片,设置成两个电路一个加法器和一个减法器。个位电路始终显示为0所以将它直接接显示器的个位,再把十位的看成个位加减,依此类推。电路中设加分,减分和复位按钮。加法器和减法器电路中的单脉冲分别为加分和减分按钮,而两个电路中的清零电平开关就是复位按钮。显示功能是将计分电路中的计分结果通过扫描并显示出来于屏幕上。抢答者和观众则通过显示屏幕上的分数来判别竞赛都之间的成绩。最终胜负结果也是通过这个分数来判别的。显示部分采用动态扫描4 位LED 显示接口电路, LED 动态显示是单片机中应用最为广泛的一种显示方式

10、, 其接口电路是把所有显示器的8 个笔划段adp 同名端并联在一起, 而每一个显示器的公共极COM是各自独立地受I/O 线控制, CPU 的字段输出口送出字形码时, 所有显示器由于同名端并连接收到相同的字形码, 但究竟哪个显示器亮, 则取决于COM端, 而这一端是由I/O 控制的, 所以就可以自行决定何时显示哪一位了, 在轮流点亮扫描过程中, 每位显示器的点亮时间表是极为短暂的, 但由于人的视觉暂留现象及发光二极管的余辉将就尽管实际上各位显示器并非同时点亮, 但只要扫描速度足够快, 给人的印象就是一组稳定的显示数据, 不会有闪烁感。确定了通过七大模块实现的抢答功能与计时功能的设计思想,接着就要

11、进行程序的设计与调试和利用MAX+plus II对各个模块功能的仿真最终实现一个合格的功能完整的四路抢答计时器2.2 用整体框图描述四路抢答计时器数码管片选信号锁存器模块LOCKB同步信号D1二进制转换倒计时模块倒计时模块七段数码管译码电路蜂鸣器七段数码管D1D1D1按 键2按 键1显示模块四路抢答计时器的整体框图第3章 四路抢答计时器设计在本学期的硬件知识学习中,我们曾在单片机实验中做过8路抢答器,在接口实验中做过8路抢答器,而现在的VHDL课程设计之前,我第一个念头就是能否利用VHDL编程技术实现一个简单的带有倒计时功能的八路抢答器,随后我带着疑问去图书馆借阅相关书籍,在一本名为VHDL数

12、字电路设计与应用实践教程的书中找到了相似的程序,可是这个程序不包含倒计时功能而且是一个4路抢答器,可是其他的模块都符合我的思路,在看过其他相关的书籍后发现实现8路抢答器的工作量太大,由于我们也是刚刚接触VHDL这门课程,我们所学的知识,以及我们所掌握的技术还不足以完成过于复杂的程序设计。最后我把原计划的8路抢答器改为4路抢答器,再在课程设计的时候把程序后面加上计时功能与声音提示功能。下面我来介绍该抢答计时器下的七个模块: 模块LXL,模块SEL,模块LOCKB,模块CH41A,模块CH31A,模块COUNT,模块DISP。3.1模块LXL模块LXL是一个利用锁存实现抢答的输入部分,此模块在任意

13、选手按下按键后,输出高电平给锁存器,所存当时的按键状态。由于没有时钟同步,所以所存的延时时间只是硬件延时时间,从而出现错误的概率接近零。定义其输入信号cp,clr;其输出信号Q。任意选手按下按键后,锁存器完成锁存,对其余的选手的请求不做响应,只有在主持人按下复位后才可以再次抢答。这样一来d1,d2,d3,d4四个选手的抢答信号经过筛选后与主持人的信号形成了双输入,构成了抢答器的基本抢答部分。如图3.1,这个模块的实现利用的是二选一控制的IF语句。当执行到该IF语句时,就要判断IF语句所指定的条件成立与否,即产生抢答信号或者复位的判断。3.1图 抢答与复位模块3.2模块SEL模块SEL产生的是数

14、码管片选信号。利用多选择控制的IF语句,实现信号CLK与数码管片选输出信号的选择关系。它辅助模块LXL与其并发进行,图3.2所示,产生的信号在模块五汇总最终转换成输入信号送到倒计时器。3.2图 数码管片选3.3模块LOCKB模块LOCKB,它是锁存器模块。其实现功能是在任一选手按下按键后锁存,锁存的同时送出ALM信号,实现声音提示。如图3.3所示,其输入信号d1,d2,d3,d4,clk,clr;输出信号q1,q2,q3,q4,alm。在多选择控制的IF语句下实现送出ALM的信号。送出的信号将进入发生模块与二进制转换模块。实现了枢纽作用,承载着各个模块的衔接,是该四路抢答计时器的核心部分,尤为

15、重要。3.3图 锁存器3.4 模块CH41A模块CH41A,这个模块实现了将抢答的结果转化为二进制数的功能。利用CASE语句来描述总线行为、编码器、译码器的结构,记得在VHDL实验中我们曾经做过3-8译码器的实验,在这个模块,我们在实验中所掌握的要领充分的发挥了出来,而且比较容易读懂,在编译的过程中也没有出现错误,如图3.4,当0111输出Q为0001以此类推即实现了将抢答的结果转换为二进制数的功能。3.4图 二进制转换3.5 模块CH31A模块CH31A是本抢答计时器的第五大模块,如图3.5所示,它的功能是实现对应数码管片选信号送出需要显示的信号,以完成片选任务。该段程序采用我们所熟悉的ca

16、se语句进行编译,即使定义了很多的输入信号和输出信号,在语句的编译以及仿真过程中思路都会非常的清晰,该段程序还可以使用变量赋值的方法进行编译,考虑到工作量的问题,最后没有选则这种方法。3.5图 显示信号3.6 模块COUNT模块COUNT,此模块实现的是答题时间的倒计时功能,如图3.6所示,在CH31A的显示信号送出到本模块时,计时开始,设置的倒计时时间为100s,当然这段时间的长短可以随意的设置,在计时完毕后,会有信号输出给发生器就会产生警报音伴随着倒计时的结束而响起,这就实现了倒计时结束发出警报音的功能,也就和其他的抢答器区别开来了。3.6图 倒计时3.7 模块ADISP模块ADISP,这

17、是一个七段译码器,用来驱动数码管。在本模块中所有的信号汇总在此处进行执行驱动数码管。3.7图 七段译码器以上是我对本次设计四路抢答计时器各个模块的介绍,以及它们所实现的功能。第4章 四路抢答计时器设计总结四路抢答计时器是一个利用VHDL程序设计的具有现实意义的实物,它包含了从教材上截取的精华,比如各个模块所利用的原理:模块LXL在任一个选手按下按键后,输出高电平给锁存器,锁存当时的按键状态。由于没有时钟同步,所以锁存的延时时间只是硬件的延时时间,从而出现锁存错误的概率接近零。在任一选手按下按键后,锁存器完成锁存,对其余选手的请求不作响应,只有在主持人按下按键复位后才可以再次抢答,而模块SEL此

18、模块产生数码管片选信号。模块LBCKB是锁存器模块,在任一选手按下按键后锁存,锁存的同时送出ALM信号,实现声音提示。模块CH41A它将抢答的结果转换为二进制数。模块CH31A它对应数码管片选信号,送出需要显示的信号。模块COUNT,它实现答题器时间的倒计时,在计满100s后送出声音提示。模块DISP,它是七段译码器,驱动数码管。设计一个4人参加的智力竞赛抢答器。当有某一参赛者首先按下抢答开关时,相应显示灯亮并伴有声响,此时抢答器不再接受其他输入信号。电路具有回答问题的时间控制功能。要求回答问题时间小于等于100S(显示为099),时间显示采用倒计时方式,当达到限定时间时,发出声响以示警告。经

19、过这2周的课程设计,我VDHL程序有个更深的了解,比如上课时老师讲的程序都比较短,而在课程设计的时候我们就可以利用我们上课所学的知识进行更加复杂程序的学习与设计,在得到老师耐心的讲解、大力的支持与鼓励的同时,我们越来越热爱这门课程,俗话说:兴趣所致,学以致用。在这种积极的氛围下,我去学校的图书馆借阅相关的书籍,认真阅读,结合教材,把能对课程设计有用的部分记录下来,并在课程设计的时候充分的发挥了出来,体现在自己所设计的程序中,我们在课上所学的知识还远远不足以独立完成一个相当庞大的课程设计,所以我引用了在图书馆借的一本名叫VHDL数字电路设计与应用实践教程的书作为参考,在其原有的程序,四路竞赛抢答

20、器,的基础上进行修改,并确定为四路,然后在我的程序中加入了模块6与模块7模块6即为COUNT模块,它实现答题时间的倒计时,在计满100s后送出声音提示,在次我的课程设计名字就确定为“四路抢答计时器”在原有的抢答功能的基础上增加的倒计时功能,而且倒计时的时间长短是非常容易修改的,现在我的程序里是100S,也可以被改成30S,或者被改长,这使得操作变的跟简单,而且具有实实在在的意义,不像一些空旷的程序,完成了一定的功能,却不能直接的体现其现实的使用价值。随后,根据这次课程设计的原理,由于此程序是需要数码管驱动的,所以必须在程序的最后加上模块DISP,它就是七段译码器。到此,这个有我修改的四路抢答计

21、时器就基本告一段落了,在前面我曾提到,这个系统拥有提示音,所以其中还包含有上升沿触发模块,这其中的只是我们在VHDL的实验中,老师给我们详细认真的讲解过,由于刚刚做完VHDL实验,所以在做的时候就比较容易一些了,此模块的主要功能是只在sound的上升沿时送出一个时钟周期的高电平,接蜂鸣器做声音提示。到此为止程序上已经基本成型了,接着就是将程序分模块进行逐步调试,这7各模块都存在着或多或少的错误,有些是自己做的时候打错了字母,有些是很难理解的结构错误,在认真照参考书核对以及在老师的帮助下,这些错误都别改正过来,每个模块所生成的波形图也都被保存下来,在本次报告的第二部分体现了出来。这些工作一共用了

22、3个上午才完成。VHDL程序设计语言是硬件的标准描述语言。我们从应用的角度学习了VHDL编程技术,并进行了实验以及课程设计,巩固了我们课上所学的知识,在此感谢我们的指导老师冯福生老师对我们的悉心指导,是冯老师带我们从对VHDL编程技术的一无所知到完成VHDL编程技术课程设计,养成了我们对这门课程的积极性与热爱,为今后要学习的集成电路前端设计打下基础。参考文献l 王振红VHDL数字电路设计与应用实践教程第二版 机械工业出版社2 邢建平 曾繁泰VHDL程序设计教程清华大学出版社3 黄任 VHDL入门 北京航空航天大学出版社附录:四路抢答计时器源程序1模块LXLLibrary ieee;Use ie

23、ee.std_logic_1164.all;Entity lxl is Port(cp,clr:in std_logic;q:out std_logic);end lxl;architecture lxl_arc of lxl isbegin process(cp,clr) beginif clr=0 then q=0;elsif cpevent and cp=0 then q=1;end if; end process;end lxl_arc;2模块SELLibrary ieee;Use ieee.std_logic_1164.all;Entity sel is Port(clk:in st

24、d_logic;a:out integer range 0 to 7);end sel;architecture sel_arc of sel isbegin process(clk) variable aa:integer range 0 to 7; begin if clkevent and clk=1then aa:=aa+1; end if; a=aa; end process;end sel_arc;3 模块LOCKB Library ieee;Use ieee.std_logic_1164.all;Entity lockb is Port(d1,d2,d3,d4:in std_lo

25、gic;Clk,clr:in std_logic;q1,q2,q3,q4,alm:out std_logic);end lockb;architecture lock_arc of lockb isbegin process(clk) beginif clr=0 then q1=0; q2=0; q3=0; q4=0; alm=0;elsif clkevent and clk=1 then q1=d1; q2=d2; q3=d3; q4=d4; almqqqqqqqqq=”1111”;End case; End process;End ch31_arc;6模块COUNTlibrary ieee

26、;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count is port(clk,en:in std_logic; h,l:out std_logic_vector(3 downto 0); sound:out std_logic);end count;architecture count_arc of count isbegin process(clk,en) variable hh,ll:std_logic_vector(3 downto 0); begin if clkevent and clk=1 then if en=1 then if ll=0 and hh=0 then sound=1; elsif ll=0 then ll:=1001; hh:=hh-1; else ll:=ll-1; end if; else sound=0; hh:=1001; ll:=1001; end if; end if; h=hh; lqqqqqqqqqqq=”0000000”; End case; End process;End disp_arc;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服