信号线多长算长呢——之上升沿与时延的爱恨情仇

2023-10-28 00:59

本文主要是介绍信号线多长算长呢——之上升沿与时延的爱恨情仇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        忆往昔岁月,看着PCB上弯弯曲曲的走线,看着书中所说的端接,想象着日后自己也可以这么牛逼,能够设计出这么复杂的电路。“过来焊板子啦”一句话又将我拉回了现实,哎,过来吸一会我们硬件攻城狮的精神鸦片——松香吧。

        吸完后果然腰也疼了头也晕了连拿碗的手都开始抖了,我觉得我快要成仙了,然后带着我的一身仙气来到了老师傅面前露出我那谄媚的笑容,“老大,咱这板子上面为啥走线是弯弯曲曲的,为啥要做个端接”,“因为这是高速信号,需要控制时序,为了防止反射需要端接”,他好像回答了我的问题,但是我还是不懂啊,为了不暴露我的智商我只好回了一句“哦”。

        正常人听到这个回答应该是先了解为啥信号要弯弯曲曲的,但我不是一般人啊,我吸松香都要成仙了,我必须的从后往前研究,先搞明白啥是端接,为啥要端接,啥时候需要端接,啥时候又不需要端接。

        好啦,开始正题,一个信号的模型是由近端驱动器、阻抗可控的互联线,以及远端接收器组成(肯定有人说,我接收端啥也不接,哎我没有接收端,哈哈,是不是模型不成立了,啊哈哈,回复:接收端不接就是接了一个阻抗无穷大的电阻,哎,它也是接收器(打死你个键盘杠精龟孙,哼!))。那我们就按接收端啥也不接的情况来分析一下(哼!),就是当接收端开路时,驱动端发出的信号就会在驱动器和接收器之间来回的反弹,当互连线很长时,经过多次的反弹就会引起信号完整性的问题,如振铃现象,但是如果互联线足够的短,虽然也会发生反射,但是她会被上升沿或者时下降沿给掩盖了,可能就不会引起问题,想象一下你对着墙泼水,离得稍微远一点水是不是会溅起来啊(杠精,退!)当你离得足够近虽然也会溅起来但是被你泼的水给挡回去了,就如同你要下地铁结果被人流又给推回去了。那么究竟多长的互联线会产生信号完整性的问题呢,下图是信号时延是上升沿的40%、30%以及20%时接收端的信号波形。

        上图是当传输的线长时延分别为信号上升沿的40%、30%以及20%时,无终端端接情况下在传输线远端观测到的100MHz时钟信号波形,可以看出当传输时延超过信号上升沿的20%时,振铃噪声可能会引起问题。

       OK,我们就以上升沿是1ns来计算振铃不会对信号完整性产生影响的最大长度吧,上升沿是1ns,最大时延是20%×1ns=0.2ns,在FR4中信号的传输速度约为6in/ns,所以没有终端端接传输线的最大长度约为6in/s×0.2ns=1.2in。

因此,可以得到一个十分有用的经验法则,为了避免信号完整性问题,没有终端端接的传输线最大长度约为:

        其中,Lenmax表示没有终端端接传输线的最大长度(单位in),RT表示信号上升沿(单位为ns)。

        但是一般情况下我们我的只知道时钟的频率,要想看驱动器输出波形的上升沿还需要去翻看手册,作为一个硬件工程师,能够快速的计算出无需端接的最大长度,并且口算出来,那是多么的高光时刻啊,也能装逼于无形之中(得意doge,哈哈),那么怎么算呢,比如说,100MHz的时钟频率其周期是10ns我们安常规方法计算上升沿是周期的10%也就是1ns,那么100MHz的时钟最大长度就是1in也就是1000mil,那么同理1GHz的时钟其最大长度就是100mil喽,记着这两个数,同学们下次遇到机会千万不要放过装逼的机会,哈哈,但是注意实际上端接与否与时钟频率是没有强关联的,它只与信号的上升沿有关系,也就是说1MHz的上升沿如果很陡峭的话也是需要端接滴,但是我们是做工程的不是做学术研究的,能够在正确的方向上得出相对正确的答案比精确的答案更有意义。

        好啦,给大家一个思考的问题,比如说0.1ns的上升沿,最大长度是0.1in,信号在FR4中速度为6in/ns那就是0.1in信号单程是0.016666667ns,再返回到源端总的需要的时间是0.016666667ns×2约为0.03333333,就是一个来回才占了整个上升沿的三分之一,大家想想为啥是三分之一而不是二分之一或者其他,如果是二分之一就是反射回来的信号刚好在上升沿的一半,同样可以掩盖返回的数据啊,除了通过仿真看波形图,从其他角度能不能解释的通呢,哈哈,提示一点可以看一个标准的振铃图来想哦。

这篇关于信号线多长算长呢——之上升沿与时延的爱恨情仇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/289611

相关文章

【UVA】10534 - Wavio Sequence(LIS最长上升子序列)

这题一看10000的数据量就知道必须用nlog(n)的时间复杂度。 所以特意去看了最长上升子序列的nlog(n)的算法。 如果有2个位置,该位置上的元素为A[i]和A[j],并且他们满足以下条件: 1.dp[i] = dp[j]    (dp[x]代表以x结尾的最长上升子序列长度) 2.A[i] < A[j] 3.i < j 那么毫无疑问,选择dp[i] 一定优于选择dp[j] 那么

影响时延抖动的因素

影响时延抖动的因素主要包括排队时延、可变的分组大小和IP网络路由状态频繁变化。‌ ‌排队时延‌:当数据包通过路由器或交换机等网络设备时,如果设备处理能力不足,数据包需要在队列中等待处理,这会消耗一定的时间,从而导致排队时延。这种时延的不确定性是时延抖动的一个重要来源。   ‌可变的分组大小‌:数据包的传输时间不仅与数据包的大小有关,还与网络设备的处理能力、传输介质的特性等因素有关。当数据包大

最长上升子序列 二分做法

给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数N。 第二行包含N个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤10001≤N≤1000, −109≤数列中的数≤109−109≤数列中的数≤109 输入样例: 73 1 2 1 8 5 6 输出样例: 4 二分做出的答案只有数量是最长上升子

Matlab编程技巧:通过脚本获取/修改Simulink信号线参数

上一篇博客《Matlab编程技巧:批量获取/修改Simulink模块参数》中,说明了如果通过matlab脚本批量获取/修改Simulink模块参数。具体方法可以参考https://blog.csdn.net/u013288925/article/details/103943921 Simulink中的信号线也是带有一些属性的,譬如名称和是否关联Simulink Signal Obj。本文介绍几个修

【最大上升子序列和】

题目 前置芝士 1. erase 函数 erase(iterator pos):删除单个元素,其中 pos 是要删除元素的迭代器。 erase(iterator first, iterator last):删除从 first 到 last(不包括 last)之间的所有元素。 2. unique 函数 unique 函数用于去除容器中相邻的重复元素,并返回一个迭代器,指向去重后容器中最后

最长公共上升子序列(LCIS)ZOJ 2432

立方算法: #include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#define M 505using namespace std;typedef long long LL;LL a[M],b[M];int dp[M][M];int main(){//freopen("in.txt","

高速传输uwb无线收发芯片,超宽带、低时延无线通信,定位测距技术

在信息化的时代,无线通信技术的每一次创新都极大地推动了社会的发展。近年来,随着物联网、智能家居、自动驾驶等技术的飞速发展,对无线通信技术的要求也越来越高。在众多无线通信技术中,UWB(Ultra-Wideband)无线收发芯片以其超宽带、低时延的特性,成为了行业内的翘楚,飞睿智能创新着无线通信的新潮流。 一、UWB无线收发芯片:技术解读 UWB,即超宽带无线通信技术,是一种使用极短脉冲进行

LabVIEW布尔值比较与信号状态上升沿下降沿检测

在 LabVIEW 编程中,布尔值的比较不仅是逻辑运算的重要组成部分,还广泛应用于信号的上升沿和下降沿检测。通过理解 True > False 这样的基本表达式,以及如何在程序中检测信号的状态变化,开发者可以有效地控制系统行为,并实时响应信号变化。 布尔值在 LabVIEW 中的数值表示 在 LabVIEW 中,布尔值有明确的数值对应: True:数值表示为 1。 False:数

AcWing895. 最长上升子序列

这个代码不知道怎么说,反正就是对着代码手算一次就懂了,无需多言,就是俩for循环里面的第二层for的循环条件是j<i,j是从下标1往下标i-1遍历的,每次a【j】<a【i】就在答案数组f【i】上面做出更新。基本的输入样例已经可以覆盖代码所有的分支。手算比讲解代码效率高 #include<iostream>#include<algorithm>#define N 1010using nam