首页 > 其他分享 >【数字】异步复位同步释放的理解_解决sdc问题

【数字】异步复位同步释放的理解_解决sdc问题

时间:2024-12-13 16:30:54浏览次数:5  
标签:异步 输出 复位 同步器 亚稳态 sdc DFF

为什么复位也会引入亚稳态的问题?

如下图是带复位端Rd和置位端Sd的DFF结构图。可以观察出Sd和Rd都会参与到Q输出的数据路径上,所以当异步时钟不满足recovery time和removal time的时候亚稳态还是会传播到Q端。

复位信号引入了亚稳态会有危险吗?

亚稳态导致的问题是当信号产生变化的时候,不能保证第一拍采样的值是固定的,就是一个不稳定的状态,既不是0也不是1。但是如果信号是稳定的,只会出现采样后信号的跳变,这种不会出现亚稳态,信号是确定的是0或者是1。系统需要保证后续逻辑输入的信号是稳定值。

如果只做一级触发器同步可以吗?

不可以,一级触发器的输出,永远存在亚稳态的可能。但是触发器输出的亚稳态在一个周期内特性会减弱,这种亚稳态特性能够被第二级同步器采样到的故障概率也比较小。

两级触发器同步能彻底消除掉亚稳态的问题吗?

不能。只能大大降低这个事情发生的概率,比如几十年出现一次。

异步复位同步释放器,第二个DFF是否会存在亚稳态?

首先分析异步复位同步器的第一个DFF,假设系统的复位是低有效,那么第一个DFF的输入端D需要接高电平。当reset释放的时候,第一个DFF的输出端需要将Q端的原来因为异步复位为0转变为1,此时可能会因为释放的时候reset的跳变距离时钟上升沿太近而产生亚稳态。这就是为什么这个同步器需要第二个DFF的原因。

因为有第二个DFF的存在,第一个DFF产生的亚稳态传播到第二个DFF的路程中大概率能被消除。但是第二个DFF不会受制于recovery time亚稳态的影响,因为第二个DFF当reset释放的时刻输入D端与输出Q端都是0。所以这个时刻输出是没有跳变存在,这时输出也不太可能会在两个不同值之间震荡。

以上摘自Clifford E. Cummings《Asynchronous & Synchronous Reset Design Techniques - Part Deux》

所以我们可以将输入到异步复位同步器的异步复位设置成false path,来忽略这个时序的check,但是同步释放之后到系统的reset不能设置,如果同步器因为路径太长了还是会产生时序不满足的话那么就需要再多打几拍。

标签:异步,输出,复位,同步器,亚稳态,sdc,DFF
From: https://blog.csdn.net/weixin_42664351/article/details/144449721

相关文章

  • 同步异步对比
    前言  同步的任务逐个按顺序执行,前一个任务完成后才执行下一个任务。异步的任务可交替运行,允许其他任务在等待期间继续执行。1.同步示例  内容,内容importtimeimportrequestsdefdownload_url(url):print(f"开始下载:{url}")response=requests.get(url)......
  • 一个基于gevent的异步请求库 - grequests
    1.安装pipinstallgrequests-ihttp://mirrors.aliyun.com/pypi/simple/--trusted-hostmirrors.aliyun.com2.基础用法教程用grequests.map()方法时,传入的必须是生成器或列表,下面是用小括号创建的是生成器,用方括号也行,生成列表。importgrequestsimporttimeur......
  • 前端的 Python 入门指南(七):异步场景的实现方案对比 - 内置+显示事件循环 + async+await
    《前端的Python入门指南》系列文章:(一):常用语法和关键字对比(二):函数的定义、参数、作用域对比(三):数据类型对比-彻底的一切皆对象实现和包装对象异同(四):参数传递方式对比-值与引用传递vs可变不可变数据(五):面向对象特性之继承实现的方式对比-基于原型链和基于类各有什么......
  • 异步任务与定时任务:提升Web应用性能的利器
    引言在现代Web开发中,用户体验的重要性越来越显著。为了优化网站性能,处理长时间运行的任务变得不可或缺。通过异步任务和定时任务,我们可以将耗时的操作放到后台进行执行,从而提升前端响应速度与用户体验。依据“网站优化的第二定律”,合理使用异步和定时任务能够显著减少用户等待......
  • 三相异步电动机为什么能够旋转?
    三相异步电动机,作为一种广泛应用于工业、农业及其他领域的电动机,其工作原理的理解对于工程技术人员以及相关从业者来说至关重要。一、三相异步电动机的基本结构三相异步电动机主要由定子、转子和机壳组成。定子是电动机的静止部分,包含多个电磁线圈,而转子则是可旋转的部分,通常......
  • Python异步编程(上):协程和任务
    原文链接:https://mp.weixin.qq.com/s/dQOocc7wHaGv7_cf476Ivg介绍了解异步编程前先了解一些概念:协程(coroutine)、任务(task)和事件循环(eventloop),在3.7以前还需要关心Future这个东西,不过之后提供的高级API弱化了这个概念,你基本不需要关心Future是什么。协程协程等于一个......
  • Rust 世界中主流的异步运行时性能测试 Tokio/Tokio-uring/MonoIO/GlommIO
    太长不看在ping-pong场景下,Tokio-uring、MonoIO和GlommIO(基于thread-per-core和io-uring模型)并未表现出比Tokio显著更强的性能。Tokio展现了强大的生态能力,具有高度的稳定性、丰富的文档、健壮的语法以及出色的可读性。MonoIO展现了相当的潜力,但其当前的生态支持......
  • 同步和异步什么区别?它们各有什么应用场景?
    在前端开发中,同步和异步操作是两种不同的代码执行方式,它们之间主要的区别在于是否阻塞主线程的执行。理解它们的区别以及各自的应用场景对于构建高效、流畅的用户界面至关重要。同步(Synchronous)定义:同步操作会阻塞后续代码的执行,直到当前操作完成。就像排队买咖啡,你必须等......
  • C# 异步汇报任务
    1.通过Task实现:  1privateasyncvoidbutton4_Click(objectsender,EventArgse)2{3button4.Enabled=false;4//此处不能用5//Dojob().Wait();67awaitDojob();8button4.Enabled=true;910}1112private......
  • C# Task异步同步机制
    1.引入第三方工具包:Nito.AsyncEx;AsyncLock:1usingMicrosoft.VisualBasic.Devices;2usingNito.AsyncEx;3usingSystem.Diagnostics;45namespaceWinFormsApp26{7publicpartialclassForm1:Form8{9publicForm1()10......