欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
本篇主要讨论FPGA中输出信号采用组合逻辑输出or时序逻辑输出
消除毛刺:
组合逻辑的输出会随着输入的变化而立即变化。如果输入信号变化路径不同(存在竞争冒险),或者逻辑门存在固有延迟,输出端可能会出现短暂的、非预期的脉冲(毛刺)。
这些毛刺对于下游电路(尤其是同步电路)可能是灾难性的,可能导致错误的操作、状态机跳转错误、计数器错误计数等。
时序逻辑(寄存器)的输出只在时钟的有效边沿(上升沿或下降沿)更新。 在时钟边沿之间,无论组合逻辑内部如何变化(包括产生毛刺),寄存器的输出都保持稳定。这从根本上消除了输出信号上的毛刺,保证了输出信号的“干净”。
改善时序性能与可预测性:
建立/保持时间满足: 将输出信号寄存后,输出的变化时间被严格限制在时钟边沿。这使得下游电路(如果也是同步的)更容易满足其输入端的建立时间和保持时间要求。输出信号的有效窗口非常明确(在时钟边沿之后稳定一段时间)。
简化时序分析: 寄存输出后,从FPGA内部寄存器到输出引脚之间的路径成为了一个标准的寄存器到输出的路径。这简化了静态时序分析工具的工作,更容易确保该路径满足目标时钟频率下的时序约束。组合逻辑输出则需要额外考虑组合逻辑本身的延迟对输出时序的影响,分析更复杂。
减少输出路径延迟对内部逻辑的影响: 输出引脚通常需要驱动片外负载,走线较长,其负载电容和阻抗可能较大,导致从输出缓冲器到实际引脚信号的延迟相对较大且难以精确控制。如果这部分延迟包含在组合逻辑的路径中,会显著增加该路径的总延迟,可能使其成为关键路径,难以满足时序。寄存器输出隔离了内部组合逻辑计算与高负载输出驱动的延迟。内部逻辑只需要在时钟边沿前将结果稳定地送到寄存器输入端即可,而寄存器到引脚的延迟是一个相对固定且独立分析的路径。
提高设计的可靠性和鲁棒性:
稳定的、无毛刺的输出信号极大地提高了整个系统(FPGA + 外部电路)的可靠性。
时序逻辑输出的行为更可预测,设计意图更清晰。
跨时钟域处理更容易:如果输出信号需要传递到另一个时钟域,源端使用寄存器输出是进行可靠同步(如双触发器同步)的前提。直接组合逻辑输出进行跨时钟域同步极其危险且不可靠。
符合同步设计原则:
现代数字系统设计,尤其是FPGA设计,强烈推崇同步设计方法学。其核心思想是:所有信号的变化都发生在时钟的有效边沿。寄存所有模块的输入和输出是同步设计的关键实践之一,它最大限度地减少了异步行为带来的不确定性。
简单来说:为了稳定、可靠、可预测的输出,把输出信号放到一个寄存器里,让它在时钟边沿更新。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。