概述
在CSDN上学习异步复位同步释放的体会
转载自长弓的坚持链接:异步复位和同步释放电路的详细解释_长弓的坚持的博客-CSDN博客_异步复位同步释放1、首先给出异步复位信号亚稳态的原因: 复位结束也就是释放的时刻恰在时钟上升沿的建立时间和保持时间之间时无法决定现在的复位状态是1还是0,造成亚稳态。 下面是具体解释: 在带有复位端的D触发器中,当reset信号“复位”有效时,它可以直接驱动最后一级的与非门,令Q端“异步”置位为“1”or“0”。这就是异步复位。当这个复位信号release时,Q的输出由前一级的内部输出决定。https://blog.csdn.net/wordwarwordwar/article/details/74091796
学习笔记要点:
1、防止信号撤除时产生亚稳态
2、复位信号的发生与clk无关,复位信号的撤除也与clk无关,但是之后的输出取决于clk上升沿时候的输入
3、当复位信号rst_async_n撤除时,由于双缓冲电路(双寄存器)的作用,rst_sync_n复位信号不会随着rst_async_n的撤除而撤除。(两级同步原因)
4、假设rst_async_n撤除时发生在clk上升沿,如果不加此电路则可能发生亚稳态事件,但是加上此电路以后,假设第一级D触发器clk上升沿时rst_async_n正好撤除,则D触发器1输出高电平“1”,此时第二级触发器也会更新输出,但是输出值为前一级触发器clk来之前时的Q1输出状态。显然Q1之前为低电平,第二级触发器输出保持复位低电平,直到下一个clk来之后,才随着变为高电平。即同步释放。(亚稳态”1“会不会传递?)
module reset_sync(
input clk,
input rst_async_n,
output rst_sync_n
);
reg rst_s1;
reg rst_s2;
wire rst_sync_n;
always @(posedge clk, posedge rst_async_n) begin
if(rst_async_n) begin
rst_s1 <= 1'b0;
rst_s2 <= 1'b0;
end
else begin
rst_s1 <= 1'b1;
rst_s2 <= rst_s1;
end
end
assign rst_sync_n <= rst_s2;
endmodule
最后
以上就是淡淡河马为你收集整理的异步复位同步释放电路理解的全部内容,希望文章能够帮你解决异步复位同步释放电路理解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复