亚稳态相关:三种复位方式详解---同步复位/异步复位/异步复位同步释放

常见有三种复位方式:同步复位、异步复位、异步复位同步释放;本文对这几种复位方式进行介绍与分析,详细介绍了各种复位方式的优缺点,并在此基础上着重介绍了异步复位同步释放的工作机理与优势所在。

目录

一、同步复位

1、概念

2、Verilog描述

3、同步复位优缺点

二、异步复位

1、概念

2、Verilog描述

3、异步复位优缺点

三、异步复位同步释放

1、引入

2、原理分析1

3、原理分析2

4、Verilog描述以及仿真验证

四、参考文献


一、同步复位

1、概念

同步复位是指,复位信号只有在时钟上升沿到来时才有效。

2、Verilog描述

由同步复位的概念,即可知道其Verilog描述如下:

always@(posedge clk)
begin
    if(!rst_n)
        ...
    else
        ...
end

3、同步复位优缺点

优点:
       a、有利于仿真器的仿真;
       b、可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。
       c、因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。

缺点:
       a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
       b、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。

二、异步复位

1、概念

异步复位是指,只要复位信号有效即进行复位操作,而不管时钟上升沿是否到来。

2、Verilog描述

由异步复位的概念,即可知道其Verilog描述如下:

always@(posedge clk or negedge rst_n)
begin
    if(!rst_n)
        ...
    else
        ...
end

3、异步复位优缺点

优点:
       a、大多数目标器件库的DFF都有异步复位端口,因此采用异步复位可以节省资源。

  • 15
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
异步复位同步释放的 Verilog 代码示例如下: ``` module reset_sync ( input clk, // 时钟信号 input rst_n, // 异步复位信号 output reg out // 输出信号 ); reg sync_rst_n; always @(posedge clk or negedge rst_n) begin if (~rst_n) begin sync_rst_n <= 0; // 同步复位信号置 0 out <= 0; // 输出信号置 0 end else begin sync_rst_n <= 1; // 同步复位信号置 1 out <= 1; // 输出信号置 1 end end endmodule ``` 这个代码中,异步复位信号 `rst_n` 在时钟上升沿时被同步到 `sync_rst_n` 寄存器中,同步复位信号 `sync_rst_n` 用于控制输出信号 `out` 的状态。当异步复位信号 `rst_n` 为低电平时,同步复位信号 `sync_rst_n` 置为 0,输出信号 `out` 置为 0;当异步复位信号 `rst_n` 回到高电平时,同步复位信号 `sync_rst_n` 置为 1,输出信号 `out` 置为 1。 在设计时需要注意,异步复位信号的下降沿和上升沿都可能导致亚稳态,因此需要在异步复位信号的下降沿和上升沿添加一个同步延迟元件,来消除亚稳态同步延迟元件可以是两级锁存器,也可以是其他同步元件。例如,下面是添加了同步延迟元件的代码示例: ``` module reset_sync ( input clk, // 时钟信号 input rst_n, // 异步复位信号 output reg out // 输出信号 ); reg sync_rst_n; always @(posedge clk or negedge rst_n) begin if (~rst_n) begin sync_rst_n <= 0; // 同步复位信号置 0 out <= 0; // 输出信号置 0 end else begin sync_rst_n <= 1; // 同步复位信号置 1 out <= 1; // 输出信号置 1 #1 sync_rst_n <= 0; // 同步延迟元件 end end endmodule ``` 在这个代码中,加入了一个同步延迟元件 `#1`,延迟一个时钟周期,来避免异步复位信号的下降沿和上升沿导致的亚稳态

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值