课程设计Word下载.docx
《课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《课程设计Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
序号
评价项目
指标(优秀)
满分
评分
1
选题难度
选题难度较高,或者对原题目进行了相当程度的改进。
10
2
工作量、工作态度和出勤率
工作量饱满,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。
3
课程设计质量
按期圆满的完成了规定的任务,方案设计合理,思考问题全面,系统功能完善。
40
4
报告质量
问题论述思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
30
5
回答问题
在进行课程设计程序系统检查时,能正确回答指导教师所提出的问题。
6
创新(加分项)
工作中有创新意识,对前人工作有改进或有应用价值。
在进行系统检查时能对创新性进行说明,并在报告中有相应的论述。
+5
总分
评语:
指导教师:
2012年6月10
摘要
介绍EDA技术的特点以及设计流程,强调EDA仿真技术在现代电子系统的重要地位及作用。
以MAX+PLUSII为平台,采用自顶向下分层次、模块化的设计方法,设计了一个可以设置初始时间和清零的电子时钟控制电路,从中可体现出数字系统的硬件设计向软件化方向发展的新思路。
EDA技术在电子信息,通信,自动控制用计算机等领域的重要性日益突出。
作为一个学习通信工程专业的学生,我们必须不断的了解更多的新产品信息,这就更加要求我们对EDA有个全面认识。
本程序设计的是基于VHDL的数字时钟,采用EDA作为开发工具,VHDL语言为硬件描述语言,QUARTUSII作为程序的运行平台,所开发的程序经过调试运行,波形仿真验证,初步实现了设计目标。
关键词:
EDA技术;
设计;
AHDL语言
目 录
第1章概述1
1.1EDA的概念1
1.2EDA的工作平台2
第2章数字钟的系统分析3
2.1设计目的3
2.2功能说明3
2.3实验原理3
2.4系统硬件4
第3章数字钟的底层电路设计5
3.1设计规划5
3.2设计说明5
3.3底层电路程序6
第4章数字钟的顶层文件设计13
4.1设计说明13
4.2顶层文件程序13
第5章数字钟的测试与运行17
5.1数字钟的编译与仿真17
5.2数字钟的适配与测试20
结论22
参考文献23
第1章概述
1.1EDA的概念
EDA(电子线路设计座自动化)是以计算机为工作平台、以硬件描述语言(AHDL)为设计语言、以可编程器件(CPLD/FPGA)为实验载体、以ASIC/SOC芯片为目标器件、进行必要的元件建模和系统仿真的电子产品自动化设计过程。
EDA源于计算机辅助设计,计算机辅助制造、计算机辅助测试和计算机辅助工程。
利用EDA工具,电子设计师从概念、算法、协议开始设计电子系统,从电路设计,性能分析直到PCB版图生成的全过程均可在计算机上自动完成。
EDA代表了当今电子设计技术的最新发展方向,其基本特征是设计人员以计算机为工具,按照自顶向下的设计方法,对整个系统进行方案设计和功能划分,由硬件描述语言完成系统行为级设计,利用先进的开发工具自动完成逻辑编译、化简、分割、综合、优化、布局布线、仿真及特定目标芯片的适配编译和编程下载,这被称为数字逻辑电路的高层次设计方法。
EDA技术的主要特征
作为现代电子系统设计的主导技术,EDA具有几个明显特征:
1.用软件设计的方法来设计硬件
硬件系统的转换是由有关的开发软件自动完成的,设计输入可以是原理图或AHDL语言,通过软件设计方式的测试,实现对特定功能硬件电路的设计,而硬件设计的修改工作也如同修改软件程序一样快捷方便,设计的整个过程几乎不涉及任何硬件,可操作性、产品互换性强。
2.基于芯片的设计方法
EDA设计方法又称为基于芯片的设计方法,集成化程度更高,可实现片上系统集成,进行更加复杂的电路芯片化设计和专用集成电路设计,使产品体积小、功耗低、可靠性高;
可在系统编程或现场编程,使器件编程、重构、修改简单便利,可实现在线升级;
可进行各种仿真,开发周期短,设计成本低,设计灵活性高。
3.自动化程度高
EDA技术根据设计输入文件,将电子产品从电路功能仿真、性能分析、优化设计到结果测试的全过程在计算机上自动处理完成,自动生成目标系统,使设计人员不必学习许多深入的专业知识,也可免除许多推导运算即可获得优化的设计成果,设计自动化程度高,减轻了设计人员的工作量,开发效率高。
4.自动进行产品直面设计
EDA技术根据设计输入文件(HDL或电路原理图),自动地进行逻辑编译、化简、综合、仿真、优化、布局、布线、适配以及下载编程以生成目标系统,即将电子产品从电路功能仿真、性能分析、优化设计到结果测试的全过程在计算机上自动处理完成。
1.2EDA的工作平台
1.2.1EDA硬件工作平台
1.计算机。
2.EDA实验开发系统:
EDA-V。
1.2.2EDA的软件工作平台
EDA工具软件可大致可分为芯片设计辅助软件、可编程芯片辅助设计软件、系统设计辅助软件等三类。
目前进入我国并具有广泛影响的EDA软件是系统设计软件辅助类和可编程芯片辅助设计软件:
Protel、AltiumDesigner、PSPICE、multiSIM10(原EWB的最新版本)、OrCAD、PCAD、LSIIogic、MicroSim、ISE、modelsim、Matlab等等。
这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同时还可以进行PCB自动布局布线,可输出多种网表文件与第三方软件接口。
按主要功能或主要应用场合,分为电路设计与仿真工具、PCB设计软件、IC设计软件、PLD设计工具及其它EDA软件
第2章数字钟的系统分析
2.1设计目的
1.掌握多位计数器相连的设计方法。
2.掌握十进制,六进制,二十四进制计数器的设计方法。
3.继续巩固多位共阴极扫描显示数码管的驱动,及编码。
4.掌握扬声器的驱动。
5.LED灯的花样显示。
6.掌握CPLD技术的层次化设计方法。
2.2功能说明
2.具有清零,调节小时、分钟功能。
3.具有整点报时功能,整点报时的同时LED灯花样显示。
2.3实验原理
在同一EPLD芯片EPF10K10上集成了如下电路模块:
1.时钟计数:
秒——60进制BCD码计数;
分——60进制BCDD码计数;
时——24进制BCDD码计数;
同时整个计数器有清零,调分,调时功能。
在接近整数时间能提供报时信号。
2.具有驱动8位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出。
编码和扫描可参照“实验四”。
3.扬生器在整点时有报时驱动信号产生。
4.LED灯按个人口味在整点时有花样显示信号产生。
2.4系统硬件
1.主芯片EPF10K10LC84-4。
2.8个LED灯。
3.扬声器。
4.8位八段扫描共阴级数码显示管。
5.三个按键开关(清零,调小时,调分钟)。
第3章数字钟的底层电路设计
3.1设计规划
该数字钟可以实现3个功能:
计时功能、整点报时功能和重置时间功能,因此有3个子模块:
计时、报时(alarm1)、重置时间(setmin1、sethour1)。
其中计时模块有3部分构成:
秒计时器(second1)、分计时器(minute1)、时计时器(hour1)。
1.秒计数模块:
秒计数,在频率为1HZ的时钟下以60次为循环计数,并产生进位信号影响分计数。
2.分计数模块:
分计数,在秒进位信号为高电平时,计数一次,同样以60次为一个循环计数,同时产生分进位信号影响时计数。
3.时计数模块:
时计数,在分进位信号为高电平时,计数一次,以24次为一个循环计数。
4.时间显示模块:
通过选中不同的数码管,同时进行一定频率的扫描显示时,分,秒。
5.时间设置模块:
设置调试使能端,可以调时,分。
基本功能是在使能端为高电平时,可以使时和分循环计数;
6.整点报时模块:
在秒计数到50秒时,同时分计数到59分开始,丰鸣器产生每个2秒的鸣叫(500HZ),到整点是产生750HZ的鸣叫。
7.闹钟模块:
在设定闹钟闹铃时间后,当闹钟使能端有效时,可在闹铃时间闹铃,并有彩灯显示。
3.2设计说明
首先分析数字时钟,得出进位法则大体相同,故所得时分秒进位方式语法基本相同,因此可以将时分秒定义成六位输出端口,即分别将时分秒定义为3个component,分别给予设计。
3.3底层电路程序
3.3.1秒计时器(VHDL语言编译)
其代码如下:
(VHDL语言):
LIBRARYieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYsecondIS
PORT(
clk,reset,setmin:
INSTD_LOGIC;
enmin:
OUTSTD_LOGIC;
daout:
outstd_logic_vector(6downto0));
ENDentitysecond;
ARCHITECTUREfunOFsecondIS
SIGNALcount:
STD_LOGIC_VECTOR(6downto0);
SIGNALenmin_1,enmin_2:
STD_LOGIC;
BEGIN
daout<
=count;
enmin_2<
=(setminandclk);
enmin<
=(enmin_1orenmin_2);
process(clk,reset,setmin)
begin
if(reset='
0'
)thencount<
="
0000000"
;
elsif(clk'
eventandclk='
1'
)then
if(count(3downto0)="
1001"
if(count<
16#60#)then
if(count="
1011001"
enmin_1<
='
count<
else
=count+7;
endif;
elsif(count<
=count+1;
after100ns;
endprocess;
endfun;
秒计时器实际上是一个60进制的计数器,它从时钟脉冲接受脉冲信号,每当一个脉冲信号来时,秒就自动加1,所以,输入的时钟信号应该是的频率应该是1hz,当秒计满60时,发出一个脉冲信号给分组件,再将本身清零。
这样,每计满60s,分钟就加1,正好按着正常的时间规律计时。
3.3.2分计时器(VHDL语言编译)
其代码(VHDL语言)如下:
ENTITYminuteIS
clk,clk1,reset,sethour:
enhour:
ENDentityminute;
ARCHITECTUREfunOFminuteIS
SIGNALenhour_1,enhour_2:
enhour_2<
=(sethourandclk1);
enhour<
=(enhour_1orenhour_2);
process(clk,reset,sethour)
enhour_1<
ELSE
after100ns;
ENDfun;
分计时器也是一个60进制的计数器,它从秒计时器的脉冲输出端接受脉冲信号。
每当一个脉冲信号来时,分就自动加1,当分计满60时,发出一个脉冲信号给时组件,再将本身清零。
这样,每计满60MIN,小时就加1,正好按着正常的时间规律计时。
该模块还能对分进行数字调整,并可以将其全部清零。
3.3.3时计时器(VHDL语言)
代码如下:
ENTITYhourIS
clk,reset:
outstd_logic_vector(5downto0));
ENDentityhour;
ARCHITECTUREfunOFhourIS
STD_LOGIC_VECTOR(5downto0);
process(clk,reset)
000000"
if(count(3downto0)="
=16#23#)then
16#23#)then
ENDfun;
时计时器是一个24进制的计数器,它从分组件的脉冲信号输出端接受脉冲信号,每当一个脉冲信号来时,时就自动加1,并且输出个信号给时组件,直到计满24,再将本身清零。
该组件还能对时进行数字调整,并可以将其全部清零。
3.3.4时间显示Deled(VHDL语言)
ENTITYdeledIS
PORT(num:
INstd_logic_vector(3downto0);
led:
OUTstd_logic_vector(6downto0));
enddeled;
ARCHITECTUREfunOFdeledIS
led<
1111110"
whennum="
0000"
"
0110000"
0001"
1101101"
0010"
1111001"
0011"
0110011"
0100"
1011011"
0101"
1011111"
0110"
1110000"
0111"
1111111"
1000"
1111011"
1110111"
1010"
0011111"
1011"
1001110"
1100"
0111101"
1101"
1001111"
1110"
1000111"
1111"
Deled模块是一个简单的电路,它的功能将时、分、秒三个组件中所计的数编码后,能对应在七段数码管山显示成数字形式。
3.3.5报时模块alert(VHDL语言)
ENTITYalertIS
clk:
dain:
INSTD_LOGIC_VECTOR(6DOWNTO0);
speak:
lamp:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDalert;
ARCHITECTUREfunOFalertIS
signalcoun:
std_logic_vector(1downto0);
signalcount1:
speaker:
process(clk)
speak<
=count1
(1);
if(clk'
if(dain="
if(count1>
10"
count1<
00"
=count1+1;
endprocessspeaker;
lamper:
if(rising_edge(clk))then
if(coun<
if(coun="
lamp<
001"
elsif(coun="
01"
010"
100"
coun<
=coun+1;
endprocesslamper;
报时模块也是个简单的程序,它的功能是:
当每满一个小时时,有该组件输出一个脉冲信号给试验箱上的喇叭,喇叭会相应其信号,能持续发出一段蜂鸣声,从而达到报时的目的。
3.3.6译码模块seltime(VHDL语言)
useieee.std_logic_arith.all;
ENTITYseltimeIS
clk1,reset:
sec,min:
INSTD_LOGIC_VECTOR(6downto0);
hour:
instd_logic_vector(5downto0);
OUTSTD_LOGIC_vector(3downto0);
dp:
OUTstd_LOGIC;
sel:
outstd_logic_vector(2downto0));
ENDseltime;
ARCHITECTUREfunOFseltimeIS
STD_LOGIC_vector(2downto0);
sel<
process(clk1,reset)
000"
elsif(clk1'
eventandclk1='
if(count>
101"
casecountis
when"
=>
=sec(3downto0);
dp<
daout(3)<
daout(2downto0)<
=sec(6downto4);
=min(3downto0);
011"
=min(6downto4);
=hour(3downto0);
whenothers=>
daout(3downto2)<
daout(1downto0)<
=hour(5downto4);
endcase;
endfun;
译码模块时时钟显示的最重要的部件,它的功能时将时、分、秒共六位译码输出显示在六位的led显示器上。
它的时