目录
一、Verilog HDL基本要素
1.1 模块(module)和端口(port)
- 模块声明
module<模块名>(模块端口列表);
<模块内容>
endmodule
- 端口列表
列出所有端口的名称
- 端口声明
<端口类型><端口名>
- 端口类型
- input 输入端口
- output 输出端口
- inout 双向端口 【既可以输入、输出(实际中并不希望使用)】
注意点:
- 函数名-见名知意
- 端口列表于C的区别:Verilog一般如图声明变量
1.2 数据类型(Data Types)
- 常量
- 参数(parameter)
- 变量
- 线网型(nets type)
- wire 型最常用
- 寄存器型(register type)
- 标量
- 向量
- 数组
1.2.1 变量
net 网线型
wire型最常用 (类似高中物理实验型的线路 无存储功能)
无符号数
register 寄存器类型
标量
向量
数组
???注:不代表必将综合成物理(硬件)寄存器!—— 有存储的通常于时序有关、时钟
1.2.2 常量
使用parameter可用来定义常量
*常量的合理使用在高级编程和大型程序设计中很重要!
1.3 数字
- sized,unsized;<位宽><进制><数字>
- 进制
- 负数
- 特殊数符
- 特殊情况
1.3.1 标准定义
- sized,unsized;<位宽>’<进制><数字>
- sized:3'b010 // 表示:三位二进制数字,值为010
- unsized:
- <进制>默认为十进制
- <位宽>默认为32-bit
1.3.2 进制
- 二进制(‘b’或‘B’)
- 八进制(’o‘或’O‘)
- 十进制(‘d’或‘D’)
- 十六进制(‘h’或’H‘)
1.3.3 负数
- 负数——在<位宽>前加负号
1.3.4 特殊符号
- ‘_’(下划线):增加可读性
- ‘x’或‘X’(未知数)
- ‘z’或‘Z’(高阻态)。【高阻态会天打雷劈】
1.3.4 特殊情况
- 如果高位是0、x、z,高位分别补0、x、z;
- 如果高位时1,左边补0.
1.4 运算符
- 算数运算符
- 逻辑运算符
- 位运算符
- 关系运算符
- 等价运算符
- 缩微运算符
- 位移
- 条件
- 拼接
1.4.1 运算符注意点
加法器运算本质就是异或运算
<= 也用于一种赋值操作,用在时许逻辑中,
= 用于组合逻辑运算
三个等号是全等,指包括未定态在内的状态都相等
1.4.2 运算符的优先级
assign 线连接,没有存储功能,直接出结构
initial block 初始化模块 只运行一次 通常用来赋初始值
always block 可以重复使用
全加法器
半加法器