EDA设计任务书.docx
- 文档编号:17891195
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:21
- 大小:153.45KB
EDA设计任务书.docx
《EDA设计任务书.docx》由会员分享,可在线阅读,更多相关《EDA设计任务书.docx(21页珍藏版)》请在冰点文库上搜索。
EDA设计任务书
课程设计任务书
学生姓名:
专业班级:
电子科学与技术1203班
指导教师:
工作单位:
信息工程学院
题目:
六人抢答器设计
初始条件:
可用仪器:
PC机(QuartusII软件)硬件:
EDA-IV型实验箱。
要求完成的主要任务:
设计任务
抢答台数为6,具有抢答开始后20秒倒计时,20秒倒计时后六人抢答显示超时,并报警。
能显示超前抢答台号并显示犯规报警。
系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。
时间安排:
1.14
课程设计任务布置、选题、查阅资料
1.15~1.16
设计,软件编程、仿真和调试
1.17
撰写课程设计报告
1.18
设计的硬件调试
1.19
实验室检查设计成果,现场演示硬件实物、提交设计说明书及答辩
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
随着科技的不断更新和发展,比赛中抢答器也广泛的使用,本次课程设计是在EDA开发平台QUARTUSⅡ14.0上利用VHDL语言设计六人抢答器电路。
电路中设有六个抢答键,可供六人同时抢答,并且有一个主持人的复位键;利用一个二十进制计数器,将其输入频率设定为一赫兹,成功实现了二十秒倒计时的功能;当有选手抢答成功后会有蜂鸣器的提示;利用数码管作为倒计时显示和抢答选手号码的显示。
本文详细介绍了QuartusⅡ的使用方法和基于QuartusⅡ的六人抢答器的设计原理方法。
并且分模块写了详细的匹配试验箱的程序。
本次课程设计采用VHDL硬件描述语言设计实现六人抢答器功能,主要实现常规的竞赛式抢答报警功能。
关键词:
QUARTUSⅡ,六人抢答器,VHDL,模块设计
绪论
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
EDA工具软件可大致可分为芯片设计辅助软件、可编程芯片辅助设计软件、系统设计辅助软件等三类。
目前进入我国并具有广泛影响的EDA软件是系统设计软件辅助类和可编程芯片辅助设计软件:
Protel、PSPICE、multiSIM10(原EWB的最新版本)、OrCAD、PCAD、LSIIogic、MicroSim、ISE、modelsim、Matlab等等。
这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,可输出多种网表文件与第三方软件接口。
本课程设计是采用VHDL硬件描述语言设计实现六人抢答器功能。
并采用QuartusⅡ软件进行对设计语言的时序仿真以及原理图的生成。
QuartusⅡ软件是由Altera公司推出的新一代CPLD/FPGA开发软件。
它允许第三方EDIF文件输入,并提供了很多EDA软件接口,QuartusⅡ支持层次化设计,可以在一个新的编辑输入环境中对不同的输入方式完成的模块进行调用,从而解决了原理图与VHDL混合输入设计的问题。
现在QuartusⅡ软件已经可以开发Altera公司以前推出的大部分器件以及新推出的器件。
根据时序仿真结果来判断所写程序是否符合设计要求,最后通过对其硬件语言进行原理图的生成,就此实现用VHD语言设计六人抢答器功能。
六人抢答器
1VHDL语言和QUARTUSⅡ软件的发展及介绍
1.1VHDL语言的发展
VHDL诞生于1982年。
随后各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本[1],(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
VHDL的英文全写是:
VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptiongLanguage.翻译成中文就是超高速集成电路硬件描述语言[2]。
因此它的应用主要是应用在数字电路的设计中。
VHDL的语言功能比较强大,并且应用灵活,支持广泛、易于修改,并且具有强大的系统硬件描述能力。
独立于器件的设计、与工艺无关。
VHDL的语言设计比较灵活也方便编程易懂。
1.2QUARTUSⅡ软件的简单介绍
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、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设计的目的及主要任务
2.1.1设计的目的
通过本次课程设计熟悉了QUARTUSⅡ软件的使用,建立新的工程文件以及软件的仿真和将程序下载到试验箱上的引脚配置以及实物的显示。
掌握了VHDL的语言的编程语句,以及VHDL语言的结构,可以独立利用语言编程实现程序。
通过对六人抢答器的设计,掌握到按键模块,显示模块和报警超时以及犯规模块的设计,掌握相关语言的编程。
④通过对不同模块的编写并且设计顶层文件,掌握EDA中不同模块的的组合的方式以及将VHDL语言转化为原理图,顶层文件用原理图组合最终合成,设计引脚和实验板相对应最终使现象出现。
2.1.2设计任务及主要技术指标
抢答台数为6
具有抢答开始后20秒倒计时,20秒倒计时后六人抢答显示超时,并报警。
能显示超前抢答台号并显示犯规报警。
系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。
3设计思路及单元模块设计
3.1设计整体思路
六人抢答器主要利用分模块的VHDL语言对程序的描写,主要用到数码管的显示原理、倒计时的原理、蜂鸣器设计、对信号的锁存。
在倒计时语言中要用到分频来实现倒计时,三个模块分别为倒计时显示模块、蜂鸣器报警模块以及选手抢答模块。
程序设计思路首先进行二十秒倒计时,倒计时完成后如果有抢答选手按键将显示选手按键并且相对应的选手的灯亮,同时将信号锁存,是其他按键选手无法进行抢答。
如果倒计时达到20秒,仍无选手按键则蜂鸣器响,选手抢答无效。
整体设计框图如下所示:
通过以上的整体模块,将其步骤依次写入程序中分为不同的模块,将模块建在同一个程序下,在设计顶层文件最终组合,即可。
采用自顶向下的设计。
提出设计说明书。
即用自然语言表达系统项目的功能特点和技术参数等。
建立VHDL行为模型。
这一步是将设计说明书转化为VHDL行为模型,在此行为模型的建立基础上进行整体仿真。
VHDL行为仿真。
这一阶段是利用VHDL仿真器对顶层文件的行为模型进行仿真测试,检查模拟结果,继而进行修改和完善。
VHDL-RTL级建模。
前段功能仿真。
逻辑综合。
测试向量生成。
功能仿真。
结构综合。
门级时序仿真。
这一级中将使用仿真器或仍然使用VHDL仿真器进行门级时序仿真。
硬件测试,这是对最后完成的硬件系统进行检查和测试。
3.2单元模块的设计原理
通过以上整体设计可见,本次程序的书写将其分为三个模块再有一个顶层模块,三个模块分别为倒计时显示模块、抢答显示模块、报警模块。
以下将分模块具体介绍其原理。
3.2.1二十秒倒计时显示模块
首先建立一个大工程,在其中建立多个小的程序,最后设计顶层文件,进行硬件测试。
二十四秒倒计时利用两个数码管显示出来,并且用wei0和wei1来表示两个数码管,此实验箱上数码管只有段选没有位选需要一一对引脚定义,并且程序中用到分频来控制数码管显示数字的快慢,并且通过赋值来控制倒计时的起始数据,利用复位键复位使抢答一轮完毕后,复位后还可以从20秒开始从新倒计时。
利用此casewei0iswhen"0000"=>seg2<="1000000";语句对数码管段选进行编程。
将倒计时显示程序转化为原理图如下所示:
图220秒倒计时显示
3.2.2抢答选手抢答模块
抢答部分利用6个选手按键以及6个Led灯以及seg3数码管的显示来,当复位键开始倒计时后按键才会起到作用否则按键抢答无效,不会报警、Led灯不会变亮、数码管无法显示。
并且当第一位选手按下键后其他选手按键均为无效。
当主持人未按倒计时键时,只要有选手抢答会显示抢答选手的号码并且报警led灯亮。
casekeyiswhen"111110"=>qout<="000001";seg3<="1111001";mid<='1';利用此语句对数码管Led灯以及报警的实现。
当检测到其中一个When语句后数码管显示后,即将不会在显示其后面的。
程序生成的原理图如下所示:
图3抢答显示报警原理图
3.2.3报警模块
在报警模块中写了20秒显示后的超时报警,以及抢答选手抢答后的报警和抢答选手抢答完后抢答按键复位后蜂鸣器停止响。
下图即为报警程序转化的原理图:
图4报警模块原理图
4整体原理图的组合顶层原理图
将由程序转化的原理图组合在一起,将其连接在一起使其可以正常进行硬件调试。
将每个模块的clk引脚按键Key[5..0]连接在一起分别接在试验箱上的脉冲和按键抢答。
将报警输出用或门连接使其实现超时和抢答报警,并且将seg接在三个数码管上,分别显示倒计时和抢答选手抢答号码。
.
图5整体原理图
5试验箱上的硬件实现检测
5.1对超时报警检测
在将程序下载到试验箱上后,拨动复位键使数码管开始倒计时,当此时无人按键,当倒计时20秒之后仍无人按键,报警器将会报警,之后抢答这将设为无效抢答。
情况如下图所示,与此同时会听到蜂鸣器报警的声音。
图6抢答超时报警显示状况
5.2抢答按键按下后的检测
当在倒计时的过程中有选手按下抢答键时,相应的数码管会变亮,并且led灯变亮,蜂鸣器响起时间锁定。
对此后再按键的选手将不予显示其号码,其试验结果实物图如下:
图7抢答选手按键显示状况
6硬件调试以及结果分析
对于本次实验主要是运用了三个模块的程序以及顶层文件的组件,对硬件的调试无要求,但对于程序的编写改正过无数次才得以实现其功能,对于数码管显示和倒计时和抢答选手出现过逻辑的错误,经改正后才得以实现正常的运行状态。
经过在试验箱上对程序以及顶层文件图的运用,可见最终效果达到要求,可以实现最终结果。
并且在引脚锁定过程中要弄清楚个引脚的作用再一一相对应,使最终结果可以正常运行。
其引脚的设定如下图,要和试验箱必须匹配。
此图只为一部分引脚锁定图
图8引脚设定
7心得体会
通过本次课设虽然过程中出现过很多错误但是学会了很多课上学不到的东西,课程设计是针对某一理论课程的要求,对学生进行综合性实践训练的实践教学环节,可以提高学生运用课程中所学的理论知识与实践紧密结合,独立地解决实际问题的能力。
在这次课程设计过程中使我从中学到许多以前在课本和课堂上所无法学到的,特别是在课程设计过程中查找资料的过程中从中学到许多以前在课本和课堂上所无法学到的并从中体会到许多的乐趣,从而丰富了自己。
因学习知识的能力和时间有限,并且此次EDA课程设计对于我们来说还只是初体验,因此在本次的课程设计过程中,掌握了软件的使用以及VHDL语言程序的编写和顶层文件的设计方法,培养了自己的独立思考能力以及查阅文献的能力可以自己在程序中寻找错误并且细心改正错误,这便是其中最大的意义。
并且学习的是一种学习能力,结果并不比过程重要。
通过这次课程设计,学到了不少知识,更重要的是培养了自己发现问题的同时能够解决问题的能力,这对以后的学习以及工作尤为重要。
最后,再次感谢老师的教导和同学们在我课设期间的帮助指导。
参考文献
[1]王锁萍.电子设计自动化教程.成都:
电子科技大学出版社,2000
[2]徐志军.CPLD/FPGA的开发与应用.北京:
电子工业出版社,2002
[3]付家才.EDA工程实践技术.北京:
化学工业出版社,2007.1
[4]汉泽西.EDA技术及其应用.北京:
北京航空航天大学出版社,2004.5
[5]李宗伯译.VHDL设计表示和综合.北京:
机械工业出版社,2002
[6]王金明.数字系统设计与VerilogHDL.北京:
电子工业出版社,2002
附录一程序
1.二十秒倒计时模块程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydaojishiis
port(clk,rst,stop:
instd_logic;输入输出端口定义
seg1:
outstd_logic_vector(6downto0);
seg2:
outstd_logic_vector(6downto0);
bell:
outstd_logic);
enddaojishi;
architecturebhvofdaojishiis
signalclk1:
std_logic;--1KHZ
signalclk2:
std_logic;--1HZ
signalwei0:
std_logic_vector(3downto0);
signalwei1:
std_logic_vector(3downto0);
signalen:
std_logic:
='0';
begin
process(clk)--1KHZ
variablemid1:
integer:
=0;
begin分频
ifrising_edge(clk)thenmid1:
=mid1+1;
ifmid1<=10000thenclk1<='0';
elsifmid1<20000thenclk1<='1';
elsemid1:
=0;
endif;
endif;
endprocess;
process(clk1)--1HZ
variablemid2:
integer:
=0;
begin
ifrising_edge(clk1)thenmid2:
=mid2+1;
ifmid2<=500thenclk2<='0';
elsifmid2<1000thenclk2<='1';
elsemid2:
=0;
endif;
endif;
endprocess;
process(clk2,rst,stop,wei0,en)
begin
ifrst='1'thenwei0<="0000";
elsifrising_edge(clk2)then
ifstop='0'then
ifen='0'then
ifwei0="0000"thenwei0<="1001";
elsewei0<=wei0-1;
endif;
elsewei0<="0000";
endif;
endif;
endif;
endprocess;
process(clk2,rst,stop,wei0,wei1,en)
begin
ifrst='1'thenwei1<="0010";en<='0';
elsifrising_edge(clk2)then
ifstop='0'then
ifen='0'then
ifwei1="0000"andwei0="0001"thenen<='1';
elsifwei0="0000"thenwei1<=wei1-1;
endif;
elsewei1<="0000";
endif;
endif;
endif;
endprocess;
process(wei0,wei1)
begin
ifwei0="0000"andwei1="0000"then
bell<=clk1;
elsebell<='0';
endif;
endprocess;
process(clk1,wei1,wei0)
begin
ifrising_edge(clk1)then
--ifsel="000"thensel<="001";
casewei1is数码管位1显示
when"0000"=>seg1<="1000000";
when"0001"=>seg1<="1111001";
when"0010"=>seg1<="0100100";
when"0011"=>seg1<="0110000";
when"0100"=>seg1<="0011001";
when"0101"=>seg1<="0010010";
when"0110"=>seg1<="0000010";
when"0111"=>seg1<="1111000";
when"1000"=>seg1<="0000000";
when"1001"=>seg1<="0010000";
whenothers=>NULL;
endcase;
--elsifsel="001"thensel<="000";
casewei0is数码管位1显示
when"0000"=>seg2<="1000000";
when"0001"=>seg2<="1111001";
when"0010"=>seg2<="0100100";
when"0011"=>seg2<="0110000";
when"0100"=>seg2<="0011001";
when"0101"=>seg2<="0010010";
when"0110"=>seg2<="0000010";
when"0111"=>seg2<="1111000";
when"1000"=>seg2<="0000000";
when"1001"=>seg2<="0010000";
whenothers=>NULL;
endcase;
endif;
endprocess;
end;
2.抢答选手的抢答程序
libraryieee;
useieee.std_logic_1164.all;
entityqiangdais
port(key:
instd_logic_vector(5downto0);
clk:
instd_logic;
rst:
instd_logic;
ring:
bufferstd_logic;
seg3:
outstd_logic_vector(6downto0);
name:
outstd_logic_vector(5downto0));
endqiangda;
architecturebhvofqiangdais
signalmid:
std_logic;
signalqout:
std_logic_vector(5downto0);
begin
process(clk,key,rst,mid)
begin
ifrst='1'thenmid<='0';qout<="ZZZZZZ";seg3<="1111111";
elsifrising_edge(clk)then数码管显示led灯亮
ifmid='0'then
casekeyis
when"111110"=>qout<="000001";seg3<="1111001";mid<='1';
when"111101"=>qout<="000010";seg3<="0100100";mid<='1';
when"111011"=>qout<="000100";seg3<="0110000";mid<='1';
when"110111"=>qout<="001000";seg3<="0011001";mid<='1';
when"101111"=>qout<="010000";seg3<="0010010";mid<='1';
when"011111"=>qout<="100000";seg3<="0000010";mid<='1';
whenothers=>null;
endcase;
endif;
endif;
name<=qout;
ring<=mid;
endprocess;
endbhv;
3.报警模块
libraryieee;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 设计 任务书