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)

浙公网安备 33010602011771号