电子科技大学EDA技术课件 3_1.pptx

上传人:wj 文档编号:9493745 上传时间:2023-05-19 格式:PPTX 页数:118 大小:1.52MB
下载 相关 举报
电子科技大学EDA技术课件 3_1.pptx_第1页
第1页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第2页
第2页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第3页
第3页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第4页
第4页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第5页
第5页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第6页
第6页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第7页
第7页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第8页
第8页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第9页
第9页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第10页
第10页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第11页
第11页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第12页
第12页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第13页
第13页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第14页
第14页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第15页
第15页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第16页
第16页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第17页
第17页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第18页
第18页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第19页
第19页 / 共118页
电子科技大学EDA技术课件 3_1.pptx_第20页
第20页 / 共118页
亲,该文档总共118页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子科技大学EDA技术课件 3_1.pptx

《电子科技大学EDA技术课件 3_1.pptx》由会员分享,可在线阅读,更多相关《电子科技大学EDA技术课件 3_1.pptx(118页珍藏版)》请在冰点文库上搜索。

电子科技大学EDA技术课件 3_1.pptx

第三章硬件描述语言,1,VHDL,3.1.1什么是VHDL?

VHDL:

VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,2,3.1概述,3.1.2VHDL的历史,3,80年代初由美国国防部在实施超高速集成电路(VHSIC)项目时开发的。

1987年:

IEEE1076-1987标准1993年:

IEEE1076-1993标准2001年:

IEEE1076-2001标准VHDL获得广泛支持,3.1.3VHDL的作用,4,1)VHDL打破软、硬件的界限传统的数字系统设计分为:

硬件设计(硬件设计人员)软件设计(软件设计人员)是电子系统设计者和EDA工具之间的桥梁,EDA工具及HDL的流行,促使电子系统向集成化、大规模和高速度等方向发展。

美国硅谷约有80%的ASIC和FPGA/CPLD采用HDL进行设计。

2)VHDL与C、C+的比较:

C、C+代替汇编等语言VHDL代替原理图、逻辑状态图等,5,3)VHDL与电原理图描述的比较:

VHDL具有较强的抽象描述能力,可进行系统行为级别的描述。

描述更简洁,效率更高。

VHDL描述与实现工艺无关。

电原理图描述必须给出完整的、具体的电路结构图,不能进行描象描述。

描述繁杂,效率低。

电原理图描述与实现工艺有关。

6,3.1.4VHDL语言特点,VHDL具有强大的语言结构,系统硬件抽象描述能力强、设计效率高。

一个可置数的16位计数器:

7,用VHDL描述的可置数16位计数器:

8,VHDL语言可读性强,易于修改和发现错误。

VHDL具有丰富的仿真语句和库函数,可进行早期行为仿真,利于大系统的设计与验证。

VHDL设计与硬件电路关系不大。

VHDL设计不依赖于器件,与工艺无关。

移植性好。

VHDL体系符合TOP-DOWN和CE(并行工程)设计思想。

VHDL设计效率高,产品上市时间快,成本低。

易于ASIC实现。

9,3.1.5VHDL与其它硬件描述语言的比较,行为级RTL级门电路级RTL:

RegisterTranslateLevelVHDL:

系统级抽象描述能力强,适合行为级和RTL级的描述。

涉及电路细节少,工作量少,效率高。

IEEE标准,支持广泛。

对综合器要求高,不易控制底层电路的生成。

10,VerilogHDL:

系统级抽象描述能力比VHDL稍差;门级开关电路描述方面比VHDL强。

适合RTL级和门电路级的描述。

需了解电路细节,工作量较多。

IEEE标准,支持广泛。

ABEL、PALASM、AHDL(AlteraHDL):

系统级抽象描述能力差,一般作门级电路,描述。

要求对电路细节有详细的了解。

工作量大。

对综合器要求低,易于控制电路资源。

支持少。

11,VHDL,12,VerilogHDL,3.1.6VHDL设计简述,13,VHDL主要用于描述数字系统的结构、行为、功能和接口。

VHDL将一个设计(元件、电路、系统)分为:

外部(可视部分、端口)内部(不可视部分、内部功能、算法),外部与内部:

ports,ports,CombinationalProcess,SequentialProcess,component,14,器件或子系统ENTITYARCHITECTUREProcessProcess,2选1选择器的VHDL描述:

15,VHDL语言的一些基本特点:

nVHDL语言由保留关键字组成;n一般,VHDL语言对字母大小写不敏感;例外:

、“”所括的字符、字符串;n每条VHDL语句由一个分号(;)结束;nVHDL语言对空格不敏感,增加可读性;n在“-”之后的是VHDL的注释语句;nVHDL有以下描述风格:

行为描述;数据流(寄存器传输RTL)描述;结构化描述;,16,基本结构包括:

实体(Entity)结构体(Architecture)配置(Configuration)库(Library)、程序包(Package),17,3.2VHDL程序基本结构,库、程序包实体(Entity)结构体(Architecture)进程或其它并行结构,配置(Configuration),18,3.2.1实体(说明),实体(说明):

定义系统的输入输出端口语法:

ENTITYISGenericDeclarationsPortDeclarationsEND;(1076-1987version)ENDENTITY;(1076-1993version),19,1、类属说明类属说明:

确定实体或组件中定义的局部常数。

必须放在端口说明之前。

Generic(常数名称:

类型:

=缺省值常数名称:

类型:

=缺省值);,20,类属常用于定义:

实体端口的大小、设计实体的物理特性、总线宽度、元件例化的数量等。

例:

entitymckisgeneric(width:

integer:

=16);port(add_bus:

outstd_logic_vector(width-1downto0);,21,例:

2输入与门的实体描述entityand2isgeneric(risewidth:

time:

=1ns;fallwidth:

time:

=1ns);port(a1:

instd_logic;a0:

instd_logic;z0:

outstd_loigc);endentityand2;注:

time:

用于仿真可综合的类属值:

整数,22,2、端口声明端口声明:

确定输入输出端口的数目和类型。

其中,端口模式:

in输入型,此端口为只读型。

out输出型,此端口只能在实体内部对其赋值。

inout输入输出型,既可读也可赋值。

buffer缓冲型,与out相似,但可读。

Port(,23,数据类型;,数据类型,端口名称,端口名称:

端口模式端口名称,端口名称:

端口模式);,out和buffer的区别:

24,In1,25,In2,In3,Out1,Out2,Out3,Out4,数据类型:

指端口上流动的数据的表达格式。

为预先定义好的数据类型。

如:

bit、bit_vector、integer、real、std_logic、std_logic_vector等。

例:

entitynand2isport(a,b:

inbit;,26,:

outbit,z);endnand2;,3.2.2结构体,27,作用:

定义系统(或模块)的行为、元件及内部的连接关系,即描述其逻辑功能。

两个组成部分:

说明部分逻辑功能描述部分,结构体,结构体说明,结构体功能描述,常数说明,数据类型说明,信号说明,例化元件说明,子程序说明,块语句进程语句,信号赋值语句,子程序调用语句,元件例化语句,28,实体与结构体的关系:

设计实体,结构体3。

结构体n,一个设计实体可有多个结构体,代表实体的多种实现方式。

各个结构体的地位相同。

结构体1结构体2,29,结构体的语法:

architecture结构体名称of实体名称is说明语句内部信号、常数、数据类型、子程序(函数、过程)、元件等的说明;begin并行处理(功能描述)语句;endarchitecture结构体名称;注:

同一实体的结构体不能同名。

定义语句中的常数、信号不能与实体中的端口同名。

30,例:

结构体中错误的信号声明,31,例:

一个完整描述(3bit计数器),32,3bit计数器的等效描述(out与buffer的区别):

33,3.2.3配置,设计实体,结构体1结构体2结构体3,。

结构体n,一个设计实体的多种实现方式,34,配置:

从某个实体的多种结构体描述方式中选择特定的一个。

简单配置的语法:

configuration配置名of实体名isfor选配结构体名endfor;end配置名;例:

一个与非门不同实现方式的配置如下:

35,libraryieee;useieee.std_logic_1164.all;entitynandisport(a:

instd_logic;b:

instd_logic;c:

outstd_logic);endentitynand;architectureart1ofnandisbeginc=not(aandb);endarchitectureart1;,36,architectureart2ofnandisbegin,c=1when(a=0)and(b=0)else1when(a=0)and(b=1)else1when(a=1)and(b=0)else0when(a=1)and(b=1)else0;,37,configurationfirstofnandisforart1;endfor;endfirst;configurationsecondofnandisforart2endfor;endsecond;,38,例:

一个对计数器实现多种形式的配置如下:

39,40,41,程序包:

已定义的常数、数据类型、元件调用说明、子程序的一个集合。

目的:

方便公共信息、资源的访问和共享。

库:

多个程序包构成库。

42,3.2.4程序包、库,程序包说明的内容:

常量说明;VHDL数据类型说明;元件说明;子程序说明;程序包的结构包括:

程序包说明(包首)程序包主体(包体),43,1、程序包说明(包首)语法:

package程序包名is包说明项end程序包名;包说明项:

use语句(用来包括其它程序包);类型说明;子类型说明;常量说明;信号说明;子程序说明;元件说明。

44,例:

程序包说明,45,2、程序包包体,use语句;常量说明;类型说明;子类型说明;子程序说明;子程序主体;,程序包的内容:

子程序的实现算法。

包体语法:

packagebody程序包名is,46,end包体说明项:

包体说明项程序包名;,程序包首与程序包体的关系:

程序包体仅用于子程序的描述。

程序包首可以独立定义和使用。

47,例:

packagesevenissubtypesegmentsisbit_vector(0to6);typebcdisrange0to9;endseven;,librarywork;usework.seven.all;entitydecoderisport(input:

inbcd;drive:

outsegments);enddecoder;architectureartofdecoderisbegin,48,withinputselectdrive=B“1111110”when0,B“0110000”when1,B“1101101”when2,B“1111001”when3,B“0110011”when4,B“1011011”when5,B“1011111”when6,B“1110000”when7,B“1111111”when8,B“1111011”when9,B“0000000”whenothers;endarchitectureart;,a,b,c,d,e,f,g,49,3、库的种类,VHDL库可分为5种:

IEEE库定义了四个常用的程序包:

std_logic_1164(std_logictypes&relatedfunctions)std_logic_arith(arithmeticfunctions)std_logic_signed(signedarithmeticfunctions)std_logic_unsigned(unsignedarithmeticfunctions),50,TypeSTD_ULOGIC、STD_LOGIC:

9logicvaluesystem(U,X,0,1,Z,W,L,H,-)U:

未初始化的,X:

强未知的,,0:

强0,Z:

高阻态,,1:

强1,W:

弱未知,的,,L:

弱0,,H:

弱1,,51,STD库(默认库)库中程序包为:

standard,定义最基本的数据类型:

Bit,bit_vector,Boolean,Integer,Real,andTime注:

TypeBIT2logicvaluesystem(0,1)面向ASIC的库WORK库(默认库)用户定义库,52,4、库及程序包的使用,53,库及程序包的位置:

库的说明:

library程序包的说明:

use默认库及程序包的说明:

库及程序包的作用范围:

库、程序包实体(Entity)结构体(Architecture)进程或其它并行结构,配置(Configuration),54,库的使用语法:

library库名;程序包的使用有两种常用格式:

use库名程序包名项目名use库名程序包名All;例:

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.conv_integer;,55,2选1选择器:

56,2选1的另一种描述,57,四类语言要素:

数据对象(DataObject)数据类型(DataType)操作数(Operands)操作符(Operator),58,3.3VHDL语言要素,3.3.1VHDL文字规则,59,1、数字型文字整数文字:

十进制整数如:

5,678,156E2(=15600),45_234_287(=45234287)实数文字:

带小数的十进制数如:

23.34,2.0,44.99E-2(=0.4499)88_67_551.23_909(8867551.23909),如:

10#170#2#1111_1110#16#E#E1,(=170)(=254)(=2#1110_0000#=224),或:

(=1416=224)16#F.01#E+2(=(15+1/(1616)1616=3841.00),(3)以数制基数表示的文字格式:

基数#数字文字#E指数,60,(4)物理量文字如:

60s、100m、177A注:

整数可综合实现;实数一般不可综合实现;物理量不可综合实现;,61,2、字符串型文字按字符个数多少分为:

字符:

用单引号引起来的ASCII字符,可以是数值,也可以是符号或字母。

如:

A,*,Z字符串:

用双引号引起来的一维字符数组,62,字符串分为:

(1)文字字符串:

“文字”如:

“ERROR”,“XXXXXXXX”,“ZZZZZZZZ”,“X”,“BOTHSANDQEQUALTOL”,,63,

(2)数位字符串:

称为位矢量,代表二进制、八进制、十六进制的数组。

其位矢量的长度为等值的二进制数的位数。

格式:

基数符号“数值”其中基数符号有三种:

B:

二进制基数符号。

O:

八进制基数符号,每一个八进制数代表一个3位的二进制数。

64,X:

十六进制基数符号,每一个十六进制数代表一个4位的二进制数。

65,二进制数数组,长度为9八进制数数组,长度为6十六进制数数组,长度为,如:

B“1_1101_1110”O“34”X“1AB”12,3、标识符定义常数、变量、信号、端口、子程序或参数的名字。

基本标识符的要求(87标准):

以英文字母开头;不连续使用下划线“_”;不以下划线“_”结尾;由26个大小写英文字母、数字09及下划线“_”组成的字符串。

66,基本标识符中的英文字母不分大小写;VHDL的保留字不能作为标识符使用。

合法标识符如下:

my_counter、Decoder_1、FFT、Sig_N、Not_Ack、State0,67,非法标识符如下:

_Decoder_1、2FFT、Sig_#N、Not-Ack、ALL_RST_、dataBUS、return、entity,68,扩展标识符(93标准):

以反斜杠来界定,免去了87标准中基本标识符的一些限制。

可以以数字打头,允许包含图形符号,允许使用VHDL保留字,区分字母大小写等。

如:

74LS163、Sig_#N、entity、ENTITY,69,4、下标名及下标段名下标名:

用于指示数组型变量或信号的某一个元素。

格式:

下标段名:

用于指示数组型变量或信号的某一段元素。

格式:

如:

a:

std_logic_vector(7downto0)a(7),a(6)a(0)a(7downto0),a(7downto4),a(5downto3),标识符(表达式),标识符(表达式to/downto表达式),70,3.3.2数据对象,71,三种对象:

常量(Constant)变量(Variable)信号(Signal)三种对象的物理含义:

常量:

电源、地、恒定逻辑值等;变量:

暂存某些值的载体,常用于描述算法;信号:

硬件连接线,端口。

三种对象的特点及说明场合:

72,信号:

全局量,定义于architecture、package、entitiy。

变量:

局部量,定义于process、function、procedure。

常量:

全局量,可定义于上面两种场合。

1、常量说明常量说明:

对某一个常量名赋予一个固定的值。

格式:

constant常数名:

数据类型:

=表达式;例:

constantdata:

bit_vector(3downto0):

=“1010”constantwidth:

integer:

=8;constantx:

new_bit:

=x;常量数据类型必须与表达式的数据类型一致。

73,常量的可视性(作用范围):

库、程序包实体(Entity)结构体1进程1_1,结构体2进程2_1,常量是全局量,其作用范围取决于常量被定义的位置。

进程1_2,进程2_2,74,2、变量说明局部量,只能在进程和子程序中定义、使用。

格式:

variablecount:

integerrange0to255:

=10;变量的初值可用于仿真,但综合时被忽略。

variable变量名:

数据类型例:

variablea,b:

bit;,75,约束条件:

=表达式;,3、信号说明电子硬件系统运行的基本特性:

各部分电路工作的并行特性;信号传输过程中的延时特性;多驱动源的总线特性;,时序电路中触发器的记忆特性等。

信号是电子系统内部硬件连接和硬件特性的抽象表示。

格式:

signal信号名:

数据类型约束条件:

表达式;,76,例:

signala,b:

bit;signalinit:

integer:

=-1;signals1:

std_logic:

=0;signals2:

std_logic_vector(15downto0);注:

a.综合时初值被忽略。

b.信号是全局量。

可在结构体、实体、块中说明和使用信号。

c.在进程和子程序中只能使用信号,不能说明信号。

77,例:

进程中信号与变量的使用,Entityexisport(.);endex;architecturearch_exofexissignala,b:

std_logic;beginprocess(a,b)variablec,d:

std_logic;beginc:

=a+b;d:

=a-b;endprocess;endarch_ex;,78,信号与端口的区别:

信号本身无方向,可读可写。

端口是一种有方向的隐形信号。

entityexamisport(signala,b:

instd_logic;signalc:

outstd_logic);endexam;输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。

79,3.3.3VHDL数据类型,80,VHDL是一种强数据类型语言:

数据类型必须事先说明;同类型才能互相传递和作用。

VHDL数据类型分为四大类:

标量类型(SCALARTYPE)、复合类型(COMPOSITETYPE)、存取类型(ACCESSTYPE)、文件类型(FILESTYPE),又分为:

预定义数据类型、用户自定义数据类型1、VHDL的预定义数据类型1)布尔量(boolean)两种状态:

false、true常用于逻辑函数,如相等(=)、比较()等中作逻辑比较。

如,bit值转化成boolean值:

boolean_var:

=(bit_var=1);,81,位(bit)bit表示一位的信号值。

放在单引号中,如0或1。

位矢量(bit_vector)bit_vector是用双引号括起来的一组位数据。

如:

“001100”X“00B10B”字符(character)用单引号将字符括起来。

variablecharacter_var:

character;.Character_var:

=A;,82,5)整数(integer)integer表示所有正的和负的整数。

硬件实现时,利用32位的位矢量来表示。

可实现的整数范围为:

-(231-1)to(231-1)VHDL综合器要求对具体的整数作出范围限定,否则无法综合成硬件电路,或造成资源浪费。

如:

signals:

integerrange0to15;信号s的取值范围是015,可用4位二进制数表示,因此s将被综合成由四条信号线构成的信号。

83,6)自然数(natural)和正整数(positive)natural是integer类型的子类型,表示非负整数。

positive是integer类型的子类型,表示正整数。

定义如下:

subtypenaturalisintegerrange0tointegerhigh;subtypepositiveisintegerrange1tointegerhigh;,84,实数(REAL)或称浮点数取值范围:

-1.0E38+1.0E38实数类型仅能用于VHDL仿真器,一般综合器不支持。

字符串(string)string是character类型的一个非限定数组。

用双引号将一串字符括起来。

如:

variablestring_var:

string(1to7);string_var:

=“Rosebud”;,85,时间(TIME)由整数和物理单位组成如:

55ms,20ns错误等级(SEVERITY_LEVEL)仿真中用来指示系统的工作状态,共有四种:

NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败),86,2、IEEE预定义标准逻辑位与矢量,std_logic及其决断函数(Std_logic_1164包)Packagestd_logic_1164is,typestd_ulogicis(U,X,0,1,Z,W,L,H,-);typestd_ulogic_vectorisarray(naturalrange)ofstd_ulogic;functionresolved(s:

std_ulogic_vector)returnstd_ulogic;subtypestd_logicisresolvedstd_ulogic;typestd_logic_vectorisarray(naturalrange)ofstd_logic;,Endstdlogic1164;,87,Packagebodystd_logic_1164is,constantresolution_table:

stdlogic_table:

=(-|UX01ZWLH-|,(U,U,U,U,U,U,U,U,U),-|U|(U,X,X,X,X,X,X,X,X),-|X|(U,X,0,X,0,0,0,0,X),-|0|(U,X,X,1,1,1,1,1,X),-|1|(U,X,0,1,Z,W,L,H,X),-|Z|(U,X,0,1,W,W,W,W,X),-|W|,88,functionresolved(s:

std_ulogic_vector)returnstd_ulogicisvariableresult:

std_ulogic:

=Z;-weakestbeginifslength=1thenreturns(slow);elseforiinsrangeloopresult:

=resolution_table

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2