1.項目簡介
用索尼的imx264 sensor采集圖像,在內部模數轉換之后,由lvds接收,然后解碼,最后送給后端顯示
2.框圖
imx264配置成從模式,由spi總線配置,需要由FPGA提供 行、場信號,imx264根據接收到的行場信號輸出四路數據,FPGA用lvds IP核接收這四路數據,然后還原成正確的像素,再產生相應的行場,與數據一起送給后端顯示
3.時序
由時序圖可以看到,一幀一共2088行(有效行2048行),每行2656個像素點(有效像素點2448個)。每行有頭同步字和尾結束同步字。每個像素12bit,先送高位再送低位。
4.同步字
由同步字可以看出,一幀2088行分為通訊期(4行,無同步字),消隱期(16行,頭同步字fff,尾同步字AB0),信息行(1行),ob行(10行),像素邊緣行(8行,上4+下4),有效行2048行,尾消隱期(1行)。對應的同步字見圖。
5.lvds IP核配置
由於從imx264送過來的是差分時鍾和差分數據,所以配置成差分時鍾和差分數據,后面也沒什么東西了
6.仿真
說明
1.根據imx264的數據手冊,一幀圖像有2656*2088個像素點,每個像素12bit,35.7幀每秒。所以一共有2656*2088*12*35.7=2.376Gbps。一共分四路輸出,所以每路輸出的數據量為2.376/4=594mbps。因為是雙沿輸出數據,所以差分時鍾為594/2=297m。
2.在594m的時鍾下產生4路12bit數據,每個時鍾進行移位,12次移完。只看data1-data4的最高位。每個時鍾下data1-data4的最高位組成一個4bit的差分數據。這個由LVDS的配置決定。
3.lvds IP 核把4個4bit的數據組成一個16bit的數據數據,把最先進來的數據放在最低位,最后進來的數據放在最高位。我們需要把lvds輸出的數據進行解析,需要把3個16bit的數據還原成4個12bit的數據。
4.lvds輸出來的數據有兩種情況。看上圖lvds_d_p這個信號,LVDS IP核可能會把fo8a組成一個16bit的數據輸出,也可能把3af0組成一個16bit數據輸出。如果是f0a8這種輸出,f0是由后面的4個12bit數據產生的,8a是由前面4個12bit數據產生的。而且會根據上電,可能會來回切換,所以要准備兩種解析方式。代碼如下 lvds_data表示lvds IP核輸出的數據recover_data1核recover_data2表示兩種方式解析出來的數據。(如果lvds IP核里面的數據位寬配置成2,就不會出現這種情況)
7.輸出顯示
根據兩種方式解析出來的數據進行檢測同步字,根據同步字指示出有效數據,然后進行乒乓緩存,同時產生相應的行場信號,