本篇主要讨论进行verilog设计时,所有的变量都需要复位吗?
核心原则:
不是所有变量都需要复位 不需要对所有变量进行复位。过度复位会增加硬件资源消耗和功耗,而合理的复位策略是数字电路设计中的重要考量。
两个问题问问自己:
1. 这块电路不写复位能否正常仿真(建议考虑中途复位操作)。
2. 这块电路不写复位下板能否正常工作。
组合逻辑电路:不需要复位
组合逻辑电路的输入是前级模块的输出,只需要保证前级模块在复位时输出正确的初值,那么此组合逻辑电路输出就是正确的。
计数器模块电路:需要复位
如果没有复位,counter在仿真时没有准确初始值(在下板时,也无法确定初值),导致无法仿真(在下板后,可能和预想不同)。
标志或者状态相关电路:需要复位
标志或者状态有效时,会启动电路的动作,为避免电路误启动,要求在复位时拥有明确的初值。
数据计算或者变换相关电路:不需要复位
往往数据是否有效是需要一个标志信号的,只要标志信号明确,数据在前期几个周期不确定值,也是不耽误电路正常工作的。