MIPI(移動行業(yè)處理器接口)是Mobile Industry Processor Interface的縮寫,是MIPI聯(lián)盟發(fā)起的為移動應(yīng)?處理器制定的開放標(biāo)準(zhǔn)。MIPI采?高速串行接口傳輸數(shù)據(jù),滿?高分辨率攝像頭的傳輸需求,采用串行接口方便PCB布局布線,提高信號完整性,也有利于減小PCB面積。MIPI接口的攝像頭一般體積較小,適合于小型的嵌入式設(shè)備,比如手機(jī)和行車記錄儀等,同時也廣泛應(yīng)用到AI端上推理設(shè)備。本文以百度的端上推理設(shè)備EdgeBoard作為原型來介紹MIPI相關(guān)技術(shù)的開發(fā)。如果用戶購買EdgeBoard,出廠的鏡像中帶有MIPI的功能,只需再購買推薦的MIPI攝像頭,即可實(shí)現(xiàn)即插即用。
MIPI介紹
MIPI接口分為兩類,一是DSI (Display Serial Interface),提供處理器和顯示模組之間的高速串行接口;二是CSI (Camera Serial Interface),提供處理器和攝像模組之間的高速串行接口。本文將要介紹的是CSI-2。
MIPI信號采用低壓差分信號進(jìn)行傳輸,具有傳輸速率快,抗干擾能力強(qiáng)的特點(diǎn)。MIPI的傳輸模式分為低速信號模式和高速信號模式,低速信號用于控制命令(10 MHz),高速信號用于數(shù)據(jù)傳輸(80Mbps -1Gbps/lane)。時鐘處于非連續(xù)工作狀態(tài),根據(jù)傳輸狀態(tài)進(jìn)行時鐘的切換,這樣可以極大地降低功耗。關(guān)于D-PHY可參考MIPI??Alliance Specification for D-PHY。
MIPI最多可支持4通道數(shù)據(jù),同時配有IIC總線進(jìn)行配置,收發(fā)接口如下圖:
MIPI協(xié)議也是采用類似于以太網(wǎng)協(xié)議結(jié)構(gòu),采用分層設(shè)計(jì)的思想,分為PHY Layer,Protocal Layer和Application Layer。
MIPI傳輸?shù)膱?bào)文中定義了圖像數(shù)據(jù)的類型/格式(Data type),這些類型/格式方便在調(diào)試的時候確定鏈路是否工作正常,常用的Data Type如下圖,比如YUV的數(shù)據(jù)格式的標(biāo)示符是0x18到0x1F,期間的數(shù)值定義了具體的格式,比如YUV422,YUV444等,具體可參考MIPI Alliance Specification for CameraSerial Interface 2。
硬件相關(guān)
MIPI?電平
MIPI的電平標(biāo)準(zhǔn)分為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的數(shù)據(jù)率很高時,比如lane rate高于1000Mbps,需要開啟100R的termination。
2、?如果使用K7系列的芯片,由于其不支持MIPI_PHY_DCI電平,可以通過LVDS電平轉(zhuǎn)換而來,可以參考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必須設(shè)定為1.2V,同時BANK的VREF推薦端接240R。如果Bank中有其他電平標(biāo)準(zhǔn),比如1.8V的電平,在implementation過程中會報(bào)錯。
3.?MIPI-CSI-RX IP帶有Pin assignment的功能,可進(jìn)行引腳分配的驗(yàn)證,參考后文的MIPI IP?配置。
Layout
D-PHY的標(biāo)準(zhǔn)規(guī)定總的傳輸延遲不能超過2 ns,對應(yīng)到FR4材質(zhì)的PCB最大的走線長度是25cm到30cm,包括從發(fā)送端到接收端,這決定了MIPI支持的傳輸距離在30cm左右,參考AN-1337D-PHY。同時PCB走線必須匹配100歐姆的端接。
EdgeBoard的MIPI
EdgeBoard的MIPI最多支持4通道,可以根據(jù)需要選擇性使用,用戶通過排線與EdgeBoard連接即可,注意排線不要過長,最好小于10cm。
開發(fā)
Vivado
Vivado工具中的視頻IP也是在逐步開發(fā)完善中,其中難免會遇到各種意想不到的bug,不過好在Xilinx的官方論壇維護(hù)地很好,只要發(fā)帖提問,短時間內(nèi)就會得到專門技術(shù)人員的回答,同時針對出現(xiàn)的Bug,Xilinx官方也會定期發(fā)布相應(yīng)的patch,Video論壇中積攢的各種帖子也為后續(xù)的開發(fā)者提供了解決問題的途徑。
1.?如果使用2017版本的Vivado,MIPI CSI RX IP不能處理MIPI鏡頭時鐘缺失的問題,參考AR70581。解決該問題,參考AR70530打patch,patch打成功之后,在Vivado軟件界面提示AR70530。如果使用2018之后的版本,則不存在這個問題,不需要打patch。
2.?MIPI-CSI-RX license 需要購買才能使用,功能驗(yàn)證階段可以在Xilinx官網(wǎng)申請Evaluation license,但是用evaluation license生成的bit文件,會間歇性停止工作,無法用到真正的產(chǎn)品里面。
License申請參考下文申請Xilinx Evaluation License
3. Github也有開源的MIPI CSI2 IP,該IP針對Xilinx 7 Series FPGA,可以支持到4K的分辨率,采用VHDL開發(fā),但僅支持4通道的MIPI攝像頭。
4. 推薦使用2018.3及以上的版本進(jìn)行MIPI的開發(fā)。
MIPI IP的配置
1.?根據(jù)MIPI攝像頭的參數(shù)進(jìn)行基本的設(shè)置,主要包括顏色格式、通道數(shù)、線速率等。其中線速率最好高于MIPI攝像頭的速率,在MIPI IP的內(nèi)部有一個FIFO緩沖數(shù)據(jù),MIPI IP讀出速率高于MIPI鏡頭的寫入速度,可以確保不丟幀。
2.?在硬件設(shè)計(jì)之前就需要進(jìn)行引腳驗(yàn)證,由于MIPI對于引腳要求相對苛刻,謹(jǐn)慎為好。
MIPI?后續(xù)處理IP
前面的MIPI IP只是負(fù)責(zé)從前端攝像頭拿到數(shù)據(jù),還需要其他IP進(jìn)行后續(xù)的處理才能得到完整的視頻。
Demosaic
也稱之為interolation,通過相鄰像素的色彩經(jīng)過插值算法構(gòu)建出一副標(biāo)準(zhǔn)色彩的圖像,實(shí)現(xiàn)Bayer到RGB的轉(zhuǎn)換。
攝像頭的感光sensor輸出的每個像素不是標(biāo)準(zhǔn)的RGB,每個像素只是三原色中的一種,后期通過插值算法恢復(fù)出RGB標(biāo)準(zhǔn)顏色,該方法由柯達(dá)科學(xué)家Bayer博士提出,該方法被稱之為Bayer濾色。
感光sensor內(nèi)部帶有color filter array(濾色鏡),通過放置不同的原色的filter過濾出單個像素的顏色,每個像素是單個的色彩(RGB中的一種),也稱之為RAW數(shù)據(jù),后端ISP中通過插值算法恢復(fù)到標(biāo)準(zhǔn)的RGB。下圖是兩種濾色方法,一種是RGB,一種是CMY(印刷四分色模式)。
NOTE:?使用Demosaic IP時,需要制定sensor的左上角的第一個像素是什么顏色,不同的sensor起始像素顏色不同。在Demosaic 的?BAYER_PHASE (0x0028) Register 中進(jìn)行設(shè)定,參考文檔SensorDemosaic。
IP 配置如下:設(shè)定每個時鐘的像素個數(shù),像素?cái)?shù)據(jù)寬度以及分辨率。
Gamma Correcttion
Gamma矯正的目的是將線性亮度信號或者RGB編碼矯正成適合顯示器顯示的非線性數(shù)據(jù)。IP使用Gamma LUT,該IP免費(fèi),具體配置見下圖。
Video Process Subsystem
Video process subsystem IP具有視頻處理的多種功能,針對MIPI可以使用color space conversion,實(shí)現(xiàn)YUV444或者RGB色彩的矯正,提升視覺效果。
注:以上的IP設(shè)置均基于Vivado 2017.4版本,2018及以上版本會略有不同,根據(jù)我們的開發(fā)經(jīng)驗(yàn),推薦使用2018.3版本。
EdgeBoard中MIPI攝像頭數(shù)據(jù)流
EdgeBoard中MIPI攝像頭數(shù)據(jù)流如下圖,當(dāng)用戶購買EdgeBoard后,然后搭配我們推薦的MIPI攝像頭,即可做到即插即用。
? ? ??關(guān)鍵寄存器
Xilinx MIPI IP和D-PHY對于開發(fā)者來說是黑盒子,如果開發(fā)中遇到問題,只能通過寄存器的方式來跟蹤問題,現(xiàn)介紹一些關(guān)鍵的寄存器。通過跟蹤這些寄存器的狀態(tài),可以定位排查問題。
D-PHY關(guān)鍵寄存器
首先是判斷D-PHY的工作狀態(tài),在MIPI IP設(shè)置中需要Enable D-PHY Register Interface。
1. Control Register
? ? 1. 查看D-PHY是否已經(jīng)使能
2. CL_STATUS Register(CL -> Clock Lane)
? ? 1. 查看clock lane是否處于stop狀態(tài)
? ? 2. 查看通道是否完成初始化
? ? 3. 查看工作模式
3. DL_STATUS Register (DL -> Data Lane)
? ? 1. 查看data lane是否處于stop狀態(tài)
? ? 2. 查看通道是否完成初始化
? ? 3. 查看工作模式
CSI2-RX?關(guān)鍵寄存器
1. Core Configuration Register
? ?1. Enable core
2. Protocal Configuration Register
? ?1. Lane number:硬件沒問題的話,可以看到MIPI攝像頭使用的通道數(shù)
3. Core Status Register
? ?1. 統(tǒng)計(jì)收到的packet
4. 查看FIFO是否滿,如果數(shù)據(jù)及時讀出,是不會出現(xiàn)滿的情況
5. Interrupt Status Register
? ?1. 這是排查問題的重要寄存器,各種問題引起的中斷都會寫入到該寄存器中
6. 如果出現(xiàn)ECC的錯誤,大概率是硬件信號完整性問題
7. Generic short Packet Register
? ?1. 查看圖像格式,在該寄存器能看到對的Data Type,基本可以說明硬件設(shè)計(jì)沒問題
8. Clock Lane Information Register
? ?1. 查看?clock的工作狀態(tài)
9. Lane Information Register
? ?1. 查看每個lane的工作狀態(tài),每個lane不是始終處于工作狀態(tài),也會處于inactive狀態(tài)
附:申請Xilinx Evaluation License
1.?首先需要有一個Xilinx官方賬號,然后進(jìn)入到Evaluation License網(wǎng)址進(jìn)行申請,申請界面如下:
2.?點(diǎn)擊search now,輸入mipi關(guān)鍵字,勾選MIPI RX
3.?Evaluation License需要綁定主機(jī)的MAC地址,點(diǎn)擊Generate Node-Locked License,然后設(shè)置需要綁定的MAC地址
? ? ??4.?很快在個人注冊的郵箱里會收到Xilinx官方發(fā)布的lic文件,將其導(dǎo)入到Vivado工具即可。
NOTE:Evaluation License僅限于測試MIPI IP和MIPI攝像頭的工作狀態(tài),不可用于發(fā)布產(chǎn)品,其內(nèi)部帶有計(jì)數(shù)器,連續(xù)使用幾小時后會停止工作。
評論
查看更多