Reset信号如何同步?

news2024/11/16 1:43:13

首先来复习一个更加基础的概念:同步reset和异步reset。

同步reset(synchronous reset)是说,当reset信号为active的时候,寄存器在下一个时钟沿到来后被复位,时钟沿到来之前寄存器还是保持其之前的值。

异步reset(asynchronous reset)是说,当reset信号为active的时候,寄存器立刻被复位,与时钟沿到来与否没有关系。

注意这里作者没有说reset信号为1的时候,而是说active,因为有的时候是为1能够使寄存器复位,这个时候我们说high active,而有的时候是0能够使得寄存器复位,这个时候我们说low active。

同步reset和异步reset的区别算是数字芯片设计的入门知识点,一般第一轮面试就会考察,如果这个问题回答的不好,那么大概率会被面试官认为一般,无论是初学还是工作几年的工程师,很有可能不注意这些基本功,但是基本功在数字芯片设计中的非常重要的。

首先同步reset和异步reset最主要的区别,从定义上就可以看出来,同步reset需要时钟,而异步reset不需要时钟,如果说你的模块需要在没有时钟的时候复位,那只有异步reset能够做到,这也是绝大多数芯片的上电复位信号(Power Reset)以及一些PHY比如USB的内部需要异步reset的原因,而在一些IP中,如果你可以等到时钟开始反转之后再复位,时钟开始翻转之前内部即使没有复位也没有关系的话,那么就可以用同步reset。

其次一个差别,即同步reset信号在综合后,reset信号和其他的datapath信号一样,时一起算在两个寄存器之间的logic深度里,D寄存器本身时没有复位的pin的,而异步reset信号通常会综合出一个带有 复位pin的D寄存器,一般来说工艺厂家的standard cell library都会提供两种不同的寄存器,只要你的coding style正确,综合工具会选择适当的flop。

上图是同步reset综合出来之后的netlist,可以看出reset_n使得两级寄存器之间的组合逻辑多加了一个AND门。

always_ff @(posedge clk) begin
  if (!reset_n) begin
     q2 <= 1'b0;
  end
  else begin
    // q2 <= ...
  end
end

对于异步reset,综合出来的flop自带reset pin,所以reset不参与中间的组合逻辑,如下图D2所示。

always_ff @(posedge clk or negedge reset_n) begin
  if(!reset_n) begin
    q2 <= 1'b0;
  end
  else begin
    //q2 <= ...
  end
end

同步reset劣势】从综合出来的逻辑可以看出,异步reset由于对寄存器之间的datapath没有贡献,所以在timing上面能够略微比同步reset好一些,特别是reset信号作为一个负载很大的信号,如果reset tree做得不好可能使得reset path的combo delay变得很大,反而限制了performance的提高,所以在对logic depth抠得很细的设计中,可以使用异步reset来避免引入更多的combo delay。

但是同步reset还有一个优势,由于reset信号会最终起作用在寄存器的D输入端,那么通过reset的组合逻辑都会被STA所约束,也就是说reset信号和其他datapath的信号一起要满足寄存器的setup time,hold time,min pulse等一系列check,在timing close的情况下我们可以拍着胸脯保证:寄存器不会因为reset的变化产生metastable(所以同步reset信号的跨时钟域咱们就不废话了)可是对于异步reset就没有那么简单了,既然是异步,那就是在任何时候都可能变化,现在STA所以叫static timing anslysis,是因为工具是静态分析电路的:给定一个时钟沿的起始点,然后后面每一级的delay都是纯粹的累加,晚到就是violation,可是如果一个信号什么时候来都无法确定,那么就无法判断这个信号的datapath上最后能否满足required time,换句话说,纯粹的异步reset在当前STA check中是没有办法检查的。

那么怎么办呢?难道对于异步reset信号就听之任之放任不管吗?当然不是,我们做IC设计的,当然要对每一个细节都要研究清楚,我们这里要分两种情况:1:reset assertion;2:reset release。好,直接上结论!

如果使用异步reset,reset assertion是异步的,但是reset release一定是和时钟同步的 

因为对于reset assertion,reset active之后flop的值是稳定在reset value的,只要reset急促active,来多少个clcok,其他datapath上的信号怎么变,flop的值都不会变化,所以reset在什么时候assertion都没有关系,但是reset release就不一样了,一旦reset从active de-assertion,在STA里有两个专门的参数来check,叫做recovery time和removal time。

recovery time和removal time的意义请异步:

什么是寄存器的recovery time和removal time?_recover time-CSDN博客

换句话说,reset release必须在recovery time和removal time加起来这个窗口之外就保持稳定,这样才能保证寄存器不会产生metastable。

好,下面的问题就变成了,我们如何设计可以使得异步reset信号是异步assertion,同步 release呢?终于要引出本文的主题了,将一个异步的reset信号同步到一个时钟域,并且还要保证assertion是异步的,但是release是同步于这个时钟的,我们把这样的电路叫做reset synchronizer,如下图所示。

可以看到,当src_reset_n asset时,两个flop被异步reset,他们的Q会经过reset-to-q的延时之后立刻发生变化,使得dst_reset_n assert。

而当src_reset_n release 后,dst_reset_n并不是立刻发生变化,而是要等dst_clk的时钟沿,并且打两拍之后才能将1传递到dst_reset_n,因为dst_reset_n是来自flop的Q,而Q是经过dst_clk上的同步信号,那么为什么要两级flop,还是为了减小产生metastable的概率。

这里还要注意一点就是上述只是对reset_n release做了到dst_clk的同步,如果dst_clk 的频率很高,recovery time和removal time不能meet怎么办呢?

那就需要对异步reset的time constrain进行特殊的设置了。

文章前面借鉴了:Reset信号 如何同步? 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1063800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机组成 课程笔记】7.1 存储层次结构概况

课程链接&#xff1a; 计算机组成_北京大学_中国大学MOOC(慕课) 7 - 1 - 701-存储层次结构概况&#xff08;15-14--&#xff09;_哔哩哔哩_bilibili 这是我们已经非常熟悉的冯诺依曼计算机结构&#xff0c; 其中和存储功能相关的部件有&#xff1a;存储器和外部记录介质肯定具有…

WEB各类常用测试工具

一、单元测试/测试运行器 1、Jest 知名的 Java 单元测试工具&#xff0c;由 Facebook 开源&#xff0c;开箱即用。它在最基础层面被设计用于快速、简单地编写地道的 Java 测试&#xff0c;能自动模拟 require() 返回的 CommonJS 模块&#xff0c;并提供了包括内置的测试环境 …

Stm32_标准库_6_八种输入出模式

上拉输入与下拉输入 上拉输入&#xff1a;电平默认为高电平&#xff0c;只有当外部输入为低电平时&#xff0c;此IO口电平才会被拉低&#xff0c;经过触发器&#xff0c;再到寄存器&#xff0c;最后传入CPU GPIO_Mode_IPU&#xff1b;下拉输入&#xff1a;电平默认为低电平&am…

4.MySql安装配置(更新版)

MySql安装配置 无论计算机是否有安装其他mysql&#xff0c;都不要卸载。 只要确定大版本是8即可&#xff0c;8.0.33 8.0.34 差别不大即可。 MySql下载安装适合电脑配置属性有关&#xff0c;一次性安装成功当然是非常好的&#xff0c;因为卸载步骤是非常麻烦的 如果第一次安装…

基于SpringBoot的电影评论网站

目录 前言 一、技术栈 二、系统功能介绍 电影信息管理 电影评论回复 电影信息 用户注册 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了电影评…

用友移动管理系统存在任意文件上传漏洞 附POC

文章目录 用友移动管理系统存在任意文件上传漏洞 附POC1. 用友移动管理系统简介2.漏洞描述3.影响版本4.fofa查询语句5.漏洞复现6.POC&EXP7.整改意见8.往期回顾 用友移动管理系统存在任意文件上传漏洞 附POC 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&…

Waves 14混音特效插件合集mac/win

Waves14是一款音频处理软件&#xff0c;主要用于音频编辑、混音和母带处理。该软件提供了各种插件&#xff0c;包括EQ、压缩、混响、延迟、失真等&#xff0c;以及一些专业的音频处理工具&#xff0c;如L2限幅器、Linear Phase EQ和多频道扬声器管理。 Mac软件下载&#xff1a;…

朋友圈怎么定点发朋友圈?

微信朋友圈是我们日常生活中常用的社交媒体之一。但有时我们忙碌而可能会忘记发布朋友圈&#xff0c;或是因时间不合适而无法发布。那么&#xff0c;有没有一种方法可以在规定的时间内自动发布朋友圈呢&#xff1f; 当然有啦&#xff01; 定时发朋友圈可以帮助我们在特定时间点…

re学习(38)HGAME2020-re-Level-Week1-maze

题目描述 You won’t figure out anything if you give in to fear. 学习资料: https://ctf-wiki.github.io/ctf-wiki/reverse/maze/maze-zh/ 附加说明&#xff1a;请走最短路线 题解 分析题目 一看题目&#xff1a;maze 可以确定是一个迷宫题 void __fastcall __noreturn…

使用Thrift实现跨语言RPC调用

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

基于SpringBoot的智能物流管理系统

目录 前言 一、技术栈 二、系统功能介绍 顾客信息管理 员工信息管理 员工信息管理 门店信息管理 门店信息管理 订单信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施…

想要精通算法和SQL的成长之路 - 无重复字符的最长子串和滑动窗口最大值

想要精通算法和SQL的成长之路 - 无重复字符的最长子串 前言一. 无重复字符的最长子串二. 滑动窗口最大值2.1 滑动窗口的基本操作 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 无重复字符的最长子串 原题链接 思路如下&#xff1a; 用一个滑动窗口&#xff0c;该窗口区…

WSL 0x80071772 错误解决方案

WSL 0x80071772 错误解决方案 副标题 WSL 安装到 C 盘以外解决方案 当电脑的存储位置设置为 C 盘以为的位置时安装 WSL 会有如下报错; 原因上面也说过了,保0x80071772的错误主要是因为 WSL 安装到了 C 盘以外的位置,知道了原因也就有了如下的解决方案,该解决方案有两种 解决…

iMazing 2023年最新苹果手机怎么备份恢复照片

目前图像技术发展飞快&#xff0c;HDR和4K照片已经见怪不怪&#xff0c;这些高清照片轻而易举就可以达到10MB以上&#xff0c;所以大家经常会出现手机空间不足的情况&#xff0c;此时就需要把照片移动到电脑上备份。至于照片备份怎么弄&#xff0c;照片备份的软件有哪些&#x…

【Java】抽象类和接口的区别

1. 成员区别 抽象类 变量 常量&#xff1b;有构造方法&#xff0c;有抽象方法&#xff0c;也有非抽象方法接口 常量&#xff0c;抽象方法&#xff08;JDK8 在接口中定义 非抽象方法&#xff09; 2. 关系区别 类与类 继承单继承类与接口 实现&#xff0c;单实现和多实现接口…

【Java】HashMap 背诵版

HashMap 背诵版 1. HashMap、Hashtable 和 ConcurrentHashMap 的区别&#xff1f;1.1 线程安全&#xff1a;1.2 继承关系&#xff1a;1.3 允不允许null值&#xff1a; 2. HashMap 的数据结构2.1 什么是hash表&#xff1f;2.2 HashMap 的数据结构 3. 什么是hash冲突&#xff0c;…

输入文本波形动画

效果展示 CSS 知识点 绝对定位 实现页面基础布局 <div class"input_box"><input type"text" required /><!-- 动画实际执行者 --><label>Wavy Input Text Aimation</label> </div>使用 JS 把 label 标签的文字拆分…

UG\NX二次开发 特征选择对话框 UF_UI_select_feature

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 qq_42007619 订阅本专栏,非常感谢。 简介: UG\NX二次开发 特征选择对话框 UF_UI_select_feature 效果: 代码: #include <vector>…

[硬件基础]-快速了解触发器

快速了解触发器 文章目录 快速了解触发器1、触发器概述2、触发器和锁存电路之间的区别3、触发器的类型3.1 SR触发器3.2 D触发器3.3 JK触发器3.4 SR触发器和JK触发器的区别3.5 T触发器 触发器是制造存储器件和数字逻辑电路的最重要主题之一。 在本文中&#xff0c;我将讨论触发器…

在LangChain中使用Milvus + openai使用

Milvus(opens in a new tab) 是一个存储、索引和管理由深度神经网络和其他机器学习&#xff08;ML)模型生成的大规模嵌入向量的数据库。 1.文档分割 from langchain.document_loaders import PyPDFLoader pdfloader PyPDFLoader("D:\py\LangChaindao\操作系统原理.pdf&…