【摘要】

本文结合某单板(下文中统一称M单板)FPGA调试过程中发现地弹噪声造成某重要时钟信号劣化从而导致单板业务丢包的故障,来谈下如何最大程度地降低地弹噪声对单板信号完整性影响。

一、故障现象

M单板在进行业务调试时发现:如果只有上行方向有业务,上行业务正常无丢包;如果只有下行方向有业务,下行业务也正常无丢包;如果双向都有业务,下行业务丢包严重,上行业务正常。同时高温情况下比常温下丢包更加严重。

二、故障分析

通过逻辑内部定位发现丢包地点为下行SSRAM读写处,即下行业务包写入SSRAM,再读出后包内容出错导致报文丢弃。FPGA外挂SSRAM结构框图见图1,进入FPGA内部的上行业务和下行业务都需要通过各自的SSRAM进行缓存来实现一些功能。其中上行SSRAM的读写使用的是125M的本地晶振时钟,而下行SSRAM使用的是38M系统时钟。

图1 FPGA外挂SSRAM原理框图

从故障现象来看,不是简单的时序问题,因为单独只有上行业务或下行业务时,业务都正常。而上下行同时有业务处理时,下行业务就会丢包,因此怀疑是上行的业务干扰了下行的业务。而下行业务受到干扰的最大可能就是下行SSRAM的时钟信号受到了干扰。为了验证此猜测,我们做的如下实验:使用高速示波器测量CLK_38M时钟,比较只有下行业务和上下行业务同时都有时的信号波形,看是否有区别。测试结果见图2和图3。比较可看出,只有下行业务时,时钟信号质量很好,而上行业务也有时,时钟的上升沿有一个明显的回沟,而回沟的位置在2.0V左右,而2.0V是VIH的临界电平,该回沟会导致FPGA误判,这样就会出现采样点错误而导致采样数据出错。

图2 只有下行业务时CLK_38M波形

图3 上下行业务都有时CLK_38M波形

上行业务是怎样影响到下行时钟CLK_38M的呢?查看M单板的原理图,发现CLK_38M和上行SSRAM的36根数据线在同一个I/O bank。那么最大可能便是上行SSRAM的数据线对CLK_38M进行了干扰。那么该干扰是FPGA内部的地弹噪声造成的还是FPGA外部PCB走线造成的呢?为了验证此问题,又做了2个实验。实验1:将图4中的R141去掉,然后在跟FPGA相连的电阻焊盘上飞一根线直接到SSRAM的时钟管脚,经示波器测量后发现仍然存在干扰。实验2:将图4中的R141去掉,在FPGA内部将系统来的38M时钟从另外一个bank的空余I/O口(该I/O本身有串阻引出)输出,同时将引出的38M时钟通过飞线连接到R141中与SSRAM相连的焊盘。经过示波器测试,发现干扰消失,同时进行业务测试时发现上下行业务同时发包时,下行业务正常。 通过上面两个实验可以确认此故障确定是在FPGA内部上行SSRAM的数据线翻转时带来的地弹噪声,干扰了下行了CLK_38M时钟,导致该时钟质量劣化而使得下行SSRAM读写出错,最终导致下行业务丢包。

图4 M单板原理图截图

三、原因分析

所谓“地弹”(ground bounce),是指芯片内部“地”电平相对于PCB板“地”电平的变化现象。以PCB板“地”为参考,就像是芯片内部的“地”电平不断的跳动,因此形象的称之为地弹。地弹是同步开关噪声(Simultaneous Switching Noise,简称SSN)的一种,SSN是指当器件处于开关状态,产生瞬间变化的电流,在经过回流途径上存在电感,形成交流压降,从而引起噪声。如果是由于封装电感引起地平面的波动,造成芯片地和系统地不一致便是地弹。对于任何封装的芯片,其引脚会存在电感电容等寄生参数。而地弹正是由于引脚上的电感引起的。我们可以用图5来直观的解释下。图中开关Q的不同位置代表了输出的“0”和“1”两种状态。假定由于电路状态转换,开关Q接通RL的低电平,负载电容对地放电,随着负载电容电压下降,它积累的电荷流向地,在接地回路上形成一个大的电流浪涌。随着放电电路建立然后衰减,这以电流变化作用于接地引脚的电感,这样在芯片外的PCB板“地”GNDPCB与芯片内的地GNDA之间,会形成一定的电压差,如图中的VG。这种由于输出电平转换导致芯片内部参考地点位漂移就是地弹。SSN噪声主要是伴随着器件的同步开关输出(SSO,即Simultancous Switch Output)而产生,开关速度越快,瞬间电流变化越显著,电流回路上的电感越大,则产生的SSN越严重。此外考虑得更广一点,除了信号本身回流路径的电感之外,离的很近的信号互连线之间的串扰也是加剧SSN的原因之一。

图5 地弹噪声产生原理图

而此故障确定是在FPGA芯片引脚有寄生电感。内部上行SSRAM的数据线翻转时带来了地弹噪声,干扰了下行了CLK_38M时钟,导致该时钟质量劣化而使得下行SSRAM读写出错,最终导致下行业务丢包。

四、解决与预防措施

了解了地弹噪声的原理,就可以针对地弹产生的机制制定相应的措施。1)降低芯片内部驱动器的开关速率和同时开关的数目。2)为了减轻近距离信号互连线直接串扰,尽量减少被干扰信号周围信号线的翻转。3)增大芯片地平面面积。对于1)和2),考虑到SSRAM的读写带宽有一定要求,读写的时钟速率和数据线位宽不能随意降低或减少。根据计算,做了如下调整:保持时钟速率125M不变,将SSRAM的36根数据线减少到29根,减少的9根数据线为离CLK_38M最近的几根。对于3),将CLK_38M所在的I/O bank中没有使用的I/O管脚在逻辑内部都设置为输出接地。通过改进,CLK_38M时钟质量有所改善,回沟电平位置上升到2.3V左右。在常温下只配置单路的双向业务时,业务正常无丢包。但是当配置4路的双向业务时,下行还是有少量丢包,高温下丢包更加严重。配置4路业务和配置1路业务的区别是,配置4路业务时,由于数据包的增多,SSRAM的数据线翻转更加频繁,导致地弹噪声更加严重,因此回沟也越深,如图6所示。

图6 配置4路双向业务时CLK_38M波形

通过查证,该FPGA芯片的抗噪能力这么差的原因是该芯片公司为了降成本,将芯片的封装进行了简化,芯片中原来4层的PCB简化为2层,去掉了专有的电源层和地层,同时将金线变成了铜线。因此在现有的芯片和PCB硬件设计上已经没有办法再降低地弹噪声了。正在无助的时候,思维转了个方向。既然没法降低地弹噪声,那有没有办法降低地弹噪声对时钟信号的干扰呢?如图6所示,芯片之所以会产生误判是因为正好在时钟的上升沿上偶尔会出现回沟,如果回沟的位置不在上升沿,而是在高电平或是低电平的位置,不就可以避免误判了吗?而回沟偶尔出现在CLK_38M时钟的上升沿,原因是上行SSRAM的数据线都在CLK_125M时钟的上升沿翻转,而CLK_125M与CLK_38M时钟不是同源的时钟,会周期性的出现CLK_125M与CLK_38M同时翻转的情况,也就是上行SSRAM的数据线在CLK_38M的上升沿处同时翻转而产生翻转噪声。为了将翻转噪声移到CLK_38M的高电平处,逻辑做了改动。即上行SSRAM不再采用CLK_125M时钟,而是将下行的38M时钟进行3倍PLL倍频后得到116M时钟,然后将116M时钟进行移相80°(经过示波器测量后得出的移向方案),由于116M时钟38M是同源时钟,因此相位关系是一定的,这样可以保证116M时钟和38M时钟不同时翻转。修改后CLK_38M时钟波形如图7所示,回沟移到了高电平处。

图7 上行SSRAM时钟改为116M并移相后的CLK_38M波形

同时为了改善CLK_38M时钟上升沿变缓的问题,在硬件上将时钟线的33欧姆串阻改为了0欧姆,且在逻辑内部将时钟线进行了上拉。经过改进后,时钟的上升时间明显变短。

六、总结

经过以上改进后,CLK_38M时钟质量有明显改善,上升沿光滑,上升时间短。配置4路双向业务,48小时长期常温和高低温情况下进行测试,业务正常,没有再出现下行丢包的情况。通过M单板调试过程中出现的地弹噪声干扰38M时钟信号的故障及解决方法。总结出以下几点:

1)在FPGA硬件设计中,比较重要的信号,例如时钟和复位线等,尽量不要和多根翻转频繁的信号线放置在同一个I/O bank。

2)在FPGA硬件设计中,比较重要的信号,例如时钟和复位线等,在其临近的周围I/O中不要安排翻转比较频繁的信号线,避免线间干扰。3)在FPGA逻辑设计中,没有使用的I/O空余管脚最好设置为输出接地,以增大地平面面积。

4)如果地弹噪声无法避免,可以通过避免其他大量信号线和重要信号线同时翻转的方式,降低地弹对重要信号线的影响。

5)对于地弹造成的重要信号线上升沿变缓的情况,可以通过加大被干扰信号的驱动电流,降低干扰信号的驱动电流的方法。同时将被干扰信号线在逻辑内部上拉。这些方法可以大大减小被干扰信号的上升时间,改善信号质量。

【信号完整性】地弹噪声对信号完整性的影响相关推荐

  1. MATLAB仿真噪声信号、单多音信号、LFM、2ASK、2FSK、BPSK、16QAM

    文章目录 背景: 1.高斯白噪声 2.噪声调幅信号 3.噪声调频信号 4.单音信号 5.多音信号 6.线性扫频信号 7.2ASK信号 8.2FSK信号 9.BPSK信号 10.16QAM信号 缩略对照 ...

  2. 信号完整性(SI)电源完整性(PI)学习笔记(二十一)差分对与差分阻抗(一)

    差分对与差分阻抗(一) 1.差分对是指存在耦合的一对传输线. 差分信令是用两个输出驱动器去驱动两条独立的传输线,所测量的信号是两条线之间的差.差分信令与单端信令相比有许多优点: (1)双驱动器产生的d ...

  3. 信号完整性(SI)电源完整性(PI)学习笔记(三十四)100条估计信号完整性效应的经验法则

    100条估计信号完整性效应的经验法则 ----内容来自<信号完整性分析与电源完整性分析-第三版> 当快速的得到粗略的结果比以后得到优良的结果更重要,就应该使用经验法则. 当然不能盲目的使用 ...

  4. 信号完整性(SI)电源完整性(PI)学习笔记(三)阻抗与电气模型

    阻抗与电气模型 1.用阻抗描述信号完整性 (1)信号是指变化的电压或变化的电流 .所有信号完整性问题都是由模拟信号(变化的电压或者电流)与互联电气特性之间的相互作用引起的,而影响信号的关键电气特性是互 ...

  5. 信号完整性(SI)电源完整性(PI)学习笔记(八)传输线的物理基础(一)

    传输线的物理基础(一) 1.传输线;两条有一定长度的导线组成的,一条称为信号路径,一条称为返回路径.特性是:特性阻抗和时延. 2.当信号沿传输线传输时,需要同时用到信号路径和返回路径.如果两个导线不想 ...

  6. 两条信号之间加电容_信号完整性SI读书笔记之一

    微信公众号:硬核电子--一个只分享技术原创文的公众号. 本周项目较忙,没什么时间撰写文章.​但即使这样,本人也不愿意随便从网络上搬运一篇文章过来凑数,因此,就分享一下比较久以前整理的有关信号完整性的读 ...

  7. 信号完整性(SI)电源完整性(PI)学习笔记(二十八)S参数在信号完整性中的应用(三)

    S参数在信号完整性中的应用(三) 1.对S参数元素的解释取决于对端口的指派情况. 元器件内部的确切连接将会影响如何解释每个S参数.最常见的情况就是6条不同传输线的端口指派,则对于每个具体S参数的解释也 ...

  8. 信号完整性(SI)电源完整性(PI)学习笔记(十四)有损线、上升边退化与材料特性(一)

    有损线.上升边退化与材料特性(一) 1.**保持时间:hold time:**在时钟事件发生之后,数据信号应持续稳定的最短时间: **建立时间:setup time:**在时钟事件发生前数据信号应保持 ...

  9. 信号完整性(SI)电源完整性(PI)学习笔记(二十四)差分对与差分阻抗(四)

    差分对与差分阻抗(四) 1.任何瞬变共摸信号沿差分对传播时,都会在末端感受到一个较高的阻抗返回源端.即使在两条信号线之间跨接一个100Ω的电阻器,由于共摸信号在两条信号线上有相同的电压,它也不会感受到 ...

最新文章

  1. linux uefo引导 win_基于UEFI和GPT模式下U盘安装windows8.1和Linux双启动教程
  2. 深度学习核心技术精讲100篇(六)-keras 实战系列之知识蒸馏(Knowledge Distilling)
  3. 前端学习(478):前端简介2
  4. ORA-15096: lost disk write detected的解决与修复
  5. Flash Player Control for ASP.NET
  6. docker容器别人访问很卡_docker容器下远程访问jupyter的方式
  7. 在售后技术服务里,Kubernetes到底是什么? | 凌云时刻
  8. 解压版tomcat7配置
  9. 计算机毕业设计 安卓 Android studio音乐播放器app 仿酷狗,仿网易云音乐播放器
  10. MATLAB 官方文档
  11. HDMI2.0/HDCP2.2 2x4 矩阵芯片——GSV2006
  12. css 面包屑 30个字节,css3面包屑设计
  13. php日期函数实际应用,日期函数如何在PHP中使用
  14. 将保护清理不良资产的银行家:Arun Jaitley在评审会议
  15. 如何开发一款用户体验优秀的语音交友app?
  16. 物理画线“救救小鸡”,支持自建关卡!技术教程分享
  17. PCIe PTM(Precision Time Measurement)介绍
  18. 缓解 WPF 应用程序中的空域问题
  19. Android网络框架Volley项目实战-刘桂林-专题视频课程
  20. 15基于峰谷分时电价引导下的电动汽车充电负荷优化(matlab程序)

热门文章

  1. oracle中tns作用,Oracle 中TNS的作用
  2. C语言中static函数
  3. Linux Windows Socket通信 端口开启
  4. 一级b计算机考试ppt题目,全国计算机等级考试一级B类.ppt
  5. 获取系统所有安装的字体名称
  6. 怎么安装nerworkx_ubuntu 下NetworkX的安装和使用
  7. WM SCM630 笔记 Unit 4 Putaway Control (1)
  8. 一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
  9. 政府大数据之数据需求管理
  10. consider的用法