• 算术运算符


    VHDL算术运算符

    在VHDL中,算术运算符用来执行算术运算操作。操作数可以是INTEGER,SIGNED,UNSIGNED或REAL数据

    类型,其中REAL类型是不可综合的。如果声明了ieee库中的包集std_logic_signed和std_logic_unsigned,

    即可对STD_LOGIC_VECTOR类型的数据进行加法和减法运算。

    VHDL语言有以下算术运算符:

    + 加

    - 减

    * 乘

    / 除

    ** 指数运算

    MOD 取模

    REM 取余

    ABS 取绝对值

    上述运算符中,加法、减法和乘法运算符是可以综合成逻辑电路的,对于除法运算,只有在除数为2的n次幕时才

    有可能进行综合,此时除法操作对应的是将被除数向右进行n次移位。对于指数运算,只有当底数和指数都是静

    态数值(常量或GENERIC参数)时才是可综合的。在算术运算符的使用中,要注意MOD和REM的区别:y MOD x

    运算的结果是y除以x所得的余数,运算结果通过信号x返回;y REM x运算的结果是y除以x所得的余数,结果通过

    信号y返回。ABS运算返回操作数的绝对值。上述后3个运算符(MOD,REM和ABS)通常是不可综合的。

    移位操作符

    Verilog

    <<  :逻辑左移

    >>  :逻辑右移

    <<<   :算术左移

    >>> :算术右移

    VHDL

    “SLL” 逻辑左移操作符,最右边空出的位用‘0’填充

    “SRL”逻辑右移操作符,最左边空出的位用‘0’填充

    “SLA”算术左移操作符,最右边空出的位用原来最右边的位填充

    “SRA”算术右移操作符,最左边空出的位用原来最左边的位填充

    “ROL” 循环左移操作符,最右边空出的位用原来最左边的位填充

    “ROR”循环右移操作符,最左边空出的位用原来最右边的位填充

     (2)逻辑运算符

    VHDL:

    AND    (与)

    OR      (或)

    NOT    (非)

    NAND  (与非)

    NOR   (或非)

    XOR   (异或)

    XNOR  (同或)

    注意:逻辑运算符操作数的数据类型要求必须是BIT、BOOLEAN、BIT_VECTOR

    STD_LOGIC 和STD_LOGIC_VECTOR这5种数据类型之一。或者由BIT、BOOLEAN和

    STD_LOGIC构成的一维数组

    逻辑运算符NOT的优先级最高,其他没有优先级别

    逻辑运算两边的操作数类型必须一致。

    在一个表达式中不允许不用括号而把两种不同的运算符结合在一起

  • 相关阅读:
    集群间如何实现session共享
    详解PHP如何实现单点登录
    jsonp原理详解
    跨站请求CSRF攻击
    防止SQL注入
    在springboot中使用h2数据库
    Datalab实验
    飞步无人驾驶2018届校园招聘在线笔试A轮
    HDU6030 Happy Necklace
    HDU5950 Recursive sequence
  • 原文地址:https://www.cnblogs.com/zhongguo135/p/2640701.html
Copyright © 2020-2023  润新知