发布网友 发布时间:2024-10-23 05:16
共1个回答
热心网友 时间:2024-10-25 18:40
为确保系统启动后能进入一个明确、稳定的初始状态,或当系统运行出现混乱时能恢复至正常状态,数字系统设计中必须包含复位电路模块。复位电路的异常可能会引起整个系统功能异常,因此,复位电路的重要性与时钟电路相当。
复位电路主要分为同步复位和异步复位两种类型。
同步复位是在时钟有效边沿到来时复位信号才有效。如果没有时钟信号,复位信号的变化将不会触发电路执行复位操作。
同步复位的典型代码描述如下:
该描述代码通常会被综合成如下电路:
同步复位的优点在于信号间的同步性,可以滤除复位信号中的毛刺,有利于时序分析。然而,同步复位的缺点在于大多数触发器单元没有同步复位端,使用同步复位会消耗更多的逻辑资源。此外,复位信号的宽度必须大于一个时钟周期,否则可能会漏掉复位信号。
异步复位是在任何时钟到来与否的情况下,只要复位信号有效,电路就会执行复位操作。
异步复位的典型代码描述如下:
该代码通常会被综合成如下电路:
异步复位的优点在于大多数触发器单元有异步复位端,不会占用额外的逻辑资源。异步复位的设计相对简单,信号识别快速方便。但异步复位的缺点是复位信号与时钟信号无确定的时序关系,容易引起时序上的不满足。此外,异步复位容易受到毛刺的干扰,产生意外的复位操作。
在考虑设计和资源的情况下,数字系统设计通常使用异步复位。
为消除异步复位的缺陷,复位电路往往采用“异步复位、同步释放”的设计方法。即复位信号到来时不受时钟信号的同步,复位信号释放时需要进行时钟信号的同步。
异步复位、同步释放的典型代码描述如下:
该代码描述通常会被综合成如下电路:
需要指出的是,复位电路会消耗更多的硬件逻辑和面积资源,增加系统设计的复杂性。不带复位端的触发器也具有相对较高的性能。因此,在一些初始值不影响逻辑正确性的数字设计中,例如数据通路中的数据处理部分,高速流水线中的寄存器,可以考虑去掉复位以达到最佳性能。
为方便、快速地进行非复位逻辑的其他功能仿真,教程中所有数字设计中的复位都是从testbench中引入异步复位,没有考虑复位电路的时序问题。在实际设计数字系统时,必须对复位电路进行单独、仔细、慎重的设计。