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

下载本文档

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

文档简介

1、 EDA技术与应用 中国地质大学 通信工程系 第二章 VHDL语言介绍 EDA技术实践教程 EDA技术与应用 中国地质大学 通信工程系 原理图输入与 VHDL文本输入设计的区别 Graphic is what you draw is what you get “ tell me what hardware you want and I will give it to you” VHDL is what you write is what functional you get “ tell me how your circuit should behave and the VHDL compil

2、er will give you the hardware that does the job” but the designer can not control how the circuit implement EDA技术实践教程 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 VHDL语言的英文全名是语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language 即超高速集成电路硬即超高速集成电路硬 件描述语言。它是件描述语言。它是70年代和年代和80年代初,由美国国防部为他们年代初,由美国

3、国防部为他们 的超高速集成电路的超高速集成电路VHSIC计划提出的硬件描述语言,它支持计划提出的硬件描述语言,它支持 硬件的设计、综合、验证和测试。硬件的设计、综合、验证和测试。1986年年3月,月,IEEE开始致开始致 力于力于VHDL的标准化工作,讨论的标准化工作,讨论VHDL语言标准。语言标准。IEEE于于 1987年年12月公布了月公布了VHDL的标准版本(的标准版本(IEEE STD 1076/1987););1993年年VHDL重新修订,形成新的标准即重新修订,形成新的标准即IEEE STD 1076-1993,后来有相继颁布了,后来有相继颁布了IEEE STD 1076-2002

4、和和 IEEE STD 1076-2008标准。标准。 什么是什么是VHDL语言?语言? EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 从此以后,美国国防部实施新的技术标准,要求从此以后,美国国防部实施新的技术标准,要求 电子系统开发商的合同文件一律采用电子系统开发商的合同文件一律采用VHDL文档。即文档。即 第一个官方第一个官方VHDL标准得到推广、实施和普及。标准得到推广、实施和普及。 VHDL语言描述能力极强,覆盖了逻辑设计的诸多语言描述能力极强,覆盖了逻辑设计的诸多 领域和层次,并支持众多的硬件模型。设计者的原始描领域和层次,并支持众多的硬件模型。设计者的原始描 述是

5、非常简练的硬件描述,经过述是非常简练的硬件描述,经过EDA工具综合处理,最工具综合处理,最 终生成付诸生产的电路描述或版图参数描述的工艺文件。终生成付诸生产的电路描述或版图参数描述的工艺文件。 EDA技术与应用 中国地质大学 通信工程系 VHDL的优点 用于设计复杂的、多层次的设计。支持设计库 和设计的重复使用 与硬件独立,一个设计可用于不同的硬件结构, 而且设计时不必了解过多的硬件细节。 有丰富的软件支持VHDL的综合和仿真,从而 能在设计阶段就能发现设计中的Bug,缩短设 计时间,降低成本。 更方便地向ASIC过渡 VHDL有良好的可读性,容易理解。 EDA技术与应用 中国地质大学 通信工

6、程系 VHDL与计算机语言的区别 运行的基础 计算机语言是在CPURAM构建的平台上运行 VHDL设计的结果是由具体的逻辑电路、触发器组 成的数字电路 执行方式 计算机语言基本上以串行(顺序)的方式执行 VHDL在总体上是以并行方式工作 验证方式 计算机语言主要关注于变量值的变化 VHDL要实现严格的时序逻辑关系 EDA技术与应用 中国地质大学 通信工程系 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div_clk is port(clkin:in std_logic; r

7、eset:in std_logic; clk_time:out std_logic; clk_change:out std_logic); end div_clk; architecture arch of div_clk is signal counter:std_logic_vector(9 downto 0); begin clk_time=counter(9); clk_change=counter(7); l process(reset,clkin) l begin l if reset=1 then l counter=0000000000; l elsif clkinevent

8、and clkin=1 then l if counter=1111111111 then l counter=0000000000; l else l counter=counter+1; l end if; l end if; l end process; l end arch; EDA技术与应用 中国地质大学 通信工程系 VHDL语言的结构语言的结构 库(库(library)和包()和包(package) 实体(实体(entity) 结构体(结构体(architecture) EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 VHDL语言的结构语言的结构 VHDL程序结构程

9、序结构 一个完整的一个完整的VHDL语言程序通常包含实体语言程序通常包含实体 (Entity)、结构体()、结构体(Architecture)、配置)、配置 (Configuration)、包集合()、包集合(Package)和库)和库 (Library)5个部分。个部分。 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY en_name IS PORT ( input_pin_name : IN bit; output_pin_name : OUT bit); END en_na

10、me; ARCHITECTURE ar_name OF en_name IS BEGIN output_pin_name = input_pin_name; END ar_name; 大写的是关键字 VHDL 格式 逻辑 这两个必须相同 I/O 端口定义 逻辑行为定义 必须用en_name作 为文件名存盘,文文 件名和实体名件名和实体名相 同 VHDL的一般结构的一般结构 库说明 实体说明 结 构 体 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 例:例: 2 input AND gate ENTITY simand IS PORT( a, b : IN BIT; c : O

11、UT BIT); END simand; ARCHITECTURE simand_body OF simand IS BEGIN c = a AND b; END simand_body; EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 例:一个二选一电路的例:一个二选一电路的VHDL描述描述 ENTITY mux IS GENERIC (m: TIME:=5ns); PORT (d0,d1,sel:IN BIT; q:OUT BIT); END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp:BIT; BEGIN Cale: PR

12、OCESS(d0,d1,sel) VARIABLE temp1,temp2,temp3: BIT; BEGIN temp1:=d0 AND sel ; temp2:=d1 AND (NOT sel) ; temp3:=tmp1 OR temp2; tmp=tmp3; q=tmp AFTER m; END PROCESS; END connect; EDA技术与应用 中国地质大学 通信工程系 1、库(Library) 已编译的数据集合 存放包集合、实体、构造体、数据类型、函 数、过程和配置的定义 库的种类 - VHDL 系统库:library ieee; library std; - VHDL工

13、作库-WORK库 - 存放当前正在设计的编译结果,比如其他成员的设计 结果:library work - 厂家自定义库 - Quartus II中有lpm库,定义了许多数字电路基本元件 - Library lpm - 库的内容在quartusXlibrariesvhdl目录下 EDA技术与应用 中国地质大学 通信工程系 包(Package) 每个库里都包含一个或多个包 在VHDL程序的Architecture中,定义的 Type、Component、Function或其他的声 明对于其他设计文件来说都是不可见的。 Package中定义的这些对于其他设计则是 可见的。 Use library_n

14、ame.package_name.item 如果想Package中所有定义都可见,则 item用all来代替 EDA技术与应用 中国地质大学 通信工程系 Library ieee; Use ieee.std_logic_1164.std_ulogic; Use ieee.std_logic_1164.rising_edge; 例:例: EDA技术与应用 中国地质大学 通信工程系 IEEE标准库 std_logic_1164:定义了VHDL语言的基本数据类型,如 std_logic以及其向量类型;基本的运算,如and、nor等; std_logic_arith:重载了、*、/、等操作符,使其能对

15、 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技术与应用 中国地质大学 通信工程系 包(Packa

16、ge) LIBRARY ieee; USE ieee.std_logic_1164.ALL; PACKAGE ram_constants IS constant width : integer :=8; END ram_constants; LIBRARY ieee; USE ieee.std_logic_1164.ALL; LIBRARY work; USE work.ram_constants.ALL; EDA技术与应用 中国地质大学 通信工程系 程序包程序包 常数说明常数说明VHDL数据类型说明数据类型说明元件定义元件定义子程序子程序 如果包头部分声明了function或者procedu

17、re, 则在包体中一定要有对应的描述代码。 EDA技术与应用 中国地质大学 通信工程系 定义包(定义包(package)的语句结构:)的语句结构: Package 程序包名程序包名 is 程序包首程序包首 程序包首说明部分程序包首说明部分 End 程序包名;程序包名; Package body 程序包名程序包名 is 程序包体程序包体 程序包体说明部分以及包体程序包体说明部分以及包体 End 程序包名程序包名 EDA技术与应用 中国地质大学 通信工程系 Package pac1 is 程序包首开始程序包首开始 type byte is range 0 to 255; 第一数据类型第一数据类型b

18、yte subtype nibble is byte range 0 to 15;定义子类型;定义子类型nibble Constant byte_ff :byte:=255; 定义常数定义常数byte_ff Signal addend:nibble; 定义信号定义信号addend Component byte_adder 定义元件定义元件 Port( a,b:in byte; c:out byte; overflow:out boolean);); End component; Function my_function (a:in byte) return byte;定义函数定义函数 End

19、pac1; 程序包首结束程序包首结束 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 2、实体(、实体(ENTITY) 设计实体是设计实体是VHDL程序的基本单元,它与电路图中元器程序的基本单元,它与电路图中元器 件符号对应;简单的实体可以代表一个与门电路,复杂的可件符号对应;简单的实体可以代表一个与门电路,复杂的可 以是一个微处理器或一个数字电子系统。一个实体由实体说以是一个微处理器或一个数字电子系统。一个实体由实体说 明和结构体说明两部分组成。任何一个基本设计单元的实体明和结构体说明两部分组成。任何一个基本设计单元的实体 说明都具有如下结构:说明都具有如下结构: ENTIT

20、Y 实体名实体名 IS GENERIC(类属表)(类属表): PORT(端口表):端口表): END 实体名实体名 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 实体名:实体名:一个设计实体无论多大或多复杂,在实体中定义的实体一个设计实体无论多大或多复杂,在实体中定义的实体 名即为这个设计实体的名称。在元件例化中,即可用此名对相应名即为这个设计实体的名称。在元件例化中,即可用此名对相应 的设计实体进行调用。的设计实体进行调用。 类属说明:类属说明:类属参数说明是实体组织中的可选项。类属参数说明是实体组织中的可选项。 GENERIC常数名字表:数据类型常数名字表:数据类型:=设

21、定值设定值, 例如:例如:GENETRIC (m:TIME:=3ns); A=C AND B AFTER m ; 端口说明:端口说明:是对设计实体与外部接口的描述。端口说明的一是对设计实体与外部接口的描述。端口说明的一 般书写格式:般书写格式: PORT(端口名(端口名,端口名,端口名:方向:方向 数据类型;数据类型; 端口名:方向端口名:方向 数据类型名);数据类型名); PORT说明语句是对一个设计实 体界面的说明及对设计实体与 外部电路的接口通道的说明, 其中包括对每一接口的输入输 出模式和数据类型的定义 端口名是设计者为实体的每一 个对外通道所取的名字,端口 模式是指这些通道上的数据流

22、 动方式。数据类型是指端口上 流动的数据的表达格式或取值 类型 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 端口类似于原理图部件符号上的管脚端口类似于原理图部件符号上的管脚。 端口模式:端口模式:用来说明数据、信号通过该端口的方向,端口模式有用来说明数据、信号通过该端口的方向,端口模式有 IN、OUT、INOUT、BUFFER。 IN模式:模式:主要用于时钟输入、控制输入和单向的数据输入。不用主要用于时钟输入、控制输入和单向的数据输入。不用 的输入一般接地,以免浮动引入干扰噪声。的输入一般接地,以免浮动引入干扰噪声。 OUT模式:模式:用于数据输出,不能通过该端口向实体输入

23、信号。不用于数据输出,不能通过该端口向实体输入信号。不 用的输出端口不能接地,避免造成输出高电平烧毁被设计实体。用的输出端口不能接地,避免造成输出高电平烧毁被设计实体。 BUFFER模式:模式:与输出模式的端口相类似,只是该模式允许内部与输出模式的端口相类似,只是该模式允许内部 引用该端口的信号。缓冲端既能用于输出,也能用于反馈。引用该端口的信号。缓冲端既能用于输出,也能用于反馈。 INOUT模式:模式:可以代替输入、输出和缓冲三种模式。可以代替输入、输出和缓冲三种模式。 EDA技术与应用 中国地质大学 通信工程系 b,c: out std_logic ); end test1; archit

24、ecture a of test1 is begin b = not(a); c = b;-Error end a; Entity test2 is port(a: in std_logic; b : buffer std_logic; c: out std_logic ); end test2; architecture a of test2 is begin b = not(a); c = b; end a; EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 3、结构体(、结构体(ARCHITECTURE) 结构体指明了该设计实体的行为,定义了该设计实体的功能,结构体指明了该

25、设计实体的行为,定义了该设计实体的功能, 规定了该设计实体的数据流程,指派了实体中内部的连接关系。规定了该设计实体的数据流程,指派了实体中内部的连接关系。 n结构体结构体通过若干并行语句来描述设计实体的逻辑功能(行为描述)、数据流通过若干并行语句来描述设计实体的逻辑功能(行为描述)、数据流 向(向(RTLRTL描述)或内部电路结构(结构描述),从而建立设计实体输出与输入之描述)或内部电路结构(结构描述),从而建立设计实体输出与输入之 间的关系。结构体中的并行语句对应了硬件电路中的不同部件之间、不同数据间的关系。结构体中的并行语句对应了硬件电路中的不同部件之间、不同数据 流之间的并行工作特性。流

26、之间的并行工作特性。 n用用VHDL语言描述结构体功能有三种方法:语言描述结构体功能有三种方法: 行为行为behavioral描述;描述; 寄存器寄存器 传输描述(传输描述(RTL描述,也称为数据流描述,也称为数据流dataflow描述方式);描述方式); 结构结构structural描描 述。不同的描述方式,只体现在描述语句上,而结构体的结构是完全一样的。述。不同的描述方式,只体现在描述语句上,而结构体的结构是完全一样的。 n一个设计实体可以有多个结构体一个设计实体可以有多个结构体,分别代表该实体的不同实现方案。,分别代表该实体的不同实现方案。 EDA技术与应用 中国地质大学 通信工程系 E

27、DA技术实践教程 返回 (1)结构体的格式及其命名:)结构体的格式及其命名: ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句 BEGIN 功能描述语句功能描述语句 ARCHITECTURE connect OF mux IS EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 (2)定义语句)定义语句 结构体定义语句位于结构体定义语句位于ARCHITECTURE和和 BEGIN之间。之间。 说明语句用以定义结构体中所用的数据对象说明语句用以定义结构体中所用的数据对象 ( CONSTANT 、 SIGNAL )和子程序)和子程序 ( FUNCT

28、ION 、 PROCEDURE ),并对所引用的),并对所引用的 元件元件(COMPONENT)加以说明,但加以说明,但不能定义变量不能定义变量。 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 (3)并行处理语句)并行处理语句 并行处理语句是结构体功能描述的重要语句,功能描述语并行处理语句是结构体功能描述的重要语句,功能描述语 句位于句位于BEGIN和和END之间。在结构体中的语句都是并行执行的,之间。在结构体中的语句都是并行执行的, 这些语句具体地描述了结构体的行为及其连接关系。包括这些语句具体地描述了结构体的行为及其连接关系。包括并行并行 进程语句、条件信号赋值语句、选择

29、信号赋值语句、并行信号进程语句、条件信号赋值语句、选择信号赋值语句、并行信号 赋值语句、并行子程序调用语句赋值语句、并行子程序调用语句和和元件例化语句(生成语句)。元件例化语句(生成语句)。 例例 二选一的数据流方式描述可以写成为:二选一的数据流方式描述可以写成为: ARCHITECTURE dataflow OF mux IS BEGIN q=(d0 AND sel)OR (NOT sel)AND d1); END dataflow; EDA技术与应用 中国地质大学 通信工程系 并行语句并行语句 EDA技术与应用 中国地质大学 通信工程系 VHDL语言的基本语法语言的基本语法 1) 标识符

30、2) 数据对象 3) 数据类型 4) 运算操作符 EDA技术与应用 中国地质大学 通信工程系 VHDL语言的标识符语言的标识符 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 VHDL语言的标识符语言的标识符 VHDL中的标识符是常数、变量、信号、端口、子程序或参数的中的标识符是常数、变量、信号、端口、子程序或参数的 名字。使用标识符要遵守如下规则:名字。使用标识符要遵守如下规则: 标识符由字母(标识符由字母(AZ,az)、数字和下划线字符组成。)、数字和下划线字符组成。 任何标识符必须以英文字母开头。任何标识符必须以英文字母开头。 末字符不能为下划线。末字符不能为下划线。 不

31、允许出现两个连续下划线。不允许出现两个连续下划线。 标识符中不区分大小写字母。标识符中不区分大小写字母。 VHDL定义的保留字或称关键字,不能用作标识符。定义的保留字或称关键字,不能用作标识符。 VHDL中的注释由两个连续的虚线(中的注释由两个连续的虚线(-)开始,直到行尾。)开始,直到行尾。 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 例:一些错误的标识符例:一些错误的标识符 _Decoder_1-起始为非英文字母起始为非英文字母 3DOP -起始为数字起始为数字 Large # number-“#”不能成为标识符的构成符号不能成为标识符的构成符号 Date_bus -不

32、能有双下划线不能有双下划线 Copper_ -最后字符不能为下划线最后字符不能为下划线 on -关键字关键字 EDA技术与应用 中国地质大学 通信工程系 VHDL数据对象(数据对象(Data Objects) 1. 常数常数 2. 变量变量 3. 信号信号 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 1. 常数(常数(Constant) 常数是一个固定的值,主要是为了使设计实体中的常数更常数是一个固定的值,主要是为了使设计实体中的常数更 容易阅读和修改。常数一旦被赋值就不能再改变。一般格式:容易阅读和修改。常数一旦被赋值就不能再改变。一般格式: CONSTANT 常数名:数

33、据类型:常数名:数据类型:= 表达式;表达式; 例例 : CONSTANT fbus: BIT_VECTOR: = “01011001”; -总线上总线上 数据设备向量数据设备向量 CONSTANT Vcc: REAL: =5.0; -设计实体的设计实体的 电源电压指定电源电压指定 CONSTANT dely: TIME: =25ns; -输入输入/输出的延迟输出的延迟 时间时间 常数所赋的值应与定义的数据类型一致。常数所赋的值应与定义的数据类型一致。 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 常量的使用范围取决于它被定义的位置。程序包常量的使用范围取决于它被定义的位置。

34、程序包 中定义的常量具有最大的全局化特性,可以用在调用中定义的常量具有最大的全局化特性,可以用在调用 此程序包的所有设计实体中;设计实体中定义的常量,此程序包的所有设计实体中;设计实体中定义的常量, 其有效范围为这个实体定义的所有的结构体;设计实其有效范围为这个实体定义的所有的结构体;设计实 体中某一结构体中定义的常量只能用于此结构体;结体中某一结构体中定义的常量只能用于此结构体;结 构体中某一单元定义的常量,如一个进程中,这个常构体中某一单元定义的常量,如一个进程中,这个常 量只能用在这一进程中。量只能用在这一进程中。 EDA技术与应用 中国地质大学 通信工程系 常数(Constant) 固

35、定值,不能在程序中被改变 增强程序的可读性,便于修改程序 在综合后,连接到电源和地 可在库Library、实体Entity、结构体 Architecture、进程Process中进行定义,其有 效范围也相应限定 常数总结常数总结 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 2. 变量变量( Variable ) 变量是一个局部变量,它只能在函数语句和进程语句结构变量是一个局部变量,它只能在函数语句和进程语句结构 中使用,用作局部数据存储。在仿真过程中,它不像信号那样,中使用,用作局部数据存储。在仿真过程中,它不像信号那样, 到了规定的仿真时间才进行赋值,变量的赋值是立即生效

36、的。到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。 变量常用在实现某种算法的赋值语句中。变量常用在实现某种算法的赋值语句中。 一般格式:一般格式: VARIABLE 变量名:数据类型变量名:数据类型 约束条件:约束条件:= 表达式;表达式; 例例: VARIABLE x, y: INTEGER; -定义定义x,y为整数变量为整数变量 VARIABLE count: INTEGER RANGE 0 TO 255:=10; -定义计数变量范围定义计数变量范围 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 变量的适用范围仅限于定义了变量的进程或子程变量的适用范围仅限于定义了

37、变量的进程或子程 序中。若将变量用于进程之外,必须将该值赋给一个序中。若将变量用于进程之外,必须将该值赋给一个 相同的类型的相同的类型的信号信号,即,即进程之间传递数据靠的是信号进程之间传递数据靠的是信号。 变量赋值语句的语法格式如下:变量赋值语句的语法格式如下: 目标变量:目标变量:=表达式;表达式; 变量赋值符号是变量赋值符号是“:=”。赋值语句右方的表达式。赋值语句右方的表达式 必须是一个与目标变量有必须是一个与目标变量有相同数据类型相同数据类型的数值。变量的数值。变量 不能用于硬件连线和存储元件。下例表达了变量不同不能用于硬件连线和存储元件。下例表达了变量不同 的赋值方式。的赋值方式。

38、 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 例:例: VARIABLE x, y :REAL; VARIABLE a, b: BIT_VECTOR(0 TO 7); x:=100.0; -实数赋值,实数赋值,x是实数变量是实数变量 y:=1.5+x; -运算表达式赋值,运算表达式赋值,y也是实数变量也是实数变量 a:=b; a:=”1010101”; -位矢量赋值,位矢量赋值,a的数据类型是位矢量的数据类型是位矢量 a(3 TO 6):=(1,1,0,1); -段赋值段赋值 a(0 TO 5):=b(2 TO 7); a(7):=0; -位赋值位赋值 EDA技术与应用 中

39、国地质大学 通信工程系 变量(Variable) 临时数据,没有物理意义 只能在Process和Function中定义,并只在其内部有 效 要使其全局有效,先转换为Signal。 用 := 进行赋值 variable result : std_logic := 0; 变量总结变量总结 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 3. 信号(信号(Signal) 信号是描述硬件系统的基本数据对象,它类似于连接线。它信号是描述硬件系统的基本数据对象,它类似于连接线。它 除了没有数据流动方向说明以外,其他性质与实体的端口(除了没有数据流动方向说明以外,其他性质与实体的端口(Por

40、t) 概念一致。信号通常在构造体、包集合和实体中说明。信号说明概念一致。信号通常在构造体、包集合和实体中说明。信号说明 格式为:格式为: SIGNAL 信号名:数据类型信号名:数据类型 约束条件:约束条件:= 初始值;初始值; 信号初始值的设置不是必需的,而且初始值仅在信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿的行为仿 真中有效。真中有效。 例例 SIGNAL temp: STD_LOGIC:=0; 第一组定义了一个单值信号第一组定义了一个单值信号temp, 数据类型是标数据类型是标 准位准位STD_LOGIC,信号初始值为低电平;,信号初始值为低电平; EDA技术与应用 中国

41、地质大学 通信工程系 EDA技术实践教程 第二组定义了两个数据类型位第二组定义了两个数据类型位BIT的信号的信号flaga和和 flagb; 第三组定义了一个位矢量信号或者说是总线信号,第三组定义了一个位矢量信号或者说是总线信号, 或者组信号,数据类型是标准位矢量或者组信号,数据类型是标准位矢量 STD_LOGIC_VECTOR,共有,共有16个信号元素。个信号元素。 SIGNAL flaga, flagb: BIT; SIGNAL data: STD_LOGIC_VECTOR (15 DOWNTO 0); EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 信号的使用和定义范围是

42、实体、结构体和程序包。信号的使用和定义范围是实体、结构体和程序包。 在进程中,在进程中,只能将信号列入敏感表只能将信号列入敏感表,而不能将变,而不能将变 量列入敏感表。可见进程只对信号敏感,而对变量不量列入敏感表。可见进程只对信号敏感,而对变量不 敏感。敏感。 在程序中,信号值的代入采用在程序中,信号值的代入采用“=”代入符,而代入符,而 不是像变量赋值时用不是像变量赋值时用“:=”。而且信号代入时可以附。而且信号代入时可以附 加延时。但需注意,信号的初始赋值符号仍是加延时。但需注意,信号的初始赋值符号仍是“:=”, 不可附加延时。例如:不可附加延时。例如:X=Y AFTER 10ns;X,Y

43、都都 是信号,且是信号,且Y的值经过的值经过10ns延时以后才被代入延时以后才被代入X。 信号是一个信号是一个全局量全局量,它可以用来,它可以用来进行进程之间的通信。进行进程之间的通信。 EDA技术与应用 中国地质大学 通信工程系 信号(Signals) 代表连线,Port也是一种信号 没有方向性,可给它赋值,也可当作输入 在Entity中和Architecture中定义 设定的初始值在综合时没有用,只是在仿真时在 开始设定一个起始值。在MaxPlusII中被忽略。 用 = 进行赋值 signal count:bit_vector(3 downto 0):=“0011”; 信号总结信号总结 E

44、DA技术与应用 中国地质大学 通信工程系 信号与变量赋值语句功能的比较信号与变量赋值语句功能的比较 信号信号SIGNAL 变量变量VARIABLE 基本用法基本用法 用于作为电路中的信号连线用于作为电路中的信号连线 用于作为进程中局部数据存储单元用于作为进程中局部数据存储单元 适用范围适用范围 在整个结构体内的任何地方都能适用在整个结构体内的任何地方都能适用只能在所定义的进程中使用只能在所定义的进程中使用 行为特性行为特性 在进程的最后才对信号赋值在进程的最后才对信号赋值 立即赋值立即赋值 EDA技术与应用 中国地质大学 通信工程系 信号与变量的区别(1) architecture rtl o

45、f start is signal count : integer range 0 to 7; begin process(clk) begin if (clkevent and clk=1) then count = count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl; architecture rtl of start is begin process(clk) variable count : integer range 0 to 7; begi

46、n if (clkevent and clk=1) then count := count + 1; if(count=0) then carryout = 1; else carryout = 0; end if; end if; end process; end rtl; EDA技术与应用 中国地质大学 通信工程系 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY EXAM IS PORT(CLK:IN STD_LOGIC; QA:OUT STD_LOGIC_VECTOR(4

47、 DOWNTO 0); QB:OUT STD_LOGIC_VECTOR(4 DOWNTO 0) ); END EXAM; ARCHITECTURE SVSV OF EXAM IS SIGNAL B:STD_LOGIC_VECTOR(4 DOWNTO 0):=00000; BEGIN PROCESS(CLK) VARIABLE A:STD_LOGIC_VECTOR(4 DOWNTO 0):=00000; BEGIN IF CLKEVENT AND CLK=1 THEN A:=A+1; A:=A+1; B=B+1; B=B+1; END IF; QA=A; QB=B; END PROCESS; E

48、ND SVSV; 信号与变量赋值区别信号与变量赋值区别 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 例例 进程进程1: PROCESS(A,B,C,D) BEGIN D=A; X=B+D; D=C; Y=B+D; END PROCESS; D中最初代入的值是中最初代入的值是A, 接着又代入接着又代入C值。尽管值。尽管D 中先代入中先代入A值,后代入值,后代入C 值,在时间上有一个的值,在时间上有一个的 延时,但是,在代入时由延时,但是,在代入时由 于不进行处理,因此仿真于不进行处理,因此仿真 时认为是时间时认为是时间0值延时。值延时。 所以所以D的最终值应为的最终值应为C,

49、 这样执行的结果:这样执行的结果:X,Y 的内容都为的内容都为B+C。 进程进程2: PROCESS(A,B,C) VARIABLE D:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN D:=A; X=B+D; D:=C; Y=B+D; END PROCESS; 在执行在执行“D:=A;”语句后,语句后,A的值就被赋给的值就被赋给D, 所以所以X为为B+A。此后又执行。此后又执行“D:=C;”,从而使,从而使Y为为 B+C。由此可看出,信号的值将进程语句最后所代入。由此可看出,信号的值将进程语句最后所代入 的值作为最终代入值。而变量的值一经赋值就变成新的值作为最终代入值

50、。而变量的值一经赋值就变成新 的值。的值。 EDA技术与应用 中国地质大学 通信工程系 【例例3-8】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL A,B : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN A = D1; B = A; Q1 =B;

51、END IF; END PROCESS ; END ; 变量赋值与信号赋值变量赋值与信号赋值 EDA技术与应用 中国地质大学 通信工程系 【例例3-9】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE A,B : STD_LOGIC ; BEGIN IF CLKEVENT AND CLK =1 T

52、HEN A:= D1; B := A; Q1 = B; END IF; END PROCESS ; END ; 变量赋值与信号赋值变量赋值与信号赋值 EDA技术与应用 中国地质大学 通信工程系 DQ DQDQDQD 1Q 1 D 1Q 1 C LK C LK 例例3-8的的RTL电路电路 例例3-9的的RTL电路电路 变量赋值与信号赋值变量赋值与信号赋值 EDA技术与应用 中国地质大学 通信工程系 VHDL语言的数据类型(语言的数据类型(data type) EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 数据类型数据类型 VHDL语言提供了许多标准的数据类型;用户也可自定义数

53、语言提供了许多标准的数据类型;用户也可自定义数 据类型,这样使据类型,这样使VHDL语言的描述能力和自由度进一步提高。但语言的描述能力和自由度进一步提高。但 VHDL语言的数据类型的定义相当严格,不同类型之间的数据不语言的数据类型的定义相当严格,不同类型之间的数据不 能直接代入。而且相同类型,但位长不同的也不能直接代入,能直接代入。而且相同类型,但位长不同的也不能直接代入, 否则否则EDA工具在编译综合时会报告类型错。因此,为了熟练地工具在编译综合时会报告类型错。因此,为了熟练地 使用使用VHDL语言编写程序,必须很好地理解各种数据类型的意义。语言编写程序,必须很好地理解各种数据类型的意义。

54、EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 1) VHDL标准的数据类型标准的数据类型 (2)实数()实数(Real) 实数类型也类似于数学上的实数,或称浮点数,表示范围实数类型也类似于数学上的实数,或称浮点数,表示范围1.0E 381.0E38。 (3)位()位(Bit) 在数字系统中,信号通常采用一个位来表示,取值只能是在数字系统中,信号通常采用一个位来表示,取值只能是1或或0。 (1)整数()整数(Integer) 整数类型的数代表正整数、负整数和零,表示的范围为(整数类型的数代表正整数、负整数和零,表示的范围为(231 1)到()到(2311),它与算术整数相似,可

55、进行),它与算术整数相似,可进行“”,“”, “*”,“/”等算术运算,不能用于逻辑运算。等算术运算,不能用于逻辑运算。 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 (4)位矢量()位矢量(Bit_ Vector) 位矢量是用双引号括起来的一组位数据,使用位矢量必须注明位矢量是用双引号括起来的一组位数据,使用位矢量必须注明 位宽。位宽。 例如:例如:SIGNAL a: BIT_VECTOR ( 7 downto 0 ) 信号信号a被定义为一个具有被定义为一个具有8位位宽的矢量,最左位是位位宽的矢量,最左位是a(7),最右位,最右位 是是a(0)。 (5) 布尔量(布尔量(B

56、oolean) 一个布尔量具有两种状态,一个布尔量具有两种状态,“真真”或者或者“假假”。布尔量不属。布尔量不属 于数值,因此不能用于运算。它只能通过关系运算符获得。一于数值,因此不能用于运算。它只能通过关系运算符获得。一 般这一类型的数据初始值总为般这一类型的数据初始值总为FALSE。 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 (6)字符()字符(Character) 字符也是一种数据类型,字符类型通常用单引号引起来,如字符也是一种数据类型,字符类型通常用单引号引起来,如 A。字符类型区分大小写,如。字符类型区分大小写,如B不同于不同于b。 (7)字符串()字符串(St

57、ring) 字符串是由双引号括起来的一个字符序列,也称字符矢量或字符字符串是由双引号括起来的一个字符序列,也称字符矢量或字符 串数组。常用于程序的提示和说明,如串数组。常用于程序的提示和说明,如“STARING”等。等。 (8) 时间(时间(Time) 时间是一个物理数据。完整的时间类型包括整数和单位两部分,时间是一个物理数据。完整的时间类型包括整数和单位两部分, 整数与单位之间至少留一个空格,如整数与单位之间至少留一个空格,如55 ms, 2 ns。在包集合。在包集合 STANDARD中给出了时间的预定义,其单位为中给出了时间的预定义,其单位为fs, ps, ns, us, ms, sec,

58、 min, hr。 在系统仿真时,时间数据很有用,可用它表示信号延时,从在系统仿真时,时间数据很有用,可用它表示信号延时,从 而使模型系统能更逼近实际系统的运行环境。而使模型系统能更逼近实际系统的运行环境。 EDA技术与应用 中国地质大学 通信工程系 EDA技术实践教程 (9)错误等级()错误等级(Severity Level) 在在VHDL仿真器中,错误等级来用指示设计系统的工作状态,它有四种:仿真器中,错误等级来用指示设计系统的工作状态,它有四种: 即即NOTE(注意)、(注意)、WARNING(警告)、(警告)、ERROR(出错)、(出错)、FAILURE (失败)。在仿真过程中,可输出

59、这四种状态来提示系统当前的工作情况。(失败)。在仿真过程中,可输出这四种状态来提示系统当前的工作情况。 (10)自然数()自然数(Natural)和正整数()和正整数(Positive) 自然数是整数的一个子类型,自然数是整数的一个子类型, 非负的整数,即为零和正整数。而非负的整数,即为零和正整数。而Positive只能只能 为正整数。为正整数。 例一个例一个BCD数的比较器,利用约束的区间说明的端口说明语句可以写为:数的比较器,利用约束的区间说明的端口说明语句可以写为: ENTITY bcd_compare IS PORT (a,b:IN INTEGER RANGE 0 TO 9:=0; c

60、:OUT BOOLEAN); END bcd_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 弱信号不定

温馨提示

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

评论

0/150

提交评论