基於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)圖(tu)5所示。

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

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

圖7 帶鎖定視頻解碼器的未鎖定攝像機
視頻失鎖可以通過使用一個中斷(SD視頻解碼器為SD_UNLOCK,分量視頻解碼器為CP_UNLOCK,或HDMI接收器中的TMDSPLL_LCK寄存器)laijiance,gaizhongduanhuizaiyidingyanchihoujieru。shipinjiemaqijichenglebuwendingshuipingtongbupinghuajizhi,yinci,shipinshisuodejiancekenengxuyaoliangsanxing。gaiyanchiketongguokongzhiFPGA中的失鎖來減少。
時鍾三態模式
在設計FPGA時鍾資源時,必須知道,默認情況下,許多視頻解碼器和HDMI產品在複位後將時鍾和數據線路置為三態模式。因此,LLC像素時鍾不適用於同步複位。
兩條視頻流中的數據對齊誤差
為了簡化係統並減少合並兩幅圖像所需存儲器,到達FPGA的數據應進行同步,以使來自第一台攝像機的第M 行第N個 像素與來自第二台攝像機的第M 行第N個 像素同時收到。
在FPGA輸入端,這可能很難實現,因為兩條視頻路徑可能具有不同的延遲:xingsuodingshexiangjikenengshuchucunzaiduiqiwuchadexing,butongdelianjiechangdukenengjiadaduiqiwucha,ershipinjiemaqizekenengdailaikebianqidongyanchi。shouzhexieyanchiyingxiang,caiyongxingsuodingshexiangjidexitonghuiyouyixiecunzaiduiqiwuchadexiangsu。
行鎖定攝像機對齊誤差
即使是行鎖定攝像機也可能輸出存在對齊誤差的視頻行。圖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格式的簡化架構
輸入數據由共用時鍾讀入存儲器。同步時序分析儀檢查輸入的同步信號,並抽取視頻時序,包括水平前後沿長度、垂直前後沿、水平和垂直同步長度、水平有效行長、垂chui直zhi有you效xiao行xing數shu和he同tong步bu信xin號hao極ji化hua。將jiang該gai信xin息xi與yu當dang前qian水shui平ping和he垂chui直zhi像xiang素su位wei置zhi一yi起qi傳chuan給gei同tong步bu時shi序xu再zai發fa生sheng器qi,這zhe樣yang可ke以yi生sheng成cheng經jing修xiu改gai的de時shi序xu,以yi便bian支zhi持chi所suo需xu3D視頻結構。新生成的時序應延遲,以確保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)個(ge)FIFO和第二個FIFO,這樣即可並排顯示圖像,如圖14所示。並排圖像如圖15所示。

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

圖15 視頻時序下的並排576p圖像
結論
ADI公司的解碼器和HDMI產品以及簡單的後處理技術可以打造出真正的立體3D視頻,並為其傳輸提供條件。如本文所示,用簡單的數字模塊,無需使用昂貴的存儲器,即可實現3D視頻。這種係統可用於需要3D視覺的任何類型的係統中,從簡單的攝像機,到基於ADSP-BF609 DSP的可以跟蹤物體及其距離的專業係統。
推薦閱讀:
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 具身智能成最大亮點!CITE 2026開幕峰會釋放產業強信號
- 助力醫療器械產業高質量發展 派克漢尼汾閃耀2026 ICMD
- 比異步時鍾更隱蔽的“芯片殺手”——跨複位域(RDC)問題
- 數據之外:液冷技術背後的連接器創新
- “眼在手上”的嵌入式實踐:基於ROS2與RK3576的機械臂跟隨抓取方案
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索





