电子设计自动化技术(EDA)Ch2-2012下_第1页
电子设计自动化技术(EDA)Ch2-2012下_第2页
电子设计自动化技术(EDA)Ch2-2012下_第3页
电子设计自动化技术(EDA)Ch2-2012下_第4页
电子设计自动化技术(EDA)Ch2-2012下_第5页
已阅读5页,还剩224页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA技术与应用中国地质大学通信工程系第二章VHDL语言介绍

EDA技术实践教程EDA技术与应用中国地质大学通信工程系原理图输入与VHDL文本输入设计的区别Graphiciswhatyoudrawiswhatyouget“tellmewhathardwareyouwantandIwillgiveittoyou”VHDLiswhatyouwriteiswhatfunctionalyouget“tellmehowyourcircuitshouldbehaveandtheVHDLcompilerwillgiveyouthehardwarethatdoesthejob”

butthedesignercannotcontrolhowthecircuitimplement

EDA技术实践教程EDA技术与应用中国地质大学通信工程系EDA技术实践教程

VHDL语言的英文全名是VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage即超高速集成电路硬件描述语言。它是70年代和80年代初,由美国国防部为他们的超高速集成电路VHSIC计划提出的硬件描述语言,它支持硬件的设计、综合、验证和测试。1986年3月,IEEE开始致力于VHDL的标准化工作,讨论VHDL语言标准。IEEE于1987年12月公布了VHDL的标准版本(IEEESTD1076/1987);1993年VHDL重新修订,形成新的标准即IEEESTD1076-1993,后来有相继颁布了IEEESTD1076-2002和IEEESTD1076-2008标准。什么是VHDL语言?EDA技术与应用中国地质大学通信工程系

EDA技术实践教程

从此以后,美国国防部实施新的技术标准,要求电子系统开发商的合同文件一律采用VHDL文档。即第一个官方VHDL标准得到推广、实施和普及。

VHDL语言描述能力极强,覆盖了逻辑设计的诸多领域和层次,并支持众多的硬件模型。设计者的原始描述是非常简练的硬件描述,经过EDA工具综合处理,最终生成付诸生产的电路描述或版图参数描述的工艺文件。EDA技术与应用中国地质大学通信工程系VHDL的优点用于设计复杂的、多层次的设计。支持设计库和设计的重复使用与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过多的硬件细节。有丰富的软件支持VHDL的综合和仿真,从而能在设计阶段就能发现设计中的Bug,缩短设计时间,降低成本。更方便地向ASIC过渡VHDL有良好的可读性,容易理解。EDA技术与应用中国地质大学通信工程系VHDL与计算机语言的区别运行的基础计算机语言是在CPU+RAM构建的平台上运行VHDL设计的结果是由具体的逻辑电路、触发器组成的数字电路执行方式计算机语言基本上以串行(顺序)的方式执行VHDL在总体上是以并行方式工作验证方式计算机语言主要关注于变量值的变化VHDL要实现严格的时序逻辑关系EDA技术与应用中国地质大学通信工程系libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydiv_clkisport(clkin:instd_logic;reset:instd_logic;clk_time:outstd_logic;clk_change:outstd_logic);enddiv_clk;architecturearchofdiv_clkissignalcounter:std_logic_vector(9downto0);beginclk_time<=counter(9);clk_change<=counter(7);process(reset,clkin)beginifreset='1'thencounter<="0000000000";elsifclkin'eventandclkin='1'thenifcounter="1111111111"thencounter<="0000000000";elsecounter<=counter+'1';endif;endif;endprocess;endarch;EDA技术与应用中国地质大学通信工程系VHDL语言的结构库(library)和包(package)实体(entity)结构体(architecture)EDA技术与应用中国地质大学通信工程系EDA技术实践教程VHDL语言的结构VHDL程序结构

一个完整的VHDL语言程序通常包含实体(Entity)、结构体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)5个部分。EDA技术与应用中国地质大学通信工程系EDA技术实践教程LIBRARYieee;USEieee.std_logic_1164.all;ENTITY

en_name

ISPORT

(input_pin_name:INbit;output_pin_name:OUTbit);END

en_name;ARCHITECTUREar_nameOFen_nameISBEGINoutput_pin_name<=input_pin_name;ENDar_name;大写的是关键字VHDL格式逻辑这两个必须相同I/O端口定义逻辑行为定义必须用en_name作为文件名存盘,文件名和实体名相同VHDL的一般结构库说明实体说明结构体EDA技术与应用中国地质大学通信工程系EDA技术实践教程例:2inputANDgateENTITYsimand

ISPORT(a,b:

IN

BIT;

c:

OUT

BIT);END

simand;ARCHITECTURE

simand_body

OF

simand

ISBEGINc<=aANDb;END

simand_body;EDA技术与应用中国地质大学通信工程系EDA技术实践教程

例:一个二选一电路的VHDL描述

ENTITY

mux

IS

GENERIC(m:TIME:=5ns);

PORT(d0,d1,sel:INBIT;

q:OUTBIT);ENDmux;

ARCHITECTURE

connect

OF

mux

IS

SIGNAL

tmp:BIT;

BEGIN

Cale:PROCESS(d0,d1,sel)

VARIABLE

temp1,temp2,temp3:BIT;

BEGIN

temp1:=d0

AND

sel;

temp2:=d1

AND(NOTsel);

temp3:=tmp1

OR

temp2;

tmp<=tmp3;

q<=tmpAFTER

m;

ENDPROCESS;

END

connect;EDA技术与应用中国地质大学通信工程系1、库(Library)已编译的数据集合存放包集合、实体、构造体、数据类型、函数、过程和配置的定义库的种类VHDL系统库:libraryieee;librarystd;VHDL工作库-WORK库存放当前正在设计的编译结果,比如其他成员的设计结果:librarywork厂家自定义库QuartusII中有lpm库,定义了许多数字电路基本元件Librarylpm库的内容在quartusX\libraries\vhdl目录下EDA技术与应用中国地质大学通信工程系包(Package)每个库里都包含一个或多个包在VHDL程序的Architecture中,定义的Type、Component、Function或其他的声明对于其他设计文件来说都是不可见的。Package中定义的这些对于其他设计则是可见的。Uselibrary_name.package_name.item如果想Package中所有定义都可见,则item用all来代替EDA技术与应用中国地质大学通信工程系Libraryieee;Useieee.std_logic_1164.std_ulogic;Useieee.std_logic_1164.rising_edge;例:EDA技术与应用中国地质大学通信工程系IEEE标准库std_logic_1164:定义了VHDL语言的基本数据类型,如std_logic以及其向量类型;基本的运算,如and、nor等;std_logic_arith:重载了+、-、*、/、等操作符,使其能对signed和unsigned的数据类型进行算术运算和比较运算操作Std_logic_signed:重载了+、-、×和关系运算符,使std_logic、std_logic_vector和integer能够进行混合有符号数据类型的算术操作Std_logic_unsigned:重载了+、-、×和关系运算符,使std_logic、std_logic_vector和integer能够进行混合无符号数据类型的算术操作STD标准库standard:定义了如整数、实数、Bool、bit、char和物理类型Textio:定义了文件类型及相关操作EDA技术与应用中国地质大学通信工程系包(Package)LIBRARYieee;USEieee.std_logic_1164.ALL;PACKAGEram_constantsISconstantwidth:integer:=8;ENDram_constants;LIBRARYieee;USEieee.std_logic_1164.ALL;LIBRARYwork;USEwork.ram_constants.ALL;EDA技术与应用中国地质大学通信工程系程序包常数说明VHDL数据类型说明元件定义子程序如果包头部分声明了function或者procedure,则在包体中一定要有对应的描述代码。EDA技术与应用中国地质大学通信工程系定义包(package)的语句结构:Package

程序包名is

--程序包首

程序包首说明部分End

程序包名;Packagebody

程序包名is

--程序包体程序包体说明部分以及包体End

程序包名EDA技术与应用中国地质大学通信工程系Packagepac1is

--程序包首开始

typebyteisrange0to255;--第一数据类型byte

subtypenibbleis

byte

range0to15;--定义子类型nibbleConstantbyte_ff:byte:=255;--定义常数byte_ffSignaladdend:nibble;--定义信号addendComponentbyte_adder--定义元件Port(a,b:in

byte;c:out

byte;overflow:outboolean);Endcomponent;Functionmy_function(a:in

byte)return

byte;--定义函数Endpac1;--程序包首结束EDA技术与应用中国地质大学通信工程系EDA技术实践教程2、实体(ENTITY)

设计实体是VHDL程序的基本单元,它与电路图中元器件符号对应;简单的实体可以代表一个与门电路,复杂的可以是一个微处理器或一个数字电子系统。一个实体由实体说明和结构体说明两部分组成。任何一个基本设计单元的实体说明都具有如下结构:ENTITY实体名IS[GENERIC(类属表):][PORT(端口表):]END实体名EDA技术与应用中国地质大学通信工程系EDA技术实践教程实体名:一个设计实体无论多大或多复杂,在实体中定义的实体名即为这个设计实体的名称。在元件例化中,即可用此名对相应的设计实体进行调用。类属说明:类属参数说明是实体组织中的可选项。

GENERIC[常数名字表:数据类型[:=设定值],……]例如:GENETRIC(m:TIME:=3ns);……A<=CANDBAFTERm;端口说明:是对设计实体与外部接口的描述。端口说明的一般书写格式:PORT(端口名{,端口名}:方向

数据类型;…

端口名:方向

数据类型名);PORT说明语句是对一个设计实体界面的说明及对设计实体与外部电路的接口通道的说明,其中包括对每一接口的输入输出模式和数据类型的定义端口名是设计者为实体的每一个对外通道所取的名字,端口模式是指这些通道上的数据流动方式。数据类型是指端口上流动的数据的表达格式或取值类型EDA技术与应用中国地质大学通信工程系EDA技术实践教程端口类似于原理图部件符号上的管脚。端口模式:用来说明数据、信号通过该端口的方向,端口模式有IN、OUT、INOUT、BUFFER。IN模式:主要用于时钟输入、控制输入和单向的数据输入。不用的输入一般接地,以免浮动引入干扰噪声。OUT模式:用于数据输出,不能通过该端口向实体输入信号。不用的输出端口不能接地,避免造成输出高电平烧毁被设计实体。BUFFER模式:与输出模式的端口相类似,只是该模式允许内部引用该端口的信号。缓冲端既能用于输出,也能用于反馈。INOUT模式:可以代替输入、输出和缓冲三种模式。EDA技术与应用中国地质大学通信工程系端口示意图EDA技术与应用中国地质大学通信工程系Out与Buffer的区别Entitytest1isport(a:instd_logic;

b,c:outstd_logic);endtest1;architectureaoftest1isbeginb<=not(a);

c<=b;--Errorenda;Entitytest2isport(a:instd_logic;

b:bufferstd_logic;

c:outstd_logic

);endtest2;architectureaoftest2isbeginb<=not(a);

c<=b;enda;EDA技术与应用中国地质大学通信工程系EDA技术实践教程3、结构体(ARCHITECTURE)

结构体指明了该设计实体的行为,定义了该设计实体的功能,规定了该设计实体的数据流程,指派了实体中内部的连接关系。结构体通过若干并行语句来描述设计实体的逻辑功能(行为描述)、数据流向(RTL描述)或内部电路结构(结构描述),从而建立设计实体输出与输入之间的关系。结构体中的并行语句对应了硬件电路中的不同部件之间、不同数据流之间的并行工作特性。用VHDL语言描述结构体功能有三种方法:⑴行为behavioral描述;⑵寄存器传输描述(RTL描述,也称为数据流dataflow描述方式);⑶结构structural描述。不同的描述方式,只体现在描述语句上,而结构体的结构是完全一样的。一个设计实体可以有多个结构体,分别代表该实体的不同实现方案。EDA技术与应用中国地质大学通信工程系EDA技术实践教程返回(1)结构体的格式及其命名:

ARCHITECTURE

结构体名OF

实体名

IS[定义语句]

BEGIN[功能描述语句]ARCHITECTUREconnect

OF

muxISEDA技术与应用中国地质大学通信工程系EDA技术实践教程(2)定义语句

结构体定义语句位于ARCHITECTURE和BEGIN之间。说明语句用以定义结构体中所用的数据对象(CONSTANT、SIGNAL)和子程序(FUNCTION、PROCEDURE),并对所引用的元件(COMPONENT)加以说明,但不能定义变量。EDA技术与应用中国地质大学通信工程系EDA技术实践教程(3)并行处理语句

并行处理语句是结构体功能描述的重要语句,功能描述语句位于BEGIN和END之间。在结构体中的语句都是并行执行的,这些语句具体地描述了结构体的行为及其连接关系。包括并行进程语句、条件信号赋值语句、选择信号赋值语句、并行信号赋值语句、并行子程序调用语句和元件例化语句(生成语句)。例二选一的数据流方式描述可以写成为:…ARCHITECTUREdataflow

OFmux

ISBEGIN

q<=(d0

AND

sel)OR

((NOT

sel)AND

d1);END

dataflow;EDA技术与应用中国地质大学通信工程系并行语句EDA技术与应用中国地质大学通信工程系VHDL语言的基本语法标识符数据对象数据类型运算操作符EDA技术与应用中国地质大学通信工程系VHDL语言的标识符EDA技术与应用中国地质大学通信工程系EDA技术实践教程VHDL语言的标识符VHDL中的标识符是常数、变量、信号、端口、子程序或参数的名字。使用标识符要遵守如下规则:·标识符由字母(A…Z,a…z)、数字和下划线字符组成。·任何标识符必须以英文字母开头。·末字符不能为下划线。·不允许出现两个连续下划线。·标识符中不区分大小写字母。·VHDL定义的保留字或称关键字,不能用作标识符。·VHDL中的注释由两个连续的虚线(--)开始,直到行尾。EDA技术与应用中国地质大学通信工程系EDA技术实践教程例:一些错误的标识符_Decoder_1--起始为非英文字母3DOP--起始为数字Large#number--“#”不能成为标识符的构成符号Date__bus--不能有双下划线Copper_--最后字符不能为下划线on--关键字EDA技术与应用中国地质大学通信工程系VHDL数据对象(DataObjects)常数变量信号EDA技术与应用中国地质大学通信工程系EDA技术实践教程1.

常数(Constant)

常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。常数一旦被赋值就不能再改变。一般格式:CONSTANT

常数名:数据类型:=表达式;例:CONSTANTfbus:BIT_VECTOR:=“01011001”;--总线上数据设备向量CONSTANTVcc:REAL:=5.0;--设计实体的电源电压指定CONSTANTdely:TIME:=25ns;--输入/输出的延迟时间常数所赋的值应与定义的数据类型一致。EDA技术与应用中国地质大学通信工程系EDA技术实践教程

常量的使用范围取决于它被定义的位置。程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中定义的常量,其有效范围为这个实体定义的所有的结构体;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。EDA技术与应用中国地质大学通信工程系常数(Constant)固定值,不能在程序中被改变增强程序的可读性,便于修改程序在综合后,连接到电源和地可在库Library、实体Entity、结构体Architecture、进程Process中进行定义,其有效范围也相应限定常数总结EDA技术与应用中国地质大学通信工程系EDA技术实践教程2.

变量(Variable)

变量是一个局部变量,它只能在函数语句和进程语句结构中使用,用作局部数据存储。在仿真过程中,它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。变量常用在实现某种算法的赋值语句中。一般格式:VARIABLE

变量名:数据类型约束条件:=表达式;例:VARIABLEx,y:INTEGER;

--定义x,y为整数变量VARIABLEcount:INTEGERRANGE0TO255:=10;--定义计数变量范围EDA技术与应用中国地质大学通信工程系EDA技术实践教程

变量的适用范围仅限于定义了变量的进程或子程序中。若将变量用于进程之外,必须将该值赋给一个相同的类型的信号,即进程之间传递数据靠的是信号。变量赋值语句的语法格式如下:目标变量:=表达式;

变量赋值符号是“:=”。赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值。变量不能用于硬件连线和存储元件。下例表达了变量不同的赋值方式。EDA技术与应用中国地质大学通信工程系EDA技术实践教程例:VARIABLE

x,y

:REAL;VARIABLE

a,b:

BIT_VECTOR(0TO7);x:=100.0;

--实数赋值,x是实数变量y:=1.5+x;

--运算表达式赋值,y也是实数变量a:=b;a:=”1010101”;

--位矢量赋值,a的数据类型是位矢量a(3TO6):=(‘1’,’1’,’0’,’1’);

--段赋值a(0TO5):=b(2TO7);a(7):=’0’;

--位赋值EDA技术与应用中国地质大学通信工程系变量(Variable)临时数据,没有物理意义只能在Process和Function中定义,并只在其内部有效要使其全局有效,先转换为Signal。用:=

进行赋值

variableresult:std_logic:=‘0’;变量总结EDA技术与应用中国地质大学通信工程系EDA技术实践教程3.信号(Signal)

信号是描述硬件系统的基本数据对象,它类似于连接线。它除了没有数据流动方向说明以外,其他性质与实体的端口(Port)概念一致。信号通常在构造体、包集合和实体中说明。信号说明格式为:

SIGNAL

信号名:数据类型约束条件:=初始值;信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿真中有效。例SIGNAL

temp:

STD_LOGIC:='0';

第一组定义了一个单值信号temp,数据类型是标准位STD_LOGIC,信号初始值为低电平;EDA技术与应用中国地质大学通信工程系EDA技术实践教程

第二组定义了两个数据类型位BIT的信号flaga和flagb;

第三组定义了一个位矢量信号或者说是总线信号,或者组信号,数据类型是标准位矢量STD_LOGIC_VECTOR,共有16个信号元素。SIGNAL

flaga,flagb:

BIT;SIGNAL

data:

STD_LOGIC_VECTOR

(15DOWNTO0);EDA技术与应用中国地质大学通信工程系EDA技术实践教程

信号的使用和定义范围是实体、结构体和程序包。

在进程中,只能将信号列入敏感表,而不能将变量列入敏感表。可见进程只对信号敏感,而对变量不敏感。

在程序中,信号值的代入采用“<=”代入符,而不是像变量赋值时用“:=”。而且信号代入时可以附加延时。但需注意,信号的初始赋值符号仍是“:=”,不可附加延时。例如:X<=YAFTER10ns;X,Y都是信号,且Y的值经过10ns延时以后才被代入X。信号是一个全局量,它可以用来进行进程之间的通信。EDA技术与应用中国地质大学通信工程系信号(Signals)代表连线,Port也是一种信号没有方向性,可给它赋值,也可当作输入在Entity中和Architecture中定义设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。在Max+PlusII中被忽略。用<=

进行赋值signalcount:bit_vector(3downto0):=“0011”;信号总结EDA技术与应用中国地质大学通信工程系信号与变量赋值语句功能的比较

信号SIGNAL变量VARIABLE基本用法用于作为电路中的信号连线

用于作为进程中局部数据存储单元

适用范围在整个结构体内的任何地方都能适用

只能在所定义的进程中使用

行为特性在进程的最后才对信号赋值

立即赋值

EDA技术与应用中国地质大学通信工程系信号与变量的区别(1)architecturertlofstartissignalcount:integerrange0to7;beginprocess(clk)beginif(clk'eventandclk='1')then

count<=count+1;

if(count=0)thencarryout<='1';elsecarryout<='0';endif;endif;endprocess;endrtl;architecturertlofstartisbeginprocess(clk)variablecount:integerrange0to7;beginif(clk'eventandclk='1')then

count:=count+1;

if(count=0)thencarryout<='1';elsecarryout<='0';endif;endif;endprocess;endrtl;EDA技术与应用中国地质大学通信工程系LIBRARY

IEEE;USE

IEEE.STD_LOGIC_1164.ALL;USE

IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY

EXAM

ISPORT(CLK:IN

STD_LOGIC;QA:OUT

STD_LOGIC_VECTOR(4DOWNTO0);QB:OUT

STD_LOGIC_VECTOR(4DOWNTO0));END

EXAM;ARCHITECTURE

SVSV

OF

EXAM

ISSIGNAL

B:STD_LOGIC_VECTOR(4DOWNTO0):="00000";BEGINPROCESS(CLK)VARIABLE

A:STD_LOGIC_VECTOR(4DOWNTO0):="00000";BEGINIFCLK'EVENTANDCLK='1'THENA:=A+1;A:=A+1;B<=B+1;B<=B+1;ENDIF;QA<=A;QB<=B;ENDPROCESS;ENDSVSV;信号与变量赋值区别EDA技术与应用中国地质大学通信工程系EDA技术实践教程例

进程1:PROCESS(A,B,C,D)BEGIN

D<=A;X<=B+D;D<=C;Y<=B+D;ENDPROCESS;

D中最初代入的值是A,接着又代入C值。尽管D中先代入A值,后代入C值,在时间上有一个△的延时,但是,在代入时由于不进行处理,因此仿真时认为是时间0值延时。所以D的最终值应为C,这样执行的结果:X,Y的内容都为B+C。进程2:PROCESS(A,B,C)VARIABLED:STD_LOGIC_VECTOR(3DOWNTO0);BEGIN

D:=A;X<=B+D;D:=C;Y<=B+D;ENDPROCESS;

在执行“D:=A;”语句后,A的值就被赋给D,所以X为B+A。此后又执行“D:=C;”,从而使Y为B+C。由此可看出,信号的值将进程语句最后所代入的值作为最终代入值。而变量的值一经赋值就变成新的值。EDA技术与应用中国地质大学通信工程系【例3-8】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3IS

SIGNALA,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THEN

A<=D1;B<=A;Q1<=B;ENDIF;ENDPROCESS;END;变量赋值与信号赋值EDA技术与应用中国地质大学通信工程系【例3-9】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)

VARIABLEA,B:STD_LOGIC;

BEGINIFCLK'EVENTANDCLK='1'THEN

A:=D1;B:=A;Q1<=B;

ENDIF;ENDPROCESS;

END;变量赋值与信号赋值EDA技术与应用中国地质大学通信工程系

例3-8的RTL电路例3-9的RTL电路变量赋值与信号赋值EDA技术与应用中国地质大学通信工程系VHDL语言的数据类型(datatype)EDA技术与应用中国地质大学通信工程系EDA技术实践教程数据类型VHDL语言提供了许多标准的数据类型;用户也可自定义数据类型,这样使VHDL语言的描述能力和自由度进一步提高。但VHDL语言的数据类型的定义相当严格,不同类型之间的数据不能直接代入。而且相同类型,但位长不同的也不能直接代入,否则EDA工具在编译综合时会报告类型错。因此,为了熟练地使用VHDL语言编写程序,必须很好地理解各种数据类型的意义。EDA技术与应用中国地质大学通信工程系EDA技术实践教程1)VHDL标准的数据类型(2)实数(Real)实数类型也类似于数学上的实数,或称浮点数,表示范围-1.0E+38~+1.0E+38。

(3)位(Bit)在数字系统中,信号通常采用一个位来表示,取值只能是1或0。(1)整数(Integer)整数类型的数代表正整数、负整数和零,表示的范围为-(231-1)到(231-1),它与算术整数相似,可进行“+”,“-”,“*”,“/”等算术运算,不能用于逻辑运算。EDA技术与应用中国地质大学通信工程系EDA技术实践教程(4)位矢量(Bit_Vector)位矢量是用双引号括起来的一组位数据,使用位矢量必须注明位宽。例如:SIGNALa:BIT_VECTOR

(7downto0)信号a被定义为一个具有8位位宽的矢量,最左位是a(7),最右位是a(0)。(5)布尔量(Boolean)一个布尔量具有两种状态,“真”或者“假”。布尔量不属于数值,因此不能用于运算。它只能通过关系运算符获得。一般这一类型的数据初始值总为FALSE。EDA技术与应用中国地质大学通信工程系EDA技术实践教程(6)字符(Character)字符也是一种数据类型,字符类型通常用单引号引起来,如‘A’。字符类型区分大小写,如‘B’不同于‘b’。(7)字符串(String)字符串是由双引号括起来的一个字符序列,也称字符矢量或字符串数组。常用于程序的提示和说明,如“STARING”等。(8)时间(Time)时间是一个物理数据。完整的时间类型包括整数和单位两部分,整数与单位之间至少留一个空格,如55ms,2ns。在包集合STANDARD中给出了时间的预定义,其单位为fs,ps,ns,us,ms,sec,min,hr。

在系统仿真时,时间数据很有用,可用它表示信号延时,从而使模型系统能更逼近实际系统的运行环境。EDA技术与应用中国地质大学通信工程系EDA技术实践教程(9)错误等级(SeverityLevel)

在VHDL仿真器中,错误等级来用指示设计系统的工作状态,它有四种:即NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)。在仿真过程中,可输出这四种状态来提示系统当前的工作情况。(10)自然数(Natural)和正整数(Positive)自然数是整数的一个子类型,非负的整数,即为零和正整数。而Positive只能为正整数。例一个BCD数的比较器,利用约束的区间说明的端口说明语句可以写为:ENTITYbcd_compareISPORT(a,b:ININTEGERRANGE0TO9:=0;c:OUTBOOLEAN);ENDbcd_compare;EDA技术与应用中国地质大学通信工程系EDA技术实践教程2)IEEE预定义标准逻辑位与矢量在IEEE库的程序包STD_LOGIC_1164中,定义了两个重要的数据类型,即标准逻辑位STD_LOGIC和标准逻辑矢量STD_LOGIC_VECTOR,使得STD_LOGIC型数据可以具有如下的9种不同的值:‘U’————初始值不定‘X’————不定‘0’————0‘1’————1‘Z’————高阻‘W’————弱信号不定‘L’————弱信号0‘H’————弱信号1‘_’————忽略

注意在使用该类型数据时,在程序中必须写出库说明语句和使用包集合的说明语句。EDA技术与应用中国地质大学通信工程系8值逻辑系统数值关系表X01ZWLH-XXXXXXXXX0X0X0000X1XX11111XZX01ZWLHXWX01WWWWXLX01LWLHXHX01HWWHX-XXXXXXXXEDA技术与应用中国地质大学通信工程系EDA技术实践教程3)用户定义的数据类型

除上面讲述的标准的数据类型外,用户可自己定义数据类型,一般格式为:TYPE

数据类型名{,数据类型名}数据类型定义;例:TYPEmy_integerISRANGE0TO100;TYPEstateIS(idle,forward,backward,stop);可由用户定义的数据类型常见的有8种:

·枚举(Enumerated)类型;·整数(Integer)类型·实数(Real),浮点数(Floating)类型;·数组(Array)类型;·存取(Access)类型;·文件(File)类型;·记录(Recode)类型;·时间(Time)类型。EDA技术与应用中国地质大学通信工程系VHDL自定义数据类型--枚举列举数据对象可能存在的值,一般用于定义状态机的状态Type

statesis(idle,start,running,pause,stop)Signalcurrent_state:states;IEEE1076标准中预定义了两个枚举类型Type

booleanis(False,True)Type

bitis(‘0’,‘1’)EDA技术与应用中国地质大学通信工程系VHDL自定义数据类型--枚举IEEE1164标准中预定义了一个枚举类型Typestd_logicis(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’);该类型能比较全面地包括数字电路中信号会出现的几种状态,因此一般情况把这种类型代替bitSignala:std_logic;注意:这里的大小写是敏感的EDA技术与应用中国地质大学通信工程系EDA技术实践教程整数类型和实数类型(Integer&Real)

在实际应用中,用户可以根据实际的需要重新定义,整数和实数类型,并限定其取值范围,以使其能为综合所接受,从而提高芯片资源的利用率,一般格式为:TYPE

数据类型名

IS

数据类型定义约束范围;数据类型如果没有被指定,则默认为整数类型。TYPE

currentIS

REALRANGE-1E4TO

1E4;TYPE

digitISINTEGERRANGE0

TO9;EDA技术与应用中国地质大学通信工程系属性(Attributes)提供Entity、Architecture、Type和Signals的信息。有许多预定义的值、信号和范围的属性一个最常用的属性是’eventifclk’eventand

clk=‘1’then’left,’right,’high,’low,’lengthtypecountisintegerrange0to127count’left=0;count’right=127;count’high=127;count’low=0;count’length=128;EDA技术与应用中国地质大学通信工程系VHDL语言的运算操作符EDA技术与应用中国地质大学通信工程系EDA技术实践教程VHDL语言的运算操作符

在VHDL语言中共用4类操作符。可以分别进行逻辑运算(Logic)、关系运算(Relational)、算术运算(Arithmetic)和一些其他运算符。被操作符所操作的对象是操作数,且操作数的类型应该和操作符所要求的类型相一致。需要注意的是,各家EDA综合软件对运算操作符支持程度各不相同,使用时应参考综合工具说明。EDA技术与应用中国地质大学通信工程系EDA技术实践教程返回1)逻辑运算符

在VHDL语言中逻辑运算符有6种,它们分别是:NOT(非)AND(与)NAND(与非)OR(或)NOR(或非)XOR(异或)2)关系运算符

关系运算符它们分别是:=(等于)/=(不等于)<(小于)<=(小于等于)>(大于)>=(大于等于)EDA技术与应用中国地质大学通信工程系EDA技术实践教程3)算术运算符

+(加)-(减)*(乘)**(指数)

/(除)MOD(求模)REM(取余)

4)其它运算符<=(信号赋值):=(变量赋值)-(负)+(正)&(并置运算符,用于位的连接)(关联运算符,在元件例化时可用于形参到实参的映射)SLL(逻辑左移)SRL(逻辑右移)SLA(算术左移)SRA(算术右移)ROL(逻辑循环左移)**(乘方)ROR(逻辑循环右移)ABS(取绝对值)EDA技术与应用中国地质大学通信工程系结构体的三种描述方法

在VHDL语言中,可以用三种不同风格的描述方式来对硬件系统进行描述。即行为描述、数据流(或寄存器传输)描述和结构化的描述方式。一、行为描述(behavioral)

行为描述表示输入与输出间转化的行为,它不包含任何结构信息。

二、数据流描述(dataflow,RTL描述)方式

数据流描述方式,也称RTL描述方式。RTL是寄存器转换层次的简称。描述了数据流程的运动路径、运动方向和运动结果。数据流描述法采用并发信号赋值语句,而不是进程顺序语句。

三、结构描述方式(structural)

所谓结构体的结构描述方式,就是在层次设计中,高层次的设计模块调用低层次的设计模块,或者直接用门电路设计单元来构成一复杂的逻辑电路的描述方法。EDA技术与应用中国地质大学通信工程系结构体--行为描述Architecture

behavioral

ofeqcomp4is

begincomp:process(a,b)

begin

ifa=bthen equal<=‘1’;

else

equal<=‘0’;

endif;

endprocesscomp;end

behavioral;高层次的功能描述,不必考虑在电路中到底是怎样实现的。EDA技术与应用中国地质大学通信工程系结构体--数据流描述,描述输入信号经过怎样的变换得到输出信号Architecture

dataflow1

ofeqcomp4is

beginequal<=‘1’whena=belse‘0’;end

dataflow1;Architecture

dataflow2

ofeqcomp4is

beginequal<=not(a(0)xorb(0))andnot(a(1)xorb(1))andnot(a(2)xorb(2))andnot(a(3)xorb(3));end

dataflow2;当a和b的宽度发生变化时,需要修改设计,当宽度过大时,设计非常繁琐EDA技术与应用中国地质大学通信工程系结构体--结构化描述architecture

struct

ofeqcomp4isbeginU0:xnor2port

map(a(0),b(0),x(0));U1:xnor2port

map(a(1),b(1),x(1));U2:xnor2port

map(a(2),b(2),x(2));U3:xnor2port

map(a(3),b(3),x(3));U4:and4port

map(x(0),x(1),x(2),x(3),equal);end

struct;类似于电路的网络表,将各个器件通过语言的形式进行连接,与电路有一一对应的关系。一般用于大规模电路的层次化设计时。Gotop120EDA技术与应用中国地质大学通信工程系三种描述方式的比较描述方式优点缺点适用场合结构化描述连接关系清晰,电路模块化清晰电路不易理解、繁琐、复杂电路层次化设计数据流描述布尔函数定义明白不易描述复杂电路,修改不易小门数设计行为描述电路特性清楚明了进行综合效率相对较低大型复杂的电路模块设计、算法EDA技术与应用中国地质大学通信工程系作业:1、VHDL程序有哪些基本的部分?2、信号与变量使用时有何区别?3、BUFFER与INOUT有何异同?4、设计四选一多路选择器,用三种方法实现。EDA技术与应用中国地质大学通信工程系EDA技术实践教程3VHDL语言最基本的描述方法

顺序语句(SequentialStatements)用来实现模型的算法描述,并行语句(ConcurrentStatements)则用来表示各模型算法描述之间的连接关系。顺序语句和并行语句是VHDL程序设计中两大基本描述语句系列。EDA技术与应用中国地质大学通信工程系EDA技术实践教程1.VHDL语言顺序语句VHDL语言是并发语言,大部分语句是并发执行的。但在进程、过程、块语句和子程序(包括函数)中,还有许多顺序执行语句。顺序语句按出现次序执行各条语句。顺序语句包括以下几种:WAIT语句

IF语句

CASE语句

LOOP语句

NEXT 语句

EXIT语句

RETURN语句

NULL语句

REPORT语句

变量赋值语句 信号代入语句

过程调用语句 断言语句EDA技术与应用中国地质大学通信工程系EDA技术实践教程1)WAIT语句

进程在仿真运行中,当执行到WAIT等待语句时,运行程序将被挂起,并设置好再次执行的条件。WAIT语句可以设置4种不同的条件,这几类条件可以混用,格式为:

WAIT--无限等待

WAITON--敏感信号量变化

WAITUNTIL--条件满足

WAITFOR--时间到EDA技术与应用中国地质大学通信工程系EDA技术实践教程WAITON

WAITON是一种按信号等待的情形,当信号发生变化时,就执行WAIT语句之后的语句。

WAITONa,b;

WAITUNTIL

WAITUNTIL语句后面跟的是布尔表达式,当进程执行到该语句时将其挂起,直到表达式返回一个真值,进程才被再次调用。WAITUNTIL((x*10)<100);EDA技术与应用中国地质大学通信工程系EDA技术实践教程WAITFOR

WAITFOR语句后面跟时间表达式,当进程执行到该语句时将其挂起,直到指定的时间到,再执行WAIT语句

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论