信号完整性之“过冲”(振铃)深度分析

信号完整性之“过冲”(振铃)深度分析信号在传输的过程中 往往不是标准的矩形波信号 尤其在高速信号中 保证信号的完整性是十分重要的 影响信号完整性最主要的因素之一 就是阻抗不匹配 通常表现在传输线上 而阻抗不匹配直接导致信号的反射 反射信号与原始信号叠加 就会产生过冲 回沟 台阶等信号完整性问题 本文将主要对因传输线阻抗不匹配导致信号产生过冲 上冲 overshoot 下冲 undershoot 进行深度分析 并提出部分可行的解决方案 一 过冲的定义过冲是振铃的一部分 信号电平发生跳变后 第一个峰值电压或谷值电压超过设定的标准电压 主要表现为一

信号在传输的过程中,往往不是标准的矩形波信号,尤其在高速信号中,保证信号的完整性是十分重要的,影响信号完整性最主要的因素之一,就是阻抗不匹配,通常表现在传输线上,而阻抗不匹配直接导致信号的反射,反射信号与原始信号叠加,就会产生过冲、回沟、台阶等信号完整性问题。本文将主要对因传输线阻抗不匹配导致信号产生过冲(上冲overshoot、下冲undershoot)进行深度分析,并提出部分可行的解决方案。

一、过冲的定义

过冲是振铃的一部分,信号电平发生跳变后,第一个峰值电压或谷值电压超过设定的标准电压,主要表现为一个尖端脉冲。

一般描述过冲的影响,主要考虑:过冲的最大幅值、过冲的持续时间、过冲的发生频率这三个要素。

二、过冲和振铃的危害

1、当过冲幅值较大或持续时间较长时,可能回导致电路元器件的失效;

2、振铃产生的电压波动,可能回多次跨越逻辑电平的电压阈值,造成接收端的误判

三、过冲产生原因

本质原因是:传输线阻抗不匹配造成信号的反射,多个反射信号和原信号叠加导致过冲和振铃。

1、反射及反射系数

在这里插入图片描述
在这里插入图片描述

分界面两侧的电压相等,有 Vinc + Vref = Vtra ;

分界面两侧的电流相等,有Iinc – Iref = Itra ;

再有 Iinc × Z1 = Vinc ;Iref × Z1 = Vref ;Itra × Z1 = Vtra ;

2、建立传输模型

在这里插入图片描述

一般理想情况下,末端接收端的输入阻抗无穷大,源端输出端的输出阻抗趋近于0。设源端串接的匹配电阻阻抗为Rs,传输线(即PCB走线)阻抗为Rz。

信号在线上由A往B传送时,在B点信号的反射系数为1,即全反射;

由B往A传送时,在A点信号的反射系数为 (Rs-Rz)/(Rs+Rz)。

3、展开时间轴,计算实时反射波形

下面举个栗子

设传输线阻抗Rz=30Ω,源端串接的匹配电阻Rs=10Ω,则传输线左端A点反射系数为 (10 – 30)/(10 + 30) = -0.5,右端B点反射系数为 (+∞ – 30)/(+∞ + 30) = 1。

T1时刻,由于电阻分压,传输线左端A点电压为3.3*30/(10+40)=2.475V,抽象理解为T1时刻有一个+2.475V的信号在传输线上向B点传播;

T2时刻,该信号在B点产生全反射(反射系数为1),T2时刻B点电压为原始信号、入射信号、反射信号的叠加,即0+2.475+2.475 = 4.95V;

T3时刻,末端的一次反射信号到达A点,由于阻抗不匹配,反射电压为2.475 * (-0.5)=-1.2375V,此时A点电压也为原始信号、入射信号、反射信号的叠加;

T4时刻,源端的一次反射信号到达B点,同理计算末端B点电压为4.95-1.2375-1.2375 = 2.475V;

T5时刻,末端的二次反射信号到达A点…

T6时刻,源端的二次反射信号达到B点,如上图所示计算B点电压为 3.7125V

在理想情况(无损传输)下,信号会在传输线A、B两端无休止的反射振荡,反射电压的幅值越来越趋近于0,在实际中信号在传输过程中有衰减,最终趋于稳态。

下面我计算了约50多个数据,反应末端B点的电压变化,如下图所示:(左图为理论数据计算作图,右图为示波器测得实际波形)

在这里插入图片描述
在这里插入图片描述

由以上理论推导和数据可知,当源端信号发生跳变后,由于阻抗不匹配,末端会产生多个超过或低于期望电平的脉冲,这就是振铃现象,第一个脉冲就是过冲。

在下写了一小段C语言代码用于生成数据,copy到excel绘制散点图,代码如下:

#include  
     #define DataNum 100 //100个数据模拟波形 #define StartNum 30 //30个起始数据,方便对比 int main() { 
    //系统初始条件,参数可改 float SourceRes=10.0;//源端电阻 float LineRes=30.0;//传输线电阻 float StartVoltage=0.0;//初始电平 float TailVoltage=3.3;//跳变后电平 float ReflectTail = 1.0;//末端反射系数, 假设接收端输入阻抗无穷大,为全反射 float ReflectSource;//源端反射系数 float StartTransferVoltage; float VoltageReflectSource; float OutputData[DataNum]={ 
   0}; int i,j; ReflectSource = (SourceRes-LineRes)/(SourceRes+LineRes);//计算源端反射系数 VoltageReflectSource = (TailVoltage-StartVoltage)*LineRes/(SourceRes+LineRes);//计算传输线起始端电压 for(i=0;i<StartNum;i++)//添加初始数据 OutputData[i]=StartVoltage; for(;i<DataNum;i++)//开始计算保存数据 { 
    OutputData[i] = OutputData[i-1] + (VoltageReflectSource + VoltageReflectSource*ReflectTail); VoltageReflectSource *= (ReflectSource*ReflectTail); } for(j=0;j<DataNum;j++)//输出数据用于Excel绘图 printf("%f\r\n",OutputData[j]); system("pause"); return 0; } 

4、改变阻抗匹配条件对比分析波形

可以发现,当源端电阻小于传输线电阻时,信号变化比较快(上升时间较短),但是会伴随着过冲的产生,影响信号的完整性;

当源端电阻大于传输线电阻时,信号上升相对比较平缓,能有效解决过冲问题,但是增大了上升时间,限制了信号的传输速度;

只有当源端电阻和传输线电阻相等时(即阻抗匹配状态),信号质量最接近理想状态。

注:当源端电平发生由1到0的负跳变时,分析方法同上,这里不再重复阐述,用于生成模拟数据的代码仍然可用

四、解决方案

1、减小驱动端的输出电流

2、端接电阻进行阻抗匹配,本质上是消除信号路径端点的阻抗突变

大多数情况下在源端串联一个匹配电阻,使传输线阻抗与源端阻抗匹配,在PCB走线时,该电阻尽可能靠近源端器件的输出管脚;

也有部分情况在末端并联一个匹配电阻到电源或地,以消除信号在末端的一次反射,但这种方式增大了电路的功耗,一般不建议采用;

3、增加TVS二极管限制峰值

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211577.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午10:06
下一篇 2026年3月18日 下午10:06


相关推荐

  • ubuntu更改root用户密码

    ubuntu更改root用户密码如果要在 ubuntu 的当前用户模式下更改 root 用户的密码 可以直接打开命令行窗口输入 sudopasswd nbsp 回车 然后会提示输入 UNIX 密码 并再次确认前面输入的 UNIX 密码 两次密码输入完成后 在命令行中输入 reboot 重启系统 然后再进入系统的时候就可以在命令行中使用 su root 回车 然后输入刚才设置的密码就可以进入 root 模式下了

    2026年3月16日
    3
  • 创业之路_小项目创业网

    创业之路_小项目创业网美国《时代周刊》评论曾经有这样一段话,“在21世纪,改变你命运的只有你自己,别期盼有人会来帮助你。从现在开始,‘学习、改变、创业’是通往新世界的唯一道路”。决心创业并已参加培训的学员勇敢地迈出了第一步,只要能吃苦耐劳,勇于开拓,勤于学习,坚忍不拔,一定能实现自己心中的目标。创业,是一个发现和捕捉机会,并由创造出新颖的产品,提升服务,实现其潜在价值的过程。创业能否成功,与创业者的素质…

    2022年10月7日
    5
  • uml图在线制作_迅捷画图网站

    uml图在线制作_迅捷画图网站地址贴上:https://online.visual-paradigm.com/cn/ 两步:1.注册2.选择你要画图的种类

    2025年8月6日
    4
  • EJB到底是什么,真的那么神秘吗??

    EJB到底是什么,真的那么神秘吗??3 5 2 我们不禁要问 什么是 服务集群 什么是 企业级开发 既然说了 EJB 是为了 服务集群 和 企业级开发 那么 总得说说什么是所谓的 服务集群 和 企业级开发 吧 这个问题其实挺关键的 因为 J2EE 中并没有说明白 也没有具体的指标或者事例告诉广大程序员什么时候用 EJB 什么时候不用 于是大家都产生一些联想 认为 EJB 分布式运算 指得是 负载均衡 提高系统的运行效率 然而 估计很多人都搞错了 这个 服务群集 和 分布式运算 并没有根本解决运行负载的问题 尤其是针对数据库的应用系统 为什么 我

    2026年3月19日
    2
  • 讯飞星火怎么用

    讯飞星火怎么用

    2026年3月14日
    2
  • Windows本地部署OpenClaw:避坑指南+最佳实操

    Windows本地部署OpenClaw:避坑指南+最佳实操

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号