發表文章

Choosing Number of Lanes -MIPI CSI

圖片
先說結論: Data Rate (bit/sec) = Sensor Resolution (pixel) * Packet Data Ratio (bit/pixel) * FPS (frame/s) * Overhead # of CSI Lane = Data Rate / Data BW per lane 其中Sensor Resolution以及FPS如同其名,不需要另外解釋;Overhead則是包括了Blanking data 的一個估計比例,通常為1.2~1.35。 但Packet Data Ratio就比較有趣,會隨各Camera module傳送給MIPI CSI Receiver的Data Format不一致,在MIPI CSI-2 ver.1.00中就定義了20種Sensor Data Format。其中7種明訂為“Primary Data Format”,規範CSI-2 Transmitter需要支援至少其中一種,而Receiver則是7種都要支援: 1. YUV422 8bit - 傳輸形式為U->Y->V->Y->…,對應的Packet Data Ratio = 32/2 = 16 (bit/pixel) 2. RGB888 - 傳輸形式為B->G->R->…,Packet Data Ratio = 24 (bit/pixel) 3. RGB565 - B[4:0]->G[5:0]->R[4:0]->…,16bit為一Packet,Packet Data Ratio = 16 (bit/pixel) 4. RAW8 - Packet Data Ratio = 8 (bit/pixel) 5. RAW10 - Packing 10-bit data into 8-bit data format,將每四組多出來的2 bits組合成另一個Byte,Packet Data Ratio = 40/4 = 10 (bit/pixel) 6. Generic 8-bit Long Packet Data 7. User Defined Byte-based Data - S

Residual Voltage on I2C Bus that Could Lead to Logic Fail

圖片
前言: 本來計畫是想每週更新, 但一不小心怠惰就欠了好多債.. 這周末要來認真還債了! ------------------------------------------------------------------------------------------------------------------------- 今天遇到一個有趣的I2C問題:所設計的HDMI port外接螢幕時出現相容性問題,有些螢幕可以認到,有些卻不行。勾了DDC (Basically same as I2C)波型發現有些不正常的地方: 0. 這是HDMI HPD偵測到後的第一個I2C packet 1. 發現在5V domain,I2C Host無法下拉到0V,而是仍有~1.2V殘壓 => 造成Device端可能無法辨認到Logic low (V_IL, max = 0.3 * 5V = 1.5V),進而不同外接螢幕產生相容性問題。 2. 但第9個Bit (ACK from the device)看起來就可以被拉到接近0V,表示說只有在Host端Open-drain (OD) driver工作時會產生殘壓現象!? 3. 其實是後來才發現的第三點:在1V8 domain每個Falling edge其實起初都有往下拉,但又被快速充電回到約 ~ 0.35V (關鍵) 於是開始檢查起線路:這是個簡單用單顆NMOS做成的Level Shift 當Host output low (OD on)時,應該要將Bus左側(1v8 domain)拉到接近0V,而此時NMOS因VGS > VGS_th (max. ~1.5V in this case)而D-S導通將右側(5V domain)也下拉。就在此時突然發現上述第3點,其實起初Level Shift是正常運作下拉卻又被充電。原來是NMOS導通後從右側5V端多出個Sink current (Id_sink)須經由Host端流到地,但此時這Id_sink會對路線上的Cbus充電,結果充電造成NMOS VGS下降! 當VGS持續下降至無法滿足VGS > VGS_th時,NMOS兩側就無法再導通。左側bus上的電壓又會再經由OD被釋放而下拉(缺乏右側5V Id_sink的火力支援 lol)

High Speed Transmission - Fiber Weave Effect

圖片
隨著傳輸速度持續上升(5Gbps and beyond!),慢慢開始看到各大SoC廠商警告"Fiber Weave Effect"將會影響到較長的高速差分訊號。而究竟什麼是Fiber Weave Effect? 這要從PCB介電層結構看起,各層介電層在製造上其實是將一條條的玻璃材質編織線"上下、垂直地"交織而成,再依據所需的厚度和介電常數有不同的材質和密度可選擇(如圖)。 當一組高速差分訊號走在PCB上時,如上圖 紅色 藍色 線條組成一對差分走線 。 若仔細觀察就會發現當其中一條 長距離走在編織空隙 上時,其所對應到的 Er 值會將大於另一條訊號線,而 Er 值不同代表的結果是Time skew or phase skew(眼圖閉合、CMRR下降),進而失去差分訊號提高Bit rate的功用。這種因 介電層玻璃編織對高速差分走線造成的現象即為Fiber weave effect,且其編織密 度愈疏, 其造成的影響愈嚴重! 借用 網路上找到的資料 : Fiber weave effect is a statistical problem. It is not uncommon for PCB designs to have long parallel lengths of track routing without any bends or jogs. This is particularly true in large passive backplane designs. Because the fiber weave pattern tends to run parallel to the x-y axis, any traces running the same way will eventually encounter a situation of worst case timing skew if you build enough boards. This was demonstrated by Intel after compiling more than 58,000 TDR and TDT measurements over two years. In 2007, Jeff Loyer et al presented a

High Speed Transmission - Channel loss budget

圖片
前篇 介紹了傳輸通道造成的損耗(Loss)以及如何透過EQ補償。但EQ並不是萬能的,當Loss太大也就無法再被補償回復成可判讀的訊號了。設計PHY的IC廠商通常會提供設計建議如最大通道長度以及通道穿孔Via數量,這些建議的背後其實也就是為了控制Channel Loss Budget。 舉例:USB-IF 則是詳細地提供了針對USB 3.1 Gen1/Gen2對各種接口的Loss budget。 PS. For Gen1 (5Gbps) signal, the Nyquist frequency is 2.5GHz; for Gen2 (10Gbps) signal, the Nyquist frequency is 5GHz. 以SS Gen2來看,PCB板上Total Loss不可超出8.5dB (@5GHz)。 一般在設計初期,建議使用PCB simulation tool來計算各種High speed I/O的最大通道長度,以不超出Loss budget為規範來確定是否需要另外在通道上加入Signal re-conditioner IC。 例:IC Vendor規範PCB loss < 3dB,且依照板材參數計算出Loss = 0.693dB/inch,則通道最大長度則約為 4.33 inch。

High Speed Transmission - Intro.

圖片
隨著人們對運算能力的需求不斷增加,不同單元間的傳輸資料量也相應地節節上升。舉最常見的USB I/F為例:從USB2.0演進到USB3.1 Gen2,最大傳輸速度已經上升約20倍且來到了10Gbps per lane。這樣的趨勢對硬體工程師來說是個有趣的挑戰,原因要從訊號波型開始說起: 一個完美的訊號波型應該要像是上圖左:在0與1之間能夠瞬間轉換(方波),轉換得愈快速則此波型能夠傳輸資料的速度愈快(一樣時間內有更多0與1)。 而透過右側傅立葉分析可以可以觀察到頻譜組成,不難發現頻譜若能包含至愈高頻分量,此訊號波型愈能接近完美方波。可惜在現實生活中任何傳輸通道都具有損耗,即使在發送端(Tx)波型正確無誤,因通道損耗也可能會使得訊號在接受端(Rx)無法被正確讀取。 上圖是一常見FR4 PCB通道損耗特性,可以看到基本上呈現低通(Low-pass)特性,愈高頻分量損耗愈嚴重。有一點需要特別说明,真正影響訊號有效傳輸的並不是損耗本身,而是通道損耗隨著頻率變化。通道對訊號在高低頻分量間的損耗差異將會造成ISI(Inter-Symbol Interference)。如下圖,通道在高頻率區的加速衰減會導致訊號波型在高低轉換邊緣變緩,進而跨越到其他UI(Unit-Interval)而對訊號判讀造成干擾誤碼。通道的高低頻衰減差異愈大(有時會以通道頻寬來表示此概念),則愈容易造成誤碼。換句話說,高速訊號傳輸真正需要解決的並不是訊號損耗,而是高低頻訊號的損耗差。 除了通道材料自身的損耗特性外,通道上的元件、分支、通孔等也都會對通道頻率響應造成破壞。因此各種I/F PHY設計都會提供Design guidelines建議適合的走線設計,大方向是減少長度、避免殘線分支、減少通孔數量、以及Connector pad voiding。 通常我們會測量眼圖(Eye diagram)來判定所收到訊號的品質。眼圖是將訊號以UI為間隔不斷疊加而成,形狀類似於眼睛因而得名,只有當眼圖張開時,所得訊號的品質才能保證其誤碼率(Bit-error rate, BER)。 上圖左右分別顯示閉合及張開的眼圖,但實際上是測量至同一通道訊號,差別是右圖所測量的訊號有經過Equalization(EQ)處理。而常見EQ又可以分成Tx端的Pre-emphasis以及R

MIPI I3C - a new 2-Wire I/F aiming for growing sensor proliferation

圖片
前言: 一直想將工作或生活上所學到的東西整理起來, 一方面留下紀錄將來備查方便, 另一方面也是希望將來回頭看可以發現自己有完成些什麼(而不是一事無成lol)~~!! 總之, 第一篇就挑個簡單主題試試水溫囉. MIPI I3C - a new 2-Wire I/F aiming for growing sensor proliferation (相關參考文件可以在 MIPI alliance 下載, 正式spec需加入MIPI協會才能索取) 簡單來說, I3C是由MIPI協會由2013開始研究, 並於2016公開的一種新I/F spec. 從標題可以簡單地發現此種I/F由兩根實體走線組成, 而且是專門用於各種sensor與AP/Sensor hub之間溝通. 先說幾個結論: Vision - 將各種Sensor所需各式各樣的H/W wire (eg. IRQ, SLP_N, EN, DRDY, ..)簡化成兩條線! I2C Compatibility - Single Data Rate (SDR) mode可向下相容於目前十分普遍的I2C I/F. Lower Power - 與I2C相比大幅降低能耗(mJ per Megabit), 在Mobile use-case中可幫助提高Battery life. 主因為I3C spec在I/F physical layer (至少)將clock line (SCL)由"Open-drain"更改為"Push-pull" driving, 而此變動有助於改善耗電以及提高時脈. Higher Data Rates - 新定義出三種High Data Rate (HDR) mode: HDR-DDR, HDR-TSL/TSP. 目前看到的時脈為12.5MHz, 其中DDR mode較容易理解, 僅為增加SCL falling edge data latch (PS. I2C及I3C SDR mode僅在SCL rising edge latch data). HDR-TSL/TSP則是將SCL拿來當作第二條Data line, 並套用"Ternary Symbol Coding"以增加Data throughput