0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【教程分享】在FPGA中,同步信号、异步信号和亚稳态的理解

电子发烧友论坛 来源:未知 2023-05-16 09:30 次阅读

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


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


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

PGA(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。


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


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






声明本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com。


更多热点文章阅读

  • 电子工程师分享:常用电平转换电路、电源自动切换电路、太阳能充电电路总结

  • 基于32位RISC-V设计的互联型微控制器,沁恒微CH32V307开发样例

  • RK3568!四核64位ARMv8.2A架构,汇聚编译源码及实战样例

  • 尺寸仅有21mm*51mm,板边采用邮票孔设计,合宙 Air105 核心板开发总结

  • 基于ESP32芯片,搭载OpenHarmony操作系统,NiobeU4开发板应用实例


原文标题:【教程分享】在FPGA中,同步信号、异步信号和亚稳态的理解

文章出处:【微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:【教程分享】在FPGA中,同步信号、异步信号和亚稳态的理解

文章出处:【微信号:gh_9b9470648b3c,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    两级触发器同步,就能消除亚稳态吗?

    两级触发器同步,就能消除亚稳态吗? 两级触发器同步可以帮助消除亚稳态。本文将详细解释两级触发器同步原理、
    的头像 发表于 01-16 16:29 407次阅读

    复位信号存在亚稳态,有危险吗?

    复位信号存在亚稳态,有危险吗? 复位信号在电子设备中起着重要的作用,它用于使设备回到初始状态,以确保设备的正常运行。然而,我们有时会发现复位信号存在
    的头像 发表于 01-16 16:25 194次阅读

    数字电路中的亚稳态产生原因

    亚稳态是指触发器的输入信号无法在规定时间内达到一个确定的状态,导致输出振荡,最终会在某个不确定的时间产生不确定的输出,可能是0,也可能是1,导致输出结果不可靠。
    的头像 发表于 11-22 18:26 1313次阅读
    数字电路中的<b class='flag-5'>亚稳态</b>产生原因

    信号协议中同步传输和异步传输有什么区别

    信号协议中,有非常多的种类,如UART,I2C,SPI,PCIe等等,它们有自己的一套制定规则,但是在协议制定中,一定需要在同步异步中选择其中一项作为传输规则。 所以这其中的同步
    的头像 发表于 11-07 14:50 526次阅读
    <b class='flag-5'>信号</b>协议中<b class='flag-5'>同步</b>传输和<b class='flag-5'>异步</b>传输有什么区别

    FPGA工程师面试刚需

    引起。 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 同步复位是时钟沿变化时,完成复位动作。 优点: 1)抗干扰能力高,可以提出复位
    发表于 11-03 10:39

    FPGA项目开发之同步信号亚稳态

    FPGA项目开发之同步信号亚稳态 让我们从触发器开始,所有触发器都有一个围绕活动时钟沿的建立(setup time)和保持窗口(hold time),在此期间数据不得更改。如果该窗口
    发表于 11-03 10:36

    FPGA设计中的亚稳态解析

    说起亚稳态,首先我们先来了解一下什么叫做亚稳态亚稳态现象:信号在无关信号或者异步时钟域之间传输
    的头像 发表于 09-19 15:18 1357次阅读
    <b class='flag-5'>FPGA</b>设计中的<b class='flag-5'>亚稳态</b>解析

    跨时钟域类型介绍 同步FIFO和异步FIFO的架构设计

    在《时钟与复位》一文中已经解释了亚稳态的含义以及亚稳态存在的危害。在单时钟系统中,亚稳态出现的概率非常低,采用同步设计基本可以规避风险。但在实际应用中,一个系统往往包含多个时钟,且许多
    的头像 发表于 09-19 09:32 1082次阅读
    跨时钟域类型介绍 <b class='flag-5'>同步</b>FIFO和<b class='flag-5'>异步</b>FIFO的架构设计

    亚稳态理论知识 如何减少亚稳态

    亚稳态(Metastability)是由于输入信号违反了触发器的建立时间(Setup time)或保持时间(Hold time)而产生的。建立时间是指在时钟上升沿到来前的一段时间,数据信号就要
    的头像 发表于 09-19 09:27 478次阅读
    <b class='flag-5'>亚稳态</b>理论知识 如何减少<b class='flag-5'>亚稳态</b>

    FPGA设计拦路虎之亚稳态度决定一切

    亚稳态这种现象是不可避免的,哪怕是在同步电路中也有概率出现,所以作为设计人员,我们能做的是减少亚稳态发生的概率。
    发表于 08-03 09:04 262次阅读
    <b class='flag-5'>FPGA</b>设计拦路虎之<b class='flag-5'>亚稳态</b>度决定一切

    亚稳态的分析与处理

    本文主要介绍了亚稳态的分析与处理。
    的头像 发表于 06-21 14:38 2620次阅读
    <b class='flag-5'>亚稳态</b>的分析与处理

    从锁存器角度看亚稳态发生的原因及方案简单分析

    发生亚稳态的原因是信号在传输的过程中不能满足触发器的建立时间和保持时间。
    的头像 发表于 06-20 15:29 794次阅读
    从锁存器角度看<b class='flag-5'>亚稳态</b>发生的原因及方案简单分析

    FPGA系统中三种方式减少亚稳态的产生

    点击上方 蓝字 关注我们 1.1 亚稳态发生原因 在 FPGA 系统中,如果数据传输中不满足 触发器 的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery
    的头像 发表于 06-03 07:05 1145次阅读

    高级FPGA设计技巧!多时钟域和异步信号理解决方案

    信号异步时钟传输时,用来将该单比特信号重新同步异步时钟域。 理论上来说,第一个触发器的输出应该一直保持不确定的
    发表于 06-02 14:26

    什么是亚稳态?如何克服亚稳态

    亚稳态在电路设计中是常见的属性现象,是指系统处于一种不稳定的状态,虽然不是平衡状态,但可在短时间内保持相对稳定的状态。对工程师来说,亚稳态的存在可以带来独特的性质和应用,如非晶态材料、晶体缺陷
    的头像 发表于 05-18 11:03 3107次阅读