前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >在FPGA中,同步信号、异步信号和亚稳态的理解

在FPGA中,同步信号、异步信号和亚稳态的理解

作者头像
FPGA技术江湖
发布于 2020-12-30 06:40:35
发布于 2020-12-30 06:40:35
9290
举报
文章被收录于专栏:FPGA技术江湖FPGA技术江湖
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

叁芯智能科技-郝旭帅团队打造“FPGA 设计与研发”学习系列, 可以让设计者从“小白”到“入门”再到“精通”。本系列从基础的数字电路为起点,避免学习者“腾空造楼”;中间讲解各类基础外设驱动,保证设计能力逐步加深;后期讲解 FPGA 设计理论和复杂外设、协议驱动实现,确保与现实企业研发对接。

学习过程中涉及 INTEL(原 Altera)、XILINX 等多家设计方法, 让学习者掌握主流设计工具、仿真工具等使用。本次学习系列学习时间为“100”天,7月5日线下开班,欢迎想要学习的朋友和我们一起奋战 2400 小时,请相信专业的力量。详情如下:

“FPGA产品设计与研发 ” 零基础入门及就业

初期课程部分免费公开,陆续上传至B站,各位大侠可以前往观看学习。本课程长期有效,全年开课,欢迎电子、信息、通信、集成电路等相关专业同学及兴趣爱好者报名参加。以下为B站视频网址链接:

https://www.bilibili.com/video/BV1xC4y1H7QM?p=10

本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。

系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。后续会陆续更新 Xilinx 的 Vivado、ISE 及相关操作软件的开发的相关内容,学习FPGA设计方法及设计思想的同时,实操结合各类操作软件,会让你在技术学习道路上无比的顺畅,告别技术学习小BUG卡破脑壳,告别目前忽悠性的培训诱导,真正的去学习去实战应用,这种快乐试试你就会懂的。话不多说,上货。

在FPGA中同步信号、异步信号和亚稳态的理解

作者:郝旭帅 校对:陆辉

FPGA(Field-Programmable Gate Array),即现场可编程门阵列。主要是利用内部的可编程逻辑实现设计者想要的功能。FPGA属于数字逻辑芯片,其中也有可能会集成一部分模拟电路的功能,大多数模拟电路都是当做asic进行工作的,可编程的部分大多数都是数字逻辑部分。

数字逻辑电路是由组合逻辑和时序逻辑器件构成,在时序逻辑器件中,常用就是时钟触发的寄存器。

如果在设计中,所有的寄存器的时钟端都是连接的同一个时钟,那么称之为同步电路设计。所谓同步也就是所有的寄存器的输出端都是由同一个时钟端驱动出来的,所有的寄存器在同一个步调上进行更新。

同步电路中的信号,我们称之为同步信号。

如果在设计中,寄存器的时钟端连接在不同的时钟上,那么称之为异步电路设计。

在异步电路中,被clk1驱动的寄存器和组合逻辑电路构成时钟域clk1的电路,被clk2驱动的寄存器和组合逻辑电路构成时钟域clk2的电路。信号从clk1的时钟域到clk2的时钟域,被称为跨时钟域。而对于信号D5来说,我们认为它是clk1时钟域的信号,那么对于clk2时钟域来说,就是异步信号,因为它不与clk2的驱动沿对齐。

寄存器有一种特性,在clk的有效边沿时,采样数据D,输出到Q,此过程如果想要稳定进行,那么要求,数据D在clk有效边沿之前一段时间保持稳定(建立时间),在clk有效边沿之后一段时间保持稳定(保持时间),如果任何一个不满足,就会导致此过程失败,结果就是clk的有效边沿过去后,Q的值可能就不会出现预想值。那么是什么呢?先不着急,后面慢慢谈。

在真实的电路中,各部分元器件都是有延迟的。对于同步电路来说,Q的更新都是在clk上上升沿之后的一段时间(Tco:输出延迟),输出的数据经过组合逻辑或者线路也会有延迟(delay:线路延迟),到达下一个寄存器。此时,信号早就偏离了clk的上升沿。所以对于下级寄存器来说,这个信号也是“异步信号”。所以说真实电路中,全部的信号都是“异步信号”。

那么为什么在同步电路中,我们都称为同步信号呢?

因为在电路中,所有的延迟都是已知的(TCO、delay等等),我们可以通过扩大clk的周期,确保clk的周期大于TCO等等之类延迟之和,那么就可以保证下级寄存器采样到数据。所以这种电路中的信号,我们依然把他称之为同步信号。

在跨时钟域时,由于两个时钟之间没有任何关系,无论怎么调整周期,都不一定能满足下级寄存器采样到数据,肯定不能调成一致周期,那就变成了同步设计。例:用寄存器采样外部按键的输入,那么此时外部按键的信号对于寄存器来说就是异步信号,因为外部信号是随时都有可能有效,所以无论怎么调整,都不一定能够保证信号满足寄存器的建立保持时间。

那么既然在很多情况下,无论如何也避免不了异步信号带的坏处,那么能不能全部采用同步设计?显然是不太现实,不同接口或者存储器等都有自己频率,全部采用同步电路设计的方式将失去很多功能。例如:千兆以太网的GMII接口,采用125M接口,1080P的HDMI接口采用148.5MHz的接口。

既然无法避免,那就勇敢面对。

当信号不满足建立和保持时间时,寄存器会输出什么值呢?

在上图中,输入信号在clock的上升沿左右有了一个从高到低的变化,即不满足建立和保持时间。那么寄存器的输出端就会输出一个既不是高电平也是低电平的一个电平。

在数字电路中,高电平和低电平是两个稳定的电平值,能够一直维持不变化。如果不满足建立或者保持时间的话,输出的电平值不高也不低,但是此电平不稳定,称为亚稳态(类似于健康和亚健康)。亚稳定是不稳定的,终究要向高或者低电平进行变化。

那么有人说,亚稳态终究会走向稳态,那么岂不是没有影响了。答案是错误的。可以想象,亚稳态走向稳态是必然趋势,可是需要一定的时间,如果在这一段时间内,被其他电路所引用,那么就会造成亚稳态的传播,进而导致整个电路的瘫痪(因为整个电路都会变成非高非低的信号在运行)。

那么应该如何处理呢?

对于单bit信号,我们一般采用同步寄存器链来进行处理。

对于同步寄存器链的要求有三点:

第一:在同步寄存器链中,所有的寄存器都必须用同一个或者相关(例如:一个时钟是另外一个时钟的相位延迟180度)时钟驱动。

第二:第一个寄存器的输入为外部的异步信号。

第三:在同步寄存器链中,所有的输出只能给下一级使用。只有最后一级寄存器可以给其他的电路使用。

对于第一点和第二点,不再解释。下面解释一下第三点。

D3信号为clk2时钟域的异步信号,那么D4信号就有可能出现亚稳态。假设D4信号出现亚稳态后,恢复至稳态的时间为T1,组合逻辑2的延迟为T2,那么D5信号得到稳态的时间为T1+T2。如果没有组合逻辑2时,D5信号得到稳态的时间为T1。如果clk2的周期大于T1+T2,那么有无组合逻辑2,将不受影响;如果clk2的周期大于T1且小于T1+T2,那么有组合逻辑2,就会造成亚稳态的传播。如果clk2的周期小于T1,也会亚稳态的传播。

综上所述,组合逻辑2,还是不要有的好,能够大大增加D5得到稳态的几率。

在上述叙述中,我们只是提高了得到稳态的几率,但是还是有亚稳态传播的几率。

在实际电路中,一般同步寄存器链会有两级甚至多级。那么多级的同步寄存器链会有什么作用呢?

在上述叙述中得知,亚稳态是一种不稳定的状态,会向稳定状态过渡。如果第一级寄存器输出亚稳态,恢复时间为T1,如果clk的周期小于T1,那么亚稳态将会在第二级寄存器输出,由于第一级亚稳态已经经过clk一个周期的恢复,所以在第二级寄存器输出时,亚稳态恢复至稳态的时间T2将会缩短。T2< T1。

再多级的寄存器,也无法避免亚稳态,只是级数越多,最后一级输出亚稳态的几率将会越低。

在实际电路中,一般采用两级或者三级即可。

- End -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术江湖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FPGA逻辑设计回顾(4)亚稳态与单比特脉冲信号的CDC处理问题
注:本文首发自易百纳技术社区,原文地址:https://www.ebaina.com/articles/140000005331
Reborn Lee
2021/01/26
9731
FPGA中的亚稳态
在FPGA系统中,如果数据传输中不满足触发器的 Tsu和 Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是稳定到0或者1,是随机的,与输入没有必然的关系。
数字芯片社区
2020/07/20
1.3K1
FPGA中的亚稳态
FPGA/ASIC笔试面试题集锦(1)知识点高频复现练习题
本文其实就是整合了一下去年秋招时总结的笔试题或者各大平台的练习题,只不过去年由于边笔试面试边总结,比较粗糙,这里再次整理润色一下,前人栽树,方便后人乘凉!注:个人微信公众号、简书、知乎也正在不断发布文章哦!
Reborn Lee
2020/06/29
2.2K0
边沿检测(上升沿检测、下降沿检测、双边沿检测|verilog代码|Testbench|RTL电路图|仿真结果)
经典电路设计是数字IC设计里基础中的基础,盖大房子的第一部是打造结实可靠的地基,每一篇笔者都会分门别类给出设计原理、设计方法、verilog代码、Testbench、仿真波形。然而实际的数字IC设计过程中考虑的问题远多于此,通过本系列希望大家对数字IC中一些经典电路的设计有初步入门了解。能力有限,纰漏难免,欢迎大家交流指正。快速导航链接如下:
Loudrs
2023/05/24
5.9K0
边沿检测(上升沿检测、下降沿检测、双边沿检测|verilog代码|Testbench|RTL电路图|仿真结果)
DC综合5--基本的时序路径约束(上)
时序约束可以很复杂,这里我们先介绍基本的时序路径约束,复杂的时序约束我们将在后面进行介绍。
数字IC小站
2020/06/30
2.5K0
跨时钟域传输总结(包含verilog代码|Testbench|仿真结果)
快时钟域相比慢时钟域采样速度更快,也就是说从慢时钟域来到快时钟域的信号一定可以被采集到。既然快时钟一定可以采集到慢时钟分发的数据,那么考虑的问题就只剩下如何保证采样到的信号质量!最常用的同步方法是双级触发器缓存法,俗称延迟打拍法。信号从一个时钟域进入另一个时钟域之前,将该信号用两级触发器连续缓存两次,可有效降低因为时序不满足而导致的亚稳态问题。
Loudrs
2023/06/08
5.1K1
跨时钟域传输总结(包含verilog代码|Testbench|仿真结果)
建立和保持时间及时序简单理解
建立时间和保持时间的理解都是基于D触发器,关于D触发器可以翻看数电的介绍。或者通过下面的链接了解:https://zh.wikipedia.org/wiki/%E8%A7%A6%E5%8F%91%E5%99%A8
碎碎思
2021/09/07
1.7K0
异步复位同步释放(verilog代码|Testbench|仿真结果)
经典电路设计是数字IC设计里基础中的基础,盖大房子的第一部是打造结实可靠的地基,每一篇笔者都会分门别类给出设计原理、设计方法、verilog代码、Testbench、仿真波形。然而实际的数字IC设计过程中考虑的问题远多于此,通过本系列希望大家对数字IC中一些经典电路的设计有初步入门了解。能力有限,纰漏难免,欢迎大家交流指正。快速导航链接如下:
Loudrs
2023/05/23
3.7K0
异步复位同步释放(verilog代码|Testbench|仿真结果)
FPGA基础知识极简教程(7)详解亚稳态与跨时钟域传输
这篇文章主要是对过去对于亚稳态以及跨时钟域传输问题的一次总结,作为这个系列博文的一次梳理吧。注:微信公众号也会更新,欢迎大家关注,我有了新文章会通过微信公众号推送通知大家,让你有选择的看到我的最新动态。
Reborn Lee
2020/06/29
1.4K0
一道简单的笔试题_时钟切换电路(Glitch-free clock switching circuit)
DFF1和DFF3作用:在选择路径插入一个上升沿触发器,用于缓存数据,将数据传递给下一级;若去掉,会电路产生由异步信号引起的亚稳态;
数字芯片社区
2020/07/23
2.8K0
一道简单的笔试题_时钟切换电路(Glitch-free clock switching circuit)
高级FPGA设计技巧!多时钟域和异步信号处理解决方案
有一个有趣的现象,众多数字设计特别是与FPGA设计相关的教科书都特别强调整个设计最好采用唯一的时钟域。换句话说,只有一个独立的网络可以驱动一个设计中所有触发器的时钟端口。虽然这样可以简化时序分析以及减少很多与多时钟域有关的问题,但是由于FPGA外各种系统限制,只使用一个时钟常常又不现实。FPGA时常需要在两个不同时钟频率系统之间交换数据,在系统之间通过多I/O接口接收和发送数据,处理异步信号,以及为带门控时钟的低功耗ASIC进行原型验证。本章讨论一下在FPGA设计中多时钟域和异步信号处理有关的问题和解决方案,并提供实践指导。
碎碎思
2020/07/14
2.3K0
高级FPGA设计技巧!多时钟域和异步信号处理解决方案
时钟属性jitter和skew
http://download.csdn.net/download/pieces_thinking/9937240
碎碎思
2020/06/30
1.2K0
跨越鸿沟_同步世界中的异步信号_CrossClockDomain_design
对于解决异步信号的同步问题很实用的文章,分别介绍了信号以及数据的跨时钟域处理; 有英文和中文翻译可以对照参看。
碎碎思
2020/06/30
6900
FPGA逻辑设计回顾(8)单比特信号的CDC处理方式之Toggle同步器
本文首发自:FPGA逻辑设计回顾(8)单比特信号的CDC处理方式之Toggle同步器[1]本文作为本系列CDC的最后一篇吧,作为前几篇有关CDC处理的文章的补充,本文所要介绍的同步器适用场景是:单比特信号的同步处理,且可以用于快时钟到慢时钟的跨时钟域同步。切换同步器,英文名:Toggle synchronizer,无论怎么翻译吧,它的含义就是将快时钟域内的单比特脉冲同步至慢时钟域,这像是一个切换过程,给出原理图:
Reborn Lee
2021/03/15
9530
【004】数字IC笔面试常见题
同步电路的意思就是来自同一个时钟,宽松的定义是来自同一个时钟源的不同时钟(分频)也可。当不是来自同一个时钟源时,只要周期有倍数关系并且相互之间的相位关系是固定的就可以算是同步电路。
数字IC小站
2022/08/26
3010
【004】数字IC笔面试常见题
同步时钟电路设计及其与异步时钟信号交互的问题
所谓同步电路,即电路中的所有受时钟控制的单元,如触发器( Flip Flop)或寄存器( register)都由一个统一的全局时钟控制。如图 1.1 所示,触发器 R1 和 R2 都都由一个统一的时钟 clk 来控制时序,在 R1 和 R2 之间有一堆组合逻辑,这就是一个最简单的同步电路。
碎碎思
2020/06/30
1.8K0
DC基本的时序路径约束
时序约束可以很复杂,这里我们先介绍基本的时序路径约束,复杂的时序约束我们将在后面进行介绍。
数字芯片社区
2020/07/20
1.3K1
DC基本的时序路径约束
FPGA系统性学习笔记连载_Day10 【时序逻辑、竞争冒险、同步复位、异步复位】
本系列为FPGA系统性学习学员学习笔记整理分享,如有学习或者购买开发板意向,可加交流群联系群主。
FPGA技术江湖
2021/04/01
6110
FPGA系统性学习笔记连载_Day10 【时序逻辑、竞争冒险、同步复位、异步复位】
同步后的复位该当作同步复位还是异步复位?——Xilinx FPGA异步复位同步释放
(1)尽量少使用复位,特别是少用全局复位,能不用复位就不用,一定要用复位的使用局部复位;
FPGA探索者
2021/03/15
1.4K0
数字IC基础知识总结(笔试、面试向)-持续更新
BCD码为使用4个bit表示一个十进制位数,即123的BCD码为0x123,余3码表示BCD码基础上加3(十进制),例子如下,对于26而言:
月见樽
2020/05/26
2.2K0
数字IC基础知识总结(笔试、面试向)-持续更新
推荐阅读
相关推荐
FPGA逻辑设计回顾(4)亚稳态与单比特脉冲信号的CDC处理问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文