DPHY初始化
DPHY需要完成初始化, 當(dāng)clock lane和data lane的init_done置高, 以及stopstate拉高, 標(biāo)志著初始化完成。?見(jiàn)下圖。
給到DPHY的Core_clk需要時(shí)200MHz, free-running的時(shí)鐘, 這個(gè)時(shí)鐘可以來(lái)自版上時(shí)鐘晶振, 或者FPGA內(nèi)單獨(dú)的MMCM/PLL, 但該時(shí)鐘不能來(lái)自與兩個(gè)級(jí)聯(lián)的MMCM。
另外需要注意的是, 所有給到DPHY的時(shí)鐘需要滿足+/-100PPM, 不滿足該要求可能會(huì)導(dǎo)致數(shù)據(jù)出錯(cuò)或者重復(fù)數(shù)據(jù)。
Core_rst, 如圖所示, 需要assert至少四十個(gè)dphy_clk_200M cycle, 然后才能釋放。
在上電后, 當(dāng)master DPHY發(fā)給slave D-PHY的cp/cn(clock lane)和dp/dn(data lane)保持在LP-11超過(guò)T_INIT時(shí)間, 初始化完成. T_INIT必須大于100us。
MIPI CSI-2 RX Subsystem時(shí)鐘要求
當(dāng)line rate < 1500Mbps, video_aclk1 = Line Rate(Mb/s)*Data Lanes/(8*4), 同是, 還需要滿足輸出的帶寬大于等于輸入帶寬, video_aclk2 = (Line Rate(Mb/s)*Data Lanes) /(Pixels per Clock*Number of Bits Per Pixel). 因此, video_aclk需要同時(shí)大于這兩個(gè)數(shù)值。
當(dāng)line rate> 1500Mbps, 只需要滿足輸出的帶寬大于等于輸入帶寬, video_aclk >= (Line Rate(Mb/s)*Data Lanes) /(Pixels per Clock*Number of Bits Per Pixel)。
當(dāng)沒(méi)有VFB并且line rate < 1500Mbps, video_aclk >= Line Rate(Mb/s)*Data Lanes/(8*4)。
當(dāng)沒(méi)有VFB并且line rate > 1500Mbps, video_aclk >= rxbyteclkhs。
對(duì)于UltraScale +, 滿足timing的Video_aclk最大值是250MHz, 7 series是150MHz, 如果需要提高吞吐量, 可以增加pixel per clock。
Lite_aclk應(yīng)該小于等于video_aclk。
Demo例程
PG232提供了幾個(gè)demo, 如下, 這些demo可以用來(lái)作為參考和幫助debug。
Debug建議
下圖是DPHY的流程圖, 在PHY完成初始化后,clock lane切換到HS mode, 然后data lane切換到HS mode, 開(kāi)始接收數(shù)據(jù)。
初始化完成后,可以讀MIPI CSI-2 RX subsystem IP的所有寄存器。比如,Core Configuration Register (0x00)的bit 0 (Core Enable)有沒(méi)有打開(kāi)。
Timing有沒(méi)有滿足。
Video_aclk有沒(méi)有IP要求。
Interrupt Status Register (0x24) bit 21(Incorrect Lane configuration)有沒(méi)有置高。
Interrupt Status Register (0x24) line buffer full有沒(méi)有置位,如果是,一般是輸入快于輸出, 可以考慮增加pixels per clock, 降低line rate。
如果MIPI CSI-2 RX Subsystem沒(méi)有收到packets, 那么可能sensor沒(méi)有發(fā)數(shù)據(jù), 或者, Frame end packets沒(méi)有收到, 或者ECC校驗(yàn)沒(méi)有通過(guò).這時(shí)候可以觀測(cè)DPHY的DL_STATUS Register的PKT_CNT,確認(rèn)packets有沒(méi)有增加. 如果沒(méi)有增加, 進(jìn)一步檢查DPHY的輸入和輸出.檢查MIPI CSI-2 RX Subsystem的Interrupt Status Register的ECC錯(cuò)誤, 如果看到很多的ECC 2-bit錯(cuò)誤, 那么就是ECC檢驗(yàn)沒(méi)有通過(guò)。
如果看到SoT Error, SoT sync Error或者 ECC 1-bit, ECC 2-bit, CRC錯(cuò)誤, 一個(gè)可能是sensor和MIPI CSI-2 RX Subsystem Lane position mismatch,需要檢查是否first byte of the packet在lane 0, 然后next byte在lane 1. 另外一個(gè)就可能是sensor的輸出timing問(wèn)題, 可以嘗試調(diào)整DPHY的HS_SETTLE,當(dāng)然, 也有可能是SI問(wèn)題。
編輯:黃飛
?
評(píng)論
查看更多