1. 程式人生 > >訊號完整性之“過沖“(振鈴)深度分析

訊號完整性之“過沖“(振鈴)深度分析

 訊號在傳輸的過程中,往往不是標準的矩形波訊號,尤其在高速訊號中,保證訊號的完整性是十分重要的,影響訊號完整性最主要的因素之一,就是阻抗不匹配,通常表現在傳輸線上,而阻抗不匹配直接導致訊號的反射,反射訊號與原始訊號疊加,就會產生過沖、回溝、臺階等訊號完整性問題。本文將主要對因傳輸線阻抗不匹配導致訊號產生過沖(上衝overshoot、下衝undershoot)進行深度分析,並提出部分可行的解決方案。

一、過沖的定義

  過沖是振鈴的一部分,訊號電平發生跳變後,第一個峰值電壓或谷值電壓超過設定的標準電壓,主要表現為一個尖端脈衝。

  一般描述過沖的影響,主要考慮:過沖的最大幅值、過沖的持續時間、過沖的發生頻率這三個要素。

 

二、過沖和振鈴的危害

  1、當過衝幅值較大或持續時間較長時,可能回導致電路元器件的失效;

  2、振鈴產生的電壓波動,可能回多次跨越邏輯電平的電壓閾值,造成接收端的誤判

 

三、過沖產生原因

  本質原因是:傳輸線阻抗不匹配造成訊號的反射,多個反射訊號和原訊號疊加導致過沖和振鈴。

1、反射及反射係數

  如下圖所示,設區域1阻抗為Z1,區域2阻抗為Z2,訊號經過兩個阻抗不同的區域,在交界處A處,電壓和電流不能產生突變(若電壓不連續,將產生無窮大的電場;若電流不連續,將產生無窮大的磁場)。                 

 

 

 

 

 

 

  

  若Z1 ≠ Z2,則關係式 V1 =I1 ×Z1 ;  V2 =I2 ×Z2   無法同時滿足電壓和電流連續的條件V1 = V2,I1 = I2 ,故只能從電磁波反射的角度進行分析,如下所示。

  訊號由區域1往區域2傳輸的過程中,入射(incident)訊號、反射訊號(reflect)、傳輸訊號(transfer)分別如下圖表示:

               

   分介面兩側的電壓相等,有 Vinc + Vref = Vtra  ;

   分介面兩側的電流相等,有Iinc - Iref = Itra     ;

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

   由以上5個等式可以推導得出:

 

              

 

 

 

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。

  設初始狀態都為低電平0.0V,T0時刻源端跳變為3.3V,傳送邏輯高電平訊號,末端B點的電壓變化如下。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  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繪製散點圖,程式碼如下:

 1 #include <stdio.h>
 2 #define DataNum 100    //100個數據模擬波形
 3 #define StartNum 30    //30個起始資料,方便對比
 4 int main()
 5 {
 6     //系統初始條件,引數可改
 7     float SourceRes=10.0;//源端電阻
 8     float LineRes=30.0;//傳輸線電阻
 9     float StartVoltage=0.0;//初始電平
10     float TailVoltage=3.3;//跳變後電平
11 
12     float ReflectTail = 1.0;//末端反射係數,    假設接收端輸入阻抗無窮大,為全反射
13     float ReflectSource;//源端反射係數
14     float StartTransferVoltage;
15     float VoltageReflectSource;
16     float OutputData[DataNum]={0};
17     int i,j;
18     ReflectSource = (SourceRes-LineRes)/(SourceRes+LineRes);//計算源端反射係數
19     VoltageReflectSource = (TailVoltage-StartVoltage)*LineRes/(SourceRes+LineRes);//計算傳輸線起始端電壓
20 
21     for(i=0;i<StartNum;i++)//新增初始資料
22         OutputData[i]=StartVoltage;
23     for(;i<DataNum;i++)//開始計算儲存資料
24     {
25         OutputData[i] = OutputData[i-1] + (VoltageReflectSource + VoltageReflectSource*ReflectTail);
26         VoltageReflectSource *= (ReflectSource*ReflectTail);
27     }
28     for(j=0;j<DataNum;j++)//輸出資料用於Excel繪圖
29         printf("%f\r\n",OutputData[j]);
30     system("pause");
31     return 0;
32 }
View Code

 

4、改變阻抗匹配條件對比分析波形

  通過改變源端匹配電阻 Rs 的阻值,得到如下一部分模擬資料

       

 

       

 

  可以發現,當源端電阻小於傳輸線電阻時,訊號變化比較快(上升時間較短),但是會伴隨著過沖的產生,影響訊號的完整性;

  當源端電阻大於傳輸線電阻時,訊號上升相對比較平緩,能有效解決過沖問題,但是增大了上升時間,限制了訊號的傳輸速度;

  只有當源端電阻和傳輸線電阻相等時(即阻抗匹配狀態),訊號質量最接近理想狀態。

     注:當源端電平發生由1到0的負跳變時,分析方法同上,這裡不再重複闡述,用於生成模擬資料的程式碼仍然可用

 

 

四、解決方案

  1、減小驅動端的輸出電流

  2、端接電阻進行阻抗匹配,本質上是消除訊號路徑端點的阻抗突變

    大多數情況下在源端串聯一個匹配電阻,使傳輸線阻抗與源端阻抗匹配,在PCB走線時,該電阻儘可能靠近源端器件的輸出管腳;

    也有部分情況在末端並聯一個匹配電阻到電源或地,以消除訊號在末端的一次反射,但這種方式增大了電路的功耗,一般不建議採用;

  3、增加TVS二極體限制峰值

 

 <