基於FPGA的係統通過合成兩條視頻流來提供3D視頻
發布時間:2020-04-22 來源:Witold Kaczurba 責任編輯:wenwei
【導讀】視頻係統,目前已經深入消費應用的各個方麵,在汽車、機器人和工業領域日益普遍。其在非消費應用中的增長主要源於HDMI標準以及更快、更高效的DSP和FPGA的出現。
本文將概要討論利用模擬或HDMI攝像機實現立體視覺(3D視頻)的各種要求。文章將描述一個基於FPGA的係統,它將兩個視頻流結合成一個3D視頻流,通過HDMI 1.4發射器進行傳輸,同時還要介紹一個基於DSP的係統,與通常需從兩台攝像機接收數據相比,該係統可以節省DMA帶寬。另外,本文還將描述一種方法,該方法可以實現一種並排格式,可供3D攝像機或要求3D視頻的係統使用。
概述
立體視覺要求使用兩台攝像機,二者相距大約5.5厘米,這是人類雙眼之間的典型間距,如圖1所示。

圖1 支架上的兩台攝像機(已針對立體視覺對齊)
圖2所示高級功能框圖使用了采用相同視頻標準的兩台同步攝像機、兩個視頻解碼器和一個FPGA。為(wei)了(le)確(que)保(bao)完(wan)全(quan)一(yi)致(zhi)的(de)幀(zhen)速(su)率(lv),攝(she)像(xiang)機(ji)必(bi)須(xu)行(xing)鎖(suo)定(ding)到(dao)共(gong)同(tong)的(de)參(can)考(kao)時(shi)序(xu)。如(ru)果(guo)沒(mei)有(you)同(tong)步(bu),不(bu)使(shi)用(yong)外(wai)部(bu)存(cun)儲(chu)器(qi),就(jiu)不(bu)可(ke)能(neng)將(jiang)輸(shu)出(chu)組(zu)合(he)起(qi)來(lai)並(bing)存(cun)儲(chu)為(wei)完(wan)整(zheng)的(de)視(shi)頻(pin)幀(zhen)。

圖2 高級功能框圖
圖3顯示兩個行鎖定視頻流被合並成一個立體圖像。圖4顯示,如果不將整個視頻幀保存在外部存儲器中,則異步視頻流無法合並。

圖3 合並兩個同步視頻流

圖4 如果不使用外部存儲器,則無法合並異步視頻流
然後,兩台同步攝像機的輸出由視頻解碼器(如ADV7181D, ADV7182或ADV7186 用於模擬攝像機)進行數字化處;也可由 HDMI receivers(如ADV7610 或 ADV7611用於數字攝像機)進行數字化處理。
視頻解碼器和HDMI接收器都采用內部鎖相環(PLL)在其輸出總線上產生時鍾和像素數據。這意味著,在數字化模擬視頻,或者接收HDMI流時,將為兩台攝像機產生兩個獨立的時鍾域。另外,兩個視頻流可能存在對齊誤差。這些時序差異和對齊誤差必須在後端器件(如FPGA)中進行補償,先將數據帶至共同的時鍾域,然後再將兩個視頻圖像結合成單個立體視頻幀。然後,通過一個支持3D的HDMI 1.4HDMI 接收器(如ADV7511 或 ADV7513—也可以將其提供給DSP(如 ADSP-BF609 Blackfin®處理器)—以便進一步處理。
時鍾架構
視頻解碼器有兩種完全不同的時鍾源,具體取決於其是否鎖定。當視頻PLL被鎖定至輸入同步信號時——水平同步(視頻解碼器)或TMDS時鍾(HDMI)——結果會產生一個鎖定至輸入視頻源的時鍾。當視頻失鎖時,或者當PLL處於強製自由運行模式時,視頻PLL不會鎖定至輸入同步信號,結果會產生一個鎖定至晶振時鍾的時鍾輸出。另外,時鍾可能不會在複位後輸出,因為LLC時鍾驅動器在複位後設置為高阻抗模式。
因此,如果係統有兩個或多個始於視頻解碼器或HDMI接收器的視頻路徑,即使將同一晶振時鍾提供給兩個視頻解碼器或HDMI接收器,仍會有兩個不同頻率、不同相位的不同時鍾域,因為每個器件都會基於自己的PLL產生自己的時鍾。
帶鎖定視頻解碼器的同步係統
典型的立體視頻使用兩個視頻源,其中,每個視頻解碼器都會鎖定至輸入視頻信號,並會基於輸入水平同步或TMDS時鍾產生自己的時鍾。當兩台攝像機同步——或行鎖定至同一參考時序時——分fen幀zhen線xian將jiang始shi終zhong對dui齊qi。由you於yu兩liang個ge獨du立li的de視shi頻pin解jie碼ma器qi會hui收shou到dao相xiang同tong的de水shui平ping同tong步bu信xin號hao,因yin此ci,像xiang素su時shi鍾zhong將jiang擁yong有you相xiang同tong的de像xiang素su時shi鍾zhong頻pin率lv。這zhe樣yang,就jiu可ke以yi將jiang兩liang條tiao數shu據ju路lu徑jing帶dai入ru同tong一yi個ge時shi鍾zhong域yu,如ru圖tu5所示。

圖5 同步至同一參考源的兩台攝像機。
兩個視頻解碼 器都會收到同一同步信號,因此,它們也會鎖定
異步視頻係統
不幸的是,其中一個視頻解碼器可能因視頻源信號質量欠佳而失鎖,如圖6所示;或者,攝像機因視頻鏈路斷開而失去同步性,如圖7所示。這會在兩條數據路徑中導致不同的頻率,結果又會導致進入後端中的數據量不對稱。

圖6 帶未鎖定視頻解碼器的行鎖定攝像機

圖7 帶鎖定視頻解碼器的未鎖定攝像機
視頻失鎖可以通過使用一個中斷(SD視頻解碼器為SD_UNLOCK,分量視頻解碼器為CP_UNLOCK,或HDMI接收器中的TMDSPLL_LCK寄存器)來lai檢jian測ce,該gai中zhong斷duan會hui在zai一yi定ding延yan遲chi後hou介jie入ru。視shi頻pin解jie碼ma器qi集ji成cheng了le不bu穩wen定ding水shui平ping同tong步bu平ping滑hua機ji製zhi,因yin此ci,視shi頻pin失shi鎖suo的de檢jian測ce可ke能neng需xu要yao兩liang三san行xing。該gai延yan遲chi可ke通tong過guo控kong製zhiFPGA中的失鎖來減少。
時鍾三態模式
在設計FPGA時鍾資源時,必須知道,默認情況下,許多視頻解碼器和HDMI產品在複位後將時鍾和數據線路置為三態模式。因此,LLC像素時鍾不適用於同步複位。
兩條視頻流中的數據對齊誤差
為了簡化係統並減少合並兩幅圖像所需存儲器,到達FPGA的數據應進行同步,以使來自第一台攝像機的第M 行第N個 像素與來自第二台攝像機的第M 行第N個 像素同時收到。
在FPGA輸入端,這可能很難實現,因為兩條視頻路徑可能具有不同的延遲:行xing鎖suo定ding攝she像xiang機ji可ke能neng輸shu出chu存cun在zai對dui齊qi誤wu差cha的de行xing,不bu同tong的de連lian接jie長chang度du可ke能neng加jia大da對dui齊qi誤wu差cha,而er視shi頻pin解jie碼ma器qi則ze可ke能neng帶dai來lai可ke變bian啟qi動dong延yan遲chi。受shou這zhe些xie延yan遲chi影ying響xiang,采cai用yong行xing鎖suo定ding攝she像xiang機ji的de係xi統tong會hui有you一yi些xie存cun在zai對dui齊qi誤wu差cha的de像xiang素su。
行鎖定攝像機對齊誤差
即使是行鎖定攝像機也可能輸出存在對齊誤差的視頻行。圖8顯示來自兩台攝像機的CVBS輸出端的垂直同步信號。一台攝像機(同步主機)為第二台攝像機(同步從機)提供行鎖定信號。380 ns的對齊誤差是清楚可見的。圖9展示的是這些攝像機輸出端的視頻解碼器傳輸的數據。可以看到11個像素的位移。

圖8 行鎖定視頻攝像機之間的380 ns視頻對齊誤差

圖9 數字域中未補償的11個像素的視頻對齊誤差
不同的連接長度
所有電氣連接都會帶來傳播延遲,因此,要確保兩條視頻路徑具有相同的軌道和電纜長度。
視頻解碼器/HDMI接收器延遲
所有視頻解碼器都會帶來可能因啟用的功能而異的延遲。另外,有些視頻器件含有可能增加隨機啟動延遲的因素——如深色FIFO。采用視頻解碼器的典型立體係統的隨機啟動延遲大約為5個像素時鍾。含有HDMI發射器和接收器的係統(如圖10所示)的隨機啟動延遲可能為40個像素時鍾左右。

圖10 流水線延遲測量設置
對齊誤差補償
圖11所示係統中,一個視頻解碼器對來自各攝像機的模擬信號進行數字化處理。各視頻路徑的數據和時鍾是獨立的。兩條視頻路徑都連接至FIFO,後者對輸入數據進行緩衝,以補償數據對齊誤差。在輸出數據時,FIFOshiyonglaiziqizhongyigejiemaqidegongyongshizhong。zaisuodingxitongzhong,liangtiaoshujulujingyingjuyouwanquanxiangtongdeshizhongpinlv,yiquebaozaishexiangjixingsuodingqieshipinjiemaqisuodingdeqingkuangxia,buhuichuxianFIFO溢出或下溢現象。
通過啟用或禁用FIFO輸出,控製模塊可以維持FIFO電平以盡量減少像素對齊誤差。如果采取了正確的補償措施,則FPGA模塊的輸出應為與第一個像素對齊的兩條數據路徑。然後該數據提供給FPGA後端,以生成3D格式。

圖11 使用數字FIFO來重新對齊視頻圖像
對齊誤差測量
兩個數字化數據流之間的對齊誤差可以在視頻FIFO輸出端進行測量,其方法是使用一個單一時鍾計數器,該計數器在輸入信號之一的垂直同步(VS)脈衝上複位。圖12所示兩個視頻流(vs_a_in和vs_b_in)的對齊誤差為4個像素。計數器使用列表1中所示方法測量對齊誤差。計數從VS1的上升沿開始,並在VS2的上升沿終止。
如果一個幀的總像素長度是已知的,則可以通過從幀長中減去計數值,從而算出負偏斜(VS2位於VS1之前)。該負值應在偏斜超過像素幀長的一半時計算。結果應用來重新對齊FIFO中存儲的數據。

圖12 對齊誤差測量
列表1 簡單對齊誤差測量(Verilog®).
module misalign_measurement(
input wire reset,
input wire clk_in,
input wire vs_a_in,
input wire vs_b_in,
output reg [15:0] misalign,
output reg ready);
reg [15:0] cnt;
reg cnt_en, cnt_reset;
reg vs_a_in_r, vs_b_in_r;
assign vs_a_rising = vs_a_in > vs_a_in_r;
assign vs_b_rising = vs_b_in > vs_b_in_r;
always @(posedge clk_in)
begin
vs_a_in_r <= vs_a_in;
vs_b_in_r <= vs_b_in;
end
always @(posedge clk_in)
if (reset)
begin
{ ready, cnt_en } <= 2''''b00;
misalign <= 0;
end else begin
if ((vs_a_in == 1''''b0) && (vs_b_in == 1''''b0))
{ ready, cnt_reset } <= 2''''b01;
else
cnt_reset <= 1''''b0;
/* beginning */
if (vs_a_rising && vs_b_rising)
begin
misalign <= 0;
{ ready, cnt_en } <= 2''''b10;
end
else if ((vs_a_rising > vs_b_in) || (vs_b_rising > vs_a_in))
{ ready, cnt_en } <= 2''''b01;
/* ending */
if ((cnt_en == 1''''b1) && (vs_a_rising || vs_b_rising))
begin
{ ready, cnt_en } <= 2''''b10;
misalign <= vs_a_rising ? (-(cnt + 1)) : (cnt + 1);
end
end
always @(posedge clk_in) /* counter */
if ((cnt_reset) || (reset))
cnt <= 0;
else if (cnt_en)
cnt <= cnt + 1;
endmodule
從兩個對齊視頻流生成3D視頻
一旦像素、行和幀數據都真正同步,FPGA可以將視頻數據轉換成3D視頻流,如圖13所示。

圖13 用於實現3D格式的簡化架構
輸入數據由共用時鍾讀入存儲器。同步時序分析儀檢查輸入的同步信號,並抽取視頻時序,包括水平前後沿長度、垂直前後沿、水平和垂直同步長度、水平有效行長、chuizhiyouxiaoxingshuhetongbuxinhaojihua。jianggaixinxiyudangqianshuipinghechuizhixiangsuweizhiyiqichuangeitongbushixuzaifashengqi,zheyangkeyishengchengjingxiugaideshixu,yibianzhichisuoxu3D視頻結構。新生成的時序應延遲,以確保FIFO含有所需數據量。
並排3D視頻
對存儲器要求最低的架構是並排格式,隻需要一個兩行緩衝器(FIFO)即ji可ke存cun儲chu來lai自zi兩liang個ge視shi頻pin源yuan的de行xing內nei容rong。並bing排pai格ge式shi的de寬kuan度du應ying為wei原yuan始shi輸shu入ru模mo式shi的de兩liang倍bei。為wei此ci,應ying使shi用yong一yi個ge雙shuang倍bei時shi鍾zhong來lai為wei擁yong有you雙shuang倍bei水shui平ping行xing長chang度du的de再zai生sheng同tong步bu時shi序xu提ti供gong時shi鍾zhong。用yong於yu為wei後hou端duan提ti供gong時shi鍾zhong的de雙shuang倍bei時shi鍾zhong將jiang以yi雙shuang倍bei速su率lv清qing空kong第di一yi個geFIFO和第二個FIFO,這樣即可並排顯示圖像,如圖14所示。並排圖像如圖15所示。

圖14 使用簡單的FPGA行緩衝器來並排合並兩幅圖像

圖15 視頻時序下的並排576p圖像
結論
ADI公司的解碼器和HDMI產品以及簡單的後處理技術可以打造出真正的立體3D視頻,並為其傳輸提供條件。如本文所示,用簡單的數字模塊,無需使用昂貴的存儲器,即可實現3D視頻。這種係統可用於需要3D視覺的任何類型的係統中,從簡單的攝像機,到基於ADSP-BF609 DSP的可以跟蹤物體及其距離的專業係統。
推薦閱讀:
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索



