同步复位、异步复位、亚稳态、建立时间、保持时间、恢复时间、清除时间

2023-11-13

同步、异步复位的概念是重要的基础内容,需对其有较清晰的认识,才能在复位电路的设计时得心应手,本文基于前辈分享,结合自己的理解,浅谈亚稳态、复位电路等相关内容。

首先需要明确的是,同步、异步名词背后的两个对象是谁,谁和谁同,谁和谁异。复位的目标是将寄存器、RAM等单元恢复初始状态,重点应该在于这些单元的输出变成初始状态,所以同步、异步实际上说的是输出信号和时钟之间的关系
不要理解为:复位信号和时钟之间的关系。

同步复位

代码层面理解:always块的敏感列表中只有时钟信号sys_clk,所以想要触发复位的前提是sys_clk信号高电平有效,基于此前提,复位后的输出信号一定是和sys_clk信号同步的。
RTL代码:

module Sync_rst (
    input              sys_clk,
    input              sys_rst,        // Synchronous reset
    input      [7:0]   d,
    output reg [7:0]   q
);
always@(posedge sys_clk) begin
   if (!sys_rst) q <= 8'b0;
   else q <= d;
end
endmodule

tb文件:

module tb_sync_rst();
reg            sys_clk  ;
reg           sys_rst   ;
reg    [7:0]         d  ;
wire [7:0]           q  ;

Sync_rst Sync_rst_init(
    .sys_clk    (sys_clk),       
    .sys_rst    (sys_rst),               // Synchronous reset
    .d          (d),
    .q          (q)
);

always #10 sys_clk = ~sys_clk;

initial begin
    sys_clk = 1'b0;
    sys_rst = 1'b1;
    d = 'd1;
    #45
    sys_rst = 1'b0;
    #50
    sys_rst = 1'b1;
end

endmodule

综合后电路理解
使用Vivado综合电路如下所示,它看起来很像异步复位,这是因为图中展示的RTL_REG_SYNC是带有同步复位引脚的触发器,标志是RST口。
在这里插入图片描述
在这里插入图片描述
图中,q从1变到0的边沿和sys_clk是对齐的,即为“同步”。

同步复位的优点:

  1. 复位信号的毛刺不会影响时序,抗干扰能力强。
  2. 有利于仿真器仿真
  3. 有利于时序分析

同步复位缺点:

  1. 只有在时钟沿到来时复位信号才起作用,复位信号持续的时间应该超过一个时钟周期才能确保系统复位,同时还要考虑组合逻辑路径延时,复位延时等因素。
  2. 如果逻辑器件没有同步复位端口,则会因为插入组合逻辑耗费较多的逻辑资源。

异步复位

代码层面理解:always块的敏感列表中既有时钟信号sys_clk还有sys_rst信号。
RTL代码:

module Async_rst (
    input              clk,
    input              rst_n,        // asynchronous reset
    input      [7:0]   d,
    output reg [7:0]   q
);

always@(posedge clk or negedge rst_n) begin
   if (!rst_n) q <= 8'b0;
   else        q <= d;
end
endmodule

tb文件:

`timescale 1ns / 1ps
module tb_sync_rst();
reg            sys_clk  ;
reg           sys_rst   ;
reg    [7:0]         d  ;
wire [7:0]           q  ;

Async_rst Async_rst_init(
    .clk    (sys_clk),       
    .rst_n    (sys_rst),               // Synchronous reset
    .d          (d),
    .q          (q)
);

always #10 sys_clk = ~sys_clk;

initial begin
    sys_clk = 1'b0;
    sys_rst = 1'b1;
    d = 'd1;
    #45
    sys_rst = 1'b0;
    #50
    sys_rst = 1'b1;
end

endmodule

综合电路理解:
典型的异步复位电路,区别于上面同步复位的电路图,它是CLR口。
在这里插入图片描述
在这里插入图片描述
上图中q从1变为0的边沿和时钟信号的边沿是异步的。
异步复位的优点:

  1. 无需额外的逻辑资源,实现简单。
  2. 复位信号不依赖于时钟。

异步复位缺点:
3. 复位信号容易受到外界的干扰,如毛刺等影响。
4. 复位信号释放的随机性,可能导致时序违规,倘若复位释放时恰恰在时钟有效沿附近,就很容易使电路处于亚稳态。

建立时间、保持时间、恢复时间、去除时间

同步系统中会涉及到前两个时间,因为无论是控制信号还是数据信号,都需要提前保持稳定,等待CLK触发,再继续保持稳定,触发器的输出才是稳定的。
建立时间:setup time,是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间。在时钟信号上升沿到来之前,数据需要提前稳定住自己,为写入触发器做准备,这段提前准备的时间就是建立时间。

保持时间:hold time,是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间。在时钟信号上升沿到来之后,数据需要继续稳定住自己,保证能够写入触发器,这段继续稳定的时间就是保持时间。

无论是数据还是控制信号,在输入触发器时,只有同时满足建立时间和保持时间,才能保证触发器的输出是稳定的。

异步系统中会涉及到后两个时间,因为某一个时钟上升沿到底能否有效驱动工作,取决于时钟信号和复位信号之间是否满足恢复时间或者去除时间。
恢复时间:recovery time,原本有效的复位信号释放后,与紧跟其后的第一个时钟上升沿之间的最小时间。复位信号释放后,至少经过恢复时间这么长时间后,系统才能在下一个时钟信号上升沿开始工作,如果复位信号释放和下一个时钟上升沿离得太近,系统就不能从复位状态中恢复过来。

去除时间:removal time,是指异步控制信号(如寄存器的异步清除和置位控制信号)在“有效时钟沿”之后变无效的最小时间长度。这个时间的意义是,如果保证不了这个去除时间,也就是说这个异步控制信号的解除与“有效时钟沿”离得太近(但在这个时钟沿之后),那么就不能保证有效地屏蔽这个“时钟沿”,也就是说这个“时钟沿”可能会起作用。

换句话来说,如果你想让某个时钟沿起作用,那么你就应该在“恢复时间”之前是异步控制信号变无效,如果你想让某个时钟沿不起作用,那么你就应该在“去除时间”过后使控制信号变无效。如果你的控制信号在这两种情况之间,那么就没法确定时钟沿是否起作用或不起作用了,也就是说可能会造成寄存器处于不确定的状态。而这些情况是应该避免的。所以恢复时间和去除时间是应该遵守的。

CSDN链接: 恢复和去除时间(Recovery and Removal Time)

亚稳态

产生的原因:在FPGA系统中,如果数据传输中不满足触发器的Tsu(建立时间)和Th(保持时间)不满足,或者复位过程中的去除时间、复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值

发生场合:只要系统中有异步元件,亚稳态就是无法避免的,亚稳态主要发生在异步信号检测、跨时钟域信号传输以及复位电路等常用设计中。

链接: FPGA中亚稳态【Tsu建立时间setup】【Th保持时间hold】【Tmet决断时间】【recovery恢复时间】【removal移除时间】【复位】

链接: 不得不读的 FPGA 设计白皮书——Xilinx FPGA 复位策略白皮书翻译(WP272)【FPGA探索者】

异步复位,同步释放

异步复位、同步释放是指复位信号产生时不受时钟信号的控制,但是释放的时候受到时钟信号的同步。主要目的是防止复位信号释放时候产生亚稳态。

异步复位:当复位信号拉低时,直接进入复位状态。

同步释放:当复位信号释放时,加入两级同步缓存器,电路不会立即释放,而是同步到时钟有效时再进行释放。

链接: 异步复位,同步释放

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同步复位、异步复位、亚稳态、建立时间、保持时间、恢复时间、清除时间 的相关文章

  • FPGA设计篇之流水线思想

    FPGA设计篇之流水线思想 一 写在前面 二 正文开始 2 1举个栗子 2 2 1情况一 组合逻辑 2 1 2情况二 流水线设计 2 1 4 小总结 2 2举第二个栗子 写在最后 一 写在前面 流水线 大家好 我是富土康三号流水线的张全蛋
  • 数字IC手撕代码-兆易创新笔试真题

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • 基于单光子探测的多脉冲周期符合远距离测距

    激光测距技术通过发射主动激光信号对目标进行探测 接收由目标漫反射回来的回波信号并进行统计 处理及换算 从而得到目标的距离 速度信息 实现对目标距离信息的探测 凭借其系统简单 操作灵活 高精度等特点 被广泛运用于民用 科研及军事等各类场合 基
  • Vivido添加pynq-Z2开发板

    一 下载pynq z2开发板文件 下载地址 https www tulembedded com FPGA ProductsPYNQ Z2 html 二 将下载的文件解压到vivado安装的位置 如果boards目录下面没有boards fi
  • 【FPGA入门】第八篇、FPGA驱动VGA实现动态图像移动

    目录 第一部分 实现效果 第二部分 动态VGA显示的原理 1 将动态显示的区域提前进行赋值 2 图像块的移动是每张图片叠加后的效果 3 如何实现图像块位置的改变 第三部分 系统结构和驱动波形 1 系统的Top down结构 2 图像块移动的
  • FPGA的基本设计流程

    FPGA开发主要包括系统设计 设计输入 功能仿真 综合优化 综合后仿真 实现与布局布线 时序方针与验证 板级方针与验证 芯片编程与调试等9个部分 如下图所示 1 电路设计 在系统设计之前 首先要进行的是方案论证 系统设计和FPGA芯片选择等
  • 【FPGA】:频率测量

    转载 1 FPGA频率测量的三种方法 直接测量法 间接测量法 等精度测量法
  • 实验1-FPGA编程入门

    文章目录 一 认识全加器 二 输入原理图实现1位加法器 一 半加器原理图输入 二 全加器原理图输入 三 Verilog语言实现全加器 四 总结 五 资料参考 一 认识全加器 一 半加器 1 逻辑分析 如下图所示 半加器只有两个输入和两个输出
  • Verilog实现两路组相联cache

    cache代码 timescale 1ns 1ps cache共32块 分为16组 每组2块 即两路组相联 1块 4字 1字 4字节 主存共1024块 4096个字 主存地址共12位 1 0 为块内偏移 5 2 为组地址 11 6 为Tag
  • 握手2倍速率进,一倍速率出[verilog]

    module two to one parameter WORD LEN 33 input clk input arst input 2 WORD LEN 1 0 i din input i din valid output o din r
  • 吃透Chisel语言.18.Chisel模块详解(五)——Chisel中使用Verilog模块

    Chisel模块详解 五 Chisel中使用Verilog模块 上一篇文章讲述了用函数实现轻量级模块的方法 可以大幅度提升编码效率 Chisel中也提供了一些好用的函数 方便我们编写代码 也方便Chisel编译器优化生成的硬件电路 在Chi
  • IC数字后端

    在 innovus 里面 有时候我们需要控制 tie cell 的 fanout 和 net length 来避免 tie cell 可能出现 max transition 或者 max fanout 的违例 一般来说 只要 fanout
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • ALLEGRO等长时如何将PIN DELAY和VIA长度计算在内

    在PCB设计中 对于时序要求严格的线路 Via和IC pin delay的长度必须得到重视 通过下面的操作 可将Via和Pin delay加入到线路长度的计算中 1st 计算Pin delay 打开Constraint Manager 选择
  • 【FPGA】通俗理解从VGA显示到HDMI显示

    注 大部分参考内容来自 征途Pro FPGA Verilog开发实战指南 基于Altera EP4CE10 2021 7 10 上 贴个下载地址 野火FPGA Altera EP4CE10征途开发板 核心板 野火产品资料下载中心 文档 hd
  • 硬核 | 从零制作一个激光雷达需要多久?

    编辑 ADS智库 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 硬件交流 技术交流群 本文只做学术分享 如有侵权 联系删文 激光雷达 LiDAR 是激光探测及测距系统的简称 目前广泛应用在无
  • 无线网络管理系统与无线路由器的区别

    第5章 波形发生器软件设计 本章我们将介绍系统的软件设计 系统中控制软件占有很重要的地位 它不仅要产生波形数据 控制波形的发生 还要控制显示电路和键盘电路 因此系统软件的好坏直接决定着系统的功能和稳定 5 1软件的总体结构 在本系统中 由于
  • MINI-UTDE 10 BASE-T 集成控制器

    MINI UTDE 10 BASE T 集成控制器 MINI UTDE 10 BASE T 拥有多达三个本地I O板和远程I OS总线通信 为用户提供了一系列生产单元功能的单一控制点 包括诸如夹头 反馈器和辅助机器等外围生产设备 支持所有主
  • TRICONEX MA2211-100 芯片上相互连接

    TRICONEX MA2211 100 芯片上相互连接 TRICONEX MA2211 100 所有相同的组件 io的电源 处理器 和内存将需要 但是 你可以看到所有这些带存储器和处理器的OO板 针不能嵌入到一个小的单片机上 现在是 普拉克
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步

随机推荐