第八章VHDL可综合性(2011)
时间:2025-04-20
时间:2025-04-20
第八章 VHDL的可综合性主讲人:徐向民教授
1/99
本章目录 VHDL语言结构向硬件的映射 VHDL类型 VHDL对象运算符顺序语句并行语句
2/99
VHDL语言结构向硬件的映射 EDA工业界普遍认为,有效的VHDL建模风格是控制综合结果最为有力的手段。 为了建立有效的VHDL代码,设计师应了解VHDL语言结构与综合结果的关系。 应该指出的是,由于综合算法的不同,对于同样的硬件描述,不同的CAD综合工具可能会得到不同的综合结果。
VHDL语言在创立时,主要是为了满足仿真的需要。自从VHDL被用于综合以来,都是对VHDL的子集进行处理,这就是所谓的可综合的VHDL子集。不同综合工具支持的可综合子集不尽相同,通常有如下要求:
(1)延时描述(after语句、 wait for语句)等被忽略。现在的所有综合工具都忽略源代码中的延时语句,有些工具干脆把这些语句处理为语法错误。大部分工具忽略延时语句后,给出警告提示。而综合时间约束则在综合过程中通过综合命令输入。
(2)支持有限类型VHDL具有丰富的类型定义,但是有些类型不具备硬件对应物,不可能被综合,如文件类型。通常可综合类型包括位、位矢量、布尔量、整数、枚举类型、数组等。其余像浮点数类型、记录类型等只能得到有限支持,而时间类型等完全不能被综合。
(3)进程的书写要服从一定的限制。在仿真时,VHDL进程可以任意书写。而在综合时,通常要求一个进程内只能有一个有效时钟,有的工具还有进一步的限制。
(4)可综合代码应该是同步式的设计。现在的EDA综合工具普遍推荐使用同步设计风格,即整个芯片电路的状态只能在时钟信号有效时发生改变。当然设计师也可能尝试其他风格的设计,如异步设计,但这时综合工具产生的结果往往还需要设计师进一步优化或调整。
VHDL类型VHDL语言中的对象有常量(constant)、信号 (signal)、和变量(variable)三种,它们都必须定义为如下某种类型。类型定义说明了对象可以使用的数值,并隐含表示了可以对其进行的操作。1、可综合数据类型 2、可综合子集
VHDL类型1、可综合数据类型面向综合的建模都支持这样一些类型:枚举类型、整数、一维数组。比较先进的综合工具现在一般也可以处理二维数组和简单的记录类型。 (1)枚举类型枚举类型通过列出所有可能的取值来定义,例如: type Boolean is (FALSE, TRUE); type State_type is (HALT,READY,RUN,ERROR); type Std_ulogic is ( U , X , 0 , 1 , Z , - );以上Std_ulogic的定义实际是对‘0’‘1’等字符进行了重载,由于这个定义已经成为IEEE标准,因此综合时
不会产生额外硬件。而对于抽象层次更高的Boolean和 State_type则需要进行状态编码。一般来说,状态编码是把状态值编码为位矢量(如bit_vector),矢量长度是能够表示所有状态的最短位宽。例如,State_type的4个状态值可以分别校编码为 00 , 01 , 10 和 11 。
VHDL类型(2)整数类型可综合的整数类型定义总是有界的,例如: type My_integer is Integer range 0 to 255; subtype Byte_int is Integer range -128 to 127;对整数类型进行综合时,综合工具首先将其翻译为位矢量,矢量长度仍取能够满足需要的最短位宽。建议类型定义时明确指出整数的范围,以便于综合工具进行优化。否则大部分综合工具按32位处理。综合后的电路中,整数以矢量形式出现,但通常只能以整个矢量为单位访问,即不能单独访问每一位。
VHDL类型(3)数组类型现在的综合工具都能够处理一维数组,例如: type Word is arry (31 downto 0) of Bit; type My_RAM is array (1023 downto 0 ) of Word;对于Word类型,综合工具通常将其综合为总线。 My_RAM类型实际是二维的,这种用两个一维数组代替一个两维数组是常用的综合建模技巧。现在先进的综合工具如synospys DC可以将其综合为RAM,一般的综合工具至少可以把它综合为寄存器。
VHDL类型(4)记录类型记录类型在定义复杂数据类型时非常方便,能够把不同数据类型的数据组织在一起统一访问。但是,EDA工业界对综合工具是否应该支持记录类型还没有统一意见,因此大多数综合工具不提供这种能力或只能把组合了简单数据类型的记录进行综合。
VHDL类型2、可综合子集VHDL在1989年首次公布时,就提供了两个程序包: Standard和 TextIO其中定义了各种预定义数据类型。 1992年,IEEE颁布了标准程序包Std_logic_1164,其中定义了9值数据类型Std_ulogic,即相应的决断类型Std_logic。 2004年,IEEE批准了一种修订标准IEEE 1076.6-2004,该标准提供了VHDL RTL综合子集的重要扩展。新改进版包括VHDL几乎每一个特性,能被用于在RTL级进行建模并综合。此处还包括触发器和锁存器建模的扩展语义导引。用户将能够以多种不同风格编写一个RTL模型,每一种都符合标准。这项标准化将最终帮助RTL确认。
VHDL类型该项标准主要支持以下类型的综合: a) bit, boolean, bit_vector b) character, string c) integer d) std_ulogic, std_ulogic_vector, std_logic, std_logic_vector e) signed, unsignd
VHDL对象VHDL语言中有三类对象,常量(constant),变量(variable),信号 (signal),它们是VHDL代码中的数据的载体。
1、常量常量仅被计算一次。在很多情况下,可以通过使用常量引导综合器获得优化的结果。在综合过程中
,常量被处理的方式很多,主要有下述情况: 1)用于描述真值表、ROM等,或被用于信号赋值,常量 …… 此处隐藏:2778字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:网上商城购物系统毕业设计论文