EDA课程综述.docx
- 文档编号:27497017
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:17
- 大小:271.83KB
EDA课程综述.docx
《EDA课程综述.docx》由会员分享,可在线阅读,更多相关《EDA课程综述.docx(17页珍藏版)》请在冰豆网上搜索。
EDA课程综述
EDA课程综述
——VHDL语言综述
课程名称在系统编程技术
任课教师周泽华
班级10级自动化
(2)班
姓名蔡刘平
学号1005073007
日期2013年5月28日
一、前言
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
VHDL(硬件描述语言)在EDA中有着至关重要的作用,它是EDA设计中的主要设计语言,有着很多软件描述语言和其他语言所不具备的优点,熟练的掌握VHDL对EDA技术的学习和运用无疑是必不可少的步骤。
下面将简单叙述一下VHDL的特点和相关的知识。
二、VHDL综述:
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
在EDA设计中硬件描述语言VHDL、VerilogHDL是主要设计语言。
1、VHDL的特点
VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。
归纳起来,VHDL语言主要具有以下优点:
(1)VHDL语言功能强大,设计方式多样
VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。
同时,它还具有多层次的电路设计描述功能。
此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。
VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。
(2)VHDL语言具有强大的硬件描述能力
VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。
同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。
VHDL语言的强大描述能力还体现在它具有丰富的数据类型。
VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。
(3)VHDL语言具有很强的移植能力
VHDL语言很强的移植能力主要体现在:
对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。
(4)VHDL语言的设计描述与器件无关
采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。
这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。
当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。
(5)VHDL语言程序易于共享和复用
VHDL语言采用基于库(library)的设计方法。
在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。
这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。
由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。
2、VHDL语法简介
2.1标识符
标识符用来定义常数、变量、信号、端口、子程序或参数的名字,由字母(A~Z,a~z)、数字(0~9)和下划线(_)字符组成。
要求:
(1)、首字符必须是字母
(2)、末字符不能为下划线
(3)、不允许出现两个连续的下划线
(4)、不区分大小写
(5)、VHDL定义的保留字(关键字),不能用作标识符
(6)、标识符字符最长可以是32个字符。
关键字:
例如:
ABS,ACCESS,AFTER,ALL,AND,ARCHITECTURE,ARRAY,ATTRIBUTE,BEGIN,BODY,BUFFER,BUS,CASE,COMPONENT,CONSTANT,DISCONNECT,DOWNTO,ELSE,ELSIF,END,ENTITY,EXIT,FILE,FOR,FUNCTION,GENERIC,GROUP,IF,INPURE,IN,INOUT,IS,LABEL,LIBRARY,LINKAGE,LOOP,MAP,MOD,NAND,NEW,NEXT,NOR,NOT,NULL,OF,ON,OPEN,OR,OTHERS,OUT,PACKAGE,POUT,PROCEDURE,PROCESS,PURE,RANGE,RECODE,REM,REPORT,RETURN,ROL,ROR,SELECT,SHARED,SIGNAL,SLA,SLL,SRA,SUBTYPE,THEN,TRANSPORT,TO,TYPE,UNAFFECTED,UNITS,UNTIL,USE,VARIABLE,WAIT,WHEN,WHILE,WITH,XOR,XNOR
2.2数据对象
(1)、常量Constant
常量是对某一常量名赋予一个固定的值,而且只能赋值一次。
通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。
语法格式:
Constant常数名:
数据类型:
=表达式
(2)、变量Variable
变量只能在进程语句、函数语句和过程语句结构中使用。
变量的赋值是直接的,非预设的,分配给变量的值立即成为当前值,变量不能表达“连线”或存储元件,不能设置传输延迟量。
变量定义语句:
Variable变量名:
数据类型:
=初始值;
变量赋值语句:
目标变量名:
=表达式;
(3)、信号Signal
信号表示逻辑门的输入或输出,类似于连接线,也可以表达存储元件的状态。
信号通常在构造体、程序包和实体中说明。
信号定义语句:
Signal信号名:
数据类型:
=初始值
信号赋值语句:
目标信号名<=表达式;
2.3数据类型
2.3.1VHDL的预定义数据类型
在VHDL标准程序包STANDARD中定义好,实际使用过程中,已自动包含进VHDL源文件中,不需要通过USE语句显式调用。
(1)布尔:
(Boolean)
TYPEBOOLEANIS(FALSE,TRUE);--取值为FALSE和TRUE,不是数值,不能运算,一般用于关系运算符
(2)位:
(Bit)
TYPEBITIS(‘0’,’1’);--取值为0和1,用于逻辑运算
(3)位矢量:
(Bit_Vector)
TYPEBIT_VECTORISARRAY(Naturalrange<>)OFBIT;--基于Bit类型的数
组,用于逻辑运算
(4)字符:
(Character)
TYPECHARACTERIS(NUL,SOH,STX,…,‘’,‘!
’,…);--通常用‘’引起来,区分大小写;
(5)字符串:
(String)
VARIABLEstring_var:
STRING(1TO7);
string_var:
=“ABCD”;--通常用“”引起来,区分大小写;
(6)整数:
(Integer)
取值范围-(231-1)~(231-1),可用32位有符号的二进制数表示
variablea:
integerrange-63to63
在实际应用中,VHDL仿真器将Integer做为有符号数处理,而VHDL综合器将Integer做为无符号数处理;
(7)实数:
(Real)
取值范围-1.0E38~+1.0E38,仅用于仿真不可综合
1.0--十进制浮点数
8#43.6#e+4--八进制浮点数
43.6E-4--十进制浮点数
(8)时间:
(Time)
物理量数据,完整的包括整数和单位两个部分,用至少一个空格隔开,仅用于仿真不可综合;
fs,ps,ns,us,ms,sec,min,hr
(9)错误等级(SeverityLevel)
表示系统状态,仅用于仿真不可综合;
TYPEseverity_levelIS(NOTE、WARNING、ERROR、FAILURE);
2.3.2IEEE预定义标准逻辑位与矢量
(1)标准逻辑位(Std_Logic)
U:
Uninitialized;X:
ForcingUnkown;0:
Forcing0
1:
Forcing1Z:
HighImpedanceW:
WeakUnknown
L:
Weak0H:
Weak1—:
Don’tcare
(2)标准逻辑位矢量(Std_Logic_vector)
基于Std_Logic类型的数组
2.3.3用户自定义
(1)TYPE数据类型名IS数据类型定义OF基本数据类型
或TYPE数据类型名IS数据类型定义
(2)SUBTYPE子类型名IS基本数据类型定义RANGE约束范围
2.4数据端口
(1)输入(in)
输入仅允许数据流入端口。
输入信号的驱动源由外部向该设计实体内进行。
输入模式主要用于时钟输入、控制输入(如Load、Reset、Enable、CLK)和单向的数据输入
(2)输出(out)
输出仅允许数据流从实体内部输出。
端口的驱动源是由被设计的实体内部进行的。
输出模式不能用于被设计实体的内部反馈,因为输出端口在实体内不能看作可读的。
输出模式常用于计数输出、单向数据输出、设计实体产生的控制其他实体的信号等。
一般而言,不用的输出端口不能接地,避免造成输出高电平时烧毁被设计实体。
(3)缓冲(buffer)
缓冲模式的端口与输出模式的端口类似,只是缓冲模式允许内部引用该端口的信号。
缓冲端口既能用于输出,也能用于反馈。
(4)双向模式(inout)
在设计实体的数据流中,有些数据是双向的,数据可以流入该设计实体,也有数据从设计实体流出,这时需要将端口模式设计为双向端口。
双向模式可以代替输入模式、输出模式和缓冲模式。
2.5运算符及优先级别
3、VHDL程序设计
3.1基本结构
实体(Entity):
描述所设计的系统的外部接口信号,定义电路设计中所有的输入和输出端口;
结构体(Architecture):
描述系统内部的结构和行为;
包集合(Package):
存放各设计模块能共享的数据类型、常数和子程序等;
配置(Configuration):
指定实体所对应的结构体;
库(Library):
存放已经编译的实体、结构体、包集合和配置。
(1)实体(Entity):
实体描述了设计单元的输入输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。
ENTITY实体名IS[GENERIC(常数名:
数据类型:
设定值)]
PORT
(端口名1:
端口方向端口类型;
端口名2:
端口方向端口类型;
端口名n:
端口方向端口类型
);
END[实体名];
实体名由设计者自由命名,用来表示被设计电路芯片的名称,但是必须与VHDL程序的文件名称相同。
要与文件名一致。
(2)结构体(Architecture)
ARCHITECTURE结构体名OF实体名IS[声明语句]
BEGIN
功能描述语句
END[结构体名];
一个实体可对应多个结构体,每个结构体代表该实体功能的不同实现方案或不同实现方式。
同一时刻只有一个结构体起作用,通过CONFIGURATION决定用哪个结构体进行仿真或综合。
在结构体描述中,具体给出了输入、输出信号之间的逻辑关系。
(3)库、程序包的调用
LIBRARY库名;
USE库名.程序包名.项目名;
例如:
LIBRARYIEEE;
USEIEEE.Std_Logic_1164.ALL;
USEIEEE.Std_Logic_Arith.ALL;
USEIEEE.Std_Logic_Unsigned.ALL;
3.2基本语句
3.2.1并行语句
(1)赋值语句:
目标信号名<=表达式
(2)选择信号赋值语句:
WITH选择表达式SELECT
赋值目标信号<=表达式1WHEN选择值1,
表达式2WHEN选择值1,
表达式nWHENOTHERS;
(选择值必须互斥,不能出现条件重复或重叠的情况。
)
(3)条件信号赋值语句:
赋值目标信号<=表达式1WHEN赋值条件1ELSE
表达式2WHEN赋值条件2ELSE
表达式nWHEN赋值条件nELSE
表达式;
各赋值语句有优先级的差别,按书写顺序从高到低排列;
各赋值条件可以重叠。
3.2.2进程语句
进程语句定义顺序语句模块,用于将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。
进程本身是并行语句,但内部是顺序语句;
进程只有在特定的时刻(敏感信号发生变化)才会被激活
格式:
[进程标号:
]PROCESS(敏感信号参数表)[声明区];
BEGIN
顺序语句
ENDPROCESS[进程标号];
进程注意事项:
(1)进程本身是并行语句,但内部为顺序语句;
(2)进程在敏感信号发生变化时被激活,在使用了敏感表的进程中不能含wait语句;
(3)在同一进程中对同一信号多次赋值,只有最后一次生效;
(4)在不同进程中,不可对同一信号进行赋值;
(5)一个进程不可同时对时钟上、下沿敏感。
(6)进程中的信号赋值是在进程挂起时生效的,而变量赋值是即时生效。
(7)相对于结构体而言,信号具有全局性,是进程间进行并行联系的重要途径。
(8)进程为综合器支持,且其建模方式直接影响仿真和综合结果,综合后对应于进程的硬件结构对进程中所有可读入信号都是敏感的。
3.2.3元件例化语句
元件例化引入一种连接关系,将预先设计好的实体定义为元件,并将此元件与当前设计实体中的端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。
Component元件名
port(端口名表);
Endcomponent元件名;
例化名:
元件名portmap([元件端口名=>]连接端口名,…);
3.2.4顺序语句
顺序语句仅出现在进程和子程序中。
顺序语句综合后,映射为实际的门电路,系统一上电,门电路开始工作。
电路可实现逻辑上的顺序执行,实际上所有门电路是并行工作的。
(1)赋值语句
(2)流程控制语句
(3)空操作语句
(4)等待语句
(5)子程序调用语句
(6)返回语句
流程控制语句:
用IF语句描述组合逻辑电路时,务必涵盖所有的情况,否则综合后将引入锁存器!
4、VHDL的不足
(1)电路采用高级的简明结构VHDL描述,意味着放弃了对电路门级实现定义的控制;
(2)由综合工具生成的逻辑实现效果有时不优化;
(3)采用工具的不同导致综合质量不一样。
对于第一点,采用VHDL作为综合的描述语言,其目的就是希望将工程师从专门的门级电路实现的繁杂劳动中解脱出来。
所以,如果你懂得编译器是怎样来综合逻辑的,你就很容易理解编译器能够优化地帮助设计实现大多数的设计构造,并且很少需要规定设计实现的规则。
大多数综合工具允许设计者采用综合优化指引的方式,来对实现电路和设计提供某种程度上的控制。
例如,指定采用面积优化或者速度优化选择。
也有一些综合工具允许设计者去专门定义设计的技术特征,甚至实现手工从事的门级设计的工作。
然而,这些形式的描述是低层的,往往只能对指定器件结构进行。
对于第二点是对于工具的逻辑综合有效性的担心,且往往不是没有根据的。
VHDL编译器并不一定总能生成令人满意的设计,因为优化的结果往往依赖于设计的目标。
编译器采用一定的算法,由标准的设计行为决定设计的实现,而算法从某种角度出发,沿一定路径进行,并不能发现设计中的所有问题。
有时,当人们希望按自己的要求来控制设计实现时,没有什么能够替代人的创造力。
三、总结:
在集成电路制造工艺发展的过程中,微电子设计工业已经达到了深亚微米时代,在EDA 设计中主要有软硬件协同设计的要求,现有的工具支持SOC 大规模设计尚有难度,迫切需要提高设计能力。
在设计语言中,由于VHDL 和VerilogHDL 是目前通用的设计语言,在设计大系统时,不够方便直观,所以需要进一步完善。
电子产品随着技术的进步,更新换代速度日新月异,而掌握电子产品开发研制的动力源———EDA技术,是我们国家工程设计人员不可推卸的责任,因为中的设计公司大多还处在发展的初级阶段,所使用的设计工具都是几年前国外的主流工具。
近年来,VHDL又有了一些新的发展。
面向对象的VHDL主要是通过引入了新的语言对象,作为抽象封装和模块性的基本单元而解决了VHDL在抽象性的不足和在封装性上能力不强等问题。
由于面向对象的VHDL模型的代码比VHDL模型短30%~50%,缩短了开发时间,提高了设计效率。
而可编程器件的发展,使用户有了更多的选择自由,促进了电子设计自动化的进程,有利于开发具有自己知识产权的专用集成电路。
四、参考文献:
【1】潘松、黄继业《EDA实用教程——VHDL版》第四版
【2】卢毅、赖杰.VHDL与数字设计.北京:
科学出版社,2001-04
【3】XX百科
【4】XX文库
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程 综述