新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 采用FPGA通過BT.656接口實現(xiàn)傳輸4路視頻流的方法

采用FPGA通過BT.656接口實現(xiàn)傳輸4路視頻流的方法

——
作者: 時間:2007-01-26 來源:《電子工程師》 收藏

引言

itu-r bt.656定義了一個并行的硬件接口用來傳送一路4:2:2的ycbcr的數(shù)字視頻流。視頻流的分辨率為720×576像素的d1格式。我們需要發(fā)送的視頻數(shù)據(jù)源通常是經過mpeg2壓縮的,分辨率為352×288像素的cif格式。在輸出到顯示終端前,處理器需要對cif格式的圖像數(shù)據(jù)插值為d1(720×576像素)格式,然后再通過itu-r bt.656并行的硬件接口輸出給視頻編碼器。在這種前提下,可以利用一個itu-r bt.656的硬件接口傳輸4路不同的cif格式的視頻數(shù)據(jù)流,然后在接收側通過fpga(現(xiàn)場可編程門陣列)將4路視頻數(shù)據(jù)流分離、插值生成d1格式的數(shù)據(jù)輸出給視頻編碼器。通過該方式,可以克服某些視頻處理器輸出端口的限制,使視頻輸出端口擴展為原來的4倍。同時,由于使用fpga進行插值運算,分擔了一部分視頻處理器的工作量。

本文引用地址:http://m.butianyuan.cn/article/21012.htm

1 硬件連接

圖1展示了一個bt.656并行硬件接口用來連接一個視頻處理器和視頻編碼器的情況。該硬件接口由8根數(shù)據(jù)信號和1根時鐘信號組成。

圖2所示是通過fpga擴展4路視頻的連接方式。fpga通過bt.656接口接收視頻處理器發(fā)出的數(shù)據(jù)信號,然后將4路視頻信號分離、插值后通過4路bt.656并行硬件接口輸出到4個視頻編碼器,實現(xiàn)視頻處理器一個視頻輸出端口同時輸出4路視頻信號。

2 數(shù)據(jù)結構

2.1 標準bt.656并行數(shù)據(jù)結構

bt.656并行接口除了傳輸4:2:2的ycbcr視頻數(shù)據(jù)流外,還有行、列同步所用的控制信號。如圖3所示,一幀圖像數(shù)據(jù)由一個625行、每行1 728字節(jié)的數(shù)據(jù)塊組成。其中,23~311行是偶數(shù)場視頻數(shù)據(jù),336~624行是奇數(shù)場視頻數(shù)據(jù),其余為垂直控制信號。

bt.656每行的數(shù)據(jù)結構如圖4所示。

圖4中,每行數(shù)據(jù)包含水平控制信號和ycbcr。視頻數(shù)據(jù)信號。視頻數(shù)據(jù)信號排列順序為cb-y-cr-y。每行開始的288字節(jié)為行控制信號,開始的4字節(jié)為eav信號(有效視頻結束),緊接著280個固定填充數(shù)據(jù),最后是4字節(jié)的sav信號(有效視頻起始)。

sav和eav信號有3字節(jié)的前導:ff、ff、00;最后1字節(jié)xy表示該行位于整個數(shù)據(jù)幀的位置及如何區(qū)分sav、eav。xy字節(jié)各比特位含義見圖5。

圖5中,最高位bit7為固定數(shù)據(jù)1;f=0表示偶數(shù)場,f=1表示奇數(shù)場;v=0表示該行為有效視頻數(shù)據(jù),v=1表示該行沒有有效視頻數(shù)據(jù);h=0表示為sav信號,h=1表示為eav信號;p3~p0為保護信號,由f、v、h信號計算生成;p3=v異或h;p2=f異或h;p1=f異或v;p0=f異或v異或h。

2.2 使用bt.656并行接口傳輸4路cif格式視頻的數(shù)據(jù)結構

視頻處理器的輸出是靈活多變的,可以改變處理器的輸出數(shù)據(jù)結構來同時傳送4路252×288像素的視頻信號。bt.656并行接口傳輸?shù)挠行б曨l數(shù)據(jù)流為720×586,正好可以分割為4個360×288像素的空間來傳輸4路352×288像素的視頻數(shù)據(jù)。多余的空間用固定數(shù)據(jù)“8010”進行填充。

修改后的數(shù)據(jù)結構如圖6所示。

原來存放第1場的數(shù)據(jù)的位置用來存放第1、第2路視頻數(shù)據(jù);原來存放第2場的數(shù)據(jù)的位置用來存放第3、第4路視頻數(shù)據(jù)。

3 fpga實現(xiàn)的功能

fpga主要用來完成4路352×288像素視頻流的分離,以及將視頻流插值到標準bt.656接口所需的720×586像素的分辨率。同時,該fpga還要重新生成sav、eav幀控制信號,結合插值后的4路視頻流產生新的符合bt.656結構的數(shù)據(jù)幀傳送給視頻編碼設備。其功能框圖如圖7所示。

首先,4路352×288像素的視頻流從bt.656結構的幀結構中分離出來,分別存儲到各自的存儲空間。然后,352×288像素的視頻流被讀取、插值為704×288像素,然后再填充為720×288像素的視頻流。在成幀的模塊中,產生bt.656的幀結構所需的sav、eav信號;將插值生成的720×288像素的數(shù)據(jù)作為偶數(shù)場的數(shù)據(jù)填入bt.656的幀結構中,奇數(shù)場的數(shù)據(jù)復制偶數(shù)場的數(shù)據(jù)。最后,將生成的bt.656標準視頻流發(fā)送給視頻編碼器輸出到顯示終端上。

3.1 存儲器選擇

由于需要同時存儲4路352×288的視頻流,需要的存儲空間為4路×288行×352×2字節(jié)(視頻流為4:2:2的ycbcr信號,一個點通過亮度信號和色差信號來表示,所以圖像的一個點實際占用2字節(jié))。計算可得需要800 kb左右的空間。低成本的fpga內部很難提供如此多的存儲空間,可以外掛一片1mb容量的sram用于存儲視頻數(shù)據(jù)。

bt.656接口定義的時鐘頻率為27 mhz。sram要能提供1路8 bit×27 mhz數(shù)據(jù)寫入,4路8bit×27 mhz讀出,總共1gbit/s以上的數(shù)據(jù)帶寬??梢赃x擇位寬為16 bit、工作時鐘頻率100 mhz、帶寬為1.6gbit/s的sram。

3.2 插值算法

將352×288像素的原始視頻流變換為714×288像素的視頻流就需要進行插值。該插值運算是一維的,也就是說只需要加倍每行的點數(shù)而行數(shù)不變。插值運算前,應該先將y、cb、cr信號分離,然后分別對y、cb、cr信號進行插值。簡單的插值法有最近鄰域法和線性插值法等。最近鄰域法是插入點的值簡單復制鄰近點的值;線性插值法是插入點相鄰的兩個數(shù)據(jù)取算術平均值,得到插入值。應用更加復雜的插值算法可以改善圖像質量。在本文設計中,實現(xiàn)這兩種簡單的插值方法就已經滿足需求。

4 結束語

本文提出一種利用一個bt.656接口傳輸4路視頻流的方法。該方法利用fpga接收4路cif格式的視頻數(shù)據(jù),然后分離、插值為4路d1格式視頻流后,重新生成bt.656的數(shù)據(jù)幀發(fā)送給視頻編碼芯片,從而實現(xiàn)視頻處理器的一個硬件接口傳輸4路視頻圖像。通過該方法可以克服視頻處理器芯片輸出端口的限制,增加了其擴展性。在實際測試和應用中,取得了滿意的效果。



關鍵詞:

評論


相關推薦

技術專區(qū)

關閉