verilog学习总结
always内使用非阻塞赋值, 即“<=”
always外使用阻塞赋值, 即“=”
若always外面使用非阻塞赋值或者always内部使用阻塞赋值,会是什么结果呢?
$ 符号代表verilog的系统任务和函数
$time: 获取当前的仿真时间
$display: 显示和监视信号值得变化
$monitor: 显示和监视信号值得变化
$stop :暂停仿真
$finish : 结束仿真
if else, case 语句一定是完备的语句,要避免系统综合生成锁存器。
注意:
- if 语句后面必须有else语句,且两者数目相同。
- case 语句必须加上 default语句。
- 锁存器:没有锁存器就意味着春组合电路,若综合生成锁存器,则变成时序电路。因为组合电路只与当前输入有关,与过去时刻输入没有关系,引入锁存器后,会有之前的状态影响到当前结果的输出,即此时电路由组合电路转变为时序电路。