EDA硬件描述语言VHDL(四)--VHDL并行语句

目录

    • 1.并行语句的特点:
    • 2.结构体
      • 2.1 并行信号赋值语句
      • 2.2条件信号赋值语句
      • 2.3选择信号赋值语句
    • 3.元件例化语句
    • 4.生成语句
    • 5.参数传递映射语句及其使用方法参数传递说明的一般书写格式如下:
    • 6.参数传递映射语句及其使用方法参数传递映射语句的格式是:
    • 7.其他数据类型
      • 7.1.限定性数组型数据类型定义
      • 7.2非限定性数组型数据类型定义
      • 7.3.枚举型数据类型定义
      • 7.4.枚举型子类型数据类型定义
    • 8.信号属性及属性函数
      • 8.1、信号类属性
      • 8.2、数据区间类属性
      • 8.3数值类属性
      • 8.4、数组属性‘LENGTH
    • 9.VHDL运算操作符

1.并行语句的特点:

并行语句有多种语句形式,它们在结构体中的执行是同步进行的,在执行顺序上是平等的与书写顺序无关。
并行语句之间可以通过信号进行通信也可相互独立。
每一并行语句内部的语句运行方式可并行执行也可以顺序执行。

2.结构体

EDA硬件描述语言VHDL(四)--VHDL并行语句_第1张图片

2.1 并行信号赋值语句

简单信号赋值语句
赋值目标 <= 表达式

2.2条件信号赋值语句

赋值目标 <= 表达式 WHEN 赋值条件 ELSE
表达式 WHEN 赋值条件 ELSE

表达式

2.3选择信号赋值语句

WITH 选择表达式 SELECT
赋值目标信号 <=表达式 WHEN 选择值,
表达式 WHEN 选择值,

表达式 WHEN 选择值;
共同点:赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结构体内独立存在,执行是同时发生的。

3.元件例化语句

元件例化语句由两部分组成:第一部分是对一个现成的设计实体定义为一个元件,第二部分则是此元件与当前设计实体中的相关端口连接的说明。

COMPONENT 元件名 IS 
   GENERIC (类属表);               -- 元件定义语句
   PORT  (端口名表);
END COMPONENT 元件名;

……--其他语句

例化名 :元件名 PORT MAP( – 元件例化语句
[端口名 =>] 连接端口名,…) ;

元件例化语句中所定义的元件的端口名与当前系统的连接端口名的接口表达有两种方式:
(1)名字关联方式:例化元件的端口名与连接符号“=>”都是必须存在的;这种方式下,端口名与连接端口名的对应式,在PORT MAP句中的位置是任意的。
(2)位置关联方式:端口名和连接符号都省去,在PORT MAP子句中只要列出当前系统的连接端口名就行了。要求连接端口名的排列方式与所要例化的元件端口定义中的端口名一一对应。
元件例化就是引入一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用例化语句将此元件与当前的设计实体中的指定端口相连接。

4.生成语句

    生成语句具有一种电路模块复制作用。可以复制一组完全相同的并行元件或设计单元电路结构。
[标号:] FOR 循环变量 IN 取值范围 GENERATE
            说明
           BEGIN
           并行语句
               END GENERATE [标号] ;

[标号:] IF 条件GENERATE
           说明
           Begin
           并行语句
      END GENERATE [标号] ;

两种语句格式都由以下4部分组成:
(1)生成方式:有FOR语句结构或IF语句结构,用于规定并行语句的复制方式。
(2)说明部分:对元件数据类型、子程序、数据对象作一些局部说明。
(3)并行语句:用来复制的基本单元。
(4)标号:并非必需,如果在嵌套式生成语句结构中,必须有标号。
循环变量是一个局部变量,取值范围的语句格式有两种形式:
表达式 TO 表达式 ; – 递增方式,如1 TO 5
表达式 DOWNTO 表达式; --递减方式,如5 DOWNTO 1EDA硬件描述语言VHDL(四)--VHDL并行语句_第2张图片

COMPONENT comp
PORT (x : IN STD_LOGIC ; 
       y : OUT STD_LOGIC );
END COMPONENT ;
SIGNAL a :STD_LOGIC_VECTOR(0 TO 7);
SIGNAL b :STD_LOGIC_VECTOR(0 TO 7);
...
gen : FOR i IN  a’RANGE  GENERATE
 u1: comp PORT MAP (x=>a(i),y=>b(i));
END GENERATE gen,
  ...

5.参数传递映射语句及其使用方法参数传递说明的一般书写格式如下:

 GENERIC([ 常数名 : 数据类型 [ : 设定值 ] 
 { ;常数名 : 数据类型 [ : 设定值 ] }  ) ;

注意:
(1)GENERIC语句的说明放在实体的说明部分,且放在端口说明语句的前面。
(2)GENERIC语句构建了一种常数参数的端口界面,是一种无形的通道。
(3)被传递的参数(类属参量)与普通常数不同。设计者可以通过类属参数的重新设定,十分方便地改变一个设计实体或一个元件的内部电路结构和规模。

6.参数传递映射语句及其使用方法参数传递映射语句的格式是:

例化名 : 元件名 GENERIC MAP(类属表)
(1)参数传递映射语句GENERIC MAP()通常与端口映射语句PORT MAP()联合使用。
(2)使用此语句的条件是:所例化的模块必须有GENERIC语句定义的参量端口描述和component语句中的对应表述。

7.其他数据类型

7.1.限定性数组型数据类型定义

限定性数组定义语句格式是:
TYPE 数组名 IS ARRAY (数组范围) OF 基本数据类型

7.2非限定性数组型数据类型定义

非限定性数组定义语句格式是:
TYPE 数组名 IS ARRAY (数组下标名RANGE<>) OF 数据类型

7.3.枚举型数据类型定义

枚举数据类型格式是:
TYPE 数组类型名 IS 数据类型定义表述
数组类型名是用户用标识符命名的枚举型数据类型名;
数据类型定义表述就是具体列出所定义的类型的表述方式与形式。

7.4.枚举型子类型数据类型定义

子类型SUBTYPE的语句格式是:
SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;
(1)子类型的定义只是在基本数据类型上作了一些约束,并没有定义新的数据类型。
(2)基本数据类型必须是已有过TYPE定义的类型,包括已在VHDL预定义程序包中用TYPE定义过的类型。

8.信号属性及属性函数

VHDL中具有属性的项目有:类型、子类型、过程、函数、信号、变量、常量、实体、结构体、配置、程序包、元件和语句标号

8.1、信号类属性

用于信号,包括:
EVENT :如果当前的δ期间内发生了事件,则返回TRUE,否则返回FALSE.
STABLE: 如果信号在δ期间无事件发生,该属性建立一个值为TRUE的布尔型信号。

8.2、数据区间类属性

用于数组,包括:
RANGE[(N)]:返回按指定排序范围
REVERSE_RANGE[(N)]:返回按指定逆序范围,

8.3数值类属性

LEFT、RIGHT:分别返回左、右边界
HIGH、LOW:分别返回上、下限值

8.4、数组属性‘LENGTH

用于数组,对数组的宽度或元素的个数进行测定

9.VHDL运算操作符

(1)逻辑操作符(Logical Operator)
(2)关系操作符(Relational Operator)
(3)算术操作符(Arithmetic Operator)
☆ 求和操作符 VHDL规定它的操作数的数据类型是整数
☆ 求积操作符
☆ 符号操作符
☆ 混合操作符
☆ 移位操作符
(4)符号操作符(Sign Operator)
(5)重载操作符(Overloading Operator)

你可能感兴趣的:(EDA硬件描述语言VHDL,vhdl)