异步复位同步释放原理

2023-11-13

深度揭秘异步复位同步释放原理

文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点。点击进去后出现任何损失与社区无关。

明天就放端午小长假了,提前祝大家节日快乐。腾讯官网已经给小编公众号开通了赞赏功能(在文章末尾),这个赞赏是针对原创作者的,目的是鼓励原创作者不断进行内容分享。

所以,各位粉丝可以给本公众号投稿,赞赏所得归文章作者所有。截止目前,本公众号已经发表原创 48 篇,皆为小编一个个字敲出来的。所以希望各位也来投个稿。好了,下面直接进入今天的主题。

Removal timing check

Removal time 是指在时钟有效沿来临之后,异步复位信号需要继续保持有效的最短时间。满足这个最短时间才能确保对寄存器进行正常的复位。Removal time check 的波形图如下图所示。Removal timing check 与 hold time check 类似。

Recovery timing check

Recovery time 是指在时钟有效沿到来之前,复位信号保持高电平的最短时间。即复位信号变到非复位状态的电平必须在 clk 之前一定的时间到达。满足这个 Recovery time,可以确保在时钟有效沿来临时,异步复位信号处于无效状态,从而确保正常的数据采样。Recovery time 的检查波形如下图所示。它的检查和 setup 检查类似。

从 Removal 和 Recovery time 的定义知道,只要 DFF 的复位信号不在时钟有效沿附近变化(复位信号远离时钟有效沿),就可以保证电路的正常复位和撤销。

在实际的设计中,比如有的模块是先复位再给模块供应时钟,即保证了复位信号与时钟在时间上是错开的,这种流程可以保证不会出现 recovery 和 removal 的问题,因为复位置起撤销时都没有时钟。即使操作流程保证不了,出现 recovery 和 removal 违例,由于模块此时都不会工作,也没什么问题。

同步复位

复位信号可以理解为一个普通的数据信号,它只有在时钟的跳变沿才会其作用,一般只要复位信号持续时间大于一个时钟周期,就可以保证正确复位。

异步复位

复位可以在任何时候发生,表面上看跟时钟没有关系,但真实情况是异步复位也需考虑时钟跳变沿,因为时钟沿变化和异步复位都可以引起 Q 端数据变化。如果异步复位信号跟时钟在一定时间间隔内发生变化,Q 值将无法确定,即亚稳态现象。这个时候既是异步复位信号持续时间再长都没有办法,因为不定态已经传递下去。

同步复位虽然解决了当时钟的有效沿来临的时候 rst_n 的边沿也正好来临所出现的冒险与竞争。 但是从综合的电路上可以看出,多了一个组合逻辑 MUX。

如果设计中所有的复位都是这样的,那会增加很多的资源,导致芯片面积很大。那么有没有更好的解决办法呢?答案是有,那就是异步复位同步释放机制。

异步复位,同步释放

异步复位,同步释放就是指在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。

如上图,单独看方框 2 的复位策略,是一个异步复位电路,即复位信号有效时不管时钟信号是否处于有效沿,输出都会被复位。但是如果复位信号在时钟信号的上升沿撤销时,这时候的输出就是亚稳态。

方框 1 中电路图是实现异步复位同步释放的关键。

异步复位

当 rst_async_n 有效时,第一个 D 触发器的输出是低电平,第二个 D 触发器的输出 rst_sync_n 也是低电平,方框 2 中的异步复位端口有效,输出被复位。

同步释放

假设 rst_async_n 撤除时发生在 clk 上升沿,如果不加此电路则可能发生亚稳态事件(有的时候会打三拍)。但是加上此电路以后,假设第一级 D 触发器 clk 上升沿时 rst_async_n 正好撤除,则 D 触发器 1 可能输出高电平 “1”,也可能输出亚稳态,也可能输出低电平。但此时第二级触发器不会立刻更新输出,第二级触发器输出值为前一级触发器 Q1 的输出状态。显然 Q1 之前为低电平,故第二级触发器输出保持复位低电平。直到下一个时钟有效沿到来之后,才随着变为高电平。即实现同步释放

在数字后端实现时,如果发现第一级寄存器的异步复位端存在 removal 和 recovery 的 timing violation,我们可以不用管。因为这一级只是作为过渡,我们不 care timing。

异步复位同步释放电路 Verilog 代码实现:

always @ (posedge clk, negedge rst_async_n)

if (!rst_async_n) begin

rst_s1 <= 1’b0;

rst_s2 <= 1’b0;

end

else begin

rst_s1 <= 1’b1;

rst_s2 <= rst_s1;

end

assign rst_sync_n = rst_s2;

endmodule

小编知识星球简介:

在这里,目前已经规划并正着手做的事情:

  • ICC/ICC2 lab 的编写

  • 基于 ARM CPU 的后端实现流程(已经发布

  • 利用 ICC 中 CCD(Concurrent Clock Data)实现高性能模块的设计实现(已经发布

  • 其他内容待定

在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在 24 小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。

星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有二十九星球成员,感谢这二十九位童鞋的支持!欢迎各位铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。 (星球的门槛将会越来越高,有需求的朋友趁早上车)****

【粉丝福利】

小编的知识星球目前已经开通分享有赏金功能,只要分享星球上任意一个主题到朋友圈或者给好友后,每成功邀请一个好友,即可获得现金奖励

好了,今天的码字就到这里了,原创不容易,喜欢的可以帮忙转发和赞赏,你的转发和赞赏是我不断更新文章的动力。小编在此先谢过!与此同时,吾爱 IC 社区(52-ic.com)也正式上线了。吾爱 IC 社区(52-ic.com)是一个专业交流和分享数字 IC 设计与实现技术与经验的 IC 社区。如果大家在学习和工作中有碰到技术问题,欢迎在微信公众号给小编留言或者添加以下几种联系方式进行提问交流。

https://mp.weixin.qq.com/s/yL5de2hTWg7F5vrcilQRFA

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

异步复位同步释放原理 的相关文章

  • gitee的详细使用教程

    文章目录 前言 一 将本地文件上传至gitee仓库中 1 创建本地文件夹 2 将本地文件初始化为本地仓库 3 上传至本地仓库中 1 将文件从工作区存入暂缓区 2 将暂缓区的文件存入本地仓库中 4 还原已删除文件 5 将本地仓库文件上传至gi
  • Android(安卓)上传文件到阿里云点播,阿里云点播转码

    Android 安卓 上传文件到阿里云点播 阿里云点播转码 文章目录 Android 安卓 上传文件到阿里云点播 阿里云点播转码 一 登录阿里云点播平台配置添加转码模板组 1 需要什么参数 可自行填写 然后保存 如图 2 把获取的模板 ID

随机推荐

  • 解决安装mysql与mariadb冲突问题(卸载干净mariadb)

    阿里云服务器 centos7 6 a 查询mariadb libs的包名 rpm qa grep mariadb b 卸载 rpm e mariadb libs 5 5 60 1 el7 5 x86 64 error Failed depe
  • 基于线程池模型的讨论与完整代码演示

    线程池引入的必要性 在网络服务器中 包括大量的web服务器 它们都需要在单位时间内必须处理相当数目的接入请求以及数据处理 通常在传统多线程服务器中是这样实现的 一旦有个请求到达 就创建一个线程 由该线程执行任务 任务执行完毕后 线程就退出
  • 连接MySQL错误create connection SQLException, url jdbcmysqllocalhost3306

    具体报错如下 2018 11 12 16 14 21 704 ERROR 9752 eate 1537371824 com alibaba druid pool DruidDataSource create connection SQLEx
  • 鉴权认证的基本概念

    最近项目中用到 学习了一下 记录下来后续有时间再继续研究 单点登录 单点登录SSO Single Sign On 简单点就是在一个多系统共存的环境下 用户在一处登录后 就不用在其他系统中登录 也就是用户的一次登录能得到其他所有系统的信任 单
  • 这是一篇关于如何成为一名AI算法工程师的长文

    点击上方 Datawhale 选择 星标 公众号 第一时间获取价值内容 这是一篇关于如何成为一名AI算法工程师的长文 经常有朋友私信问 如何学python呀 如何敲代码呀 如何进入AI行业呀 正好回头看看自己这一年走过的路 进行一次经验总结
  • Arduino离线安装Esp8266

    首先安装ArduinoIDE 可以直接去github官网下载 链接 安装完成后 打开Arduino IDE 文件 gt 首选项 在 其他开发板管理器网址 输入框中 填入以下网址 https www arduino me package es
  • mysql下载与安装

    1 网址 http www mysql com 2 进入网址 选择DOWNLOADS 下载 3 选择社区版 4 进入之后选择如下都可以 5 下载64位的 点进来都是最新的版本 点击如下可选择下载之前的版本 6 安装
  • 模型的过拟合与欠拟合

    过拟合与欠拟合 定义 过拟合 High Viarance 欠拟合 High Bias 误差 Error 产生原因 解决方案 防止欠拟合 防止过拟合 正则化 L0范数 L1范数 L2范数 讨论 参考 定义 首先要确定的两个概念是Underfi
  • gtk主题指南

    一 gtk主题指南 1 Widgets 2 Styles 3 Engines 4 gtkrc文件 1 修改构件的属性 2 每一构件的分为五种状态 3 风格绑定 1 将一种风格绑定到组件类 2 组件嵌套的方式widget class 如wid
  • 尚硅谷-谷粒商城P44Vue模板

    配置模板
  • 11个代码质量审核和管理工具,程序员必备!

    点击上方 全栈开发者社区 右上角 设为星标 如今 代码质量分析和审核已成为每个企业的基本流程 随着开源代码库使用的增加 安全性和代码质量对于构建高质量软件至关重要 不良的代码不仅会影响代码的可维护性 而且还会在某些情况下影响其性能 此外 更
  • TensorRT基础

    目录 1 1 TensorRT构建和编译一个模型 1 2 Interference 1 3 动态shape 1 4 ONNX TensorRT的核心在于对模型算子的优化 合并算子 利用GPU特性选择特定核函数等多种策略 通过tensorRT
  • Spring boot2.x配置redis缓存以及利用通配符删除缓存key

    环境 jdk1 8 window系统 需要安装redis maven项目 一 依赖 redis跟缓存依赖是必须的
  • 226. 翻转二叉树

    Definition for a binary tree node function TreeNode val left right this val val undefined 0 val this left left undefined
  • link标签介绍

    定义 HTML外部资源链接元素 规定了当前文档与外部资源的关系 该元素最常用于链接样式表 此外也可以被用来创建站点图标 比如PC端的 favicon 图标和移动设备上用以显示在主屏幕的图标 link标签属性 属性 值 描述 as audio
  • 84、PullToRefresh使用详解

    PullToRefresh使用详解 一 构建下拉刷新的listView http blog csdn net harvic880925 article details 17680305 PullToRefresh使用详解 二 重写BaseA
  • ipsec.conf 各配置含义

    IPsec conf 是 IPsec 协议的配置文件 它包含了各种网络安全相关的配置信息 下面是常见的一些配置项及其含义 conn 连接名 表示需要建立的安全连接的名称 left 或者 leftsubnet 本地端 IP 地址或子网地址 r
  • 【java基础一】string和list互转

    工作中常用到list和string互转 常见的互转方法 list转string 方法1使用java8 Stream流 List
  • vue-router路由的三种传参方式(params/query)

    路由传参 传参方式可分为params传参和query传参 其中params又可分为url中显示参数和不显示参数 1 params传参 显示参数 声明式 router link 该方式通过router link的to属性实现 子路由需要提前配
  • 异步复位同步释放原理

    深度揭秘异步复位同步释放原理 文章右侧广告为官方硬广告 与吾爱IC社区无关 用户勿点 点击进去后出现任何损失与社区无关 明天就放端午小长假了 提前祝大家节日快乐 腾讯官网已经给小编公众号开通了赞赏功能 在文章末尾 这个赞赏是针对原创作者的