FPGA實現cameralink高清相機解碼

        關於cameralink協議基本原理,這裏不再贅述,CSDN和百度文庫有大量的關於cameralink協議解讀的文章,不過需要注意的是網上大量文章都是講述如何用解碼芯片(多是DS90CR288A),這些文章都寫得很好,講清了cameralink的原理。

只是這些文章絕大部分是基於芯片解碼,並不是完全由FPGA實現的,當時自己做設計的時候,有一個小地方被這些文章稍稍誤導了,主要是該芯片的數據組合順序很古怪,在FPGA裏面參考了這些組合順序,後面發現在FPGA裏面使用這種數據組合順序是錯的。

這裏將自己用FPGA實現FPGA實現2048*2048分辨率下  cameralink CMOS相機解碼的過程簡單記錄一下 。

1、相機是分辨率爲2048*2048的cameralink接口的黑白相機;傳感器使用SONY的CMOS SENSOR。

2、數據傳輸方式是LVDS,採用cameralink的Medium模式,採用A、B、C、D四個端口傳輸數據;E,F端口空置;

3、相機是8bit灰度數據,所以每個端口負責傳輸一個像素。

3、時鐘頻率是74.25M,每一個時鐘下傳輸4個像素的數據,等於是像素頻率是297M;

4、最容易錯的是解碼拿到數據以後數據的組合方式,如果看了芯片解碼的順序估計很多人都會犯暈的,不理解的。所以順序還是參考正常的LVDS解碼順序,如下圖,注意三個關鍵控制信號的位置;

5、下圖是截圖的24bit RGB屏幕的數據,其實是一樣的,把三個8位的R、G、B顏色數據換成cameralink裏面的三個8位的端口A、B、C即可。

                              

6、上圖可以清楚的解釋base模式下的數據傳輸方式,類似於lvds單通道傳輸。如果Medium模式,則就是LVDS的雙通道傳輸,再加一組數據通道即可,控制信號可以共用第一組中的DVAL、FVAL、LVAL

5、解碼以後再ila看到的結果

                                     

6、驗證行數是不是2048行,說明解碼非常完美

                                      

 

附////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

1、cameralink基礎原理

       視頻傳輸模式分爲三種配置:Base(基本或初級)配置爲一個Camera Link芯片,一根電纜; Medium(中檔或中級)配置爲兩個Camera Link芯片,一根電纜; Full(全部或高級)配置爲兩個Camera Link芯片,兩根電纜。

Base模式需要一塊ChannelLink的芯片和一個CameraLink機械接口,發送器在每個像素時鐘裏發送 28bits數據,包括4bits的圖像使能信號和24bits的圖像數據。4bits圖像使能信號包括:幀有效信號 (FVAL),高電平有效,它的反相即爲幀同步信號;行有效信號(LVAL),高電平有效,它的反相即爲行同步信號;數據有效信號(DVAL),只有在數據有效信號爲高電平時,圖像採集卡才接受圖像信息。24bits圖像數據可以是一個像素點的24-bitRGB數據、3個像素點的8-bit黑白圖像數據、12個像素點的10-bit12-bit的黑白圖像數據、一個像素點的14-bit16-bit的黑白圖像數據。

Medium模式需要兩塊Channe1Link的芯片和兩個CameraLink機械接口,發送器在每個像素時鐘裏發送4Obits數據,包括4bits的圖像使能信號和36bits的圖像數據。4bits圖像使能信號與Base模式下相同。36bits圖像數據可以是一個像素點的36-bit或30-bitRGB數據、4個像素點的8-bit黑白圖像數據、3到4個像素點的10-bit或12-bit的黑白圖像數據。

Full模式需要三塊Channe1Link的芯片和兩個CameraLink機械接口,發送器在每個像素時鐘裏發送68bits數據,包括4bits的圖像使能信號和64bits的圖像數據。4bits圖像使能信號與Base模式下相同。

端口分配

對於Base模式,28位數據信號中包括三個數據端口:A口(8位)、B口(8位)、C口(8位);四個視頻控制信號FVAL(幀有效)、DVAL(數據有效)、LVAL(行有效)、SPARE(空,暫時未用)。

在Base(初級)結構中,端口A,B和C被分配到唯一的Cameralink驅動器/接收器對上;在Medium(中級)結構中,端口A、B和C被分配到第一個驅動器接收器對上,端口D,E和F被分配到第二個驅動器/接收器對上;在FULL(高級)結構中,端口A、B和C被分配到第一個驅動器/接收器對上,端口D,E和F被分配到第二個驅動器/接收器對上,端口G和H被分配到第三個驅動器/接收器對上。

如果相機在每個週期內僅輸出一個像素,那麼就使用分配給像素A的端口;如果相機在每個週期內輸出兩個像素,那麼使用分配給像素A和像素B的端口;如果在每個週期內僅輸出三個像素,那麼就使用分配給像素A,B和C的端口;依此類推至相機每週期輸出八個像素,那麼分配給A到H的八個端口都將被使用。

 

///////////可以提供各種模式下的cameralink相機解碼方案 verilog代碼,QQ:296880551

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章