首页 > 其他分享 >3-同步异步复位

3-同步异步复位

时间:2023-01-14 14:44:23浏览次数:71  
标签:异步 同步 复位 亚稳态 信号 时钟

复位的作用是将ASIC芯片强制进入一个确定状态.

如果芯片是有多个时钟的系统,那么如何保证不同时钟域的电路能够“同时”复位将会是一个重要的问题.

同步复位

指复位信号只有在时钟上升沿到来时,才能有效。

always @ (posedge clk) begin
    if (!rst_n)
    ...
end

优点:

  •  可以使所设计的系统成为100%的同步时序电路,有利于时序分析。
  •  能够有效滤除复位信号上面的毛刺。

缺点:

  • 使用同步复位可能使综合工具无法分辨分辨复位信号和其他控制信号,导致进行复位的控制逻辑远离触发器。解决方法——一方面这个只是综合工具的问题,一般综合工具会自动识别在敏感列表里面又在条件表达式信号中的第一个信号为复位信号;另一方面,可以在RTL代码编写的时候,加入相关的综合指令,让综合的时候把复位逻辑靠近触发器。
  • 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑诸如:clk skew,组合逻辑路径延时,复位延时等因素。此外如果在只有一个时钟的module中,这还不算什么问题,但在多时钟域的电路中,尤其是时钟相差较大的电路中,就需要考虑复位信号需要持续的周期了。
  • 门控时钟的同步复位可能无效:使用门控时钟的时候,由于复位信号依赖于时钟,在复位信号发出的时候,时钟可能处在关闭状态,导致输出不复位。解决方法——只能使用异步复位,并在时钟恢复前移除异步复位。
  • 总线设计中的同步复位问题:三态门主要是用于总线的连接,因为总线在同一个时间内,只有一个设备有效;因此,如果设备端口需要挂在一个总线上,必须通过三态缓冲器。由于在一个总线上同时只能有一个端口作输出,这时其他端口必须在高阻态(即断开状态,引脚对地电阻无穷大)。而同步复位因为需要时钟才能生效,由于系统时钟可能仍未正常工作,上电(同步)复位就可能无效,这个时候各个模块(芯片)就可能不会把总线接口设置为特定的状态,当多个模块同时输出数据到总线上时就可能导致电平冲突,严重的话会烧坏接口。解决方法——异步上电复位(左)、使用复位信号直接撤销三态使能的电路(右)

  • 由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

异步复位

无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。

always @ (posedge clk or negedge rst_n) begin
    if (!rst_n)
    ...
end

优点:

  • 复位路径上没有延时,不依赖于时钟,这使得全局复位简单方便。
  • 大部分的DFF都有异步复位端,所以在数据输入端不需要额外的逻辑去处理同步复位,使其变得清洁,提高了数据通路的最高频率。

缺点:

  • 后期可能需要做复位树,增加后端工作量
  • 复位释放产生亚稳态:当异步复位信号的撤离时刻在时钟有有效沿附近时,就可能导致恢复时间或去除时间不足,即这个时候违背了复位恢复时间或去除时间,这时就可能导致触发器的输出端为亚稳态。

Recorvery & Removel:

针对内部寄存器异步复位端和时钟段的检查;复位信号无效后到时钟沿有效前的最小时间叫recorvery;时钟有效沿到来之后到复位无效之前的最小时间叫removel

IMG_0530(20220306-170201)

亚稳态解决方法:异步复位,同步释放

异步复位的同步释放电路也称为复位同步器(两级复位同步电路),思想就是结合异步、同步复位的优缺点,使电路在复位信号到来时及时复位,复位释放时经过clk同步再释放。

注:复位信号拉低时不会有亚稳态的问题是因为复位信号的拉低是和时钟信号无关的,只要它为低,就使输出强制为0,只有在复位信号变为高的时候,DFF需要一个恢复时间(recovery time)来使DFF恢复至正常状态。在这段时间内,如果时钟发生跳变,那么就会使输出产生亚稳态。也就是说,asyncrstn恢复时,可能不满足recovery time,导致rff1在该周期内产生亚稳态(下一个clk一定是1),从而导致rstn恢复或早或迟一个周期

异步复位毛刺问题:当外部输入的异步复位信号产生毛刺时,任何满足触发器最小复位脉冲宽度的输入都有可能引起触发器复位,这问题是源头上的问题,即使是使用上面的同步器,也还是有同样的敏感问题

解决方案:过滤毛刺和消抖的思路有点像,主要就是经过一段(反相器)延时之后,再经过逻辑门判断(两个信号相与)产生外部来的是不是真正复位信号。

异步复位网络:

来自:数字IC设计:复位电路全解析 - 知乎 (zhihu.com)

在数字电路里面,复位信号驱动了很多触发器,仅次于时钟,因此复位也往往形成或者使用复位网络。复位网络的设计也是有值得斟酌的地方,例如,由于复位的扇出太大,全部的复位不能仅仅由一个端口驱动,也就是不能像下面左图一样,可以使用并联网络,分摊负载压力,如下右图

然而这种方案还是有问题的,这是第一级的撤离出现问题,亚稳态稳定后的状态可能不一样,导致rst_n的复位不一致,有的复位可能会快/慢一个周期。

最后的方案是,先进行同步释放之后,同步后的复位信号又当做各个部分的异步信号,然后再进行同步释放:

多时钟域复位:

两种方式

non-coordinated reset removal(各个时钟域复位拉起没有要求)

sequenced coordination of reset removal(不同时钟域之间复位信号拉起有时序要求)

在多时钟域复位中,外部的异步复位信号的同步释放应该与各自的时钟进行同步。比如异步FIFO中,写时钟域就用写时钟进行同步释放;读时钟域就用读时钟进行同步释放。

标签:异步,同步,复位,亚稳态,信号,时钟
From: https://www.cnblogs.com/fukq/p/17051818.html

相关文章