隋旭陽,李妍妍,向?qū)W輔,田瑞娟
(中國兵器裝備集團(tuán)自動化研究所, 四川 綿陽 621000)
隨著微電子技術(shù)的發(fā)展,基于多相機(jī)的應(yīng)用系統(tǒng),如基于多攝像機(jī)的數(shù)據(jù)采集分析系統(tǒng)、多傳感器圖像融合系統(tǒng)和基于分布式攝像機(jī)的大范圍視頻監(jiān)控系統(tǒng)等日漸豐富。這些系統(tǒng)的共同點(diǎn)是都需要同時處理多通道同步或異步視頻數(shù)據(jù)流,實(shí)現(xiàn)高帶寬、大容量圖像數(shù)據(jù)高速、實(shí)時處理。傳統(tǒng)的圖像采集系統(tǒng)往往只有一個數(shù)據(jù)通道,每一次的數(shù)據(jù)采集只能面向單一傳感器,并且數(shù)據(jù)采集速率有限,實(shí)時性較差[1];基于DSP的多通道視頻處理系統(tǒng)的資源配置不夠靈活,不能很好地實(shí)現(xiàn)視頻格式轉(zhuǎn)換、顏色編碼轉(zhuǎn)換等功能[2];由此,多通道視頻處理系統(tǒng)需要與之相匹配的穩(wěn)定、可靠的數(shù)據(jù)采集和緩存系統(tǒng)。
本文研究了基于FPGA的多通道視頻數(shù)據(jù)采集系統(tǒng),設(shè)計了一套完整的多通道視頻數(shù)據(jù)采集硬件平臺,該平臺可以獲取多通道視頻流,并對視頻數(shù)據(jù)進(jìn)行緩存,通過數(shù)據(jù)優(yōu)先級仲裁模塊進(jìn)行多通道視頻流調(diào)度,并引入DDR3 SDRAM作為高帶寬、大容量圖像數(shù)據(jù)高速緩存設(shè)備,實(shí)現(xiàn)了多通道同步或異步視頻數(shù)據(jù)流的幀緩存,最后利用顯示模塊將采集到的視頻流進(jìn)行分屏或拼接顯示。多通道視頻數(shù)據(jù)采集系統(tǒng)模塊化設(shè)計,可加入數(shù)據(jù)傳輸、圖像預(yù)處理算法等模塊,適合絕大多數(shù)的視頻處理環(huán)境,能夠為后續(xù)的多通道圖像融合和圖像實(shí)時邊緣處理等算法提供穩(wěn)定的數(shù)據(jù)采集環(huán)境。
由于FPGA具有很強(qiáng)的并行處理能力和時序控制能力,因此被廣泛的應(yīng)用于高速并行數(shù)據(jù)處理領(lǐng)域[2-4]。FPGA可方便擴(kuò)展、可隨時編程的特點(diǎn),更適合用于開發(fā)周期短的工程應(yīng)用[5]。因此,選用FPGA作為多通道視頻數(shù)據(jù)采集緩存設(shè)計方案的主控芯片,實(shí)現(xiàn)多路相機(jī)圖像數(shù)據(jù)流輸入、讀寫DDR3芯片、顯示等功能。
DDR3 SDRAM作為高帶寬、大容量圖像數(shù)據(jù)高速緩存設(shè)備是當(dāng)前常用的設(shè)備存儲解決方案[6]。因此,本文采用Xilinx公司7系列FPGA的DDR3存儲控制器(Memory Interface Generator)IP核輔助完成數(shù)據(jù)緩存設(shè)計[7]。為提升用戶使用的方便性,本文采用類FIFO的封裝方式優(yōu)化了與MIG IP核信號互聯(lián)的用戶接口[8];采用基于DDR3 SDRAM存儲地址的讀寫控制方法設(shè)計數(shù)據(jù)讀寫控制模塊:將多通道的數(shù)據(jù)分別寫入用戶指定的DDR3的地址空間位置中,并通過讀寫切換操作讀出使用,更加靈活地處理數(shù)據(jù)在DDR3中的緩存[9]。
在系統(tǒng)進(jìn)行數(shù)據(jù)采集時,多通道視頻流輸入模塊將同步或異步視頻數(shù)據(jù)流緩存在相應(yīng)的異步FIFO中,數(shù)據(jù)優(yōu)先級仲裁模塊比較每一路視頻源的有效數(shù)據(jù)信息是否超過閾值,判斷各通道圖像數(shù)據(jù)是否觸發(fā)優(yōu)先級信號,從而選擇一路視頻源,從相應(yīng)的異步FIFO中讀取數(shù)據(jù),傳輸給FPGA數(shù)據(jù)讀寫控制模塊,經(jīng)過DDR3存儲控制器完成數(shù)據(jù)在DDR3 SDRAM相應(yīng)地址區(qū)域的緩存,并根據(jù)讀命令和讀地址,讀出所需的視頻源數(shù)據(jù),以便后端采用相應(yīng)的圖像處理算法對多通道視頻數(shù)據(jù)進(jìn)行深入分析。系統(tǒng)邏輯方案設(shè)計如圖1所示。
圖1 系統(tǒng)邏輯方案設(shè)計框圖
系統(tǒng)工作流程如圖2所示。系統(tǒng)工作流程包括:首先進(jìn)行主程序運(yùn)行,然后完成系統(tǒng)的上電復(fù)位操作,再利用系統(tǒng)判斷DDR3控制器的校準(zhǔn)信號是否完成,若未完成,繼續(xù)等待;若完成,F(xiàn)PGA控制各路視頻源的有效數(shù)據(jù)分別實(shí)時緩存在FPGA異步FIFO中。再利用數(shù)據(jù)優(yōu)先級仲裁模塊根據(jù)優(yōu)先級信號、閾值信息控制FPGA從相應(yīng)的異步FIFO中讀取數(shù)據(jù),然后通過DDR3數(shù)據(jù)讀寫控制模塊接收視頻源信息,并產(chǎn)生DDR3讀寫控制命令,根據(jù)讀寫操作命令、視頻源通道編號和用戶設(shè)定的讀寫操作空間計算給出DDR3讀寫操作相應(yīng)的地址,最后,F(xiàn)PGA根據(jù)設(shè)置的顯示參數(shù)從DDR3 SDRAM存儲器相應(yīng)的地址空間中讀寫所需的視頻源數(shù)據(jù),并根據(jù)用戶需求進(jìn)行分屏或拼接顯示。
設(shè)計的DDR3讀寫狀態(tài)機(jī)共有3種狀態(tài)(見圖3),每一次的寫操作都可以將相應(yīng)通道的ddr_write_length數(shù)量的視頻數(shù)據(jù)存儲到用戶指定的存儲地址位置中,讀操作將相應(yīng)地址空間的數(shù)據(jù)讀出使用,充分發(fā)揮出DDR3存儲的靈活性[9]。
圖2 系統(tǒng)工作流程框圖
圖3 DDR3讀寫狀態(tài)機(jī)
本系統(tǒng)涉及相機(jī)輸入時鐘與DDR3數(shù)據(jù)輸入時鐘,DDR3數(shù)據(jù)輸出時鐘與顯示模塊時鐘等跨時鐘域操作。為降低系統(tǒng)亞穩(wěn)態(tài)[10]出現(xiàn)概率,系統(tǒng)在跨時鐘域處采用異步FIFO,一方面解決數(shù)據(jù)位寬變換問題,另一方面,異步FIFO的存儲過程可描述為:把A時鐘域的數(shù)據(jù)存儲到RAM中,穩(wěn)定后再由B時鐘域讀取RAM中的數(shù)據(jù),從而實(shí)現(xiàn)從A、B時鐘域的跨時鐘域數(shù)據(jù)、信號的安全傳輸。
系統(tǒng)中涉及復(fù)位、DDR3校準(zhǔn)等控制信號也需要進(jìn)行跨時鐘域的信號傳輸,采用兩級觸發(fā)器同步處理控制信號(見圖4),可以防止亞穩(wěn)態(tài)傳播[10]。
圖4 兩級觸發(fā)器同步處理控制信號示意圖
在Xilinx Kintex-7 系列FPGA上進(jìn)行多通道視頻數(shù)據(jù)采集與顯示時選用的DDR3 SDRAM型號為MT41K256M16XX-125。高帶寬視頻圖像來源于模擬源生成器生成的4路異步視頻數(shù)據(jù)流,其幀頻為60FPS,而分辨率為1 920×1 080P。視頻圖像經(jīng)DDR3緩存后進(jìn)行截取拼接顯示,得到穩(wěn)定的 1 080P VGA顯示,如圖5所示。由于模塊通用化設(shè)計,可以通過頂層模塊的參數(shù)配置實(shí)現(xiàn)常見的多種分辨率多路同步或異步視頻采集緩存。
圖5 4通道異步視頻數(shù)據(jù)流采集拼接顯示圖
DDR3 SDRAM在IP設(shè)計時采用500 MHz的系統(tǒng)時鐘,其數(shù)據(jù)位寬為32 bit,用戶時間周期為8 ns,理論帶寬為500×2÷8×32 bit=4 000 MB/s。采用VIVADO軟件的ILA抓取一段數(shù)據(jù)進(jìn)行帶寬測試,如圖6所示。
從圖6可以發(fā)現(xiàn),在數(shù)據(jù)緩存過程中,由于工程的可擴(kuò)展性設(shè)計,有很大一段時間是在IDLE狀態(tài)等待視頻源數(shù)據(jù),造成了帶寬的未利用,如圖7所示。
由于DDR3 SDRAM屬于動態(tài)隨機(jī)存儲器的一種,使用電容存儲,必須每隔一段時間對存儲單元加載比較電壓,對相應(yīng)的數(shù)據(jù)重寫,如若不然,存儲的數(shù)據(jù)就會丟失。預(yù)充電命令、激活命令、動態(tài)刷新操作會影響DDR3 SDRAM的讀寫效率[3];DDR3控制器在設(shè)計時,為了保證更低的出錯率,采取了讀寫狀態(tài)切換時IDLE狀態(tài)等待措施,這些措施也會降低效率;在多通道視頻數(shù)據(jù)采集應(yīng)用方面,需要控制每一路視頻緩存在相應(yīng)的地址空間范圍,每一幀圖像完成精確的存儲地址定位,考慮到FPGA內(nèi)部資源的合理利用,每一次緩存在異步FIFO中的數(shù)據(jù)長度不宜過多,DDR3需要完成頻繁的讀寫地址切換,效率有所降低。同一地址空間讀寫切換測試表明,對DDR3連續(xù)進(jìn)行N次寫操作,再進(jìn)行N次讀操作測試效率如下:N為1時,效率為10.3%,N為64時,效率為74.8%,N為240時,效率為80.2%。頻繁的讀寫地址切換,使得多通道視頻數(shù)據(jù)采集在連續(xù)240長度讀/寫操作時效率必然低于80.2%,但隨著用戶設(shè)計的單次讀寫數(shù)據(jù)量增大,讀寫效率將有所提升。相比于多通道A/D信息采集方面的應(yīng)用中連續(xù)讀寫能夠達(dá)到理論帶寬80%以上的效率[3],多通道視頻數(shù)據(jù)采集受頻繁的同Bank行切換、Bank間切換影響,效率有所降低。
圖6 4通道異步視頻采集帶寬計算界面
圖7 4通道異步視頻寫入帶寬計算界面
通過系統(tǒng)硬件平臺方案選擇、系統(tǒng)邏輯方案設(shè)計、系統(tǒng)工作流程實(shí)現(xiàn)、系統(tǒng)跨時鐘域優(yōu)化處理等角度闡述了多通道視頻采集系統(tǒng)的設(shè)計與實(shí)現(xiàn),并經(jīng)過板級驗證,實(shí)現(xiàn)了4通道異步視頻數(shù)據(jù)流采集、緩存與視頻截取、拼接顯示。在考慮控制操作延時傳遞、存儲器動態(tài)刷新等情況下,數(shù)據(jù)讀寫帶寬可達(dá)到近3 000 MB/s,效率在理論帶寬的70%左右。模塊化、參數(shù)化的工程設(shè)計具有較強(qiáng)的可移植性。