• Verilog HDL按位操作符与归约操作符的区别


    以下来自百度知道:http://zhidao.baidu.com/question/420476218.html

    按位是二元操作符,是将操作符两边的操作数进行 操作符所规定的运算 ,
    
    例如:a & b(a=1,b=1),出来结果为1;
    归约是一元操作符,是将操作数的几个bit位当成1bit的操作数进行操作符所规定的运算,
    例如:a=4’b1101,则 &a= 1&1&0&1 =0
    具体到程序综合的时候,综合工具会根据你操作数的多少来区分你的意图

    以下来自:http://www.dzsc.com/data/html/2007-4-30/28721.html
    归约操作符在单一操作数的所有位上操作,并产生1位结果。





     归约操作符有:


    & (归约与)

    如果存在位值为0, 那么结果为0;若如果存在位值为x或z,结果为x;否则结果为1。

    ~& (归约与非)

    与归约操作符&相反。

     (归约或)
    

    如果存在位值为1,那么结果为1;如果存在位x或z,结果为x;否则结果为0。

    ~ (归约或非)

    与归约操作符相反。

    ^ (归约异或)

    如果存在位值为x或z,那么结果为x;否则如果操作数中有偶数个1, 结果为0;否则结果为1。

    ~^ (归约异或非)

    与归约操作符^正好相反。


    如下所示。假定,
    A = 'b0110;
    B = 'b0100;
    那么
    :
    B 结果为1

    & B 结果为0

    ~ A 结果为1

    归约异或操作符用于决定向量中是否有位为x。
    假定,
    MyReg = 4'b01x0;
    那么
    :
    ^MyReg 结果为x
      
    上述功能使用如下的if语句检测:


    if (^MyReg = = = 1'bx)
    $ display ("There is an unknown in the vector MyReg !")


    注意逻辑相等(==)操作符不能用于比较;
    逻辑相等操作符比较将只会产生结果x。全等操作符期望的结果为值1。
  • 相关阅读:
    HTML5 中的Nav元素详解
    Gevent中信号量的使用
    MemCache缓存multiget hole详解
    MemCache中的内存管理详解
    Php中的强制转换详解
    Python中类的特殊方法详解
    MemCache的LRU删除机制详解
    AngularJS事件绑定的使用详解
    Php数据类型之整型详解
    HTML基础知识
  • 原文地址:https://www.cnblogs.com/youngforever/p/3123253.html
Copyright © 2020-2023  润新知