关键字
module,endmodule,input,output,
变量:
线网型变量wire 以assign关键字指定的组合逻辑信号,模块的输入输出端口类型都默认为wire型,wire相当于物理连线,默认初始值是z。
寄存器型变量reg 用于always模块内被赋值的信号,必须定义为reg型,代表触发器,常用于时序逻辑电路,reg相当于存储单元,默认初始值是x
参数: parameter能实例化,localparam不能实例化
常量:
数值进制符号:h表示十六进制,o表示八进制,b表示二进制,d表示十进制
如8’b0100_0100表示8位二进制44
**阻塞赋值: “==” 顺序执行
a = 1;
b = 2;
c = 3;
begin
a = b;
c = a;
end
结果:
a = 2;
b = 2;
c = 2;
非阻塞赋值:** “<-” 同时进行
a = 1;
b = 2;
c = 3;
begin
a <= b;
c <= a;
end
结果:
a = 2;
b = 2;
c = 1;
逻辑值:
0:逻辑低电平,条件为假
1:逻辑高电平,条件为真
z:高阻态,无驱动
x:未知逻辑电平
算数运算符
+(加法,assign = a + b)
- (减法,assign = a -b)
** * ** (乘法,assign = a * 3)
/ (除法,assign = a / 2)
% (求模/取余,5%3值为2)
归约运算符,按位运算符
当&作为一元运算符表示归约与。&m是讲m中的所有比特相与,最后结果为1bit
如:&4’b1111 = 1&1&1&1 = 1’b1
当&作为二元运算符表示按位与,m&n是将m的每个比特与n的相应比特相与,最后的结果与m或者n比特相同
4’b1010&4’b0101 = 4’b0000
"&","^","^","|","~|"同理
逻辑运算符(逻辑与&&,逻辑或||,逻辑相等==,逻辑不等!=)
如:a =4’ha,b = 4’d0,c = a&&b,则C为0.
关系运算符
a < b
a>b
a<=b
a >=b
移位运算符(<<表示左移,>>表示右移)
a>>1 表示a右移1位
位拼接运算符
d = {a,b,c};
条件运算符
c = (a > b)?a : b表示a>b为真时,把a的值给c,为假时,把b的值为c
输出打印信息函数:display,write,strobe
区别:write需要加换行符,strobe在最后打印
stop暂停仿真,finish结束仿真
parameter可以在模块内部定义
localparam不可以在模块内部定义