基於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。weilequebaowanquanyizhidezhensulv,shexiangjibixuxingsuodingdaogongtongdecankaoshixu。ruguomeiyoutongbu,bushiyongwaibucunchuqi,jiubukenengjiangshuchuzuheqilaibingcunchuweiwanzhengdeshipinzhen。

圖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,後者對輸入數據進行緩衝,以補償數據對齊誤差。在輸出數據時,FIFO使(shi)用(yong)來(lai)自(zi)其(qi)中(zhong)一(yi)個(ge)解(jie)碼(ma)器(qi)的(de)共(gong)用(yong)時(shi)鍾(zhong)。在(zai)鎖(suo)定(ding)係(xi)統(tong)中(zhong),兩(liang)條(tiao)數(shu)據(ju)路(lu)徑(jing)應(ying)具(ju)有(you)完(wan)全(quan)相(xiang)同(tong)的(de)時(shi)鍾(zhong)頻(pin)率(lv),以(yi)確(que)保(bao)在(zai)攝(she)像(xiang)機(ji)行(xing)鎖(suo)定(ding)且(qie)視(shi)頻(pin)解(jie)碼(ma)器(qi)鎖(suo)定(ding)的(de)情(qing)況(kuang)下(xia),不(bu)會(hui)出(chu)現(xian)FIFO溢出或下溢現象。
通過啟用或禁用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)需(xu)3D視頻結構。新生成的時序應延遲,以確保FIFO含有所需數據量。
並排3D視頻
對存儲器要求最低的架構是並排格式,隻需要一個兩行緩衝器(FIFO)jikecunchulaizilianggeshipinyuandexingneirong。bingpaigeshidekuanduyingweiyuanshishurumoshideliangbei。weici,yingshiyongyigeshuangbeishizhonglaiweiyongyoushuangbeishuipingxingchangdudezaishengtongbushixutigongshizhong。yongyuweihouduantigongshizhongdeshuangbeishizhongjiangyishuangbeisulvqingkongdiyigeFIFO和第二個FIFO,這樣即可並排顯示圖像,如圖14所示。並排圖像如圖15所示。

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

圖15 視頻時序下的並排576p圖像
結論
ADI公司的解碼器和HDMI產品以及簡單的後處理技術可以打造出真正的立體3D視頻,並為其傳輸提供條件。如本文所示,用簡單的數字模塊,無需使用昂貴的存儲器,即可實現3D視頻。這種係統可用於需要3D視覺的任何類型的係統中,從簡單的攝像機,到基於ADSP-BF609 DSP的可以跟蹤物體及其距離的專業係統。
推薦閱讀:
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 芯科科技Tech Talks與藍牙亞洲大會聯動,線上線下賦能物聯網創新
- 冬季續航縮水怎麼辦?揭秘熱管理係統背後的芯片力量
- 從HDMI 2.1到UFS 5.0:SmartDV以領先IP矩陣夯實邊緣計算基石
- 小空間也能實現低噪供電!精密測量雙極性電源選型指南,覆蓋小功率到大電流全場景
- 直擊藍牙亞洲大會 2026:Nordic 九大核心場景演繹“萬物互聯”新體驗
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
風力渦輪機
風能
風扇
風速風向儀
風揚高科
輔助駕駛係統
輔助設備
負荷開關
複用器
伽利略定位
幹電池
幹簧繼電器
感應開關
高頻電感
高通
高通濾波器
隔離變壓器
隔離開關
個人保健
工業電子
工業控製
工業連接器
工字型電感
功率表
功率電感
功率電阻
功率放大器
功率管
功率繼電器
功率器件




