一.verilog的逻辑值
-
我们先看下逻辑电路中有四种值,即四种状态:
逻辑 0:表示低电平,也就是对应我们电路的 GND;
逻辑 1:表示高电平,也就是对应我们电路的 VCC;
逻辑 X:表示未知,有可能是高电平,也有可能是低电平;
逻辑 Z:表示高阻态,外部没有激励信号是一个悬空状态。
二.数字进制格式
- 二进制(BIN)例:4’b1010
- 八进制(OCT)例:4’o12
- 十进制(DEC)例:4’d10
- 十六进制(HEX)例:4’hA
- 注:表示数字需要声明位宽如上面例子的4表示位宽;声明其进制类型如上例中b,o,d,h;最后再声明数值。
三.数据类型
- 寄存器类型:常用reg:例:reg [3:0] led;
- 线网类型:常用wire:例:wire [3:0] data;
- 变量类型:常用parameter、localparam:例:parameter MAX_CNT = 26’d50_000_000;
- parameter和localparam的区别是:localparam不可以被重写
四.运算符
4.1算数运算符
符号 | 使用方法 | 说明 |
---|---|---|
+ | a + b | a加b |
- | a - b | a减b |
* | a * b | a乘b |
/ | a / b | a除b |
% | a % b | a模除b |
4.2关系运算符
符号 | 使用方法 | 说明 |
---|---|---|
> | a > b | a大于b |
< | a < b | a小于b |
>= | a >= b | a大于等于b |
<= | a <= b | a小于等于b |
!= | a != b | a不等于b |
== | a == b | a等于b |
4.3逻辑运算符
- 注意的是,逻辑运算符的结果只能为0或1。例如:4’b1001 && 4’b0110 = 1
4.4条件运算符
符号 | 使用方法 | 说明 |
---|---|---|
?: | a ? b : c | 如果a为真,则选择b,否则选择c |
4.5位运算符
- 注意不要与逻辑运算符混淆。例如:4’b1001 & 4’b0110 = 4’b0000
4.6移位运算符
符号 | 使用方法 | 说明 |
---|---|---|
<< | a << b | 将a左移b位 |
>> | a >> b | 将a右移b位 |
4.7位拼接运算符
符号 | 使用方法 | 说明 |
---|---|---|
{} | {a,b} | 将a,b组成一个新信号 |
五.赋值
名称 | 符号 | 使用方法 | 说明 |
---|---|---|---|
非阻塞赋值 | <= | a <= 0 | 时序逻辑always语句用非阻塞赋值 |
阻塞赋值 | = | a = 0 | 组合逻辑always语句用阻塞赋值 |