热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

S参数与TDR

在得到某一个无源链路的S参数之后,无论链路是一段传输线,还是一个连接器,还是一个过孔等等,或者是很多部分的组合。这时从S参数

在得到某一个无源链路的S参数之后,无论链路是一段传输线,还是一个连接器,还是一个过孔等等,或者是很多部分的组合。这时从S参数的角度关心整个链路的回损或者插损就足矣,把链路当成一个黑盒。但是如果S参数指标差的时候,比如我们经常最关心的S21,想着插损不行,第一反应也许就会去看看回损怎么样?毕竟反射如果大,插损会变不好。但是有时候,比如内部阻抗不连续点,距离s参数的端口比较远,也许反射回来的能量在途中已经消耗殆尽,都体现不到S11上面去,让人觉得S11还不错,误以为反射不大。这个时候就需要TDR来助力了解整个链路上的阻抗突变情况了。不管是仿真还是测试中TDR都是经常用来诊断无源链路的一个手段,毕竟往大了说SI问题约等于阻抗匹配问题。

TDR可以通过时域的TDR设备去测试,也可以通过先测得S参数,然后通过S参数的傅里叶反变换得到。先说说直接由TDR时域去测得。

TDR设备简单的模型如下图,是由一个step信号的激励,通过cable,连接并注入到DUT上去。这里的源有源阻抗50ohm,cable的特性阻抗一般为50ohm。然后TDR内部采集A点的电压,最后得到DUT的TDR曲线。

 

这里假设DUT是一段250ps延迟的60ohm特性阻抗的传输线。输出的源为2V的Step信号,在A点测量到的电压曲线图如下,凭借A点的电压波形就可以计算得出后面DUT的阻抗信息,怎么来的呢?

 

假设Zo和Zdut交界点的位置的入射电压和反射电压分别是Vi,Vr。则由反射系数的公式:

Vr/Vi=(Zdut-Zo)/(Zdut+Zo);则Zdut=Zo*(Vi+Vr)/(Vi-Vr)。由上图中我们可以看到Vr是等于0.091V。而Zdut=50*1-0.091/1+0.091=60。

这个也可以在ADS中仿真,如下图,假设有一个待测物DUT用s参数表示,在前面有一个step信号源,内阻也是50,再接一小段50ohm特性阻抗的延迟线。最后的TDR可以用公式50*V2/(V1-V2)来获取。那怎么跟上面的Zdut=Zo*(Vi+Vr)/(Vi-Vr)保持一致的呢?具体推导一下:

Zdut=Zo*Vi+Vr/Vi-Vr

=Zo*(V1/2+Vr)/(V1/2-Vr)

=Zo*V2/(V1/2+V1/2-(V1/2+Vr))

=Zo*V2/(V1-V2)

在瞬态的时候,因为R1=Zo=50,所以Vi=V1/2。

 

最后的仿真如下,这个DUT只是做实验用的一个两段5inch 48ohm传输线中间有一小段52ohm传输线。

 

另外从TDR图像里也可以估算出链路上不同阻抗的段的长度,比如上图,前段48ohm的线,5ich的线,按照6mil/ps的传播速度,然后波传播来回两倍的传输距离,能得到大约需要用1.66ns,跟图上的时间差不多可以吻合。

还有一个需要注意的是Step上升沿时间的设置,如果设置的太长,会影响TDR的分辨率,导致一些短的阻抗不连续点被淹没,一般认为这个上升时间内传播的距离就是TDR的分辨率,要求上升沿的信号带宽最好能有5倍的实际使用的信号最高频率。

当然要得到TDR,除了从时域瞬态角度去得到,还可以从频域角度,直接从S参数得到。无论是S11,还是S21,这里都可以把被测无源链路当成是一个LTI系统。S11可以理解为从1端口输入入射波,从1端口输出反射波。而S21可以理解为从1端口输入入射波,从2端口输出透射波。这都是一个LTI系统的响应,而描述一个LTI系统一般都是用h(t)冲击响应来描述其特性,当冲击响应积分就得到阶跃响应。下图是S11获得TDR的示意过程,S11在频域做积分就是*1/jw。然后再做IFT,就能得到TDR。

 

在ADS中也有类似工具SP-TDR,或者函数提供调用,如下图是之前用过的S参数直接通过SP-TDR转换到时域的TDR曲线,结果与时域Step信号仿真放大得到的吻合。

 

对于S21也可以做IFT,如下图,无源通道S21做IFT然后和输入信号,就如下面的一个梯形(类似于数字信号的的一个UI),两者频域相乘(时域卷积)得到最终输出的波形Y(t)。在IBIS-AMI仿真的时候就利用了这个原理生成static eye diagram。

 

回到TDR,当直接用S11去变换得到TDR的时候,它的TDR分辨率,由S参数的最高扫频频率决定。我们一般也是最好取最高扫频频率是5倍的实际信号最高频率,这样可以对不连续点看的更加清楚。

关注微信公众号:电子工程师那些事儿

有更多相关内容


推荐阅读
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
  • 本文详细介绍如何使用 Python 集成微信支付的三种主要方式:Native 支付、APP 支付和 JSAPI 支付。每种方式适用于不同的应用场景,如 PC 网站、移动端应用和公众号内支付等。 ... [详细]
  • 程序员版情书:王思聪的编程式告白
    当程序员用代码表达爱意,会产生怎样的化学反应?一起来看看这封充满技术感的情书,网友笑称这才是真爱! ... [详细]
  • Mac版海马玩安卓模拟器的使用指南
    海马玩安卓模拟器是一款功能强大的电脑端模拟工具,现已推出适用于Mac系统的版本。本文将详细介绍如何在Mac上安装和使用海马玩安卓模拟器,帮助用户快速上手并享受流畅的游戏和应用体验。 ... [详细]
  • 微信支付绑定App Store获赠腾讯视频VIP月卡指南
    苹果应用商店携手腾讯视频和微信支付推出限时活动:通过关联微信支付至App Store,用户可免费领取价值19元的腾讯视频VIP月卡。本文详细介绍参与条件、规则及具体操作步骤。 ... [详细]
  • 本文详细介绍了Java中的注解功能,包括如何定义注解类型、设置注解的应用范围及生命周期,并通过具体示例展示了如何利用反射机制访问注解信息。 ... [详细]
  • 本文详细探讨了Java命令行参数的概念、使用方法及在实际编程中的应用,包括如何通过命令行传递参数给Java程序,以及如何在Java程序中解析这些参数。 ... [详细]
  • 探讨C#中如何正确访问静态成员,避免使用实例引用导致的错误。 ... [详细]
  • 本文详细介绍了Java的安装、配置、运行流程以及有效的学习方法,旨在帮助初学者快速上手Java编程。 ... [详细]
  • 在许多地理位置选择类的应用程序中,侧边栏是常见的用户界面元素,用于通过选择特定的字母快速定位和选择地点。本文将详细介绍如何在Android应用中创建一个具有波浪效果的自定义侧边栏,以提升用户体验。 ... [详细]
  • 掌握Mosek矩阵运算,轻松应对优化挑战
    本篇文章继续深入探讨Mosek学习笔记系列,特别是矩阵运算部分,这对于优化问题的解决至关重要。通过本文,您将了解到如何高效地使用Mosek进行矩阵初始化、线性代数运算及约束域的设定。 ... [详细]
  • 利用jstack进行死锁检测与线程堆栈分析
    本文介绍了如何使用jstack工具进行Java应用中的死锁检测及高CPU使用率线程的堆栈分析,帮助开发者快速定位并解决性能瓶颈。 ... [详细]
author-avatar
美甲控Alily
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有