4

我记得前段时间读到异步或同步复位在 FPGA 中实现的效率更高,因为触发器已经有一个,但另一个需要额外的逻辑。

有谁知道这是哪条路?Xilinx,Altera,Other 是否也是这样。

在学习的时候,我曾经给每个 FSM 加上一个异步清零和一个同步复位,以防万一。这有什么好处吗?

感谢您的任何反馈!

4

3 回答 3

6

直接回答这个问题 - 如今,大多数 FPGA 都可以在其触发器中进行同步或异步复位。在添加异步清除和同步休息方面,我不确定您通过此实现了什么 - 添加您的设计功能所需的信号(可能包括某些触发器根本不重置......)

一些进一步的建议......如果您使用异步重置,请在取消断言时非常小心。如果您的设备上的这个“慢”网络有很多偏差,您可能会发现一些触发器在与其他时钟周期不同的时钟周期上出现。混乱随之而来!

为了避免这种情况,我倾向于创建一个顶层块,它接收您的外部(并且可能是非常异步的)复位信号,将其同步到时钟并将其作为同步复位馈送到您想要复位的所有触发器(在那个时钟域中 - 你可能需要不止一个)。然后,时序分析器会告诉您设备的偏差是否太大,您将确保一切都立即退出复位。

Xilinx 有一份关于这个主题的白皮书,但它同样适用于其他 FPGA。

对于某些应用程序,您可能需要在 IO 上进行异步置位复位,以确保某些外部设备按您需要的方式工作 - 但仍同步解除置位。

(PS。当您提到 FPGA 时,如果您不知道,有一个与可编程逻辑相关的 stackexchange 提案,您可能会感兴趣http://area51.stackexchange.com/proposals/20632/

于 2010-12-14T11:44:18.233 回答
2

好吧,最好的办法是查阅特定 FPGA 供应商的文档和白皮书。在我工作过的大多数专业设计团队中,我们使用异步重置来保持最大控制。然而,同步和异步复位之间的选择实际上取决于您的设计和应用程序。

顺便说一句,您可能会发现这篇关于Sunburst Design 重置主题的论文很有趣。虽然它主要涉及 ASIC 设计和 Verilog,但它对于理解一般的复位决策是很有用的。

于 2010-12-14T10:09:29.677 回答
2

Xilinx 的官方立场是使用同步复位。本白皮书对此进行了解释,上述帖子中也提到了这一点。源代码随附的所有赛灵思 IP 内核(例如内存控制器)都使用同步复位。

我的团队尝试了不同的设计,发现使用同步复位在提高逻辑利用率方面的优势可以忽略不计。

使用异步重置的最大优势是更快的构建运行时间,这对于大型设计来说非常重要。原因是同步时序约束没有覆盖异步复位路径(如果需要,可以通过添加单独的约束来覆盖它们)。

于 2010-12-22T00:13:24.057 回答