参考:Verilog数字VLSI设计教程
硬件描述语言Verilog
Verilog HDL数字设计与综合
Verilog HDL 数字集成电路高级程序设计
2.1 数据流描述
数据流建模:通过连续赋值语句和运算符的建模方式
显式连续赋值语句
<线网类型> <线网位宽> <线网信号>;
assign #<延迟><线网信号>=赋值表达式;
隐式连续赋值语句
<线网类型> <驱动强度><位宽> #<延迟><线网信号>=赋值表达式;
注意:
(1)赋值语句只能是线网类型(wire)
(2)连续赋值语句总是处于激活状态,用于组合逻辑之中
(3)连续赋值语句不能出现在过程块中,因为连续赋值语句是独立于过程语句的一种设计方式
(4)多个连续赋值语句之间是并行关系
(5)连续赋值语句的延时具有硬件电路中惯性延时特性,任何小于其延时的信号变化脉冲会被过滤掉,不会出现在输出端上
2.2 运算符
当遇到优先级时,可用()进行标注。
1.算术运算符:+、-、*、/、%
在赋值语句下,算数操作符结果的长度由操作符左端的目标长度决定
一般情况下,常用+、-、*,若要用/、%时,需要调用专用的IP
在加法操作中,最大位宽为max{m,n}+1
在乘法操作中,最大位宽为m+n-1
2.关系运算符:>、<、> =、< =、= =、!=、= = =、!= = =
== | 0 | 1 | x | z |
---|---|---|---|---|
0 | 1 | x | x | x |
1 | x | 1 | x | x |
x | x | x | x | x |
z | x | x | x | x |
=== | 0 | 1 | x | z |
---|---|---|---|---|
0 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 |
x | 0 | 0 | 1 | 0 |
z | 0 | 0 | 0 | 1 |
注:
关系运算符的结果是1bit信号
3.逻辑运算符:&&、||、!
例:
寄存器变量a、b的初值分别为4’b1110和4’b0000,则!a=1’b0,!b=1’b1,a&&b=1’b0,a||b=1’b1
逻辑运算的结果是一个1bit信号
4.按位运算符:~ 、&、|、^ 、^~
按位运算的结果是一个多bit信号