vhdl课程设计四路抢答计时器设计.docx

上传人:b****6 文档编号:6517700 上传时间:2023-01-07 格式:DOCX 页数:18 大小:189.63KB
下载 相关 举报
vhdl课程设计四路抢答计时器设计.docx_第1页
第1页 / 共18页
vhdl课程设计四路抢答计时器设计.docx_第2页
第2页 / 共18页
vhdl课程设计四路抢答计时器设计.docx_第3页
第3页 / 共18页
vhdl课程设计四路抢答计时器设计.docx_第4页
第4页 / 共18页
vhdl课程设计四路抢答计时器设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

vhdl课程设计四路抢答计时器设计.docx

《vhdl课程设计四路抢答计时器设计.docx》由会员分享,可在线阅读,更多相关《vhdl课程设计四路抢答计时器设计.docx(18页珍藏版)》请在冰豆网上搜索。

vhdl课程设计四路抢答计时器设计.docx

vhdl课程设计四路抢答计时器设计

《VHDL语言》课程设计报告

四路抢答计时器

班级:

学号:

姓名:

 

第1章课程设计概述

1.1设计目的

本次设计的目的就是在掌握MAX+plusII实验开发系统的初步使用基础上,了解并掌握VHDL硬件描述语言的设计方法和思想,使自己能将已学过的数字电子系统设计、VHDL程序设计等知识综合运用于电子系统的设计中,掌握运用VHDL设计电子系统的流程和方法,加强和培养自己对电子系统的设计能力。

任务是通过二周的时间,基本掌握EDA的基本方法,熟悉一种EDA软件(MAX+plusII),并能利用EDA软件设计一个电子技术综合问题。

通过学习的VHDL语言结合电子电路的知识理论联系实际,掌握所学的课程知识,学习基本单元电路的综合设计应用通过对四路抢答计时器的设计,巩固和综合运用所学的课程,摆脱一维的思维模式,以多维并发的思路来完成VHDL的程序设计。

目前市场上已有各种各样的抢答器,但绝大多数是早期设计的,以模拟电路、数字电路或者模拟电路与数字电路相结合的产品。

这部分抢答器已相当成熟,但功能越多的电路相对来说就越复杂,且成本偏高,故障高,显示方式简单(有的甚至没有显示电路),无法判断提前抢按按钮的行为,不便于电路升级换代。

而与非门和非门后的反馈信号的高电平作为解锁存,用555定时器的模型来倒计时,同时以脉冲信号来控制加法器和减法器来控制抢答过程中的计分,应用二极管和数码显示管为主要部件来设计扫描显示器则降低了其复杂性、高故障性以及显示方式简单的问题。

通过课程设计深入理解VHDL语言的精髓和掌握运用所学的知识,达到课程设计的目标。

 

1.2设计内容

通过VHDL程序设计一个4人参加的智力竞赛抢答计时器,当有某一参赛者首先按下抢答开关时,相应显示灯亮并伴有声响,此时抢答器不再接受其他输入信号。

电路具有回答问题时间控制功能。

要求回答问题时间小于等于100s(显示为0~99),时间显示采用倒计时方式。

当达到限定时间时,发出声响以示警告。

要完成以上功能,所用的的程序分为七大模块:

1.实现按键抢答与复位的模块LXL;

2.产生数码管片选信号的模块SEL;

3.能在任一选手按下按键后锁存,锁存的同时送出ALM信号,实现声音提示的锁存器模块,命名为LOCKB;

4.将抢答的结果转换为二进制数的模块CH41A;

5.对应数码片选信号,送出需要显示的信号的模块CH31A;

6.模块COUNT,它实现答题计时器的倒计时功能,在计满100s后送出声音提示;

7.模块DISP,它是七段译码器,驱动数码管。

而所需的声音提示功能需要利用上升沿触发实现,即在SOUND的上升沿送出一个始终周期的高电平,接蜂鸣器可做声音提示。

在该抢答器中,设置其为四路抢答,在任一选手按下按键后,锁存器完成锁存,对其余选手的请求能不做响应,只有在主持人按下按键复位后才可以再次抢答。

这个抢答器的抢答部分具有较高的灵活性,可以在不变动很多代码的基础上将四路抢答器该为其他的如八路抢答器等,只是工作量加大而其中的原理类似,不用大的改动。

而在倒计时模块中,同样存在着灵活多变的特点,倒计时可以实现100秒,当然也同样可以实现30秒或者其它。

所以这个四路抢答计时器的灵活多变的特性就决定了它强大的功能。

第2章四路抢答计时器的设计思想

2.1四路抢答计时器的总体思想

利用VHDL设计该四路抢答计时器的各个模块,并使用MAX+plusII对各模块进行仿真验证。

该四路抢答计时器的设计分为七个模块:

LXL模块、SEL模块、LOCKB模块、CH41A模块、CH31A模块、COUNT模块、DISP模块。

把各个模块整合后,通过电路的输入输出对应关系连接起来。

设计成一个有如下功能的抢答器:

(1)具有第一抢答信号的鉴别锁存功能。

在主持人发出抢答指令后,若有参赛者按抢答器按钮,则该组指示灯亮,显示器显示出抢答者的组别。

同时电路处于自锁状态,使其他组的抢答器按钮不起作用。

(2)具有倒计时功能。

在初始状态时,主持人可以设置答题时间的初始值。

在主持人对抢答组别进行确认,并给出倒计时计数开始信号以后,抢答者开始回答问题。

此时,显示器从初始值开始计时,计至0时停止计数。

(3)具有计分功能。

在初始状态时,主持人可以给每组设置初始分值。

第三者组抢答完毕后,由主持人打分,答对一次加10分阶段,错则减10分。

(4)扫描显示功能。

在初始状态时,各组计分给出一个固定的值并将它扫描显示在屏幕上,当计分或者要显示的数据发生变化时,再次扫描并显示出来。

鉴别锁存模块的关键是准确判断出第一抢答者并将其锁存,实现的方法可使用触发器或锁存器,在得到第一信号后将输入封锁,使其它组的抢答信号无效。

形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别,控制扬声器发出音响,并启动答题计时电路。

本模块采用74HC373芯片,一开始,当所有开关均未按下时,锁存器输出全为高电平,经8输入与非门和非门后的反馈信号仍为高电平,该信号作为锁存器使能端控制信号,使锁存器处于等待接收触发输入状态;当任一开关按下时,输出信号中必有一路为低电平,则反馈信号变为低电平,锁存器刚刚接收到的开关被锁存,这时其它开关信息的输入将被封锁。

由此可见,触发锁存电路具有时序电路的特征,是实现抢答器功能的关键

答题计时模块的任务是当主持人启动这个计时开关时开始计时,如果在规定的时间内答完题则答题有效,如果在规定的时间内没有完成,则答题无效。

计时器从规定的时间倒计时,计时为零时计时结束。

答题有无效作凭主持人来判断。

本模块由比较器C1和C2,基本RS触发器和三极管T1组成。

两个比较器的翻转分别由高电平触发THR和低电平触发TRI的输入电压与比较基准电压比较决定,其输出控制RS触发器和放电BJT晶体客T的状态。

计分电路模块是给答题人计分用的,按照规定如果主持人判定答题有效则加分,如无效则按照设定不加分或者扣分。

并将分数显示在计分屏幕上。

本模块采用74LS112芯片,设置成两个电路一个加法器和一个减法器。

个位电路始终显示为0所以将它直接接显示器的个位,再把十位的看成个位加减,依此类推。

电路中设加分,减分和复位按钮。

加法器和减法器电路中的单脉冲分别为加分和减分按钮,而两个电路中的清零电平开关就是复位按钮。

显示功能是将计分电路中的计分结果通过扫描并显示出来于屏幕上。

抢答者和观众则通过显示屏幕上的分数来判别竞赛都之间的成绩。

最终胜负结果也是通过这个分数来判别的。

显示部分采用动态扫描4位LED显示接口电路,LED动态显示是单片机中应用最为广泛的一种显示方式,其接口电路是把所有显示器的8个笔划段a~dp同名端并联在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制,CPU的字段输出口送出字形码时,所有显示器由于同名端并连接收到相同的字形码,但究竟哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了,在轮流点亮扫描过程中,每位显示器的点亮时间表是极为短暂的,但由于人的视觉暂留现象及发光二极管的余辉将就尽管实际上各位显示器并非同时点亮,但只要扫描速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

确定了通过七大模块实现的抢答功能与计时功能的设计思想,接着就要进行程序的设计与调试和利用MAX+plusII对各个模块功能的仿真最终实现一个合格的功能完整的四路抢答计时器

2.2用整体框图描述四路抢答计时器

 

四路抢答计时器的整体框图

 

第3章四路抢答计时器设计

在本学期的硬件知识学习中,我们曾在单片机实验中做过8路抢答器,在接口实验中做过8路抢答器,而现在的VHDL课程设计之前,我第一个念头就是能否利用VHDL编程技术实现一个简单的带有倒计时功能的八路抢答器,随后我带着疑问去图书馆借阅相关书籍,在一本名为《VHDL数字电路设计与应用实践教程》的书中找到了相似的程序,可是这个程序不包含倒计时功能而且是一个4路抢答器,可是其他的模块都符合我的思路,在看过其他相关的书籍后发现实现8路抢答器的工作量太大,由于我们也是刚刚接触VHDL这门课程,我们所学的知识,以及我们所掌握的技术还不足以完成过于复杂的程序设计。

最后我把原计划的8路抢答器改为4路抢答器,再在课程设计的时候把程序后面加上计时功能与声音提示功能。

下面我来介绍该抢答计时器下的七个模块:

模块LXL,模块SEL,模块LOCKB,模块CH41A,模块CH31A,模块COUNT,模块DISP。

3.1模块LXL

模块LXL是一个利用锁存实现抢答的输入部分,此模块在任意选手按下按键后,输出高电平给锁存器,所存当时的按键状态。

由于没有时钟同步,所以所存的延时时间只是硬件延时时间,从而出现错误的概率接近零。

定义其输入信号cp,clr;其输出信号Q。

任意选手按下按键后,锁存器完成锁存,对其余的选手的请求不做响应,只有在主持人按下复位后才可以再次抢答。

这样一来d1,d2,d3,d4四个选手的抢答信号经过筛选后与主持人的信号形成了双输入,构成了抢答器的基本抢答部分。

如图3.1,这个模块的实现利用的是二选一控制的IF语句。

当执行到该IF语句时,就要判断IF语句所指定的条件成立与否,即产生抢答信号或者复位的判断。

3.1图抢答与复位模块

 

3.2模块SEL

模块SEL产生的是数码管片选信号。

利用多选择控制的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的信号。

送出的信号将进入发生模块与二进制转换模块。

实现了枢纽作用,承载着各个模块的衔接,是该四路抢答计时器的核心部分,尤为重要。

3.3图锁存器

 

3.4模块CH41A

模块CH41A,这个模块实现了将抢答的结果转化为二进制数的功能。

利用CASE语句来描述总线行为、编码器、译码器的结构,记得在VHDL实验中我们曾经做过3-8译码器的实验,在这个模块,我们在实验中所掌握的要领充分的发挥了出来,而且比较容易读懂,在编译的过程中也没有出现错误,如图3.4,当0111输出Q为0001以此类推即实现了将抢答的结果转换为二进制数的功能。

3.4图二进制转换

 

3.5模块CH31A

模块CH31A是本抢答计时器的第五大模块,如图3.5所示,它的功能是实现对应数码管片选信号送出需要显示的信号,以完成片选任务。

该段程序采用我们所熟悉的case语句进行编译,即使定义了很多的输入信号和输出信号,在语句的编译以及仿真过程中思路都会非常的清晰,该段程序还可以使用变量赋值的方法进行编译,考虑到工作量的问题,最后没有选则这种方法。

3.5图显示信号

 

3.6模块COUNT

模块COUNT,此模块实现的是答题时间的倒计时功能,如图3.6所示,在CH31A的显示信号送出到本模块时,计时开始,设置的倒计时时间为100s,当然这段时间的长短可以随意的设置,在计时完毕后,会有信号输出给发生器就会产生警报音伴随着倒计时的结束而响起,这就实现了倒计时结束发出警报音的功能,也就和其他的抢答器区别开来了。

3.6图倒计时

 

3.7模块ADISP

模块ADISP,这是一个七段译码器,用来驱动数码管。

在本模块中所有的信号汇总在此处进行执行驱动数码管。

3.7图七段译码器

以上是我对本次设计四路抢答计时器各个模块的介绍,以及它们所实现的功能。

第4章四路抢答计时器设计总结

四路抢答计时器是一个利用VHDL程序设计的具有现实意义的实物,它包含了从教材上截取的精华,比如各个模块所利用的原理:

模块LXL在任一个选手按下按键后,输出高电平给锁存器,锁存当时的按键状态。

由于没有时钟同步,所以锁存的延时时间只是硬件的延时时间,从而出现锁存错误的概率接近零。

在任一选手按下按键后,锁存器完成锁存,对其余选手的请求不作响应,只有在主持人按下按键复位后才可以再次抢答,而模块SEL此模块产生数码管片选信号。

模块LBCKB是锁存器模块,在任一选手按下按键后锁存,锁存的同时送出ALM信号,实现声音提示。

模块CH41A它将抢答的结果转换为二进制数。

模块CH31A它对应数码管片选信号,送出需要显示的信号。

模块COUNT,它实现答题器时间的倒计时,在计满100s后送出声音提示。

模块DISP,它是七段译码器,驱动数码管。

设计一个4人参加的智力竞赛抢答器。

当有某一参赛者首先按下抢答开关时,相应显示灯亮并伴有声响,此时抢答器不再接受其他输入信号。

电路具有回答问题的时间控制功能。

要求回答问题时间小于等于100S(显示为0~99),时间显示采用倒计时方式,当达到限定时间时,发出声响以示警告。

经过这2周的课程设计,我VDHL程序有个更深的了解,比如上课时老师讲的程序都比较短,而在课程设计的时候我们就可以利用我们上课所学的知识进行更加复杂程序的学习与设计,在得到老师耐心的讲解、大力的支持与鼓励的同时,我们越来越热爱这门课程,俗话说:

兴趣所致,学以致用。

在这种积极的氛围下,我去学校的图书馆借阅相关的书籍,认真阅读,结合教材,把能对课程设计有用的部分记录下来,并在课程设计的时候充分的发挥了出来,体现在自己所设计的程序中,我们在课上所学的知识还远远不足以独立完成一个相当庞大的课程设计,所以我引用了在图书馆借的一本名叫《VHDL数字电路设计与应用实践教程》的书作为参考,在其原有的程序,四路竞赛抢答器,的基础上进行修改,并确定为四路,然后在我的程序中加入了模块6与模块7模块6即为COUNT模块,它实现答题时间的倒计时,在计满100s后送出声音提示,在次我的课程设计名字就确定为“四路抢答计时器”在原有的抢答功能的基础上增加的倒计时功能,而且倒计时的时间长短是非常容易修改的,现在我的程序里是100S,也可以被改成30S,或者被改长,这使得操作变的跟简单,而且具有实实在在的意义,不像一些空旷的程序,完成了一定的功能,却不能直接的体现其现实的使用价值。

随后,根据这次课程设计的原理,由于此程序是需要数码管驱动的,所以必须在程序的最后加上模块DISP,它就是七段译码器。

到此,这个有我修改的四路抢答计时器就基本告一段落了,在前面我曾提到,这个系统拥有提示音,所以其中还包含有上升沿触发模块,这其中的只是我们在VHDL的实验中,老师给我们详细认真的讲解过,由于刚刚做完VHDL实验,所以在做的时候就比较容易一些了,此模块的主要功能是只在sound的上升沿时送出一个时钟周期的高电平,接蜂鸣器做声音提示。

到此为止程序上已经基本成型了,接着就是将程序分模块进行逐步调试,这7各模块都存在着或多或少的错误,有些是自己做的时候打错了字母,有些是很难理解的结构错误,在认真照参考书核对以及在老师的帮助下,这些错误都别改正过来,每个模块所生成的波形图也都被保存下来,在本次报告的第二部分体现了出来。

这些工作一共用了3个上午才完成。

VHDL程序设计语言是硬件的标准描述语言。

我们从应用的角度学习了VHDL编程技术,并进行了实验以及课程设计,巩固了我们课上所学的知识,在此感谢我们的指导老师冯福生老师对我们的悉心指导,是冯老师带我们从对VHDL编程技术的一无所知到完成VHDL编程技术课程设计,养成了我们对这门课程的积极性与热爱,为今后要学习的集成电路前端设计打下基础。

 

参考文献

[l]王振红《VHDL数字电路设计与应用实践教程》第二版机械工业出版社

[2]邢建平曾繁泰《VHDL程序设计教程》清华大学出版社

[3]黄任《VHDL入门》北京航空航天大学出版社

 

附录:

………四路抢答计时器源程序

1.模块LXL

Libraryieee;

Useieee.std_logic_1164.all;

Entitylxlis

Port(cp,clr:

instd_logic;

q:

outstd_logic);

endlxl;

architecturelxl_arcoflxlis

begin

process(cp,clr)

begin

ifclr=’0’then

q<=’0’;

elsifcp’eventandcp=’0’then

q<=’1’;

endif;

endprocess;

endlxl_arc;

2.模块SEL

Libraryieee;

Useieee.std_logic_1164.all;

Entityselis

Port(clk:

instd_logic;

a:

outintegerrange0to7);

endsel;

architecturesel_arcofselis

begin

process(clk)

variableaa:

integerrange0to7;

begin

ifclk’eventandclk=’1’then

aa:

=aa+1;

endif;

a<=aa;

endprocess;

endsel_arc;

3.模块LOCKB

Libraryieee;

Useieee.std_logic_1164.all;

Entitylockbis

Port(d1,d2,d3,d4:

instd_logic;

Clk,clr:

instd_logic;

q1,q2,q3,q4,alm:

outstd_logic);

endlockb;

architecturelock_arcoflockbis

begin

process(clk)

begin

ifclr=’0’then

q1<=’0’;

q2<=’0’;

q3<=’0’;

q4<=’0’;

alm<=’0’;

elsifclk’eventandclk=’1’then

q1<=d1;

q2<=d2;

q3<=d3;

q4<=d4;

alm<=’1’;

endif;

endprocess;

endlock_arc;

3.模块CH41A

Libraryieee;

useieee.std_logic_1164.all;

entitych41ais

Port(d1,d2,d3,d4:

instd_logic;

q:

outstd_logic_vector(3downto0));

endch41a;

architecturech41_arcofch41ais

begin

process(d1,d2,d3,d4)

variabletmp:

std_logic_vector(3downto0);

begin

tmp:

=d1&d2&d3&d4;

casetmpis

when"0111"=>q<="0001";

when"1011"=>q<="0010";

when"1101"=>q<="0011";

when"1110"=>q<="0100";

whenothers=>q<="1111";

endcase;

endprocess;

endch41_arc;

5.模块CH31A

Libraryieee;

Useieee.std_logic_1164.all;

Entitych31ais

Port(sel:

instd_logic_vector(2downto0);

D1,d2,d3:

instd_logic_vector(3downto0);

Q:

outstd_logic_vector(3downto0));

Endch31a;

Architecturech31_arcofch31ais

Begin

Process(sel,d1,d2,d3)

Begin

Caseselis

When“000”=>q<=d1;

When“001”=>q<=d2;

When“111”=>q<=d3;

Whenothers=>q<=”1111”;

Endcase;

Endprocess;

Endch31_arc;

6.模块COUNT

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycountis

port(clk,en:

instd_logic;

h,l:

outstd_logic_vector(3downto0);

sound:

outstd_logic);

endcount;

architecturecount_arcofcountis

begin

process(clk,en)

variablehh,ll:

std_logic_vector(3downto0);

begin

ifclk'eventandclk='1'then

ifen='1'then

ifll=0andhh=0then

sound<='1';

elsifll=0then

ll:

="1001";

hh:

=hh-1;

else

ll:

=ll-1;

endif;

else

sound<='0';

hh:

="1001";

ll:

="1001";

endif;

endif;

h<=hh;

l<=ll;

endprocess;

endcount_arc;

7.模块DISP

Libraryieee;

Useieee.std_logic_1164.all;

Entitydispis

Port(d:

instd_logic_vector(3downto0);

Q:

outstd_logic_vector(6downto0));

Enddisp;

Architecturedisp_arcofdispis

Begin

Process(d)

Begin

Casedis

When”0000”=>q<=”0111111”;

When”0001”=>q<=”0000110”;

When”0010”=>q<=”1011011”;

When”0011”=>q<=”1001111”;

When”0100”=>q<=”1100110”;

When”0101”=>q<=”1101101”;

When”0110”=>q<=”1111101”;

When”0111”=>q<=”0100111”;

When”1000”=>q<=”1111111”;

When”1001”=>q<=”1101111”;

Whenothers=>q<=”0000000”;

Endcase;

Endprocess;

Enddisp_arc;

 

目录

1总论1

1.1项目概况1

1.2建设单位概况3

1.3项目提出的理由与过程3

1.4可行性研究报告编制依据4

1.5可行性研究报告编制原则4

1.

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1