
核心要点速览
同步复位:复位信号只在时钟有效沿起作用,安全但需时钟
异步复位:复位随时生效,响应快但释放时可能有亚稳态
异步复位同步释放:最常用方案,两者优点结合
恢复时间(Recovery)和移除时间(Removal)是关键指标
多时钟域每个域都要有自己的复位同步器
面试题
面试官问:FPGA的复位设计你一般怎么做?同步复位和异步复位有什么区别?什么是异步复位同步释放?
面试官考察点
是否理解同步复位和异步复位的本质区别
是否掌握异步复位同步释放的原理和实现
是否了解恢复时间和移除时间的概念
是否有实际工程中的复位设计经验
是否考虑过多时钟域的复位问题
回答思路
第一,同步复位和异步复位对比
同步复位:复位信号只在时钟上升沿(或有效沿)时才对触发器起作用。复位信号会被当作一个普通的输入数据来处理。
优点:时序分析简单,就是普通的数据路径;没有亚稳态问题,因为复位只在时钟沿生效;仿真行为更干净。
缺点:必须有时钟才能复位,如果时钟没有起来,复位不生效;会增加组合逻辑延时,可能影响时序;占用更多逻辑资源,因为综合工具要把复位接到数据通路。
异步复位:复位信号直接接到触发器的异步复位端,不需要时钟就能生效。
优点:不依赖时钟,只要复位到来立即生效,响应速度快;不影响数据通路的时序;资源占用少,大多数FPGA触发器自带异步复位端口。
缺点:复位释放时如果接近时钟沿,可能不满足恢复/移除时间,导致亚稳态;复位信号上的毛刺可能导致误复位;时序分析更复杂,需要做恢复时间和移除时间检查。
第二,什么是异步复位同步释放
异步复位同步释放(Asynchronous Reset, Synchronous Release)是目前业界最推荐的复位方案。它的设计思路是:
复位生效是异步的:复位信号一来,所有触发器立即复位,不需要等时钟
复位释放是同步的:复位撤销时,先经过两级触发器同步到时钟域,同步后的复位信号再接到各触发器的异步复位端
这样设计的好处是:既保留了异步复位响应快的优点,又通过同步器保证了复位释放时满足恢复时间和移除时间的要求,消除了亚稳态风险。
第三,异步复位同步释放的实现
典型的实现是两级触发器同步器。输入是异步复位信号,输出是经过同步的复位信号。两级触发器都用异步复位,复位端都接输入的异步复位。
工作过程:复位到来时,两级触发器同时异步复位,输出立即变低(假设低有效复位)。复位释放时,第一级触发器在时钟沿打一拍,第二级再打一拍,经过两个时钟周期后输出才释放。这样保证了输出的复位释放沿与时钟沿对齐,满足恢复时间要求。
Verilog关键代码结构大致是:第一级寄存器在复位时清零,时钟沿时采1(表示释放);第二级寄存器把第一级的输出再打一拍。最后取第二级的输出作为同步后的复位。
第四,复位树和复位域划分
复位树就是复位信号在FPGA内部的传播路径。设计复位树要注意:
复位扇出太大时,要做复位树平衡,避免有的触发器先释放、有的后释放
不同时钟域的复位要分别同步,不能跨时钟域共用同一个同步后的复位
高速区域和低速区域的复位可以分开设计,各自优化
关键路径上的复位要特别注意,确保时序收敛
复位域划分的原则:一个时钟域一个复位同步器,每个复位域内部共享同一个同步复位信号。跨时钟域的数据传输已经有CDC同步处理,和复位域是两个层面的问题。
第五,实际工程中的注意事项
第一,复位信号要经过防抖处理。外部复位按键可能有抖动,直接用可能导致多次复位,建议加防抖或用PLL的locked信号配合。
第二,PLL/MMCM的locked信号经常和复位配合使用。PLL未锁定时保持复位,锁定后才释放复位,这样保证时钟稳定后电路才开始工作。
第三,不是所有寄存器都需要复位。数据通路中的流水线寄存器,如果不复位也不影响功能,可以去掉复位,节省资源且有利于时序。
第四,仿真中要注意复位的初始状态。异步复位在仿真中要正确处理初始值,避免X态传播导致仿真异常。
第五,全局复位和局部复位要权衡。整个FPGA用一个全局复位最简单,但可能导致复位树太长、时序紧张。可以分模块局部复位。
常见追问
什么是恢复时间(Recovery Time)和移除时间(Removal Time)?
异步复位同步释放为什么用两级触发器?一级不行吗?
复位信号的毛刺怎么处理?你遇到过什么问题?
多时钟域的复位设计要注意什么?
复位树的高扇出怎么优化?有什么方法?
失分表达
避免这样说:
"同步复位好,安全"——只知其一不知其二,不理解适用场景
"异步复位简单,直接接进来就行"——忽略了亚稳态风险
"复位就是一个信号拉低拉高,没什么好设计的"——缺乏工程意识
准备动作
手写一遍异步复位同步释放的Verilog代码
画时序图,解释为什么两级触发器能解决亚稳态问题
理解恢复时间和移除时间的含义,能在波形图上标出来
准备一个实际项目中复位设计的案例
了解FPGA中全局复位网络(Global Reset)的概念
核心关键词
FPGA复位设计、同步复位、异步复位、异步复位同步释放、恢复时间Recovery、移除时间Removal、复位同步器、复位树、复位域、PLL锁定

扫码关注





























