快速掌握MIPI開發攻略,對接百度人工智能計算卡EdgeBoard


 

 

MIPI(移動行業處理器接口)是Mobile Industry Processor Interface的縮寫,是MIPI聯盟發起的為移動應⽤處理器制定的開放標准。MIPI采⽤高速串行接口傳輸數據,滿⾜高分辨率攝像頭的傳輸需求,采用串行接口方便PCB布局布線,提高信號完整性,也有利於減小PCB面積。MIPI接口的攝像頭一般體積較小,適合於小型的嵌入式設備,比如手機和行車記錄儀等,同時也廣泛應用到AI端上推理設備。本文以百度的端上推理設備EdgeBoard作為原型來介紹MIPI相關技術的開發。如果用戶購買EdgeBoard,出廠的鏡像中帶有MIPI的功能,只需再購買推薦的MIPI攝像頭,即可實現即插即用。

MIPI介紹

MIPI接口分為兩類,一是DSI (Display Serial Interface),提供處理器和顯示模組之間的高速串行接口;二是CSI (Camera Serial Interface),提供處理器和攝像模組之間的高速串行接口。本文將要介紹的是CSI-2。

MIPI信號采用低壓差分信號進行傳輸,具有傳輸速率快,抗干擾能力強的特點。MIPI的傳輸模式分為低速信號模式和高速信號模式,低速信號用於控制命令(10 MHz),高速信號用於數據傳輸(80Mbps -1Gbps/lane)。時鍾處於非連續工作狀態,根據傳輸狀態進行時鍾的切換,這樣可以極大地降低功耗。關於D-PHY可參考MIPI® Alliance Specification for D-PHY

MIPI最多可支持4通道數據,同時配有IIC總線進行配置,收發接口如下圖:

MIPI協議也是采用類似於以太網協議結構,采用分層設計的思想,分為PHY Layer,Protocal Layer和Application Layer。

 

MIPI傳輸的報文中定義了圖像數據的類型/格式(Data type),這些類型/格式方便在調試的時候確定鏈路是否工作正常,常用的Data Type如下圖,比如YUV的數據格式的標示符是0x18到0x1F,期間的數值定義了具體的格式,比如YUV422,YUV444等,具體可參考MIPI Alliance Specification for CameraSerial Interface 2

硬件相關

MIPI 電平

MIPI的電平標准分為LP (Low Power)模式和HP(High Power)模式,LP模式下高電平最大值1.3V,最小1.1V,典型值為1.2V,HP模式下共模電平200mv,擺幅200mV。

D-PHY

1、 Ultrascale系列的FPGA使用MIPI_PHY_DCI 的電平,digital control impedence,如果是mipi的數據率很高時,比如lane rate高於1000Mbps,需要開啟100R的termination。

2、 如果使用K7系列的芯片,由於其不支持MIPI_PHY_DCI電平,可以通過LVDS電平轉換而來,可以參考Xilinx的官方文檔 D-PHY solutionsXAPP894,提供了完整D-PHY層的解決方案。

Note1: 對於Vivado 2018.2以下的版本,如果MIPI線速率很高,比如1500Mbps,需要在xdc約束文件中添加termination約束,針對Ultrascale芯片,做以下操作:

MIPI引腳分配和BANK電壓

1. EdgeBoard中使用的是Xilinx Ultrascale+系列的MPSoC,MIPI 的IO必須放置在HP Bank。

2. MIPI_PHY_DCI的電平對Bank的要求苛刻,Bank的VCCO必須設定為1.2V,同時BANK的VREF推薦端接240R。如果Bank中有其他電平標准,比如1.8V的電平,在implementation過程中會報錯。

3. MIPI-CSI-RX IP帶有Pin assignment的功能,可進行引腳分配的驗證,參考后文的MIPI IP 配置。

Layout

D-PHY的標准規定總的傳輸延遲不能超過2 ns,對應到FR4材質的PCB最大的走線長度是25cm到30cm,包括從發送端到接收端,這決定了MIPI支持的傳輸距離在30cm左右,參考AN-1337D-PHY。同時PCB走線必須匹配100歐姆的端接。

EdgeBoardMIPI

EdgeBoard的MIPI最多支持4通道,可以根據需要選擇性使用,用戶通過排線與EdgeBoard連接即可,注意排線不要過長,最好小於10cm。

開發

Vivado

Vivado工具中的視頻IP也是在逐步開發完善中,其中難免會遇到各種意想不到的bug,不過好在Xilinx的官方論壇維護地很好,只要發帖提問,短時間內就會得到專門技術人員的回答,同時針對出現的Bug,Xilinx官方也會定期發布相應的patch,Video論壇中積攢的各種帖子也為后續的開發者提供了解決問題的途徑。

1. 如果使用2017版本的Vivado,MIPI CSI RX IP不能處理MIPI鏡頭時鍾缺失的問題,參考AR70581。解決該問題,參考AR70530打patch,patch打成功之后,在Vivado軟件界面提示AR70530。如果使用2018之后的版本,則不存在這個問題,不需要打patch。

2. MIPI-CSI-RX license 需要購買才能使用,功能驗證階段可以在Xilinx官網申請Evaluation license,但是用evaluation license生成的bit文件,會間歇性停止工作,無法用到真正的產品里面。

License申請參考下文申請Xilinx Evaluation License

3. Github也有開源的MIPI CSI2 IP,該IP針對Xilinx 7 Series FPGA,可以支持到4K的分辨率,采用VHDL開發,但僅支持4通道的MIPI攝像頭。

4. 推薦使用2018.3及以上的版本進行MIPI的開發。

MIPI IP的配置

1. 根據MIPI攝像頭的參數進行基本的設置,主要包括顏色格式、通道數、線速率等。其中線速率最好高於MIPI攝像頭的速率,在MIPI IP的內部有一個FIFO緩沖數據,MIPI IP讀出速率高於MIPI鏡頭的寫入速度,可以確保不丟幀。

2. 在硬件設計之前就需要進行引腳驗證,由於MIPI對於引腳要求相對苛刻,謹慎為好。

MIPI 后續處理IP

前面的MIPI IP只是負責從前端攝像頭拿到數據,還需要其他IP進行后續的處理才能得到完整的視頻。

Demosaic

也稱之為interolation,通過相鄰像素的色彩經過插值算法構建出一副標准色彩的圖像,實現Bayer到RGB的轉換。

攝像頭的感光sensor輸出的每個像素不是標准的RGB,每個像素只是三原色中的一種,后期通過插值算法恢復出RGB標准顏色,該方法由柯達科學家Bayer博士提出,該方法被稱之為Bayer濾色。

感光sensor內部帶有color filter array(濾色鏡),通過放置不同的原色的filter過濾出單個像素的顏色,每個像素是單個的色彩(RGB中的一種),也稱之為RAW數據,后端ISP中通過插值算法恢復到標准的RGB。下圖是兩種濾色方法,一種是RGB,一種是CMY(印刷四分色模式)。

NOTE: 使用Demosaic IP時,需要制定sensor的左上角的第一個像素是什么顏色,不同的sensor起始像素顏色不同。在Demosaic 的 BAYER_PHASE (0x0028) Register 中進行設定,參考文檔SensorDemosaic

IP 配置如下:設定每個時鍾的像素個數,像素數據寬度以及分辨率。

Gamma Correcttion

Gamma矯正的目的是將線性亮度信號或者RGB編碼矯正成適合顯示器顯示的非線性數據。IP使用Gamma LUT,該IP免費,具體配置見下圖。

Video Process Subsystem

Video process subsystem IP具有視頻處理的多種功能,針對MIPI可以使用color space conversion,實現YUV444或者RGB色彩的矯正,提升視覺效果。

注:以上的IP設置均基於Vivado 2017.4版本,2018及以上版本會略有不同,根據我們的開發經驗,推薦使用2018.3版本。

EdgeBoardMIPI攝像頭數據流

EdgeBoard中MIPI攝像頭數據流如下圖,當用戶購買EdgeBoard后,然后搭配我們推薦的MIPI攝像頭,即可做到即插即用。

關鍵寄存器

Xilinx MIPI IP和D-PHY對於開發者來說是黑盒子,如果開發中遇到問題,只能通過寄存器的方式來跟蹤問題,現介紹一些關鍵的寄存器。通過跟蹤這些寄存器的狀態,可以定位排查問題。

D-PHY關鍵寄存器

首先是判斷D-PHY的工作狀態,在MIPI IP設置中需要Enable D-PHY Register Interface。

1. Control Register

   1. 查看D-PHY是否已經使能

2. CL_STATUS Register(CL -> Clock Lane)

   1. 查看clock lane是否處於stop狀態

   2. 查看通道是否完成初始化

   3. 查看工作模式

3. DL_STATUS Register (DL -> Data Lane)

  1. 查看data lane是否處於stop狀態

  2. 查看通道是否完成初始化

  3. 查看工作模式

CSI2-RX 關鍵寄存器

1. Core Configuration Register

  1. Enable core

2. Protocal Configuration Register

  1. Lane number:硬件沒問題的話,可以看到MIPI攝像頭使用的通道數

3. Core Status Register

  1. 統計收到的packet

4. 查看FIFO是否滿,如果數據及時讀出,是不會出現滿的情況

5. Interrupt Status Register

  1. 這是排查問題的重要寄存器,各種問題引起的中斷都會寫入到該寄存器中

6. 如果出現ECC的錯誤,大概率是硬件信號完整性問題

7. Generic short Packet Register

  1. 查看圖像格式,在該寄存器能看到對的Data Type,基本可以說明硬件設計沒問題

8. Clock Lane Information Register

  1. 查看 clock的工作狀態

9. Lane Information Register

  1. 查看每個lane的工作狀態,每個lane不是始終處於工作狀態,也會處於inactive狀態

附:申請Xilinx Evaluation License

1. 首先需要有一個Xilinx官方賬號,然后進入到Evaluation License網址進行申請,申請界面如下:

2. 點擊search now,輸入mipi關鍵字,勾選MIPI RX

3. Evaluation License需要綁定主機的MAC地址,點擊 Generate Node-Locked License,然后設置需要綁定的MAC地址

4. 很快在個人注冊的郵箱里會收到Xilinx官方發布的lic文件,將其導入到Vivado工具即可。

NOTE:Evaluation License僅限於測試MIPI IP和MIPI攝像頭的工作狀態,不可用於發布產品,其內部帶有計數器,連續使用幾小時后會停止工作。

福利

據可靠小道消息:EdgeBoard正在打折中,歷史最低價,降價1000元,有興趣可以看看:https://aim.baidu.com/product/5b8d8817-9141-4cfc-ae58-640e2815dfd4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM