异步复位同步释放问题解析

电子说

1.2w人已加入

描述

(1)异步复位同步释放的优势

Vcc

(2)D 触发器搭建电路

使用 2 个带异步复位的寄存器,D端输入逻辑 1(VCC)。

当异步复位无效(rst_async_n = 1)时,同步后的复位信号 rst_sync_n 也为 1;

当异步复位有效(rst_async_n = 0)时,同步后的复位信号 rst_sync_n 立刻为 0,即实现了“异步复位”,但是会在时钟上升沿来临时恢复为 1,实现“同步释放”;

(以下图片来自Altera FPGA)

Vcc

第一级触发器的输入 D 接电源,即高电平1’b1。

第一级触发器的输出,很可能存在亚稳态,使用两级触发器做同步。

(3)Verilog 代码

reg rst_n_1 = 1'b1;
reg rst_n_2 = 1'b1;
always @ (posedge clk or negedge rst_async_n) 
begin 
if( !rst_async_n ) begin 
rst_n_1 <= 1'b0;
rst_n_2 <= 1'b0;
end 
else begin 
rst_n_1 <= 1'b1;
rst_n_2 <= rst_n_1;
end 
end 


assign rst_sync_n = rst_n_2;

总结

Vcc

针对 Altera 的 FPGA ,没有做其他资源消耗时的具体考证,仅从上述来看,确实能够节省一些资源。

针对 Xilinx 的 FPGA

(1)对于同一个触发器逻辑,因为同时支持异步和同步复位,所以异步复位并不会节省资源;

(2)对于其他的资源,比如 DSP48 等,同步复位更加节省资源。

首先,对于 DSP48,其内部还带有一些寄存器(只支持同步复位),如果使用异步复位,则会额外使用外部 Slice 中带异步复位的寄存器,而使用同步复位时,可以利用 DSP48 内部的寄存器;

Xilinx 的 FPGA,对于 DSP48、BRAM 资源,使用同步复位比异步复位更节省资源。

对于【高电平复位】,使用异步复位同步释放,则第一个寄存器的 D 输入是 0,这里使用了 4 个触发器打拍同步。

(参考 Xilinx 白皮书 WP272,【FPGA探索者】公众号回复【wp272】获取)。

Vcc

异步复位同步释放,既能很快的检测到复位信号,不需要复位保持超过一个时钟周期,又能解决释放时的亚稳态问题(降低亚稳态发生的概率)。

Vcc

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分