智力竞赛抢答器设计说明书Word格式.docx
《智力竞赛抢答器设计说明书Word格式.docx》由会员分享,可在线阅读,更多相关《智力竞赛抢答器设计说明书Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
本次课程设计的主要目的是在QuartusⅡ的开发平台上,用VHDL语言描述抢答器的功能,经过编译,功能仿真,下载和硬件测试等过程实现抢答器的功能。
本次课程设计的主要目的是使同学们深入的了解EDA的设计流程,VHDL语言的语言规则,掌握实验中常见的的问题和解决的方法和应对措施。
随着计算机技术和集成电路技术的发展,现代电子与电工设计,已经步入了电子设计自动化(EDA)的时代,采用虚拟仿真的手段对电子产品进行前期工作的调试,已成为一种发展的必然趋势。
通过对实际电子线路的仿真分析,从而提高对电路的分析、设计和创新能力。
1相关软件的介绍
1.1EDA技术的简介
随着电子技术和计算机技术的飞速发展,电子线路的设计工作也日益显得重要。
为了克服上述困难,加拿大InteractiveImageTechnologies公司推出的基于Windows95/98/NT操作系统的EDA软件(ElectronicsWorkbench“电子工作台”,EWB)。
他可以将不同类型的电路组合成混合电路进行仿真。
与目前流行的电路仿真软件相比较,EWB具有界面直观、操作方便等优点。
他改变了有些电路仿真软件输入电路采用文本方式的不便之处,该软件在创建电路、选用元器件的测试仪器等均可以直接从屏幕图形中选取,而且测试仪器的图形与实物外形基本相似,从而大大提高了电子设计工作的效率。
目前有多种EDA工具支持采用VHDL进行电路的综合﹑仿真以及实现。
一些可编程器件生产厂商将使用VHDL进行电路设计所需的多种EDA工具集成为统一的开发平台提供给用户,进行针对本公司可编程器件产品的开发,从而是整个设计流程更加简洁和易于使用。
目前比较常见的是Altera公司的QuartusⅡ开发平台和Xilinx公司的ISE开发平台。
这些平台中使用的综合工具盒仿真工具通常由专业的EDA厂商提供,而这些EDA厂商除了为这些开发平台提供量身定制的工具外,还推出了具有标准接口的专业设计工具。
如MentorCraphics公司的LeonardoSpectrum(综合工具),Synopsis公司的DesignCompiler(综合工具)以及ModelTechnology公司的ModelSim(仿真工具)等。
此外,从另一角度来看,随着计算机技术和集成电路技术的发展,现代电子与电工设计,已经步入了电子设计自动化(EDA)的时代,采用虚拟仿真的手段对电子产品进行前期工作的调试,已成为一种发展的必然趋势。
1.2VHDL语言的简介
VHD的英全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
VHDL主要用于描述数字系统的结构行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。
归纳起来,VHDL语言主要具有以下优点:
一是VHDL语言功能强大,设计方式多样。
二是VHDL语言具有强大的硬件描述能力。
VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路。
VHDL语言的强大描述能力还体现在它具有丰富的数据类型。
VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。
三是VHDL语言具有很强的移植能力。
当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。
五是VHDL语言程序易于共享和复用。
VHDL语言采用基于库(library)的设计方法。
在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。
这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。
由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。
1.3QuartusⅡ软件的简介
QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;
支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
2整体的设计思路
2.1系统设计要求
(1)设计一个四组(人)参加的智力竞赛抢答计时器,其具有四路抢答输入,主持人按下复位键后,系统复位并进入抢答状态;
(2)当某组首先按下抢答键后,该路生成抢答信号,竞赛抢答器能够设别最先抢答的信号,锁定该信号,同时扬声器响起,在数码管上显示参赛小组的组号;
(3)主持人对抢答结果进行确认,给出倒计时计数允许信号,开始回答问题,计时显示器从初始值开始以秒为单位倒计时,计数至0时,停止计数,扬声器发出超时报警信号,以中止继续回答问题;
(4)当主持人给出倒计时计数禁止信号时,扬声器停止鸣叫;
(5)参赛者在规定时间内回答完问题,主持人给出倒计时计数禁止信号,以免扬声器鸣叫,按下复位键,又可开始新一轮的抢答。
2.2系统设计方案
根据系统设计要求,系统设计采用自顶向下的设计方法,顶层设计采用原理图设计方法,它由抢答器鉴别模块,抢答器计时模块,抢答器计分模块三部分构成。
系统的整体设计原理图如图2-1所示。
图2-1系统的整体设计原理图
抢答鉴别模块的主要功能是:
鉴别出抢答的组别并将组别号在显示器上面进行显示。
抢答计时模块的主要功能是:
主持人给出倒计时信号以后,计时器开始倒计时计数,当计数到0的是时候,停止计数。
抢答计分模块的主要功能是:
主持人判断出结果后,对抢到题的组别通过ADD进行加分,答对一题加一分。
各个模块功能的实现主要通过编写VHDL代码,通过编译和综合,仿真,下载,布局布线后实现。
系统的输入信号有:
允许开始抢答的信号STA,各组的抢答信号A,B,C,D,计分复位信号RST,加分信号ADD,系统时钟信号CLK,计时预置信号LDN,计时预置信号EN,计时预置数据调整信号TA和TB。
系统的输出信号有:
允许开始抢答的指示灯STATE,四个组别抢答成功与否的指示灯控制信号A1,B1,C1,D1,计时显示控制信号QA和QB,抢答成功组别显示信号STATES和计时到0时的超时报警信号WARN.
系统的工作过程为:
在初始状态的时候,主持人可以对答题的时间进行设置。
首先当主持人说抢答开始的时候,按下计时使能信号EN。
A,B,C,D四组开始抢答。
A,B,C,D四组中某一组睡最先按抢答器,则该组的指示灯将点亮,同时显示器也将显示出抢答成功者的组别。
接下来主持人宣布开始回答,同时倒计时开始计时,抢答者开始回答问题。
若在规定的时间内回答完毕,则倒计时停止计时,如果回答正确,主持人可以给抢答成功的组别加分,最终的成绩将显示在显示器上面。
完成第一轮的抢答后,重新开始抢答,重复上述的步骤。
3单元电路设计
3.1鉴别模块设计
鉴别模块的输入信号有:
复位信号RST,允许抢答的信号STA,各组的抢答信号A,B,C,D,复位信号RST。
输出信号有四个组别抢答成功与否的指示信号A1,B1,C1,D1,允许开始抢答的信号STATE,以及显示组别的信号STATES。
鉴别模块的工作方式为:
当主持人喊到开始抢答时,同时按下允许抢答信号STA,此时允许开始抢答的信号指示灯亮,当各组别抢答结束后,最先抢答的组别面前的信号指示灯亮,同时允许开始抢答的指示灭。
这个时候显示屏上会显示最先抢答的组别号。
鉴别模块的原理图如图3-1所示。
图3-1鉴别模块的原理图
抢答器鉴别模块的仿真图如图3-2所示:
图3-2抢答器鉴别模块的仿真图
从图中可以看出,当复位信号RST有效时,整个系统处于初始的状态。
当抢答允许信号STA出现上升沿之后,与之对应的允许抢答指示灯信号STATE出现高电平,A,B,C,D的抢答信号有效,并且谁最出现上升沿,那么和它对应的指示灯亮一下与此同时允许抢答指示灯灭,同时显示出组别号。
在本次仿真中组别1最先抢答因此显示组别号的STATES变为0001。
3.2计时模块的设计
抢答器计时模块的输入信号有:
复位信号CLR,系统时钟信号CLK,计时预置控制信号LDN,计时使能信号EN,计时预置数据调整信号TA和TB。
输出信号有QA,QB和警报端WARN。
计时模块的工作方式为:
主持人可以提前对倒计时的时间进行设置,具体步骤是先将计时预置控制信号LDN置1,通过调整TA和TB上升沿的次数对倒计时的时间进行设置。
其中TA控制个位的数字,TB控制十位的数字。
当它们有上升沿到来时对应的位数分别减1。
其中计时的最长时间为59秒。
对倒计时时间的设定应有相关人员提前设定好。
当主持人允许最先抢答的组别进行答题时,同时使得由EN控制的开关拨到低电平,计时开始。
当选手在规定的时间内就已经答完题的话,由主持人将开关拨到高电平,计时结束。
当选手答题的时间超过规定的时间时,系统发出警报。
鉴别模块的原理图如图3-3所示:
图3-3抢答器计时模块的原理图
抢答器计时模块的仿真图如图3-4所示:
图3-4计时模块的仿真图
从图中可以看出设计的抢答器具有对倒计时时间控制的功能。
已知计时时间最长为59秒。
当计时控制信号LDN为高电平的时候,通过调整TA和TB出现上升沿的次数对倒计时的时间进行设置。
图中TA和TB分别出现一次上升沿,所以与之对应的QA和QB的初始值分别变成了1000和0100,也就是计时是从48秒开始的。
当主持人按下计时使能信号EN并且使之为低电平的时候,计时开始。
当QA和QB同时为0的时候计时结束,此时报警信号WARN出现高电平。
3.3计分模块的设计
抢答器计分模块的输入信号有:
复位信号RST;
计分选择信号CHOSE,用来选择家人的组别;
加分信号ADD,输出信号有DIG1,DIG2,DIG3,DIG4,分别用来计各组的当前分数。
计分模块的工作方式为:
当选手答完题后主持人判断正误,当选手回答正确的时,此时选手的编号已经被锁存。
主持人按下加分信号ADD,答对一题加一分。
选手的初始分值为10分。
最后选手的分数在显示器上显示。
抢答器计分模块的如图3-5所示:
图3-5计分模块的原理
计分模块的仿真图如图3-6所示:
图3-6计分模块的仿真图
从图中可以看出当选中组别后可以控制ADD的上升沿来对相应地组别进行加分。
在图中选中了第三组,ADD上升沿出现了两次,所以DIG3显示出第三组当前的分数为12。
4试验箱下载验证
4.1试验箱的型号选择
为了验证程序的正确性除了软件仿真外,还要进行硬件的测试,这样才能保证实现所需要的功能。
本次课程设计选用的实验箱型号为CycloneⅢ系列的EP3C40Q240C8芯片。
4.2引脚锁定
当编译和仿真都做完的时侯要将对应的管脚锁定。
具体的管脚锁定对应关系如图4-1所示:
图4-1管脚锁定的对应图
4.3编程下载和硬件测试
仿真完成后将对应的管脚锁定,连接好相对应的硬件电路。
具体的操作方法是:
将输入信号端口A,B,C,D分别连接到试验箱的按键1,2,3,4上面;
复位信号端口连接到开关7上;
允许开始抢答的信号STA端口连接到按键5上面;
计时使能信号EN端口连接到开关6上面;
脉冲信号端口CLK接到频率为1Hz的脉冲上面;
计时预置数信号端口TA和TB分别接到按键8和按键7上;
将加分信号端口ADD接到开关4上面。
将输出的信号端口A1,B1,C1,D1接到灯1,2,3,4上面;
将显示组别的信号STATES接到数码管上面;
将允许抢答信号端口STATE接到灯8上;
计时输出信号端口QA和QB分别接到数码管上面;
警报信号端口WARN接到灯7上面;
计分显示端口DIG1,DIG2,DIG3,DIG4分别接到数码管上。
硬件的连线都连接好后就可以进行下载。
将试验箱连接到电脑上,将编写好的无误的程序下载到试验就可以对硬件进行测试了。
5心得体会
通过此次课程设计,加强了我们动手,思考和解决问题的能力。
在这次课程设计中遇到了各种各样的问题,经常遇到这样那样的情况,也在设计的过程中发现了自己的不足之处,对以前所学的知识理解的不够深刻,掌握的不够牢固,因此在这上面耗费了很多时间。
对于以后的学习我一定要认真对待,不能再像这次一样了。
我体会到了学习和实践的不同,学习只需要理解,而实践则需要将理解升华,将知识系统的应用。
此次课程设计主是运用本学期所学到的EDA技术知识来设计一个符合要求的智力抢答控制系统。
要求我们用VHDL语言对电路的功能进行描述,代码编写完之后,要求我们能够进行仿真,并进行下载和硬件测试。
在这个过程中我遇到了很多问题,特别是将程序下载到试验箱之后,错误连连,后来通过查阅资料和老师同学的帮助下最终解决了问题,得到了课程设计最后要求的结果。
经过这一周的努力,在老师和同学的帮助下,我完成了设计任务。
在设计过程中,我学到了很多新东西。
我一直坚信,只要我努力去做,就能一定能做好。
这次课设最终顺利完成了,在此次课设中遇到了很多专业的知识问题,最后在老师的指导和同学的合作下,终于迎刃而解。
同时,我们也学到了老师身上的很多实用的知识,在此我表示衷心的感谢!
同时,对给过我帮助的同学和各位指导老师再次表示感谢!
参考文献
[1]沈明山. EDA技术及可编程器件应用实训. 科学出版社
[2]曾繁泰,陈美金. VHDL程序设计. 北京:
清华大学出版社
[3]谭会生,张昌凡. EDA技术及应用. 西安:
西安电子科技大学出版社
[4]李国丽,朱维勇. EDA与数字系统设计. 北京:
机械工业出版社
[5]苏光大. 图像并行处理技术. 北京:
[6]VokneiA.Pedroni.《VHDL数字电路设计教程》.电子工业出版社,2008.5
[7]潘松,黄继业.《EDA技术实用教程》(第二版).科学出版社,2005.2
[8]焦素敏.《EDA应用技术》.清华大学出版社,2002.4
附录
实现智能四路抢答器的全部程序
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------JB---------------------------------------------------------
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYARTIS
PORT(STA,RST,A,B,C,D:
INSTD_LOGIC;
STATE,A1,B1,C1,D1:
OUTSTD_LOGIC;
STATES:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));
ENDART;
ARCHITECTUREQDQOFARTIS
CONSTANTW1:
STD_LOGIC_VECTOR:
="
0001"
;
CONSTANTW2:
0010"
CONSTANTW3:
0011"
CONSTANTW4:
0100"
SIGNALS_STATE:
STD_LOGIC;
BEGIN
STATE<
=S_STATE;
PROCESS(A,B,C,D,RST,STA)
BEGIN
IF(STA='
1'
)THEN
S_STATE<
='
ENDIF;
IF(RST='
A1<
0'
B1<
C1<
D1<
STATES<
0000"
ELSIF(A='
ANDB='
ANDC='
ANDD='
)THEN
=W1;
S_STATE<
=W2;
=W3;
ELSIF(A='
=W4;
ENDPROCESS;
ENDQDQ;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------JS---------------------------------------------------------
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJSIS
PORT(CLR,LDN,EN,CLK:
TA,TB:
QA:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
QB:
WARN:
OUTSTD_LOGIC);
ENDJS;
ARCHITECTUREQSQOFJSIS
SIGNALDA:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALDB:
PROCESS(TA,CLR)IS
IF(CLR='
)THEN
DA<
1001"
ELSIF(TA'
EVENTANDTA='
IF(LDN='
IF(DA="
ELSE
=DA-1;
PROCESS(TB,CLR)IS
D