zoukankan      html  css  js  c++  java
  • Verilog学习笔记基本语法篇(二)·········运算符

    Verilog HDL的语言的运算符的范围很广,按照其功能大概可以分为以下几类:

    (1)算术运算符 +,-,*,/,%                             

    优先顺序

    !~

    *  /   %

    +    -

    <<    >>

    <    <=  >   >=  

    ==  !==  === !===

    &

    ^  ^~

    |

    &&

    ||

    ?:

    最高优先级别

     ↓

     ↓

     ↓

     ↓

    最低优先级别

    (2)赋值运算符 =,<=                                                  

    (3)关系运算符> ,<,>=,<=

    (4)逻辑运算符 &&, ||, !

    (5)条件运算符 ?:

    (6)位运算符 ~, | , ^ ,& ,^~

    (7)移位运算符 << ,>>

    (8)拼接运算符 {}

    (9)其他。

    1)基本的算术运算符:加减乘都比较简单这里不再记录。

    在进行整数的除法运算时,结果要略去小数部分,只取整数部分;而进行取模运算时(%,亦称作求余运算符)结果的符号位采用模运算符中第一个操作数的符号。

    -10%3  结果 -1  11%-3  结果为2

    注意:在进行算术运算时,如果某一个操作数有不确定的值x,则整个结果也为不确定值x。

     

    2)位运算符:

    按位取反~ 、按位与 & 、按位或 | 、按位异或 ^ 、按位同或 ^~

    在不同长度的数据进行位运算时,系统会自动的将两个数右端对齐,位数少的操作数会在相应的高位补0,一时的两个操作数按位进行操作。

    3)逻辑运算符:

    逻辑与 &&、逻辑或 ||、逻辑非 !

    其中&&和||是双目运算符,其优先级别低于关系运算符,而 !高于算术运算符。

    4)关系运算符

    < 、 > 、  <=  、  >= 如果关系运算是假的,则返回值是0,如果声明的关系是真的,则返回值是1。 关系运算符的优先级别低于算数运算符。

    如:  a<size-1                //这种表达方式与下面的表达方式相同

          a<(size-1)             //

          size-1<a               //这种表达方式与下面的表达方式不同

          size-(1<a)            //

    5)等式运算符

    == 、!= 、===、!==  符号之间不能有空格。

    “==”和“!=”称作逻辑等式运算符,其结果由两个操作数的值决定。由于操作数可能是x或z,其结果可能为x;

    “===”和“!==”常用于case表达式的判别,又称作cae等式运算符。其结果只为0和1.如果操作数中存在x和z,那么操作数必须完全相同结果才为1,否则为0.

    逻辑等式运算符和case等式运算符的区别:

    === 0 1 x z   == 0 1 x z
    0 1 0 0 0   0 1 0 x x
    1 0 1 0 0   1 0 1 x x
    x 0 0 1 0   x x x x x
    z 0 0 0 1   z x x x x

    6)移位运算符

    << 、 >>  a>>n其中a代表要进行移位的操作数,n代表要移几位。这两种移位运算都用0来填补移出的空位。

    如果操作数已经定义了位宽,则进行移位后操作数改变,但是其位宽不变。

    /*不懂之处;(夏宇闻第三版,p41)

    4'b1001<<1=5'b10010;    4'b1001<<2=6'b100100;   (左移会使得位数增加?)

    1<<6=32'b1000000;        4'b1001>>1=4'b0100;       (右移不会改变位数?)

    4‘b1001>>4=4'b0000;

    */

    7)位拼接运算符

    {信号1的某几位,信号2的某几位,......信号n的某几位} 将某些信号的某些为列出来,中间用逗号分开,最后用大括号括起来表示一个整体的信号。

    在位拼接的表达式中不允许存在没有指明位数的信号。

    {a,b[3:0],w,3'b101}               //等同于{a,b[3],b[2],b[1],b[0],w,1b'1,1'b0,1'b1}

    {4{w}}                                   //等同于{w,w,w,w}

    {b,{3{a,b}}}                          //等同于{b,a,b,a,b,a,b}  这里面的3、4必须是常量表达式。

    8)缩减运算符

    这是单目运算符,也包括与、或、非运算。运算规则与位运算相似,不过是对单个运算符的每一位逐步运算,最后的运算结果是一位的二进制数。

    c=&B;          //意思同c=((B[0]&B[1]) &B[2] ) & B[3];

  • 相关阅读:
    OO第四单元作业总结暨完结撒花
    OO第三单元作业总结【自我审判】
    菜鸡学C语言之知识点简单整理
    菜鸡学C语言之混凝土(四柱汉诺塔)
    OO第二单元作业总结【自我反思与审视】
    菜鸡学C语言之寻根溯源
    菜鸡学C语言之真心话大冒险
    菜鸡学C语言之摸鱼村村长
    OO面向对象第一单元总结
    day10 python全栈学习笔记
  • 原文地址:https://www.cnblogs.com/SYoong/p/5850060.html
Copyright © 2011-2022 走看看