為什麼樹莓派的晶元周圍有這樣的蛇形走線?

為什麼樹莓派的晶元周圍有這樣的蛇形走線?

就是散熱器下面的那些左右彎曲的線


高速信號的等長線,拐來拐去達到一組並行信號線的長度一致,使信號經過導線的延時盡量一致。

內存條上很常見(網上的圖):


題主圖裡有兩種

我用紅色框起來這些小的彎曲,是HDMI信號和camera信號(好像是MIPI-CSI)的差分對,每兩根線是一對,HDMI有四對,都是數據線,MIPI-CSI有三對,一對時鐘,兩對數據線。差分信號需要做減法,所以要求一對當中的這兩根線長度要匹配(一般差異在5mil之內),這樣延時相同,信號才不失真。

左邊黃色框里的大點的彎曲,是為了保證MIPI_CSI的數據線和時鐘線長度匹配,差分對內兩條有要求,差分對時鐘和數據之間也有要求,這個一般不那麼嚴,在幾百mil之內吧,因為setup time和hold time也有餘量。

右邊黃色框里和左邊黃色框差不多,看上去大部分不是差分對,只是並行的信號線要求長度匹配,如果是內存的信號線的話,一般是data和dqs長度匹配,dqs和clock長度匹配。

左邊黃色框多框了一對沒走蛇形線的差分對,大概是單獨的USB信號或者給別的什麼設備用的差分信號。

如果有不對的地方請高手指出。


正好是我了解的技術方面,隨便寫寫吧。

從題主發的照片及問題題目上來看,主要牽涉到兩個方便的問題:

1.差分線,就是題主發的圖片中電路板上特別接近的兩根線,總是一對一對的出現。

2.蛇形走線,就是圖中彎彎曲曲的電路線。

不管是差分走線還是蛇形走線其實都是為了保證電路設計中很重要的一個東西——信號完整性。什麼是信號完整性呢?下面是維基百科給的一個解釋:

信號完整性(Signal
integrity, SI)是對於電子信號質量的一系列度量標準。在數字電路中,一串二進位的信號流是通過電壓(或電流)的波形來表示。然而,自然界的信號實際上都是模擬的,而非數字的,所有的信號都受噪音、扭曲和損失影響。在短距離、低比特率的情況里,一個簡單的導體可以忠實地傳輸信號。而長距離、高比特率的信號如果通過集中不同的導體,多種效應可以降低信號的可信度,這樣系統或設備不能正常工作。信號完整性工程是分析和緩解上述負面效應的一項任務,在所有水平的電子封裝和組裝,例如集成電路的內部連接、集成電路封裝、印製電路板等工藝過程中,都是一項十分重要的活動。信號完整性考慮的問題主要有振鈴(ringing)、串擾(crosstalk)、接地反彈、扭曲、信號損失和電源供應中的噪音。

一、差分線的作用。

差分線主要是對抗電路板上干擾和雜訊的。組成數字電路的數字器件一般都是由數字邏輯單元組成,而邏輯單元一般都是由開關器件,例如晶體管,mos管構成。數字電路中通常由高低電平來表示數字邏輯的」1」和」0」,但是電路中傳輸的高低電平本身卻是模擬量。由於電路信號線導線帶寬不是無窮大的,而且開關器件高頻工作時候不能忽略寄生的電容以及電感的影響,其結果就是,在數字開關導通截止的時候,輸出電壓不會從高到底,或者從低到高的平滑過渡,會產生吉布斯(Gibbs phenomenon,如圖所示)振蕩,寄生電容,電感振蕩等等,這些多餘的振蕩電壓如果通過某種路徑影響到有用信號的傳輸,那麼對於有用信號來說,這些多餘的東西就是干擾雜訊了。

上述只是信號干擾雜訊的一個來源,還有很多其他的來源例如電源雜訊,電磁干擾雜訊等等。

解決干擾雜訊問題的思路有兩個方面:

1.
從干擾的傳輸的路徑上去消除。

就是讓干擾和雜訊儘可能大的衰減,在抵達有用信號傳輸導線上時候變得很小,從而不影響正常信號的傳輸。現在的高速電路設計有很多的設計原則和指導,都是用來減小干擾和雜訊的。例如,EMC(Electro Magnetic Compatibility),電源去耦,快速入地,模擬和數字電源和地平面隔離等等,這裡就不展開說了。

2.
從提高傳輸信號本身的抗干擾和雜訊的能力入手。

先普及一個叫雜訊容限(Noise Margin)的概念,雜訊容限是指在前一極輸出為最壞的情況下,為保證後一極正常工作,所允許的最大雜訊幅度。雜訊容限越大說明容許的雜訊越大,電路的抗干擾性越好。如下圖中,驅動器A傳輸信號到接收器B端的輸入。

高電平雜訊容限=min{VOH_A}(最小輸出高電平電壓)— min{VIH_B}(最小輸入高電平電壓)

低電平雜訊容限=max{ VOL_A
}(最大輸入低電平電壓) —
max{ VIL_B}最大輸出低電平電壓

雜訊容限=min{高電平雜訊容限,低電平雜訊容限}

理論上說,只要表示邏輯「1」和「0」的高低電平電壓差越大,雜訊容限就會越大,但是越大的電壓差就需要越高的電壓供電,造成功耗的浪費,另外電壓差越大,從低電過渡到高電平或者從高平過渡到低電平需要的時間越長,直接影響電路的最高的工作頻率。

早先的數字電路通常是晶體管(transistor)電路,對應這種電路,自然發展出一種叫TTL(Transistor-Transistor Logic)的電平標準,數字器件在5V電源工作,通常驅動器表示高電平,既邏輯」1」的時候,輸出電壓&>2.4V,典型值為3.5V;表示低電平,既邏輯「0」的時候,輸出電壓&<0.4V,典型值0.2V。同時,輸入端可分辨的最小輸入高電平和最大輸入低電平:輸入高電平&>=2.0V,輸入低電平&<=0.8V,雜訊容限是0.4V。

可見TTL電路的抗雜訊能力是不強的,TTL電路中高電平2.4V與電源5V之間還有很大空閑,對改善雜訊容限並沒什麼好處,又會白白增大系統功耗,還會影響速度。所以後來就把一部分「砍」掉了,逐漸發展出一種叫LVTTL(Low-Voltage
TTL)的電平標準,分辨支持3.3V電源和2.5V電源(還有支持更低電源的):

3.3V LVTTL: VCC:3.3V;VOH&>=2.4V;VOL&<=0.4V;VIH&>=2V;VIL&<=0.8V。

2.5V LVTTL: VCC:2.5V;VOH&>=2.0V;VOL&<=0.2V;VIH&>=1.7V;VIL&<=0.7V。

雖然LVTTL的標準,降低了供電電壓,但是對雜訊容限沒有什麼改善(還是0.4V),後來CMOS電路逐漸取代晶體管電路成為主流,對應便有了LVCMOS電平標準:

3.3V LVCMOS:VCC:3.3V;VOH&>=3.2V;VOL&<=0.1V;VIH&>=2.0V;VIL&<=0.7V。

2.5V LVCMOS:VCC:2.5V;VOH&>=2.0V;VOL&<=0.1V;VIH&>=1.7V;VIL&<=0.7V。

相比於LVTTL,LVCOMS電路的雜訊容限得到一定的改善。

另外,TLL電路是不能和LVTTL和LVCMOS直接相連的,兩者之間需要經過電阻網路匹配才可以。相同電源下LVTTL和LVCMOS電路導線是可以直接互連的,甚至不同電源之間也可以互相直連的,只是不能達到最佳的雜訊容限。不過為了防止電流過載的情況出現,推薦在做電路設計的時候,信號導線串聯個電阻什麼的。

除了上述提到的電平標準之外常用的還有RS232(串口),RS422等電平標準,它們用正負電平表示邏輯「1」和「0」。還有工作在非飽和狀態(飽和狀態指只有導通和截止狀態)的電平標準ECL,PECL等,這裡也不展開說了。

多說一句,現在開源硬體很火,買個開發板,再買些周圍的小的設備板子,或者自己做一些小板子很隨意便可以搭起電路系統來,根本不用擔心各個晶元,器件之間是否存在電壓兼容的問題,就得益於LVTTL和LVCMOS這些電平標準的統一應用。所以真應該感謝前人的努力,使得我們可以像做軟體一樣做硬體。

以上無論TTL,LVTTL還是LVCOMS電平標準都是單端電壓標準。所謂單端電壓標準是指這些標準的輸出或者輸入電壓都是相對於電路公用的地平面來講的,在高速數字電路中,公用的地平面很容易傳播干擾和雜訊。

所以有沒有某種技術既可以隔離干擾雜訊,又能保持一定的雜訊容限,還能高速的傳輸信號?

這當然難不倒聰明的攻(dan)城(shen)獅(gou),這時候差分傳輸技術出現了,區別於傳統的一根信號線一根地線(在PCB中就是公用地)的做法,差分傳輸在這兩根線上都傳輸信號,這兩個信號的振幅相等,相位相反,例如網線中的雙絞線就利用差分傳輸技術。一種比較常見的差分傳輸的電平標準叫LVDS(Low Voltage Differential Signal,用的也比較多,因為沒有專利費),如下圖:

LVDS翻轉電壓只有350mv對應比較小的雜訊容限,但是LVDS本身是不容易被干擾,如圖線圖中,差分信號分別在AB兩路上傳輸,雖然單獨看A和B都收到很大的干擾影響,但是他們差值A-B則受到的干擾影響小很多,這個過程叫共模干擾抑制(Common Mode Rejection )。另外,較小的翻轉電壓能支持高速信號傳輸。

我對題主所發的樹莓派的開發板不太了解,但是大體上,如果是連接內存的差分線採用的應該是LVDS標準,顯示方面如果支持的是普通RGB高清LCD屏幕,差分線採用的也應該是LVDS標準(沒有專利費),如果支持的是HDMI估計採用的是TMDS標準,具體這兩個標準有什麼差別,感興趣的話可以查查資料什麼的。

二、蛇形走線的作用。

蛇形走線是為了保證電路時序約束的正確。數字電路中高低電平相互翻轉的時候是需要時間的,為了保證在接受端電平能被正確的採樣,通常會預留一點時間給信號電平建立起來,同樣,正確的採樣也需要一點時間,就需要信號翻轉到某個電平後保持一段時間。這就是所謂的setup time和holdup time。

如上圖,左邊紅色的Ts是setup time,右邊Th是holdup
time。對於一個導線上傳輸信號來說了最大的時間延遲 Tdelay=Tclk(工作時鐘)-Ts-Th。對於多個導線信號傳輸的情況,如果他們之間的長度差距過長,信號在導線走的路線長短不一樣,造成的時延差大過Tdelay,則接收端就會接收錯誤。

上面兩張圖是從TI某款DAC晶元手冊上截出來的,可以看出這個時鐘晶元上升沿和下降沿都是要採樣數據的。有一點讓人疑惑了,為什麼 Ts時間為0,這是因為該DAC晶元對於數據來說是輸入端,自身沒有要求,而實際上數據從驅動端到輸入端,電平翻轉建立是需要時間的,如下圖是該DAC晶元自己輸出的上升和下降時間(電壓從高電平電壓的10%升到90%,或者從90%降到10%)。

實際的Ts跟驅動器的能力,電路設計都有關係,我們取一個大概可能的值例如300(setup time是指信號建立並穩定的時間一般要比簡單上升或者下降時間大些)

可以算出Tdelay = 1000000/(2*625)-300-400 =100ps=0.1ns,既折算回導線之間最大的長度差L= 0.1* 299792458(光速)/10^9 = 0.012m=1.2cm。所以導線之間最大的布線距離差在此種情況下估算不能超過1.2cm。

在高速電路的PCB布線中,因為器件位置的影響,有些位置的導線天生的長些,有些會短,所以為了保證時序約束的正確性,使得有些位置的導線多走些路,保證走過的距離差不多,時延差也差不多。

另外,在板級系統設計上,時延約束並不是一個特別大的問題,這是因為板級系統的時鐘工作頻率不會特別高。實際上,時延約束在晶元級系統的設計上才是一個比較難解決的問題,因為晶元的工作頻率動輒上G,對於時延要求很高,通常攻(dan)城(shen)獅(gou)要耗費大量的工作在優化邏輯門電路的布局和布線上。

以上,第一次回答問題,順序比較亂,請大家指正,謝謝了。


借鑒嘯風院士的姿勢----------------------------------------------------------------- 在 PCB 設計中,等長走線主要是針對一些高速的並行匯流排來講的。由於這類並行匯流排往往有多根數據信號基於同一個時鐘採樣,每個時鐘周期可能要採樣兩次(DDR SDRAM)甚至 4 次,而隨著晶元運行頻率的提高,信號傳輸延遲對時序的影響的比重越來越大,為了保證在數據採樣點(時鐘的上升沿或者下降沿)能正確採集所有信號的值,就必須對信號傳輸的延遲進行控制。等長走線的目的就是為了儘可能的減少所有相關信號在 PCB 上的傳輸延遲的差異。

至於 USB/SATA/PCIE 等串列信號,並沒有上述並行匯流排的時鐘概念,其時鐘是隱含在串列數據中的。數據發送方將時鐘包含在數據中發出,數據接收方通過接收到的數據恢復出時鐘信號。這類串列匯流排沒有上述並行匯流排等長布線的概念。但因為這些串列信號都採用差分信號,為了保證差分信號的信號質量,對差分信號對的布線一般會要求等長且按匯流排規範的要求進行阻抗匹配的控制。

等長線常用在高速存儲器的地址和數據線上,簡而言之,等長線的作用,就是讓信號傳輸的速度一致。

低速信號就無需特別注意線長度了,信號頻率較低的話,由導線長度引起的延時不足以影響正常時序,所以無需等長。但是你保持等長也好,這是一種良好的設計習慣。

還有一點就是並不是說高速信號就是頻率比較高的信號,低速信號就是頻率比較低的信號——是不是高速信號,主要取決於是不是上升沿很陡,也就是說,上升沿越陡,就是個高速信號,反之就是低速信號。這點要和高頻信號和低頻信號區分開。高速信號通過PCB走線進行傳輸的時候會發生一些問題,影響時域的波形,造成振鈴,回溝,過沖,串擾等一些現象,從而造成一些時序問題。

所以在高速PCB設計時應注意信號完整性,建議看看Eric Bogatin的信號完整性分析。


保證連接到同一個晶元上的所有信號線都同樣長度,減小時差錯誤,保證所有針腳信號同時達到。


DDR走線中時鐘找線,數據線,地址線都需要做相對延時約束和等長約束。蛇形線就是為了能夠做到等長匹配的。


左邊是差分信號,要求等長等間距,下方是高速並行信號,要求繞等長,高速信號對各個信號的上升沿或者下降沿的到達時間誤差要求比較高。都是PCB布線的要求啦。目的都是保證信號質量,高速的要求比較高


題主,這就是傳說中的「蛇皮走位」。QAQ。等長布線啦~


蛇形走線 目的是控制組與組之間的延時,需要滿足3W規則。


同步DDR內存信號時序


推薦閱讀:

鎚子手機 Smartisan T1 的電路板設計 (PCB layout Design) 水平如何?

TAG:計算機科學 | PCB | 電路板 | 樹莓派RaspberryPi |