(北京青云航空儀表有限公司,北京 101300)
隨著經(jīng)濟(jì)的快速發(fā)展,各個(gè)領(lǐng)域?qū)Ω咚僖曨l圖像實(shí)時(shí)處理的速度與精度提出了更高的要求,譬如:機(jī)器人導(dǎo)航領(lǐng)域、現(xiàn)場監(jiān)控領(lǐng)域、安防領(lǐng)域等。在此背景下,高速視頻圖像實(shí)時(shí)處理技術(shù)得到了長足的發(fā)展[1]。20世紀(jì)70年代,人們開始利用高速攝像機(jī)來記錄運(yùn)動(dòng)的物體,但當(dāng)時(shí)高速攝像機(jī)是以膠片的形式作為記錄介質(zhì),無法實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)處理[2]?,F(xiàn)如今,高速工業(yè)相機(jī)的采樣頻率高達(dá)1000FPS(Frame Per Second)[3],由于高速視頻圖像實(shí)時(shí)處理系統(tǒng)具有數(shù)據(jù)量大,數(shù)據(jù)相關(guān)性高,而且對圖像的幀、場時(shí)間具有嚴(yán)格的限制,因此,高速視頻圖像實(shí)時(shí)處理領(lǐng)域?qū)χ醒胩幚硇酒?、外部存?chǔ)芯片的工作速率以及核心算法的運(yùn)算復(fù)雜度等都提出了極大的挑戰(zhàn)[4]。
如圖1 所示,高速視頻實(shí)時(shí)處理系統(tǒng)采用Xilinx公司的K7系列FPGA芯片作為核心控制器,采用TI公司TMS320 C6455作為圖形處理器。通過Camera Link總線接收高速視頻數(shù)據(jù),并將視頻數(shù)據(jù)緩存在由4片DDR3-SDRAM 構(gòu)造64 位寬的外部動(dòng)態(tài)存儲(chǔ)器內(nèi),同時(shí)根據(jù)接收視頻的幀位置向DSP發(fā)送中斷。DSP根據(jù)中斷信息通過DMA 的方式從DDR3 中讀取視頻數(shù)據(jù)進(jìn)行實(shí)時(shí)跟蹤處理。并將跟蹤波門信息反饋給FPGA。FPGA 利用視頻疊加技術(shù)將波門疊加在輸出的VGA 視頻中實(shí)時(shí)顯示。
圖1 高速視頻實(shí)時(shí)處理系統(tǒng)框圖Fig.1 Block diagram of high speed video real time processing system
高速視頻采用Camera Link Full接口輸入,視頻分辨率1280×1024、位寬8bit、幀頻520f/s。
Camera Link標(biāo)準(zhǔn)由數(shù)家工業(yè)級(jí)相機(jī)及采集卡制造商共同制定,該接口具有通用性,標(biāo)準(zhǔn)規(guī)定了引腳分配及相應(yīng)的接插件規(guī)范,能夠確保兼容設(shè)備的接口實(shí)現(xiàn)無縫連接。Camera Link標(biāo)準(zhǔn)基于Channel Link技術(shù),在傳統(tǒng)LVDS(Low Voltage Differential Signaling)傳輸數(shù)據(jù)的基礎(chǔ)上加載了并轉(zhuǎn)串發(fā)送器和串轉(zhuǎn)并接收器,利用SERDES 技術(shù),數(shù)據(jù)傳輸速率可達(dá)到4.8Gb/s,能夠有效解決視頻數(shù)據(jù)輸出和采集之間的速度匹配問題。LVDS信號(hào)是一種符合差分電平標(biāo)準(zhǔn)的低電壓擺幅傳輸技術(shù),它通過350 mA恒流源驅(qū)動(dòng)器在平衡線對上傳輸約為350mV的低壓差分信號(hào)。外界噪聲以共模方式同時(shí)耦合到2條差分信號(hào)線上,而接收端只關(guān)心發(fā)送信號(hào)和接收信號(hào)之間的差值,故噪聲能夠得到有效抑制。由于LVDS 電壓擺幅很小,差分線對上的數(shù)據(jù)能以相對較高速率傳輸。LVDS驅(qū)動(dòng)器和接收器還能實(shí)現(xiàn)熱插拔,恒流源驅(qū)動(dòng)能夠有效避免設(shè)備的損壞[5]。
高速視頻實(shí)時(shí)處理系統(tǒng)采用Channel Link解碼芯片將接收到的LVDS 視頻信號(hào)轉(zhuǎn)換為LVTTL 并行視頻信號(hào)后輸入至FPGA。FPGA 內(nèi)部視頻采集模塊首先對輸入的視頻流進(jìn)行解碼,解碼得到視頻數(shù)據(jù)以及視頻數(shù)據(jù)對應(yīng)像素點(diǎn)的坐標(biāo)(frame,line,sample),然后將每個(gè)像素點(diǎn)的坐標(biāo)映射到DDR3存儲(chǔ)的地址上,并將映射后的地址和像素?cái)?shù)據(jù)打包存入視頻輸入FIFO中。最后由總線使用控制模塊控制將像素?cái)?shù)據(jù)按映射的地址存入DDR3 中。
視頻采集模塊根據(jù)視頻輸入進(jìn)度向DSP 提供視頻中斷,視頻采集模塊共有3 個(gè)視頻中斷信號(hào)可用,分別為場中斷、行中斷0和行中斷1。其中,場中斷在接收完一整幀數(shù)據(jù)后產(chǎn)生,并將幀編號(hào)寄存。行中斷在視頻接收到設(shè)置的門限行時(shí)產(chǎn)生中斷,并將幀編號(hào)寄存。詳細(xì)關(guān)系如圖2所示。
圖2 視頻中斷時(shí)序示意圖Fig.2 Video interrupt sequence diagram
上述的3個(gè)視頻中斷信號(hào)可以通過配置寄存器設(shè)置由GPIO4和GPIO5提供給DSP,原理如圖3所示。
圖3 視頻中斷選擇邏輯原理圖Fig.3 Schematic diagram of video interrupt selection logic
高速視頻實(shí)時(shí)處理系統(tǒng)可以實(shí)現(xiàn)DSP通過EMIFA接口靈活讀取外部輸入的視頻數(shù)據(jù)。視頻數(shù)據(jù)首先由FPGA進(jìn)行解碼,之后存入板載的DDR3存儲(chǔ)器中,并向DSP發(fā)送中斷。DSP收到中斷后向FPGA設(shè)置要讀取視頻的窗口,并啟動(dòng)FPGA讀取DDR3中的視頻數(shù)據(jù)。FPGA收到DSP發(fā)送的讀取視頻命令后,將DSP指定的視頻窗口內(nèi)的視頻數(shù)據(jù)按順序從DDR3中讀出并存入視頻緩沖FIFO中供DSP讀取。DSP發(fā)送完啟動(dòng)FPGA讀取命令后,檢測FPGA的視頻FIFO狀態(tài),并將視頻FIFO中的數(shù)據(jù)通過DMA方式搬移到L2中供視頻解算使用。當(dāng)DSP將所設(shè)置的窗口數(shù)據(jù)都讀完后觸發(fā)DMA 中斷,在DMA 中斷中對視頻數(shù)據(jù)進(jìn)行解算,如圖4所示。
圖4 DSP 讀取視頻數(shù)據(jù)原理框圖Fig.4 Schematic diagram of DSP reading video data
高速視頻實(shí)時(shí)處理系統(tǒng)設(shè)計(jì)完成后,采用IDT公司的M3面陣相機(jī)以520fps的幀頻(全分辨率1280×1024)的高速模式下進(jìn)行實(shí)時(shí)跟蹤測試。在某實(shí)時(shí)跟蹤設(shè)備測試中,本高速視頻實(shí)時(shí)處理系統(tǒng)能夠?qū)崟r(shí)處理高速視頻,波門跟蹤準(zhǔn)確流暢,實(shí)時(shí)性高,測試效果如圖5所示。
圖5 高速視頻實(shí)時(shí)處理系統(tǒng)測試中對漁船進(jìn)行跟蹤Fig.5 Track fishing boat in the test of high speed video real time processing system
本設(shè)計(jì)基于FPGA+DSP的高性能視頻實(shí)時(shí)處理系統(tǒng)能夠?qū)崿F(xiàn)高速視頻的實(shí)時(shí)接收、緩存、處理和輸出波門疊加等功能,能夠作為一個(gè)通用的高速視頻實(shí)時(shí)處理系統(tǒng)。其中高性能的DSP為實(shí)時(shí)圖像處理算法提供強(qiáng)大的算力,高性能FPGA 作為控制器實(shí)現(xiàn)高速視頻流的接收、緩存、分發(fā)和輸出。試驗(yàn)結(jié)果表明,本系統(tǒng)能夠穩(wěn)定實(shí)現(xiàn)分辨率1280×1024、位寬8bit、幀頻520FPS的視頻實(shí)時(shí)跟蹤處理算法。