王笑寒,韓文波
(長春理工大學(xué) 光電工程學(xué)院,長春 130022)
社會的飛速發(fā)展推進城市化進程,城市的人口隨之增多,且流動幅度增加,帶來治安案件頻發(fā),增加了公安部門治安防控的難度。視頻監(jiān)控系統(tǒng)越來越多地應(yīng)用于日常生活的各個方面。銀行、住宅、機場等各方面對安全防范設(shè)備和現(xiàn)場監(jiān)控系統(tǒng)的需求更是與日俱增,對于視頻監(jiān)控系統(tǒng)的要求也隨之越來越高。更高性能的視頻監(jiān)控系統(tǒng)可以滿足各個場所安防任務(wù)的要求。
隨著科技的發(fā)展,以嵌入式網(wǎng)絡(luò)視頻服務(wù)器、編解碼器的網(wǎng)絡(luò)化數(shù)字視頻監(jiān)控出現(xiàn)在大眾視野之中。如今的視頻監(jiān)控系統(tǒng)要求對數(shù)字圖像進行處理以實現(xiàn)高清晰度高實時性的顯示需求,這就涉及到高速大數(shù)據(jù)流的數(shù)據(jù)采集、數(shù)據(jù)存儲、傳輸及圖像處理能技術(shù)。FPGA與DSP組合作為視頻監(jiān)控的嵌入式核心可以很好地解決上述問題。為了解決攝像頭大數(shù)據(jù)量采集過程中傳輸速率慢的問題,本文搭建了以FPGA+DSP為核心的高清視頻圖像采集及處理系統(tǒng),分別從采樣接口、數(shù)據(jù)存儲及數(shù)據(jù)處理三個方面提高數(shù)據(jù)的傳輸速率[1]。
本系統(tǒng)選用Atlra公司的EP4CE75F29為控制核心,代替?zhèn)鹘y(tǒng)串并轉(zhuǎn)換芯片DS90CR288A,使用FPGA內(nèi)部IP核實現(xiàn)串并轉(zhuǎn)換功能,完成對Camera Link接口數(shù)據(jù)的采集,CMOS相機Camera Link接口配置為Full模式發(fā)送8路LVDS數(shù)據(jù),由本文設(shè)計FPGA的Camera Link串并轉(zhuǎn)換模塊接收,轉(zhuǎn)換后發(fā)送出64路并行數(shù)據(jù),解決采集數(shù)據(jù)過程中高速傳輸?shù)膯栴}。轉(zhuǎn)換后的圖像數(shù)據(jù)逐幀存儲在MT47H256M4中做乒乓操作,解決了大數(shù)據(jù)量的存儲問題。選取TMS320DM6437為DSP算法芯片,將存儲在DDR2中的圖像數(shù)據(jù)通過EMIF接口發(fā)送到DSP中,按H.264壓縮標準實現(xiàn)視頻壓縮,減少冗余圖像數(shù)據(jù)提高傳輸速率。將壓縮后的圖像數(shù)據(jù)通過KSZ8001L以太網(wǎng)發(fā)送,實現(xiàn)高清采集、處理及遠程傳輸?shù)墓δ堋?/p>
Camera Link接口協(xié)議定義了三種模式:Base(基礎(chǔ)模式)、Medium(中等模式)、Full(完全模式)。Base模式采用3個端口,每個端口8位數(shù)據(jù)寬度,一組24 bit數(shù)據(jù)的同步傳輸。Medium模式采用6個端口,每個端口8位數(shù)據(jù)寬度,兩組共48 bit數(shù)據(jù)的同步傳輸。在Full模式下,可實現(xiàn)8個端口三組數(shù)據(jù)的同步傳輸,數(shù)據(jù)寬度可達64 bit。Camera Link采集芯片DS90CR288A采集數(shù)據(jù)最高的時鐘頻率為85 MHz。Camera Link接口工作在Full模式下,可以達到的數(shù)據(jù)接收量為5.44 Gb/s[2]。
圖1 系統(tǒng)總體方案
為了實現(xiàn)4 K分辨率30 fps高數(shù)據(jù)量的圖像采集,圖像數(shù)據(jù)的傳輸速度要求更快,需要每秒傳輸?shù)臄?shù)據(jù)量為:
使用DS90CR288A不能滿足高數(shù)據(jù)量的傳輸需求,為了提高傳輸速率,本文采用FPGA設(shè)計數(shù)據(jù)的收發(fā)模塊。FPGA的Cyclone IV芯片最高輸出PLL頻率為1 300 MHz,使用FPGA控制串行輸出的LVDS信號按1:7轉(zhuǎn)換為7路并行數(shù)據(jù),可以達到的LVDS最高傳輸速率可達185.5 MHz。采用Full模式同步采集3組數(shù)據(jù)可以達到的最大數(shù)據(jù)量為:
采用FPGA代替?zhèn)鹘y(tǒng)的串并轉(zhuǎn)換芯片接收Cameralink接口數(shù)據(jù),滿足4 K高清圖像數(shù)據(jù)采集及傳輸需求[3-4]。
為了解決采集系統(tǒng)高速存儲及發(fā)送的問題,選取兩塊DDR2代替雙口RAM做乒乓讀寫操作。使用FPGA的Fifo模塊,解決了FPGA與DDR2之間時鐘不同步的問題[5]。
圖2 DDR2 SDRAM乒乓操作原理示意圖
對乒乓操作的工作的流程進行設(shè)計,在t0開始工作時,數(shù)據(jù)輸入選通模塊首先將一幀視頻圖像存入一塊DDR2中,在t1時刻開始進行乒乓操作,將起始存入的視頻圖像數(shù)據(jù)從DDR2中發(fā)送給讀取選通模塊的同時存入另一塊DDR2中下一幀的圖像數(shù)據(jù),如此往復(fù),實現(xiàn)了高速大數(shù)據(jù)量儲存。選取的DDR2型號為MT47H256M4,最大的時鐘頻率可達1 066 MHz,每秒可存入的數(shù)據(jù)量為17 Gb。通過乒乓操作滿足了4 K大數(shù)據(jù)量的高速存儲需求[6]。考慮FPGA驅(qū)動DDR2 SDRAM控制器的工作原理,可以將其按功能主要劃分為狀態(tài)控制模塊、數(shù)據(jù)讀寫模塊、命令控制模塊以及FIFO模塊??刂破鹘Y(jié)構(gòu)圖如圖3所示。
圖3 DDR2 SDRAM控制器結(jié)構(gòu)圖
為了解決視頻數(shù)據(jù)量大以太網(wǎng)傳輸碼率低的問題,選用DSP對數(shù)據(jù)進行H.264算法壓縮。本系統(tǒng)經(jīng)FPGA完成了視頻的采集后,對采集到的視頻數(shù)據(jù)發(fā)送到DSP中進行壓縮,將壓縮后的視頻數(shù)據(jù)通過千兆以太網(wǎng)實時地傳輸?shù)奖O(jiān)控中心,DSP實現(xiàn)了硬件視頻壓縮及發(fā)送需求。采用DSP為核心的硬件壓縮,相比于軟件壓縮需要的主機,體積小、功耗低,并且性能較高,適于完成視頻圖像采集及處理系統(tǒng)小型化的需求;相比于軟件,硬件壓縮可以實時地壓縮及發(fā)送圖像數(shù)據(jù),實時性保障了網(wǎng)絡(luò)攝像頭的遠程監(jiān)控需求[7]。
為實現(xiàn)高速傳輸4 K高清圖像任務(wù),根據(jù)所研究技術(shù)搭建硬件電路,分別從Camera Link接口采集模塊、DDR2存儲模塊、以太網(wǎng)接口模塊三個方面介紹設(shè)計電路。
Camera Link接口采集模塊硬件原理圖如圖4所示,通過EP4CE75F29擴展出的IO口編譯為LVDS差分信號線將SDR26接插頭將采集數(shù)據(jù)傳輸至FPGA中。本實驗設(shè)置Camera Link接口的接口模式為Full模式,需要兩塊SDR26傳輸?shù)男盘柊ǎ阂唤M控制相機的信號(CC1、CC2、CC3、CC4)、一組串口通信信號(SerTFG、SerTC)和三組圖像數(shù)據(jù)信號(X0~X3、Y0~Y3、Z0~Z3)。通過FPGA對串行接口時鐘(XCLK,YCLK,ZCLK)提供185 MHz時鐘進行數(shù)據(jù)傳輸。設(shè)計此模塊將采集數(shù)據(jù)傳輸?shù)紽PGA中進行高速串并轉(zhuǎn)換處理,實現(xiàn)Full模式Camera Link接口數(shù)據(jù)采集功能。
圖4 Camera Link接口SDR-26與FPGA硬件連接圖
本系統(tǒng)設(shè)計選用Winbond公司的MT47H64M 16HR-3IT芯片作為系統(tǒng)的緩存設(shè)備。DDR2 SDRAM是對內(nèi)部電容不斷充放電來實現(xiàn)數(shù)據(jù)存儲的穩(wěn)定性。DDR2 SDRAM乒乓操作硬件連接圖如圖5所示。
圖5 DDR2 SDRAM與FPGA硬件連接圖
本系統(tǒng)中,DSP控制網(wǎng)絡(luò)傳輸模塊接收視頻信號并作解碼處理。網(wǎng)絡(luò)傳輸模塊主要是由以太網(wǎng)媒體接入控制器EMAC、物理層接口收發(fā)控制器PHY以及以太網(wǎng)接口三部分組成,其中,EMAC與PHY通過MII接口傳輸數(shù)據(jù)。支持10/100BASE-T全雙工、半雙工通信模式,并通過RJ45網(wǎng)絡(luò)接口相連實現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)傳輸,工作電壓為3.3 V,采用百兆網(wǎng)傳輸,時鐘信號采用25 MHz,圖6為網(wǎng)絡(luò)傳輸模塊電路硬件連接原理圖。
圖6 網(wǎng)絡(luò)傳輸模塊電路原理圖
系統(tǒng)軟件主程序流程圖如圖7所示。程序主要例化了采集數(shù)據(jù)模塊、DDR2 SDRAM乒乓操作模塊、硬件壓縮模塊、以太網(wǎng)數(shù)據(jù)傳輸模塊。首先FPGA采集數(shù)據(jù)模塊按照Cameralink接口協(xié)議給定的時序?qū)D像數(shù)據(jù)與DE、HSYNC、VSYNC等信號采集到FPGA中完成數(shù)據(jù)的采集,同時使用DS90CR288A串并轉(zhuǎn)換芯片采集相同數(shù)據(jù)做對比實驗。將FPGA采集到的視頻信號送至DDR2 SDRAM通過控制狀態(tài)模塊與乒乓操作模塊,按照給定的順序依次存入兩片DDR2 SDRAM中。從緩存讀出的數(shù)據(jù)在硬件壓縮模塊進行幀內(nèi)預(yù)測、幀間預(yù)測、數(shù)據(jù)處理后完成H.264壓縮最后通過以太網(wǎng)數(shù)據(jù)傳輸模塊發(fā)送。
圖7 系統(tǒng)軟件程序流程圖
CameraLink接口的數(shù)據(jù)傳輸基礎(chǔ)就是低壓差分信號(LVDS)包含1對發(fā)送端和接收端。接收端接收5路LVDS信號,其中4路為串行數(shù)據(jù)流和1路為專用串行時鐘流,每條串行數(shù)據(jù)按照解串比為1∶7進行解串,將這5條LVDS信號還原為28路并行的單端數(shù)據(jù)信號以及1路伴隨時鐘的單端信號[8],傳輸數(shù)據(jù)碼流如圖8所示。
圖8 28-bit數(shù)據(jù)位置映射圖
傳輸?shù)臄?shù)據(jù)存放到設(shè)置的寄存器信號clr_dval、clr_lval、clr_fval中等發(fā)送命令傳輸?shù)紻DR2中,數(shù)據(jù)傳輸?shù)捻樞虬瓷鲜龅?8-bit數(shù)據(jù)位置映射圖對應(yīng)傳輸。調(diào)用IBUFDS的IP核配置LVDS通道,通過IP核實現(xiàn)一路串行差分信號轉(zhuǎn)換為并行數(shù)據(jù)。通道深度設(shè)置為7 bit,按照Cameralink接口協(xié)議一路LVDS信號線傳輸7位并行數(shù)據(jù),實現(xiàn)FPGA的采集模塊。圖9為FPGA采集程序RTL調(diào)試界面
圖9 RTL調(diào)試界面
基于兩片DDR2 SDRAM所進行的乒乓操作讀寫設(shè)計,需要由一個頂層模塊控制兩個DDR2 SDRAM控制器。其中,DDR2狀態(tài)控制模塊根據(jù)操作指令控制初始化狀態(tài)機、讀寫狀態(tài)機以及自動刷新模塊,初始化狀態(tài)機和讀寫狀態(tài)機別控制DDR2 SDRAM的初始化時序以及讀寫時序,自動刷新模塊根據(jù)刷新計數(shù)器的值從而使其進行周期性刷新操作。DDR2 SDRAM狀態(tài)流程圖如圖10所示。
圖10 DDR2 SDRAM狀態(tài)流程圖
采用DSP連接FPGA使用H.264壓縮算法處理圖像數(shù)據(jù),減少冗余的圖像像素數(shù)據(jù)。算法將每一幀圖片分成多個宏塊,提出宏塊之間的差值用來傳輸減少傳輸過程中的冗余數(shù)據(jù),提高傳輸能力[9]。
編碼時,編碼對象為輸入幀內(nèi)的各個宏塊,編碼器根據(jù)視頻圖像具體情況選擇相應(yīng)預(yù)測方式。當選擇幀內(nèi)預(yù)測時,需要編碼的對象P中所有的像素點都需要各自進行編碼,每個像素點預(yù)測值根據(jù)當前幀中和它臨近的像素點通過算法得到,所有像素點的預(yù)測值構(gòu)成了塊P的預(yù)測幀。當選擇幀間預(yù)測模式時,預(yù)測值P通過運動估計和運動補償?shù)玫?,先要根?jù)實際情況選擇參考幀,將當前幀和參考幀以塊為單位分別通過選定的判定標準進行運動估計和運動補償,得到每個塊的預(yù)測值。選定的預(yù)測值與對應(yīng)塊的預(yù)測值進行相減,得到殘差值,對殘差進行變換編碼,通過熵編碼后打包形成碼流[10]。
圖11 H.264壓縮算法流程圖
為了實現(xiàn)4 K分辨率30 fps高數(shù)據(jù)量的圖像采集,本文采用FPGA設(shè)計經(jīng)計算數(shù)據(jù)的收發(fā)模塊達到的最大數(shù)據(jù)量為11.84 Gb/s。如圖12為modelsim仿真DS90CR288A數(shù)據(jù)采集時序,系統(tǒng)時鐘最大設(shè)置為85 MHz,初始化完成后,當clr_dval、clr_fval、clr_lval置 1 后,進行數(shù)據(jù)采集,輸入端portA、portB、portC共24路并行數(shù)據(jù)開始傳輸,按系統(tǒng)時鐘7∶1的時鐘頻率轉(zhuǎn)換成4路串行數(shù)據(jù)穩(wěn)定傳輸,轉(zhuǎn)換后共28路數(shù)據(jù)在FPGA接收,傳輸數(shù)據(jù)時序圖如圖13所示。
圖12 DS90CR288A傳輸數(shù)據(jù)仿真圖
圖13 FPGA傳輸數(shù)據(jù)仿真圖
轉(zhuǎn)換后的時鐘clock_p,clock_n高低電平比為4∶3,時序圖完全符合數(shù)據(jù)映射圖中的時鐘信號TxCLK OUT,剩余四路LVDS通道按7∶1傳輸共28位圖像數(shù)據(jù),選用FPGA最大內(nèi)部PLL,LVDS最高傳輸速率可達185.5 MHz。
圖14為兩片DDR2 SDRAM乒乓操作時序仿真圖。sdram1_data和sdram2_data為兩片DDR2的數(shù)據(jù)總線,當?shù)谝黄珼DR2 SDRAM完成一組八位數(shù)據(jù)寫操作后,第二片再進行寫操作,如此交替往復(fù)完成乒乓操作。
圖14 兩片DDR2 SDRAM乒乓操作時序仿真圖
通過H.264壓縮數(shù)據(jù)的壓縮比可達156,非常大地降低了4 K視頻數(shù)據(jù)量,使數(shù)據(jù)量降為1.2 Mbps,說明系統(tǒng)的余量很大。當按照50 KB/s的速度接收數(shù)據(jù)時,在接收端并未出現(xiàn)丟包和誤碼的現(xiàn)象,說明經(jīng)過H.264壓縮后通過以太網(wǎng)模塊正常傳輸采集的視頻數(shù)據(jù)。
系統(tǒng)主要實現(xiàn)了分辨率為3 840×2 160,幀頻為60 Hz的視頻圖像從Cameralink接口采集,經(jīng)DDR2乒乓操作緩存、H.264硬件壓縮后,最終通過以太網(wǎng)模塊發(fā)送,符合系統(tǒng)要求。在工具綜合與布線之后,查看Quartus編譯后生成的系統(tǒng)資源消耗統(tǒng)計表。表中可知該系統(tǒng)所占FPGA硬件資源適中,沒有消耗大量資源,是在可接受的范圍之內(nèi)。
系統(tǒng)通過FPGA完成了對4 K分辨率CMOS相機的高清采集、處理的功能,運用Verilog語言實現(xiàn)大數(shù)據(jù)量的FIFO緩存,且不丟失數(shù)據(jù)。通過DSP完成了圖像數(shù)據(jù)的壓縮及遠程發(fā)送,視頻實時性高、壓縮比達到了156,大大減小了網(wǎng)絡(luò)傳輸?shù)膲毫Α_x用FPGA與DSP為控制核心搭建高速實時圖像采集與處理系統(tǒng),在安防監(jiān)控這樣的視頻領(lǐng)域有著廣闊的發(fā)展。