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