目录
case 的使用注意点
1)case要在always块中使用,如果是用 always 块描述组合逻辑,注意括号里的敏感变量列表都是电平触发,并且赋值时都要用阻塞赋值“=”;
2)always 块里的变量必须声明成 reg 类型,当然声明成reg类型不代表一定会综合成寄存器,只是语法要求 always 块里要这样;
3)always 块描述组合逻辑时,用 * 可以代替所有的always块内敏感信号;
4)分支条件要写全,最好补齐default 缺省条件,不然在组合逻辑中可能会由于条件不全导致出现锁存器 latch
reg 和 wire 的使用区别
1. 从电路综合角度来说
- wire型变量综合出来是一根导线
- reg型在always语句模块中又分为两种情况
- 输入信号:一般是 wire
- 设计顶层模块的输出:一般用reg较稳定
2. 从仿真分析角度来说
- wire对应于连续赋值,如assign
- reg对应于过程赋值,如always,initial
3.什么情况下使用wire型变量
- assign 语句中变量需要定义成wire型
- 元件例化时候的输出必须用wire
- input、output和inout的预设值都是wire
4.什么情况下使用reg型变量
- 变量放在begin……end之内必须使用reg变量
- 在initial语句中使用
组合逻辑和时序逻辑的区分
- always后的敏感信号不包含时钟,综合出来还是组合逻辑,以及assign的后面的语句
- always后的敏感表中是(posedge clk)形式的,综合出来是时序逻辑,会包含触发器
引用博客: