异步复位同步释放(Synchronized Asynchronous Reset)

本文探讨了同步复位与异步复位的特点及应用场合,并提出了异步复位同步释放的概念,这是一种结合两者优势的设计方法。同步复位能确保电路完全同步,但要求复位信号时长超过时钟周期;异步复位则易于实现全局复位,但可能引入亚稳态问题。异步复位同步释放既实现了快速复位又确保了电路稳定。

异步复位同步释放(Synchronized Asynchronous Reset)_Jackiezhang1993的博客-优快云博客_异步复位同步释放同步复位优点:一般能够确保电路是百分之百同步的。确保复位只发生在有效时钟沿,可以作为过滤掉毛刺的手段。缺点:  复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位。同时还要考虑如:时钟偏移、组合逻辑路径延时、复位延时等因素。 由于大多数的厂商目标库内的触发器都只有异步复位端口,采用同步复位的话,就会耗费较多的逻辑资源。异步复位优点:异步复位信号识...https://blog.youkuaiyun.com/Jackiezhang1993/article/details/85319001

HDL_BITS 中不少题目中的复位信号(reset)要求synchronized  或者asynchronized,对于这两者的异同一直有些疑惑,该文解惑了不少。

同步复位
优点:

一般能够确保电路是百分之百同步的。
确保复位只发生在有效时钟沿,可以作为过滤掉毛刺的手段。
缺点:

复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位。同时还要考虑如:时钟偏移、组合逻辑路径延时、复位延时等因素。 
由于大多数的厂商目标库内的触发器都只有异步复位端口,采用同步复位的话,就会耗费较多的逻辑资源。
异步复位
优点:

异步复位信号识别方便,而且可以很方便的使用全局复位。
由于大多数的厂商目标库内的触发器都有异步复位端口,可以节约逻辑资源。
缺点:

复位信号容易受到毛刺的影响。
复位结束时刻恰在亚稳态窗口内时,无法决定现在的复位状态是1还是0,会导致亚稳态。 
 

为了综合两者的优缺点,有

异步复位同步释放
        所谓异步复位同步释放(Synchronized Asynchronous Reset),就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。

关于PLL,日后进一步了解。
 

### 异步复位同步释放 (Async Reset Sync Release) 的实现方法及原理 在FPGA设计中,异步复位同步释放是一种常见的技术手段,用于确保系统能够可靠地进入已知状态并安全退出复位模式。这种方法结合了异步复位的优点(快速响应外部中断)以及同步逻辑的优势(提高稳定性),从而减少了潜在的竞争条件和其他时序问题。 #### 原理说明 当采用异步复位时,在接收到有效的低电平或高电平脉冲之后立即执行复位动作;而为了防止因噪声干扰或其他因素造成的意外提前解除复位状态,则通过两级寄存器级联的方式将原始的异步信号转换成与当前工作频率相同的内部同步版本[^3]。具体来说: - **第一阶段**:检测到来自外界的异步复位请求后立即将其传递给第一个锁存单元; - **第二阶段**:经过一个周期延迟后再传送给第二个锁存单元作为最终确认标志; - 这样做的好处是可以有效过滤掉短时间内的毛刺现象,并使得整个过程更加稳健可控。 #### 实现代码示例 以下是基于上述原则编写的Verilog HDL代码片段,展示了如何在一个简单的模块内完成这一功能: ```verilog module async_reset_sync_release ( input wire clk, input wire rst_n, // Active low asynch reset signal output reg q // Output register value after reset release ); // Internal signals for synchronizing the asynchronous reset reg rst_meta; reg rst_sync; // Metastability prevention chain always @(posedge clk or negedge rst_n) begin : proc_rst_meta if (!rst_n) rst_meta <= 1'b1; else rst_meta <= 1'b0; end always @(posedge clk or negedge rst_n) begin : proc_rst_sync if (!rst_n) rst_sync <= 1'b1; else rst_sync <= rst_meta; end // Main logic that uses synchronized reset always @(posedge clk or negedge rst_n) begin : proc_q if (!rst_n) q <= 1'b0; // Asynchronous reset action else if (rst_sync == 1'b1) q <= 1'b0; // Ensure Q is cleared during initial cycles post-reset else q <= /* Your combinational logic here */ ; // Normal operation end endmodule ``` 此段程序定义了一个名为`async_reset_sync_release`的实体,它接收两个输入端口(`clk`, `rst_n`)和一个输出端口(`q`)。其中,`rst_n`表示活动低电平的有效复位信号。该模块利用双层寄存器结构实现了对外部异步事件的安全处理机制,即先捕获再逐步传播至目标位置,以此达到平稳过渡的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值