VHDL高级使用技巧(3)

2019-03-15 13:18

? 整型(INTEGER)

VHDL中的整型与数学中的整形定义相似,可以使用加、减、乘、除等运算符。整数的最小范围从-2147483647到+2147483647,即32位有符号的二进制数。 ? 实数(REAL)

实数即浮点数,有正有负,书写时一定要有小数点。实数的最小范围从-1.0E+38到+1.0E+38。

? 记录(RECORD)

记录是异构复合类型,也就是说,记录中的元素可以是不同的类型。记录类型的格式如下:

TYPE 记录名 IS RECORD ---记录中元素的类型说明; END RECORD

一个具体的实例如下:

TYPE month_name(Jan, Feb, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); TYPE date IS RECORD

day : integer range 0 to 31; month : month_name;

year : Integer range 0 to 3000; END RECORD; ? 数组(ARRAY)

数组用于定义同一类型值的集合。数组可以是一维的(有一个下标),也可以是多维的(有多个下标)。此外,数组还可分为限定性数组和非限定想数组,限定性数组下标的取值范围在该数组类型定义时就被确定;而非限定性数组下标的取值范围随后才确定。其具体格式如下:

TYPE 数据类型名 IS ARRAY 范围 OF 原数据类型; 举例如下:

TYPE word IS ARRAY (1 TO 8) OF STD_LOGIC;

“STD_LOGIC_VECTOR”也属于数组,因它在程序包“STD_LOGIC_1164”中被定义成数组。 ? 子类型

所谓子类型是用户对定义的数据类型作一些范围限制而形成的一种新的数据类型。子类型定义的一般格式为:

SUBTYPE 子类型名 IS 数据类型名 [范围];

子类型可以是对其父类型施加限制条件,也可以是简单地对其父类型重新起个名字,而没有增加任何新的意义。 2. 数据类型的转换

在VHDL语言中,数据类型的定义是相当严格的,不同类型数据是不能进行运算和直接赋值的。为了实现正确的运算和赋值操作,必须将数据进行类型转换。数据类型的转换是由转换函数完成的,VHDL的标准程序包提供了一些常用的转换函数,如: ? FUNCTION TO_bit (s : std_ulogicl; xmap : BIT :=’0’) RETURN BIT;

? FUNCTION TO_bit_vector ( s : std_logic_vector; xmap : BIT :=’0’ ) RETURN

BIT_VECTOR; 等函数。

3.2.3 VHDL语言的运算操作符

如同别的程序设计语言一样,VHDL中的表达式是由运算符将基本元素连接起来的式子。VHDL的运算符可分为4组:

算数运算符、关系运算符、逻辑运算符和其他运算符以及它们的优先级别如下表所示:

表2-2 VHDL的运算符及优先级别

优先级顺序 低 高

通常,在一个表达式中有两个以上的算符时,需要使用括号将这些操作分组。如果一串操作的算符相同,且是AND、OR、XOR这三个算符中的一种,则不需要使用括号,如果一串操作中的算符不同或有除这三种算符之外的算符,则必须使用括号。如:

a AND b AND c AND d (a OR b) NAND c

关系运算符=、/=、<、<=和>=的两边类型必须相同,因为只有相同的数据类型才能比较,其比较的结果为BOOLEAN型。

正(+)负(-)号和加减号的意义与一般算术运算相同。连接运算符用于一维数组,“&”符号右边的内容连接之后形成一个新的数组,也可以在数组后面连接一个新的元素,或将两个单元素连接形成数组。连接操作常用于字符串。

运算符类型 逻 辑 运 算 符 关 系 运 算 符 运 算 符 AND OR NAND NOR XOR XNOR = /= < > <= >= + ― & + ― * / MOD REM * * ABS NOT 功 能 与 或 与非 或非 异或 异或非 等于 不等于 小于 大于 小于等于 大于等于 加 减 连接 正 负 乘 除 求模 取余 指数 取绝对值 取反 乘除运算符用于整形、浮点数与物理类型。取模、取余只能用于整数类型。

取绝对值运算用于任何数值类型。乘方运算的左边可以是整数或浮点数,但右边必须为整数,且只有在左边为浮点时,其右边才可以为负数。

3.3 VHDL语言的主要描述语句

VHDL语言主要分为顺序语句和并发语句。 顺序描述语句又可分为

1.WAIT语句 2.断言语句 3.信号赋值语句 4.变量赋值语句 5.IF语句 6.CASE语句 7.LOOP语句 8.NEXT 语句 9.过程调用语句 10.NULL语句。 并发语句则可分为

1.进程(process)语句

2.并发信号赋值(concurrent signal assignment)语句 在构造体的进程之外使用。

3.条件信号赋值(conditional signal assignment)语句 4.选择信号赋值(selective signal assignment)语句 5.块(block)语句

第四章 VHDL语言中IP核技术

4.1 IP核的简介

现在的FPGA设计,规模巨大而且功能复杂,设计人员不可能从头开始进行设计。现在采用的方式是,在设计中尽可能使用现有的功能模块,除非没有现成的模块可以使用时,设计人员才需要自己花时间和精力设计新的模块。

这些现有的功能模块,EDA设计人员把他们通常称为IP(intellectual Property)核。IP核来源主要有三个方面:

(1)前一个设计创建的模块; (2)FPGA生产厂商的提供; (3)第三方IP厂商的提供。

IP(Intelligent Property)核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。到了SOC阶段,IP核设计已成为ASIC电路设计公司和FPGA提供商的重要任务,也是其实力体现。

对于FPGA开发软件,其提供的IP核越丰富,用户的设计就越方便,其市场占用率就越高。目前,IP核已经变成系统设计的基本单元,并作为独立设计成果被交换、转让和销售。

4.2 IP核的分类

从IP核的提供方式上,通常将其分为软核、硬核和固核这3类。从完成IP核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用使用性最高。

4.2.1软核

软核在EDA设计领域指的是综合之前的寄存器传输级(RTL)模型;具体在FPGA设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是IP核应用最广泛的形式。

4.2.2 固核

固核在EDA设计领域指的是带有平面规划信息的网表;具体在FPGA设计中可以看做带有布局规划的软核,通常以RTL代码和对应具体工艺网表的混合形式提供。将RTL描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。和软核相比,固核的设计灵活性稍差,但在可靠性上有较大提高。目前,固核也是IP核的主流形式之一。

4.2.3 硬核

硬核在EDA设计领域指经过验证的设计版图;具体在FPGA设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。不能修改的原因有两个:

1.首先是系统设计对各个模块的时序要求很严格,不允许打乱已有的物理版图;

2.其次是保护知识产权的要求,不允许设计人员对其有任何改动。 IP硬核的不许修改特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄。

4.3 IP核的生成

很多FPGA厂商提供了一个专门的IP核生成工具,有时候EDA厂商、IP厂商和一些独立的设计小组也提供了IP核生成工具。这些核生成软件是参数化的,由用户指定总线和功能单元的宽度和深度等参数。 当使用IP核生成器时,从IP模块/核列表中选择自己需要的一个IP核,然后设置相应得参数。然后,对一些IP核,生成器要求用户从功能列表张选择是否包含某些功能。比如,FIFO模块,需要用户选择是否进行满空的计数。通过这种设置方式,IP核生成器可以生成在资源需求和性能方面效率最高的IP核/模块。

根据生成器软件的代码源和NDA的要求不同,核生成器输出可能是加密或未加密的RTL级源代码,也可能是未经布局布线的网表或布局布线的网表文件。

4.4 IP核的的应用

4.4.1块RAM存储器组成和功能介绍

Xilinx公司提供了大量的存储器资源,包括了内嵌的块存储器、分布式存储器以及16位的移位寄存器。利用这些资源可以生成深度、位宽可配置的RAM、ROM、FIFO以及移位寄存器等存储逻辑。其中,块存储器是硬件存储器,不占用任何逻辑资源,其余两类都是Xilinx专有的存储结构,由FPGA芯片的查找表和触发器资源构建的,每个查找表可构成16* 1位的分布式存储器或移位寄存器。一般来讲,块存储器是宝贵的资源,通常用于大数据量的应用场合,而其余两类用于小数据量环境。 在Xilinx FPGA中,块RAM是按照列来排列的,这样保证了每个CLB单元周围都有比较接近的块RAM用于存储和交换数据。与块RAM接近的是硬核乘加单元,这样不仅有利于提高乘法的运算速度,还能形成微处理器的雏形,在数字信号处理领域非常实用。例如,在Spartan 3E系列芯片中,块RAM分布于整个芯片的边缘,其外部一般有两列CLB,如图所示,可直接对输入数据进行大规模缓存以及数据同步操作,便于实现各种逻辑操作。


VHDL高级使用技巧(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电力电子装置课程设计AC-DC-DC电源汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: