原创 VHDL中的表达式

2009-1-16 16:38 4101 6 6 分类: FPGA/CPLD

VHDL中的表达式<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


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


            逻辑运算。


  1、操作符


     ? VHDL操作符的分类:


     ? 逻辑操作符(Logical Operator)、


     ? 关系操作符(Relational Operator)、


     ? 算术操作符(Arithmetic Operator)、


     ? 重载操作符(Overloading Operator 


 


101  


1)逻辑操作符


    6种:andornandnorxornot


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


     bitbit_vectorstd_logic 


     std_logic_vectorboolean


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


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


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


       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  abc integer


        variable  xyz 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  

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条