亚稳态学习小结

2023-11-15

亚稳态学习小结

一、亚稳态是什么

要知道亚稳态的定义,首先要知道时钟上升沿采样中的建立时间(setup time)和保持时间(hold time)。

1.1 建立时间(Tsu)、保持时间(Th)

img

建立时间:在触发器时钟上升沿到来之前,数据需要保持稳定不变的时间。如果建立时间不够,数据就不能在此上升沿被稳定打入触发器。

保持时间:在触发器时钟上升沿到来后,数据需要保持稳定不变的时间。如果保持时间不够,数据同样不能被稳定打入触发器。

1.2 亚稳态

在数据打入触发器时,若不满足建立时间或保持时间,触发器就会进入亚稳态。一个触发器一旦进入亚稳态状态,则无法预测触发器的输出电平,也无法预测什么时候可以稳定在某个确定的电平上,此时触发器的输出端Q在较长时间内处于振荡状态,不等于输入端D。稳定之前的这段时间称作决断时间(resolution time)。经过resolution time之后,输出端Q将会稳定在某个电平上,但是这个稳定之后的电平与输入端D是没有关系的。

亚稳态是触发器的一个固有特性,正常采样也会有一个亚稳态时间。当建立时间和保持时间满足时,触发器会经历采样,亚稳态后,进入一个正确的状态。

亚稳态是复杂时序电路中无法避免的现象,设计电路时首先要减少亚稳态发生的概率,其次要使系统对产生的错误不敏感。
前者靠同步来实现,后者需要根据不同的设计应用采取不同的处理办法。

二、常见的亚稳态产生及解决方法

在同步系统中,输入总是与时钟同步,因此寄存器的建立时间和保持时间是满足的,一般情况下是不会发生亚稳态情况的。(在同步逻辑中只要静态时序分析(STA)保证了每个触发器都能满足自己的建立时间以及保持时间,正常是不会遇到亚稳态问题的。)

只要系统中存在异步元件,则亚稳态是没有办法避免的,亚稳态通常发生在异步信号检测、跨时钟传输和复位电路当中。

2.1 跨时钟传输

产生原因

跨时钟传输时,由于两个时钟互不相关,因此很有可能在采集数据时不满足建立时间要求,产生亚稳态。

解决方法

使用本地时钟将异步输入信号打入本地触发器链中(一般使用二个触发器足够)。如上图所示:Din进入Clock2时钟域的第一个触发器后再进入后一级触发器,后一级触发器输出进入组合逻辑中。(将输入信号延迟两个本地时钟周期)

Verilog代码:

module sync(
    input async_in, bclk, rst,
    output sync_out
    );

reg bdat1, bdat2;

always @(posedge bclk or posedge rst) begin
    if (rst) begin
        bdat1 <= 1'b0;
        bdat2 <= 1'b0;
    end
    else begin
        bdat1 <= async_in;
        bdat2 <= bdat1;
    end
end

assign sync_out = bdat2;

endmodule

原理: 我们将触发器链的第一个触发器称为FF1第二个称为FF2……第N个称为FFn。
异步信号Din进入本地时钟域的FF1的D端,由于是异步信号,存在亚稳态的风险(产生亚稳态是由一定概率的),输出是非高非低的一个中间态。此时亚稳态传递到后面的电路,但是亚稳态信号不能够长期保持,亚稳态信号最终自己会变成稳态信号。这时有FF2,在下一个时钟上升沿采集FF1的输出,相当与给出一个时钟周期让亚稳态信号恢复成稳态信号的恢复时间。FF2采集到恢复成为稳态的信号输出。
但靠二级触发器也能不能完全避免亚稳态的发生,以上提到亚稳态信号总会由亚稳态自己变成稳态,但是这个时间不是完全确定的。所以只能说双触发器搭建的同步电路只能一定程度上避免亚稳态的发生(不过经过概率计算,双触发器号称将亚稳态发生的概率减少到了几年发生一次)。不过根据以上分析可以很明显发现触发器链越长发生亚稳态的概率越低,二级触发器之间完全不能有组合逻辑且二级触发器的物理路径越近越好。
一般系统使用二级触发器做同步化处理已经是足够。但注意双触发器作为同步器只能用在单比特数据的传递中。原因很简单,因为同步器输出只能保证是一个稳态不能不能保证是一个确定的值。故多比特数据使用同步器还是会出现乱码的情况。对于多比特数据的操作一般使用异步FiFO。

2.2 复位电路

产生原因
异步复位

复位信号撤销时产生亚稳态对电路影响较大,时序图如下所示

同步复位

在这里插入图片描述

在这里插入图片描述

与异步复位类似,在复位信号撤销时,容易进入亚稳态。

解决方法

异步复位,同步释放

在这里插入图片描述

module Reset_test(
	input clk,
	input rst_nin,
	output reg rst_nout
);
 
	reg rst_mid;
 
	always@(posedge clk or negedge rst_nin)
	begin
		if(!rst_nin)
		begin
			rst_mid <= 0;
			rst_nout <= 0;
		end
		else
		begin
			rst_mid <= 1;
			rst_nout <= rst_mid;
		end
	end

可以理解为跨时钟域传输复位信号,对复位信号延迟两个时钟周期。

三、疑问

资料中提到,“因为同步器输出只能保证是一个稳态不能不能保证是一个确定的值”,那么跨时钟传输经同步后的数据只是不再将亚稳态传递下去,但具体的数值似乎是随机的?这不会对电路数据传输造成巨大伤害吗?

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

亚稳态学习小结 的相关文章

  • Hbase学习2:部署

    http dblab xmu edu cn blog install hbase HBASE 官网 https hbase apache org book html preface Use the following legend to i

随机推荐

  • 程序员分类

    程序员 前端 html css javascript bootstrap jQuery Node js Augular TypeScript ReactJS vue js 后端 Java Python Go C C Ruby Node js
  • LeetCode-1615. 最大网络秩【图】

    LeetCode 1615 最大网络秩 图 题目描述 解题思路一 简单暴力 用一个矩阵g记录每对点之间是否连通 如果连通g a b g b a 1 然后用一个一位数组cnt记录每一个点的度 最终答案是每对城市之间的最大网络秩即max cnt
  • 机器学习、深度学习常用专业术语

    主要记录一些深度学习中可能用到的专业术语 一般是碰到了不懂的才记录 所有没有按一定的规律记录 持续更新 1 梯度下降 gradient descent 2 学习速率 learning rate 学习率指每次迭代中 对成本函数的 最小化次数
  • 用 Python 快速追踪基金的收益情况(2022年4月更新)

    来源 Python数据之道 ID PyDataLab 作者 阳哥 大家好 我是阳哥 大家知道 近几年 不少同学都是经由基金进入到股市中的 至于股票和基金到底谁更好 这个仁者见仁智者见智 恐怕一时半会儿也说不清楚 2021年 阳哥曾经分享过
  • 机器学习课后题——贝叶斯

    第四章 贝叶斯分类器 1 简述朴素贝叶斯的优缺点 答 朴素贝叶斯的主要优点有 算法比较简单 易于实现 快速 易于训练 朴素贝叶斯模型有稳定的分类效率 对小规模的数据表现很好 能处理多分类任务 适合增量式训练 尤其是数据量超出内存时 可以一批
  • 今天是我的生日,也是我的离职日!

    前言 时间就是这么巧妙 今天是我的生日 也是我的离职日 职场中有人来 就有人走 本是件很平常的事 在这里祝自己生日快乐 江湖路远 后会有期 今天是我的生日 也是我的离职日 一 往昔 二 ZQ的人事物 三 离职建议 四 后会有期 一 往昔 记
  • 【JavaScript面向对象详解】

    ES6之前的JavaScript面向对象比较不好理解 涉及到很多知识和思想 ES6增加了class和extends来实现类的封装和继承 但是通过babel转换成ES5之后还是之前的一套逻辑 这里 我打算用四篇文章 来讲解一下关于ES5中面向
  • k8s ingress配置wss编排模板

    前段时间遇到了一个k8s配置websocket的问题 需要配置一下 由于wss比较安全 结合tls证书才能配置成功 如果是ws则无法在https的网站上面直接使用 wss才行 下面给出配置文件 希望帮助到需要的伙伴 配置一个新的单独为所有w
  • 【学习笔记】——appium移动端自动化测试实战

    最近学习了appium移动端自动化测试 以qq登录模块的功能进行实战学习 主要涉及到的技术有 python appium unittest 数据驱动 weditor查看元素定位 断言 测试报告 最后以pom模式呈现效果 在学习过程中 除了元
  • java类的静态变量调用_Java学习笔记八---类的静态变量与静态方法的访问与调用方式...

    静态变量又称类变量 静态方法又称类方法 它们统称为静态成员或类成员 静态成员由static修饰 是属于整个类的 所有的对象共享这些静态成员 不需要创建任何对象 静态成员在类装载时就已初始化了 整个运行期间其内存位置不变 直到类卸载 鉴于静态
  • apache 插件开发之过滤器 (filter)

    过滤器 filter A filter is a process that is applied to data that is sent or received by the server Data sent by clients to
  • Unity实现Camera和Audio数据的低延迟RTMP推送技术探讨

    关于Unity实现RTMP直播推送技术方案 之前零散的写过几篇介绍 得到了好多开发者的关注 以Android平台为例 目前视频这块 我们demo实现的是Camera数据的采集 然后编码投递到底层 如果设备没有性能瓶颈 可达到高帧率 60帧
  • 自动化测试的类型​以及自动化测试的几个误区!

    有三种主要类型的自动化测试 一 自动化单元测试 编辑 自动化单元测试在代码级别上进行测试 bug是在开发人 员编写的函数 方法和例程中识别出来的 一些公司要求开发人员自己进行单元测试 而有些公司则雇用专门的测试自动化资源 这些资源可以访问源
  • 2021最新Apache漏洞分析

    漏洞简介 2021年9月16日 Apache官方发布了Apache httpd mod proxy SSRF漏洞CVE 2021 40438 影响v2 4 48及以下版本 该漏洞影响范围较广 危害较大 利用简单 不得不引起重视 漏洞搭建 d
  • R for data science 之 stringr包

    作者简介Introduction 邬书豪 车联网数据挖掘工程师 R语言中文社区专栏作者 微信ID wsh137552775 知乎专栏 https www zhihu com people wu shu hao 67 activities 往
  • C语言 —— 合并两个有序数组

    C语言解决数组相关问题 合并有序数组 一 问题描述 二 解题思路 三 图文描述 四 代码展示 一 问题描述 给定两个有序整形数组arr1 和 arr2 将arr1 与 arr2合并或者有序输出成为一个有序数组 二 解题思路 1 给定的是两个
  • 16_Nginx_http请求处理的11个阶段

    文章目录 http 请求处理时的11个阶段 11个阶段的顺序处理 http 请求处理时的11个阶段 post read realip server rewrite rewrite find config rewrite rewrite po
  • 动力节点王鹤SpringBoot3笔记——第五章 说说Web服务

    目录 第五章 说说Web服务 5 1 高效构建Web应用 5 1 1 html页面视图 5 1 2 JSON视图 5 1 3 给项目加favicon 5 2 Spring MVC 5 2 1 控制器Controller 5 2 1 1 匹配
  • Oracle的大字段Clob类型的查询,Clob转为varchar展示

    1 Oracle中将clob字段数据转化为字符串 借鉴学习地址 Oracle的CLOB大数据字段类型 Grand Jon 博客园 查询 将CLOB转成字符类型 采用 dbms lob substr 查询 将CLOB转成字符类型 SELECT
  • 亚稳态学习小结

    亚稳态学习小结 一 亚稳态是什么 要知道亚稳态的定义 首先要知道时钟上升沿采样中的建立时间 setup time 和保持时间 hold time 1 1 建立时间 Tsu 保持时间 Th 建立时间 在触发器时钟上升沿到来之前 数据需要保持稳