基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
發(fā)布時(shí)間:2020-04-22 來(lái)源:Witold Kaczurba 責(zé)任編輯:wenwei
【導(dǎo)讀】視頻系統(tǒng),目前已經(jīng)深入消費(fèi)應(yīng)用的各個(gè)方面,在汽車、機(jī)器人和工業(yè)領(lǐng)域日益普遍。其在非消費(fèi)應(yīng)用中的增長(zhǎng)主要源于HDMI標(biāo)準(zhǔn)以及更快、更高效的DSP和FPGA的出現(xiàn)。
本文將概要討論利用模擬或HDMI攝像機(jī)實(shí)現(xiàn)立體視覺(3D視頻)的各種要求。文章將描述一個(gè)基于FPGA的系統(tǒng),它將兩個(gè)視頻流結(jié)合成一個(gè)3D視頻流,通過(guò)HDMI 1.4發(fā)射器進(jìn)行傳輸,同時(shí)還要介紹一個(gè)基于DSP的系統(tǒng),與通常需從兩臺(tái)攝像機(jī)接收數(shù)據(jù)相比,該系統(tǒng)可以節(jié)省DMA帶寬。另外,本文還將描述一種方法,該方法可以實(shí)現(xiàn)一種并排格式,可供3D攝像機(jī)或要求3D視頻的系統(tǒng)使用。
概述
立體視覺要求使用兩臺(tái)攝像機(jī),二者相距大約5.5厘米,這是人類雙眼之間的典型間距,如圖1所示。
圖1 支架上的兩臺(tái)攝像機(jī)(已針對(duì)立體視覺對(duì)齊)
圖2所示高級(jí)功能框圖使用了采用相同視頻標(biāo)準(zhǔn)的兩臺(tái)同步攝像機(jī)、兩個(gè)視頻解碼器和一個(gè)FPGA。為了確保完全一致的幀速率,攝像機(jī)必須行鎖定到共同的參考時(shí)序。如果沒(méi)有同步,不使用外部存儲(chǔ)器,就不可能將輸出組合起來(lái)并存儲(chǔ)為完整的視頻幀。
圖2 高級(jí)功能框圖
圖3顯示兩個(gè)行鎖定視頻流被合并成一個(gè)立體圖像。圖4顯示,如果不將整個(gè)視頻幀保存在外部存儲(chǔ)器中,則異步視頻流無(wú)法合并。
圖3 合并兩個(gè)同步視頻流
圖4 如果不使用外部存儲(chǔ)器,則無(wú)法合并異步視頻流
然后,兩臺(tái)同步攝像機(jī)的輸出由視頻解碼器(如ADV7181D, ADV7182或ADV7186 用于模擬攝像機(jī))進(jìn)行數(shù)字化處;也可由 HDMI receivers(如ADV7610 或 ADV7611用于數(shù)字?jǐn)z像機(jī))進(jìn)行數(shù)字化處理。
視頻解碼器和HDMI接收器都采用內(nèi)部鎖相環(huán)(PLL)在其輸出總線上產(chǎn)生時(shí)鐘和像素?cái)?shù)據(jù)。這意味著,在數(shù)字化模擬視頻,或者接收HDMI流時(shí),將為兩臺(tái)攝像機(jī)產(chǎn)生兩個(gè)獨(dú)立的時(shí)鐘域。另外,兩個(gè)視頻流可能存在對(duì)齊誤差。這些時(shí)序差異和對(duì)齊誤差必須在后端器件(如FPGA)中進(jìn)行補(bǔ)償,先將數(shù)據(jù)帶至共同的時(shí)鐘域,然后再將兩個(gè)視頻圖像結(jié)合成單個(gè)立體視頻幀。然后,通過(guò)一個(gè)支持3D的HDMI 1.4HDMI 接收器(如ADV7511 或 ADV7513—也可以將其提供給DSP(如 ADSP-BF609 Blackfin®處理器)—以便進(jìn)一步處理。
時(shí)鐘架構(gòu)
視頻解碼器有兩種完全不同的時(shí)鐘源,具體取決于其是否鎖定。當(dāng)視頻PLL被鎖定至輸入同步信號(hào)時(shí)——水平同步(視頻解碼器)或TMDS時(shí)鐘(HDMI)——結(jié)果會(huì)產(chǎn)生一個(gè)鎖定至輸入視頻源的時(shí)鐘。當(dāng)視頻失鎖時(shí),或者當(dāng)PLL處于強(qiáng)制自由運(yùn)行模式時(shí),視頻PLL不會(huì)鎖定至輸入同步信號(hào),結(jié)果會(huì)產(chǎn)生一個(gè)鎖定至晶振時(shí)鐘的時(shí)鐘輸出。另外,時(shí)鐘可能不會(huì)在復(fù)位后輸出,因?yàn)長(zhǎng)LC時(shí)鐘驅(qū)動(dòng)器在復(fù)位后設(shè)置為高阻抗模式。
因此,如果系統(tǒng)有兩個(gè)或多個(gè)始于視頻解碼器或HDMI接收器的視頻路徑,即使將同一晶振時(shí)鐘提供給兩個(gè)視頻解碼器或HDMI接收器,仍會(huì)有兩個(gè)不同頻率、不同相位的不同時(shí)鐘域,因?yàn)槊總€(gè)器件都會(huì)基于自己的PLL產(chǎn)生自己的時(shí)鐘。
帶鎖定視頻解碼器的同步系統(tǒng)
典型的立體視頻使用兩個(gè)視頻源,其中,每個(gè)視頻解碼器都會(huì)鎖定至輸入視頻信號(hào),并會(huì)基于輸入水平同步或TMDS時(shí)鐘產(chǎn)生自己的時(shí)鐘。當(dāng)兩臺(tái)攝像機(jī)同步——或行鎖定至同一參考時(shí)序時(shí)——分幀線將始終對(duì)齊。由于兩個(gè)獨(dú)立的視頻解碼器會(huì)收到相同的水平同步信號(hào),因此,像素時(shí)鐘將擁有相同的像素時(shí)鐘頻率。這樣,就可以將兩條數(shù)據(jù)路徑帶入同一個(gè)時(shí)鐘域,如圖5所示。
圖5 同步至同一參考源的兩臺(tái)攝像機(jī)。
兩個(gè)視頻解碼 器都會(huì)收到同一同步信號(hào),因此,它們也會(huì)鎖定
異步視頻系統(tǒng)
不幸的是,其中一個(gè)視頻解碼器可能因視頻源信號(hào)質(zhì)量欠佳而失鎖,如圖6所示;或者,攝像機(jī)因視頻鏈路斷開而失去同步性,如圖7所示。這會(huì)在兩條數(shù)據(jù)路徑中導(dǎo)致不同的頻率,結(jié)果又會(huì)導(dǎo)致進(jìn)入后端中的數(shù)據(jù)量不對(duì)稱。
圖6 帶未鎖定視頻解碼器的行鎖定攝像機(jī)
圖7 帶鎖定視頻解碼器的未鎖定攝像機(jī)
視頻失鎖可以通過(guò)使用一個(gè)中斷(SD視頻解碼器為SD_UNLOCK,分量視頻解碼器為CP_UNLOCK,或HDMI接收器中的TMDSPLL_LCK寄存器)來(lái)檢測(cè),該中斷會(huì)在一定延遲后介入。視頻解碼器集成了不穩(wěn)定水平同步平滑機(jī)制,因此,視頻失鎖的檢測(cè)可能需要兩三行。該延遲可通過(guò)控制FPGA中的失鎖來(lái)減少。
時(shí)鐘三態(tài)模式
在設(shè)計(jì)FPGA時(shí)鐘資源時(shí),必須知道,默認(rèn)情況下,許多視頻解碼器和HDMI產(chǎn)品在復(fù)位后將時(shí)鐘和數(shù)據(jù)線路置為三態(tài)模式。因此,LLC像素時(shí)鐘不適用于同步復(fù)位。
兩條視頻流中的數(shù)據(jù)對(duì)齊誤差
為了簡(jiǎn)化系統(tǒng)并減少合并兩幅圖像所需存儲(chǔ)器,到達(dá)FPGA的數(shù)據(jù)應(yīng)進(jìn)行同步,以使來(lái)自第一臺(tái)攝像機(jī)的第M 行第N個(gè) 像素與來(lái)自第二臺(tái)攝像機(jī)的第M 行第N個(gè) 像素同時(shí)收到。
在FPGA輸入端,這可能很難實(shí)現(xiàn),因?yàn)閮蓷l視頻路徑可能具有不同的延遲:行鎖定攝像機(jī)可能輸出存在對(duì)齊誤差的行,不同的連接長(zhǎng)度可能加大對(duì)齊誤差,而視頻解碼器則可能帶來(lái)可變啟動(dòng)延遲。受這些延遲影響,采用行鎖定攝像機(jī)的系統(tǒng)會(huì)有一些存在對(duì)齊誤差的像素。
行鎖定攝像機(jī)對(duì)齊誤差
即使是行鎖定攝像機(jī)也可能輸出存在對(duì)齊誤差的視頻行。圖8顯示來(lái)自兩臺(tái)攝像機(jī)的CVBS輸出端的垂直同步信號(hào)。一臺(tái)攝像機(jī)(同步主機(jī))為第二臺(tái)攝像機(jī)(同步從機(jī))提供行鎖定信號(hào)。380 ns的對(duì)齊誤差是清楚可見的。圖9展示的是這些攝像機(jī)輸出端的視頻解碼器傳輸?shù)臄?shù)據(jù)??梢钥吹?1個(gè)像素的位移。
圖8 行鎖定視頻攝像機(jī)之間的380 ns視頻對(duì)齊誤差
圖9 數(shù)字域中未補(bǔ)償?shù)?1個(gè)像素的視頻對(duì)齊誤差
不同的連接長(zhǎng)度
所有電氣連接都會(huì)帶來(lái)傳播延遲,因此,要確保兩條視頻路徑具有相同的軌道和電纜長(zhǎng)度。
視頻解碼器/HDMI接收器延遲
所有視頻解碼器都會(huì)帶來(lái)可能因啟用的功能而異的延遲。另外,有些視頻器件含有可能增加隨機(jī)啟動(dòng)延遲的因素——如深色FIFO。采用視頻解碼器的典型立體系統(tǒng)的隨機(jī)啟動(dòng)延遲大約為5個(gè)像素時(shí)鐘。含有HDMI發(fā)射器和接收器的系統(tǒng)(如圖10所示)的隨機(jī)啟動(dòng)延遲可能為40個(gè)像素時(shí)鐘左右。
圖10 流水線延遲測(cè)量設(shè)置
對(duì)齊誤差補(bǔ)償
圖11所示系統(tǒng)中,一個(gè)視頻解碼器對(duì)來(lái)自各攝像機(jī)的模擬信號(hào)進(jìn)行數(shù)字化處理。各視頻路徑的數(shù)據(jù)和時(shí)鐘是獨(dú)立的。兩條視頻路徑都連接至FIFO,后者對(duì)輸入數(shù)據(jù)進(jìn)行緩沖,以補(bǔ)償數(shù)據(jù)對(duì)齊誤差。在輸出數(shù)據(jù)時(shí),F(xiàn)IFO使用來(lái)自其中一個(gè)解碼器的共用時(shí)鐘。在鎖定系統(tǒng)中,兩條數(shù)據(jù)路徑應(yīng)具有完全相同的時(shí)鐘頻率,以確保在攝像機(jī)行鎖定且視頻解碼器鎖定的情況下,不會(huì)出現(xiàn)FIFO溢出或下溢現(xiàn)象。
通過(guò)啟用或禁用FIFO輸出,控制模塊可以維持FIFO電平以盡量減少像素對(duì)齊誤差。如果采取了正確的補(bǔ)償措施,則FPGA模塊的輸出應(yīng)為與第一個(gè)像素對(duì)齊的兩條數(shù)據(jù)路徑。然后該數(shù)據(jù)提供給FPGA后端,以生成3D格式。
圖11 使用數(shù)字FIFO來(lái)重新對(duì)齊視頻圖像
對(duì)齊誤差測(cè)量
兩個(gè)數(shù)字化數(shù)據(jù)流之間的對(duì)齊誤差可以在視頻FIFO輸出端進(jìn)行測(cè)量,其方法是使用一個(gè)單一時(shí)鐘計(jì)數(shù)器,該計(jì)數(shù)器在輸入信號(hào)之一的垂直同步(VS)脈沖上復(fù)位。圖12所示兩個(gè)視頻流(vs_a_in和vs_b_in)的對(duì)齊誤差為4個(gè)像素。計(jì)數(shù)器使用列表1中所示方法測(cè)量對(duì)齊誤差。計(jì)數(shù)從VS1的上升沿開始,并在VS2的上升沿終止。
如果一個(gè)幀的總像素長(zhǎng)度是已知的,則可以通過(guò)從幀長(zhǎng)中減去計(jì)數(shù)值,從而算出負(fù)偏斜(VS2位于VS1之前)。該負(fù)值應(yīng)在偏斜超過(guò)像素幀長(zhǎng)的一半時(shí)計(jì)算。結(jié)果應(yīng)用來(lái)重新對(duì)齊FIFO中存儲(chǔ)的數(shù)據(jù)。
圖12 對(duì)齊誤差測(cè)量
列表1 簡(jiǎn)單對(duì)齊誤差測(cè)量(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
從兩個(gè)對(duì)齊視頻流生成3D視頻
一旦像素、行和幀數(shù)據(jù)都真正同步,F(xiàn)PGA可以將視頻數(shù)據(jù)轉(zhuǎn)換成3D視頻流,如圖13所示。
圖13 用于實(shí)現(xiàn)3D格式的簡(jiǎn)化架構(gòu)
輸入數(shù)據(jù)由共用時(shí)鐘讀入存儲(chǔ)器。同步時(shí)序分析儀檢查輸入的同步信號(hào),并抽取視頻時(shí)序,包括水平前后沿長(zhǎng)度、垂直前后沿、水平和垂直同步長(zhǎng)度、水平有效行長(zhǎng)、垂直有效行數(shù)和同步信號(hào)極化。將該信息與當(dāng)前水平和垂直像素位置一起傳給同步時(shí)序再發(fā)生器,這樣可以生成經(jīng)修改的時(shí)序,以便支持所需3D視頻結(jié)構(gòu)。新生成的時(shí)序應(yīng)延遲,以確保FIFO含有所需數(shù)據(jù)量。
并排3D視頻
對(duì)存儲(chǔ)器要求最低的架構(gòu)是并排格式,只需要一個(gè)兩行緩沖器(FIFO)即可存儲(chǔ)來(lái)自兩個(gè)視頻源的行內(nèi)容。并排格式的寬度應(yīng)為原始輸入模式的兩倍。為此,應(yīng)使用一個(gè)雙倍時(shí)鐘來(lái)為擁有雙倍水平行長(zhǎng)度的再生同步時(shí)序提供時(shí)鐘。用于為后端提供時(shí)鐘的雙倍時(shí)鐘將以雙倍速率清空第一個(gè)FIFO和第二個(gè)FIFO,這樣即可并排顯示圖像,如圖14所示。并排圖像如圖15所示。
圖14 使用簡(jiǎn)單的FPGA行緩沖器來(lái)并排合并兩幅圖像
圖15 視頻時(shí)序下的并排576p圖像
結(jié)論
ADI公司的解碼器和HDMI產(chǎn)品以及簡(jiǎn)單的后處理技術(shù)可以打造出真正的立體3D視頻,并為其傳輸提供條件。如本文所示,用簡(jiǎn)單的數(shù)字模塊,無(wú)需使用昂貴的存儲(chǔ)器,即可實(shí)現(xiàn)3D視頻。這種系統(tǒng)可用于需要3D視覺的任何類型的系統(tǒng)中,從簡(jiǎn)單的攝像機(jī),到基于ADSP-BF609 DSP的可以跟蹤物體及其距離的專業(yè)系統(tǒng)。
推薦閱讀:
特別推薦
- 授權(quán)代理商貿(mào)澤電子供應(yīng)Same Sky多樣化電子元器件
- 使用合適的窗口電壓監(jiān)控器優(yōu)化系統(tǒng)設(shè)計(jì)
- ADI電機(jī)運(yùn)動(dòng)控制解決方案 驅(qū)動(dòng)智能運(yùn)動(dòng)新時(shí)代
- 倍福推出采用 TwinSAFE SC 技術(shù)的 EtherCAT 端子模塊 EL3453-0090
- TDK推出新的X系列環(huán)保型SMD壓敏電阻
- Vishay 推出新款采用0102、0204和 0207封裝的精密薄膜MELF電阻
- Microchip推出新款交鑰匙電容式觸摸控制器產(chǎn)品 MTCH2120
技術(shù)文章更多>>
- 貿(mào)澤電子持續(xù)擴(kuò)充工業(yè)自動(dòng)化產(chǎn)品陣容
- 更高精度、更低噪音 GMCC美芝電子膨脹閥以創(chuàng)新?lián)屨夹袠I(yè)“制高點(diǎn)”
- 本立租完成近億元估值Pre-A輪融資,打造AI賦能的租賃服務(wù)平臺(tái)
- 中微公司成功從美國(guó)國(guó)防部中國(guó)軍事企業(yè)清單中移除
- 華邦電子白皮書:滿足歐盟無(wú)線電設(shè)備指令(RED)信息安全標(biāo)準(zhǔn)
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
晶體諧振器
晶體振蕩器
晶閘管
精密電阻
精密工具
景佑能源
聚合物電容
君耀電子
開發(fā)工具
開關(guān)
開關(guān)電源
開關(guān)電源電路
開關(guān)二極管
開關(guān)三極管
科通
可變電容
可調(diào)電感
可控硅
空心線圈
控制變壓器
控制模塊
藍(lán)牙
藍(lán)牙4.0
藍(lán)牙模塊
浪涌保護(hù)器
雷度電子
鋰電池
利爾達(dá)
連接器
流量單位