Verilog语法(一)

1.memory型

  reg[7:0] mema[255:0];  //定义一个名为mema的存储器,该存储器有256个8位的存储器,该存储器的地址范围是:0~255.

  注:一个由n个1位寄存器构成的存储器组和一个n位寄存器是不同的:

  reg[n-1;0] rega;        //一个n位的寄存器

  reg mema[n-1:0];    //一个由n个1位寄存器构成的存储器组

  rega=0;  //合法赋值语句

  mema=0;  //非法赋值语句

       mema[3]=0;  //合法赋值语句     

2.位运算符

  ~   //取反

  &  //按位与

  |   //按位或

  ^  //按位异或

  ^~  //按位同或(异或非)

3.逻辑运算符

  &&  //逻辑与

  ||  //逻辑或

  !  //逻辑非

注:按位运算与逻辑运算的区别:

  逻辑运算是指表达式返回值的运算,这里的值只有真与假;

  按位运算是指数值转换为二进制后的位运算,每位是0或1
    真 逻辑与 真 结果为真
    真 逻辑与 假 结果为假
    1 按位与 1 结果为1
    1 按位与 0 结果为0

4.等式运算符

  (1)==

  (2)!=

  (3)===

  (4)!==

注:  

  ==逻辑相等:

  两个操作数逐位比较,不识别不定态‘x’或者高阻态’z’

 1 $displayb ( 4’b0011 == 4’b1010 ); // 0
 2 $displayb ( 4’b0011 == 4’b0011 ); // 1
 3  
 4  
 5 $displayb ( 4’b1010 == 4’b1x10 ); // x
 6 $displayb ( 4’b0x10 == 4’b1x10 ); // 0
 7 $displayb ( 4’b1z10 == 4’b1z10 ); // x
 8  
 9 $displayb ( 4’b0011 != 4’b1x10 ); // 1
10 $displayb ( 4’b1x10 != 4’b1x10 ); // x

  ===逻辑全等:

  

1 $displayb ( 4’b01zx === 4’b01zx ); // 1
2 $displayb ( 4’b01zx !== 4’b01zx ); // 0
3 $displayb ( 4’b01zx === 4’b00zx ); // 0
4 $displayb ( 4’b01zx !== 4’b11zx ); // 1

5.移位运算符

  a>>n;  // 将a右移n位(用0来填补移出的空位)

  a<<n;  // 将a左移n位(用0来填补移出的空位)

6.循环语句

  6.1 forever语句

 

  格式:

      forever begin

      end

  注:它与always语句不同之处在于forever不能独立写在程序中,而必须写在initial块中

  6.2 repeat语句

  格式:

      repeat(循环次数) begin

      end

  6.3 while语句

  格式:

      while(表达式) begin

      end

  6.4 for语句

  格式:

      for(表达式1;表达式2;表达式3)

  

posted @ 2020-11-15 20:31  L1998  阅读(934)  评论(0)    收藏  举报