我记得不久前读到过,异步或同步复位在FPGA中的实现效率更高,因为触发器已经有一个,但另一个需要额外的逻辑。
有人知道这是哪条路吗?Xilinx,Altera,其他的也是这样吗?
在学习时,我习惯于为每个FSM添加异步清除和同步重置,以防万一。这样做有什么好处吗?
感谢您的反馈!
发布于 2010-12-14 18:09:30
那么,您最好的选择是查阅您的特定FPGA供应商的文档和白皮书。在我工作过的大多数专业设计团队中,我们都使用异步重置来维护最大的控制。然而,在同步和异步重置之间的选择实际上取决于您的设计和应用程序。
顺便说一句,你可能会发现来自Sunburst Design的this paper on the topic of resets很有趣。虽然它主要涉及ASIC设计和Verilog,但对于理解一般的重置决策来说,它是一篇有用的论文。
发布于 2010-12-14 19:44:18
直接回答这个问题-现在大多数FPGA都可以在触发器中进行同步或异步复位。在添加异步清除和同步休息方面,我不确定您从中获得了什么-添加您的设计功能所需的信号(可能包括一些flops的完全不重置...)
一些进一步的建议。如果使用异步重置,则在取消断言时要非常小心。如果你的设备在这个“慢”的网络上有很大的偏差,你可能会发现一些flops在不同的时钟周期重置。混乱随之而来!
为了避免这种情况,我倾向于创建一个顶层模块,它接收你的外部(可能非常异步的)复位信号,使其与时钟同步,并将其作为同步复位馈送给所有你想要复位的flops (在该时钟域中-你可能需要不止一个)。然后,时序分析器会告诉你设备的偏差是否太大,这样你就可以确保所有的东西都立即从重置中出来。
Xilinx have a whitepaper,但它也同样适用于其他FPGA。
对于某些应用程序,您可能需要在IOs上进行异步断言重置,以确保某些外部设备按您所需的方式工作,但仍会同步取消断言。
(PS。当您提到FPGA时,如果您不知道,有一个与可编程逻辑相关的堆栈交换建议,您可能会对此感兴趣http://area51.stackexchange.com/proposals/20632/)
发布于 2010-12-22 08:13:24
Xilinx的官方定位是使用同步重置。它在这个whitepaper中解释过,也在上面的帖子中提到。源代码附带的所有Xilinx IP核心,例如内存控制器,都使用同步重置。
我的团队对不同的设计进行了实验,发现使用同步重置在提高逻辑利用率方面的优势可以忽略不计。
使用异步重置的最大优势是更快的构建运行时间,这对于大型设计来说是非常重要的。原因是异步重置路径不包含在同步定时约束中(如果需要,您可以通过添加单独的约束来覆盖它们)。
https://stackoverflow.com/questions/4437596
复制相似问题