【IC每日一题】

IC每日一题

  • [1 代码题:异步复位,同步释放](#1 代码题:异步复位,同步释放)
  • [2 八股题:同步复位VS异步复位](#2 八股题:同步复位VS异步复位)

初步打算新开一个系列会包括:一个代码题 + 一个基本知识题;

1 代码题:异步复位,同步释放

题目:使用verilog来设计实现一个异步复位,同步释放功能;

问题:对于D触发器来说,当rst_n1'b0时,D触发器发生复位,当rst_n1'b1时,D触发器正常工作;

但是当rst_n信号重新回到1的时间和clk上升沿到来的信号非常接近时,D触发器可能会输出亚稳态,造成信号无法识别是1还是0;

解决办法:

异步复位:对为0的复位信号不做处理,让其正常异步复位;

同步释放:对为1的复位信号打两拍,使其拉高时对齐时钟边沿,避免亚稳态;

时序图如下:

代码图如下:

verilog 复制代码
module rst_asy(
	input clk,
	input rst_n,
	output rst_n_out
);

reg rst_n_r1;

always@(posedge clk or negedge rst_n) begin
	if(rst_n==1'b0) begin
		rst_n_out <= 1'b0;
		rst_r1	<= 1'b0;
	end else begin
		//rst_r1 <= rst_n;	//rst_n==1'b1;
		rst_r1 <= 1'b1;
		rst_n_out <= rst_r1;
	end
end

endmodule

综合实现电路如下:

2 八股题:同步复位VS异步复位

概念: 同步复位:当时钟上升沿检测到复位信号,执行复位操作(以时钟沿采样为基准)--always @(posedge clk);

异步复位:无论时钟沿信号是否到来,只要复位信号有效,就对系统进行复位----always @(posedge clk or negedge rst_n);

优缺点:

同步复位:

优点:1.可以使设计的系统成为同步时序电路,有利于时序分析;2.因为只在时钟沿有效,可以过滤低于时钟周期的复位毛刺;

缺点:1.不能及时响应复位逻辑操作;2.复位信号有效时长需大于时钟周期;3.需要额外的同步逻辑

异步复位:

优点:1.DFF基本都有异步复位端口,不需要额外逻辑;2.异步复位信号响应及时;

缺点:1.属于异步逻辑,当复位释放接近时钟沿时,触发器输出可能进入亚稳态;2.可能因为毛刺造成假复位;

总结解决方法:复位信号低电平有效,异步复位,同步释放;----->为了解决复位信号撤销时,D触发器输出亚稳态;

[ref]

1.https://blog.csdn.net/dongdongnihao_/article/details/79827076?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-9-79827076-blog-131870231.235^v43^pc_blog_bottom_relevance_base5&spm=1001.2101.3001.4242.6&utm_relevant_index=11

相关推荐
中古传奇18 天前
【IC每日一题--单bitCDC跨时钟和同步FIFO】
ic
中古传奇1 个月前
【 IC每日一题】
ic
Lambor_Ma1 个月前
【ARM】v8架构programmer guide(6)_MMU内存管理模块
arm开发·架构·硬件架构·ic·soc
这是我581 个月前
C++版iwanna1
c++·其他·游戏·ic·visual studio·iwanna·坑爹
Carol06303 个月前
20240829版图的层次
ic
Lambor_Ma3 个月前
【数字时序】时钟树延迟偏差——CPPR adjustment
ic·芯片设计·soc
Lambor_Ma3 个月前
【ARM】Cortex-A72技术手册(1)
arm开发·架构·硬件架构·ic·soc
Lambor_Ma3 个月前
【ARM】v8架构programmer guide(3)_ARMv8的寄存器
arm开发·架构·硬件架构·ic·fpga·soc·芯片