电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

VHDL中的表达式

VHDL中的表达式

    表达式:由操作符和操作数构成,完成算术或

            逻辑运算。

  1、操作符

     ? VHDL操作符的分类:

     ? 逻辑操作符(Logical Operator)、

     ? 关系操作符(Relational Operator)、

     ? 算术操作符(Arithmetic Operator)、

     ? 重载操作符(Overloading Operator) 

 

101  

1)逻辑操作符

    6种:and、or、nand、nor、xor、not

   要求:操作数类型必须相同。可为如下类型:

     bit、bit_vector、std_logic、 

     std_logic_vector、boolean

   数组操作数的维数、大小必须相同。

   注:当有两个以上的逻辑表达式时,左右没有  

       优先级差别,必须使用括号,如:

       x<=( a and b )or( not c and d );

       例外:当逻辑表达式中只有“and”、“or”、

    “xor”运算符时,可以省略括号。如:

 

102  

     a <= b  and  c  and  d  and  e;

    a <= b  or  c  or  d  or  e;

    a <= b  xor  c  xor  d  xor  e; 

2)关系操作符

     6 种:=、/=、<、<=、>、>=

     用于比较相同父类的两个操作数,返回

  boolean值。 

 

103  

3)加减操作符

     加操作符“+”、减操作符“-”、

         串联(并置)操作符“&”

     串联操作符“&”通过连接操作数来建立新的数组。操作数可以是一个数组或数组中的一个元素。

例:signal a,d: bit_vector (3 downto );

    signal b,c,g: bit_vector (1 downto 0);

    signal e: bit_vector(2 downto 0);

    signal  f,  h,  i : bit;

    a <= not b & not c; -- array & array

    d <= not e & not f; -- array & element

    g <= not h & not i; -- element & element

 

104  

4) 一元操作符

      仅有一个操作数的操作符。

      包括:“+”、“-”

5) 乘除操作符

      用于整数类型:“*”、“/”、“mod”、“rem”

      综合的限制:“/”、“mod”、“rem” 三种操作

  符的右操作数必须为 2 的正整数次幂,即 2n。

  实际电路用移位实现。

 

105  

2、操作数

     操作数:

         操作符进行运算时所需的数据。 

     操作数的种类:

        标志符;集合;属性;表达式;函数

     调用;索引名;文字;限定表达式;记

     录和域;片段名;类型转换

   

106  

3、重载操作符

     VHDL是强类型语言,相同类型的操作数才能进行操作。VHDL自身定义的算术和布尔函数仅对内部数据类型(standard 程序包中的数据类型)有效。即:

    算术运算符+,-,<,>, <=, >= 仅对integer类型有效。逻辑运算符AND, OR, NOT仅对 bit 类型有效。 

如:    variable  a,b,c :integer;

        variable  x,y,z :bit;     

        c := a + b;

        z := x and y;

问题:a, b, c 与 x, y, z 之间,或与 std_logic

      等其它数据类型之间能否相互操作?

 

107  

重载操作符定义:

    对已存在的操作符重新定义,使其能进行不

同类型操作数之间的运算,称为重载操作符。定

义重载操作符的函数称为重载函数。

    重载操作符由原操作符加双引号表示。如 “+” 

    重载操作符的定义见 IEEE 库的程序包:

        std_logic_arith、

        std_logic_unsigned、

        std_logic_signed

 

109  

重载操作符的使用:

 

110  

博主
sunfaok@163.com
sunworking's Blog
sunworking
点击跳转