西南交通大学电子设计自动化EDA作业.docx
《西南交通大学电子设计自动化EDA作业.docx》由会员分享,可在线阅读,更多相关《西南交通大学电子设计自动化EDA作业.docx(42页珍藏版)》请在冰豆网上搜索。
西南交通大学电子设计自动化EDA作业
第1章EDA技术概述
简述EDA技术的进展历程。
EDA技术的核心内容是什么?
答:
EDA是在20世纪90年代初从运算机辅助设计(CAD:
ComputerAidedDesign)、运算机辅助制造(CAM:
ComputerAidedManufacture)、运算机辅助测试(CAT:
ComputerAidedTest)和运算机辅助工程(CAE:
ComputerAidedEngineering)的概念进展而来的。
一样把EDA技术的进展分为CAD、CAE和ESDA(ElectronicSystemDesignAutomation)这三个时期。
(1)20世纪70年代的CAD时期:
CAD是EDA技术进展的初期时期,在那个时期,人们开始利用运算机取代手工劳动。
但那时的运算机硬件功能有限,软件功能较弱,人们要紧借助运算机对所设计的电路进行一些模拟和预测,辅助进行集成电路版图编辑、印制电路板(PrintedCircuitBoard,PCB)布局布线等简单的版图绘制工作。
(2)20世纪80年代的CAE时期:
CAE是在CAD的工具慢慢完善的基础上进展起来的,尤其是人们在设计方式学、设计工具集成化方面取得了长足的进步,能够利用运算机作为单点设计工具,并成立各类设计单元库,开始用运算机将许多单点工具集成在一路利用,大大提高了工作效率。
(3)20世纪90年代的ESDA时期:
电子系统设计自动化(ESDA,ElectronicSystemDesignAutomation)时期。
随着微电子技术的进展,速度更快、容量更大、功能更强的PLD的不断推出,对数字电子系统的设计提出了更高的要求。
显现了以利用硬件描述语言、系统仿真和综合技术为特点的第三代EDA技术。
其特点是在功能壮大的EDA工具(包括系统行为级描述与结构级综合、系统仿真与测实验证、系统划分与指标分派、系统决策与文件生成等一整套设计工具)软件平台上,以系统级设计为核心,利用硬件描述语言进行系统设计,自动进行逻辑编译、仿真、优化、综合、布线、测试等工作,完成系统设计功能的硬件实现。
使得设计者从繁杂的工作中解放出来,把精力集中在系统方案的设计上,是一种高效率的现代设计方式。
20世纪90年代以来,微电子工艺有了惊人的进展,2006年工艺水平已经达到了60nm,2020年Altera公司的FPGA工艺水平已经达到了40nm。
大容量的可编程逻辑器件陆续面世,对电子设计的工具提出了更高的要求,提供了广漠的进展空间,增进了EDA技术的形成。
专门重要的是,世界各EDA公司致力推出兼容各类硬件实现方案和支持标准硬件描述语言的EDA工具软件,有效地将EDA技术推向成熟。
EDA技术的核心内容:
在功能壮大的EDA工具(包括系统行为级描述与结构级综合、系统仿真与测实验证、系统划分与指标分派、系统决策与文件生成等一整套设计工具)软件平台上,以系统级设计为核心,利用硬件描述语言进行系统设计,自动进行逻辑编译、仿真、优化、综合、布线、测试等工作,完成系统设计功能的硬件实现。
使得设计者从繁杂的工作中解放出来,把精力集中在系统方案的设计上,是一种高效率的现代设计方式。
VHDL有哪些要紧特点?
答:
(1)VHDL具有壮大的功能,覆盖面广,描述能力强。
VHDL支持门级电路的描述,也支持寄放器传输级电路的描述,还支持系统级电路的描述。
(2)VHDL有良好的可读性。
它能够被运算机同意,也容易被读者明白得。
(3)VHDL具有良好的可移植性。
作为一种已被IEEE承认的工业标准,VHDL事实上已成为通用的硬件描述语言,能够在各类不同的设计环境和系统平台中利用。
(4)利用VHDL能够延长设计的生命周期。
用VHDL描述的硬件电路与工艺无关,可不能因工艺转变而使描述过时。
与工艺有关的参数能够通过VHDL提供的属性加以描述,工艺改变时,只需要修改相应程序中的属性参数即可。
(5)VHDL支持对大规模设计的分解和已有设计的再利用。
VHDL能够描述复杂的电路系统,支持对大规模设计的分解,由多人、多项目组来一起承担和完成。
标准化的规那么和风格,为设计的再利用提供了有力的支持。
(6)VHDL有利于爱惜知识产权。
用VHDL设计的专用集成电路(ASIC),在设计文件下载到集成电路时能够采纳必然的保密方法,使其不易被破译和窃取。
第2章EDA工具软件的利用方式
利用QuartusII的MegaWizardPlug-InManager宏功能模块中的参数设置的计数器模块lpm_counter实现8位二进制数可预置的加减计数器电路,并仿真和硬件验证设计结果。
答:
(1)成立新工程,然后打开一个新的BlockDiagram/SchematicFile(模块/原理图文件);
(2)加入lpm_counter计数器元件,,设置计数器的位宽为8,并增加加减计数操纵端updown(1为加计数,0为减计数),同步预置端sload。
(3)添加输入输出管脚,然后完成原理图,如图1所示。
(4)利用功能仿真验证该8位二进制数可预置加减计数器的逻辑功能,仿真波形图如图2所示。
图1八位二进制数可预置加减计数器原理图
图2八位二进制数可预置加减计数器仿真波形图
第3章VHDL
[例]利用2输入端与非门元件,设计4输入端的与非与非电路。
答:
2输入与非门元件和需要设计的4输入与非与非电路如图3所示。
(1)设计2输入端与非门,其VHDL源程序如下:
LIBRARYIEEE;
USEENTITYnd2_1IS
PORT(a,b:
INSTD_LOGIC;
c:
OUTSTD_logic);
ENDnd2_1;
ARCHITECTUREoneOFnd2_1IS
BEGIN
c<=aNANDb;
END;
图32输入与非门元件及4输入与非与非电路原理图
(2)将设计的元件声明装入eda_Pkg程序包中,包括2输入端与非门元件的eda_Pkg程序包的VHDL源程序如下:
LIBRARYIEEE;
USEPACKAGEeda_pkgIS
Componentnd2_1--元件声明
PORT(a,b:
INSTD_LOGIC;
c:
OUTSTD_LOGIC);
ENDComponent;
ENDeda_pkg;
(3)用元件例化语句产生图3所示的4输入与非与非元件如下。
LIBRARYIEEE;
USEUSE--打开程序包
ENTITYnand41IS
PORT(a1,b1,c1,d1:
INSTD_LOGIC;
z1:
OUTSTD_LOGIC);
ENDnand41;
ARCHITECTUREtwoOFnand41IS--元件例化
SIGNALx,y:
STD_LOGIC;
BEGIN
ul:
nd2_1PORTMAP(a1,b1,x);
u2:
nd2_1PORTMAP(c1,d1,y);
u3:
nd2_1PORTMAP(x,y,z1);
ENDtwo;
(4)4输入与非与非电路功能仿真输出结果如图4所示。
图44输入与非与非电路功能仿真波形
用VHDL设计两位BCD数加法器。
答:
BCD码与二进制码不同,每一个BCD码的范围为0~9,由四位二进制数表示,它们之间的对应关系如表1所示。
表1BCD码与二进制、十进制、16进制之间的对应关系
十进制
二进制
16进制
BCD
0
0000
0
0000
1
0001
1
0001
2
0010
2
0010
3
0011
3
0011
4
0100
4
0100
5
0101
6
0101
6
0110
6
0110
7
0111
7
0111
8
1000
8
1000
9
1001
9
1001
10
1010
A
00010000
11
1011
B
00010001
12
1100
C
00010010
13
1101
D
00010011
14
1110
E
00010100
15
1111
F
00010101
BCD码加法器与一样二进制加法器的运算规那么一样,不同的是,需要对相加以后的结果进行变换,保证相加以后的结果仍然为BCD码。
实现能够分两步完成:
第一将两个BCD码依照二进制相加,然后将取得的二进制数转换为BCD码。
如以下图所示,为计算两位BCD码38加97的和的计算进程示用意。
图5两位BCD数加法器计算进程示用意
依照上图所示的计算进程示用意,编写VHDL源程序如下:
LIBRARYIEEE;
USE--IEEE库利用声明
useBCDADDER_2bitis
port(X0,X1,Y0,Y1:
INSTD_LOGIC_VECTOR(3downto0);--X一、X0、
--Y一、Y0别离为两位BCD数加法器的十位数和个位数
Z0,Z1:
OUTSTD_LOGIC_VECTOR(3downto0);--和,Z一、Z0
--别离为十位和个位
Z2:
OUTSTD_LOGIC);--求得的和的进位信号
endBCDADDER_2bit;
architectureBCDaddofBCDADDER_2bitis
signalS0,S1:
STD_LOGIC_VECTOR(4downto0);--中间信号,别离为十
--和个位的和
signalC:
STD_LOGIC;--中间信号,个位的进位信号
begin
S0<=('0'&X0)+Y0;--两个BCD数个位依照二进制相加
Z0<=S0(3downto0)+6whenS0>9
elseS0(3downto0);--把个位的和变换为BCD码
C<='1'whenS0>9else'0';--处置个位进位信号
S1<=('0'&X1)+Y1+C;--两个BCD数十位按二进制相加(含进位C)
Z1<=S1(3downto0)+6whenS1>9
elseS1(3downto0);--把十位的和变换为BCD码
Z2<='1'whenS1>9else'0';--处置两位BCD数和的进位信号
endBCDadd;
两位BCD数加法器的仿真波形如图6所示。
由图可知,该源程序实现了两位BCD数加法器功能。
图6两位BCD数加法器仿真波形
设计一个可预置数的4位二进制加计数器,将结果用两位8421BCD码输出,并用数码管显示。
实验板主频为50MHz,要求显示频率为1Hz。
答:
依照题目要求,能够把该问题分解为以下五个VHDL实体源程序片段:
①50MHz分频为1Hz;②可预置数的4位二进制加计数器;③4位二进制转换为两位8421BCD码;④二进制译码为七段数码管显示程序;⑤顶层源文件。
(1)把实验板频率50MHz分频为1Hz的源程序如下:
libraryieee;
use--IEEE库利用声明
useDE2_50MHz_div_to_1sis
GENERIC(N:
integer:
=);--设置分频系数为
port(clk:
instd_logic;--clk为50MHz时钟输入
outclk:
outstd_logic);--outclk为1s时钟信号输出
endDE2_50MHz_div_to