王煒琛,涂海洋,王偉明,趙曉博
(1.石家莊鐵道大學(xué)電氣與電子工程學(xué)院,河北 石家莊 050043;2.空裝北京軍代局駐石家莊地區(qū)軍代室,河北 石家莊050000)
視頻圖像分割是安全監(jiān)控、3D視覺(jué)、全景影像和計(jì)算成像等視頻圖像系統(tǒng)中不可或缺的技術(shù)。隨著人們對(duì)視覺(jué)體驗(yàn)的要求越來(lái)越高,傳統(tǒng)的PAL/NTSC(Phase Alternate/National Television Standards Committee)等低分辨率模擬視頻圖像格式在畫(huà)質(zhì)、幀率和傳輸速度上均難以滿足需求,因此研制數(shù)字視頻圖像分割器具有較強(qiáng)的迫切性[1]。串行數(shù)字接口SDI(Serial Digitial Interface)技術(shù)作為數(shù)字視頻圖像的典型代表,20世紀(jì)80年代由美國(guó)的電影與電視工程師協(xié)會(huì)SMPTE(the Society of Motion Picture and Television Engineers)制定,以一根同軸電纜通過(guò)數(shù)字化的方式處理和傳輸音視頻圖像數(shù)據(jù)。SDI技術(shù)分為SD-SDI、HD-SDI、3G-SDI共3種不同的標(biāo)準(zhǔn),有著不同的視頻圖像以及顯示格式。SDI主要應(yīng)用在廣播電視行業(yè),具有傳輸速度快、抗干擾能力強(qiáng)、物理接口簡(jiǎn)單、即插即用和遠(yuǎn)距離傳輸?shù)膬?yōu)點(diǎn)[1,2]。
Figure 1 Block diagram of TW6874 application圖1 TW6874應(yīng)用框圖
目前,多數(shù)的設(shè)計(jì)是將各路視頻圖像信號(hào)轉(zhuǎn)換成數(shù)字視頻圖像信號(hào),最后按照數(shù)字視頻圖像的數(shù)據(jù)格式,將4路視頻圖像合成1路編碼輸出,以實(shí)現(xiàn)4路視頻圖像分割。圖像的提取、存儲(chǔ)等都在單片F(xiàn)PGA內(nèi)實(shí)現(xiàn)[3,4]。這種系統(tǒng)設(shè)計(jì)的優(yōu)點(diǎn)是提高了系統(tǒng)的集成度,但所有的模塊都是利用Verilog 進(jìn)行邏輯設(shè)計(jì),比較復(fù)雜[4]。針對(duì)以上問(wèn)題,本文設(shè)計(jì)并實(shí)現(xiàn)了一種在XILINX Zynq的ARM+FPGA異構(gòu)平臺(tái)上,利用串行高清視頻圖像解碼芯片實(shí)現(xiàn)視頻圖像分割的系統(tǒng)。相比較經(jīng)典的FPGA,Zynq系列最大的特點(diǎn)是將處理系統(tǒng)PS(Processing System)和可編程資源PL(Programmable Logic)分離開(kāi)來(lái),固化了PS系統(tǒng),提高了系統(tǒng)資源利用率,利用軟硬件協(xié)同設(shè)計(jì),靈活方便,且利用了IP核占用芯片面積小、運(yùn)行速度快、功耗低等特點(diǎn),使整個(gè)系統(tǒng)的運(yùn)行速度得到提高,功耗降低[5 - 8]。此平臺(tái)允許多路SDI的視頻圖像輸入,并將其合成1路SDI視頻圖像輸出,為進(jìn)一步構(gòu)建多路數(shù)字視頻圖像并行處理平臺(tái)提供了可擴(kuò)展架構(gòu)。
本文系統(tǒng)的視頻圖像輸入由TW6874 SDI視頻圖像解碼芯片產(chǎn)生。TW6874具有4個(gè)獨(dú)立的SDI視頻圖像接收通道,4個(gè)SDI數(shù)字相機(jī)通過(guò)75 Ω線纜連接至各個(gè)通道的SMA(SubMiniature version A )輸入端子。每個(gè)通道由自適應(yīng)均衡器、時(shí)鐘數(shù)據(jù)恢復(fù)和VC-2解壓縮引擎組成。圖1所示為T(mén)W6874的應(yīng)用框圖。
TW6874的視頻圖像輸出格式為HD-SDI BT.1120或SD-SDI BT.656。本文系統(tǒng)采用的是HD-SDI BT.1120格式。HD-SDI BT.1120包含16 bit與8 bit 2種模式,為了便于進(jìn)行數(shù)據(jù)傳輸以及數(shù)據(jù)編碼,本文系統(tǒng)采用HD-SDI BT.1120的16 bit模式,圖2所示為其時(shí)序圖。
Figure 2 BT.1120 timing圖2 BT.1120時(shí)序圖
數(shù)據(jù)流的低8位為Y分量,數(shù)據(jù)流的高8位為C分量。圖3所示為逐行掃描模式下的BT.1120協(xié)議,一幅圖像包含消隱區(qū)和有效數(shù)據(jù)區(qū),其中EAV、SAV(F、V、H)為圖像定時(shí)基準(zhǔn)碼[9,10]。表1為L(zhǎng)1~L6所代表的含義及其所對(duì)應(yīng)的起始行號(hào)[9,10]。
Figure 3 BT.1120 format圖3 BT.1120格式
符號(hào)定義起始行號(hào)有效行數(shù)目1 080L1一幀的首行1L2數(shù)字幀消隱首行41L3有效圖像首行42L4有效圖像末行1 121L5數(shù)字幀消隱末行1 122L6一幀的末行1 125
本文系統(tǒng)的SDI高清視頻圖像輸出模塊采用如圖4所示的XILINX的SMPTE SDI IP核。
Figure 4 SMPTE SDI IP core圖4 SMPTE SDI IP核
IP核接口包括輸入和輸出2部分,本文系統(tǒng)只利用了此IP核的輸出接口,主要是tx_din_rdy,tx_video_a_y_in,tx_video_a_c_in,tx_mode和tx_usrclk這幾個(gè)信號(hào)。其中,tx_din_rdy在SDI模式下必須保持高電平;tx_video_a_y_in與tx_video_a_c_in寬度為10 bit,為數(shù)據(jù)流Y、C的輸入接口;tx_mode是寬度為2 bit的輸入端口,代表了輸出視頻圖像的格式。tx_mode為00,表示輸出的視頻圖像格式為HD-SDI;tx_mode為01,表示輸出的視頻圖像格式為SD-SDI;tx_mode為10,表示輸出的視頻圖像格式為3G-SDI;tx_mode為11,表示無(wú)效的視頻圖像格式。tx_usrclk為視頻圖像輸出部分的時(shí)鐘域。SMPTE SDI IP模式的數(shù)據(jù)流Y、C分量寬度均為10 bit,而TW6874串行解碼芯片產(chǎn)生的數(shù)據(jù)流Y、C分量寬度均為8 bit。為滿足SMPTE SDI IP 核輸出模式,將TW6874解碼產(chǎn)生的8 bit數(shù)據(jù)均左移2位[11]。
本文系統(tǒng)的硬件主要包括高清視頻圖像串行解碼芯片TW6874、自適應(yīng)電纜均衡器LMH0302、可編程時(shí)鐘芯片SI5340、DDR3 SDRAM和XILINX Zynq系列的XZC7035 FPGA。圖5所示為系統(tǒng)硬件結(jié)構(gòu)圖。
Figure 5 Hardware structure of system圖5 系統(tǒng)硬件結(jié)構(gòu)圖
XILINX公司的Zynq系列FPGA具有很高的性價(jià)比,在工業(yè)界已經(jīng)獲得了廣泛的應(yīng)用。該系列資源豐富,特別是集成了雙1 GHz ARM Cortex A9硬核,極大地滿足了視頻圖像采集和各種算法處理需求,XILINX同時(shí)提供各種視頻圖像專用IP,可以大大加速開(kāi)發(fā)進(jìn)度[12,13]。Zynq的PS端配有1 GB的32 bit位寬的DDR3 SDRAM作為數(shù)據(jù)高速緩存。Zynq的PL端主要完成4路SDI視頻圖像的行輸入、像素抽樣,PS端主要通過(guò)調(diào)度AXI DMA(Direct Memory Access)完成視頻圖像的三緩存。
由于各通道數(shù)據(jù)帶寬大,數(shù)據(jù)通常需采用芯片來(lái)并行同步處理,才能實(shí)現(xiàn)高速運(yùn)動(dòng)畫(huà)面無(wú)撕裂、不丟幀、無(wú)圖像追趕現(xiàn)象的要求。TW6874正好提供了4路SDI視頻圖像的接入能力。4個(gè)高清數(shù)字相機(jī)經(jīng)過(guò)TW6874解串處理后,將視頻圖像數(shù)據(jù)轉(zhuǎn)換為BT.1120數(shù)據(jù)送入PL端進(jìn)行處理。處理后的數(shù)據(jù)寫(xiě)入DDR3 SDRAM進(jìn)行高速緩存,最后經(jīng)SMPTE SDI IP核和GTX高速串行發(fā)送器輸出。其中GTX的參考時(shí)鐘為27 MHz,是通過(guò)FPGA的100 MHz進(jìn)行分頻得到的,通過(guò)SI5340可編程時(shí)鐘輸出的148.5 MHz時(shí)鐘對(duì)GTX和SMPTE SDI IP提供恢復(fù)時(shí)鐘。視頻圖像數(shù)據(jù)經(jīng)GTX輸出后,由線纜驅(qū)動(dòng)器LMH0302為數(shù)字視頻圖像信號(hào)提供驅(qū)動(dòng)能力,通過(guò)SMA線纜輸出至SDI監(jiān)視器進(jìn)行顯示。
首先需對(duì)4個(gè)1920×1080視頻圖像的有效數(shù)據(jù)按照?qǐng)D6所示方式進(jìn)行抽樣并重新排列,裁剪為4個(gè)960×540的視頻圖像數(shù)據(jù),然后合并為1個(gè)1920×1080的視頻圖像數(shù)據(jù)。BT.1120數(shù)據(jù)的低8位排列規(guī)律為:Y0、Y1、Y2、Y3、Y4、Y5、Y6、Y7,高8位的排列規(guī)律為Cb0、Cr0、Cb2、Cr2、Cb4、Cr4、Cb6、Cr6,選取Y0、Y1、Cb0、Cr0、Y4、Y5、Cb4、Cr4,舍棄Y2、Y3、Cb2、Cr2、Y6、Y7、Cb6、Cr6。即高8位與低8位均隔2位取2位,將1920×1080視頻圖像數(shù)據(jù)抽樣為960×540視頻圖像數(shù)據(jù)。
Figure 6 Pixel up-sampling process圖6 像素的抽樣處理
由于HD-SDI BT.1120數(shù)據(jù)格式中存在消隱區(qū),即無(wú)效數(shù)據(jù),因此當(dāng)4路SDI輸入合成1路SDI輸出時(shí),本文系統(tǒng)設(shè)計(jì)了一個(gè)“輸出框架”,以SDI視頻圖像格式為基礎(chǔ)對(duì)視頻圖像的消隱區(qū)數(shù)據(jù)進(jìn)行了統(tǒng)一,即根據(jù)BT.1120的格式,將視頻圖像的消隱區(qū)數(shù)據(jù)提前編寫(xiě)好,并將有效數(shù)據(jù)區(qū)分為4塊,以便將處理好的有效數(shù)據(jù)導(dǎo)入。
在視頻圖像數(shù)據(jù)的輸入側(cè),通過(guò)對(duì)SAV圖像定時(shí)基準(zhǔn)碼的檢測(cè),判斷行有效數(shù)據(jù)的起始,將每行的有效數(shù)據(jù)導(dǎo)入至AXI4-Stream Data FIFO中,然后利用AXI DMA模塊寫(xiě)入至DDR3 SDRAM進(jìn)行緩存,最后作為“輸出框架”中的有效數(shù)據(jù)區(qū)輸出至SMPTE SDI IP核。
數(shù)據(jù)輸入側(cè)的時(shí)鐘與輸出側(cè)時(shí)鐘存在著相位差,是2個(gè)不同的時(shí)鐘域。數(shù)據(jù)跨時(shí)鐘域進(jìn)行傳輸時(shí),必須要經(jīng)過(guò)緩存。
目前,在Zynq平臺(tái)上對(duì)視頻圖像緩存一般采用AXI VDMA[14],這種設(shè)計(jì)大多需要與相機(jī)像素輸出時(shí)序相匹配,靈活性差,資源占用多。本文系統(tǒng)設(shè)計(jì)了行有效數(shù)據(jù)緩存模式,利用AXI4-Stream Data FIFO緩存1行有效數(shù)據(jù)并且產(chǎn)生AXI DMA所需要的握手信號(hào)。這種方式靈活,便于拓展。
本文系統(tǒng)中FIFO的寫(xiě)入時(shí)鐘是37.125 MHz,為了滿足30幀/秒輸出幀率的要求,DDR3 SDRAM的寫(xiě)入時(shí)鐘采用150 MHz。
圖7所示為AXI4-Stream Data FIFO,它是輸入輸出接口均為AXIS的數(shù)據(jù)緩存器,和其他FIFO一樣是先進(jìn)先出形式,可以在跨時(shí)鐘域的應(yīng)用中用于數(shù)據(jù)緩存。其主要的輸入側(cè)信號(hào)有s_axis_tvalid,s_axis_tdata,s_axis_last。通過(guò)對(duì)SAV圖像定時(shí)基準(zhǔn)碼的檢測(cè),判斷行有效數(shù)據(jù)的起始,并開(kāi)始進(jìn)行緩存。圖8所示為AXI4-Stream Data FIFO輸入信號(hào)時(shí)序。
Figure 7 AXI4-Stream Data FIFO IP core圖7 AXI4-Stream Data FIFO IP核
Figure 8 AXI4-Stream Data FIFO input signal timing diagram圖8 AXI4-Stream Data FIFO輸入信號(hào)時(shí)序圖
AXI DMA為內(nèi)存和AXI4-Stream目標(biāo)外設(shè)之間提供高帶寬內(nèi)存訪問(wèn)。AXI DMA的主要信號(hào)有AXI DMA寫(xiě)入時(shí)鐘m_axi_mm2s_aclk,AXI DMA數(shù)據(jù)寫(xiě)入端口s_axi_s2mm_tdata,AXI DMA讀出時(shí)鐘m_axi_s2mm_aclk,AXI DMA數(shù)據(jù)讀出端口m_axi_mm2s_tdata,AXI DMA的寫(xiě)入握手信號(hào)有s_axi_s2mm_tready,s_axi_s2mm_tlast,s_axi_s2mm_tvalid。圖9所示為AXI DMA寫(xiě)入握手信號(hào)時(shí)序圖。AXI DMA的讀出握手信號(hào)有m_axi_mm2s_tready,m_axi_mm2s_tlast,m_axi_mm2s_tvalid。圖10所示為AXI DMA讀出握手信號(hào)時(shí)序圖。
Figure 9 AXI DMA input handshake signal timing圖9 AXI DMA寫(xiě)入握手信號(hào)時(shí)序圖
Figure 10 AXI DMA output handshake signal timing圖10 AXI DMA讀出握手信號(hào)時(shí)序圖
為了使視頻圖像流暢無(wú)撕裂現(xiàn)象,利用AXI DMA通過(guò)DDR3 SDRAM進(jìn)行了幀的三緩存設(shè)計(jì)。利用AXI4-Stream Data FIFO每行960個(gè)數(shù)據(jù)產(chǎn)生s_axi_s2mm_tlast信號(hào)與AXI DMA進(jìn)行握手,將數(shù)據(jù)緩存至DDR3 SDRAM中,緩存540行之后進(jìn)行下一個(gè)緩沖區(qū)地址的切換,4個(gè)AXI DMA每路視頻圖像均有3個(gè)緩沖區(qū),一共12個(gè)緩沖區(qū)。且通過(guò)將不同AXI DMA的m_axi_mm2s_tready信號(hào)置成高電平來(lái)切換不同的視頻圖像源,4路視頻圖像分為4個(gè)區(qū)域,形成田字格分布,分別對(duì)應(yīng)4個(gè)AXI DMA模塊。圖11為AXI DMA模塊分布,前540行分別是DMA1與DMA2切換,后540行是DMA3與DMA4進(jìn)行切換。
Figure 11 AXI DMA module distribution圖11 AXI DMA模塊分布
如圖12所示為本文系統(tǒng)在Vivado環(huán)境下的頂層設(shè)計(jì)框圖,即采用了4個(gè)AXI4-Stream Data FIFO與4個(gè)AXI DMA對(duì)視頻流進(jìn)行行緩存以及利用PS核對(duì)AXI DMA進(jìn)行控制。
Figure 12 Block design diagram圖12 頂層設(shè)計(jì)框圖
將4個(gè)高清數(shù)字相機(jī)通過(guò)SMA線纜與FPGA連接,加電正常工作后,如圖13所示,在監(jiān)視器上可以看到4路SDI視頻流分開(kāi)顯示的效果。視頻圖像無(wú)撕裂、無(wú)抖動(dòng),且流暢。整個(gè)系統(tǒng)設(shè)計(jì)使用的LUT、LUTRAM、FF、BRAM和IO資源利用率如表2所示。為后續(xù)加入視頻圖像處理算法提供了充裕的空間。
Figure 13 Experimental results圖13 實(shí)驗(yàn)結(jié)果圖
Table 2 System resource utilization
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于Zynq FPGA的SDI視頻圖像分割系統(tǒng)。該系統(tǒng)采用高清數(shù)字串行解碼芯片TW6874同時(shí)對(duì)4路數(shù)字高清視頻圖像進(jìn)行并行采集抽樣,并導(dǎo)入至FPGA中,從而在顯示器中分開(kāi)顯示。采用AXI4-Stream Data FIFO模塊進(jìn)行行緩存,靈活方便。并用AXI DMA模塊將視頻圖像數(shù)據(jù)高速三緩存至DDR3 SDRAM,資源占用少,為以后視頻圖像處理算法的集成提供了充裕的空間。本文系統(tǒng)實(shí)現(xiàn)了分割視頻圖像無(wú)撕裂、無(wú)抖動(dòng)、高幀頻的輸出,解決了傳統(tǒng)的視頻圖像分割器辨率低、幀率低等問(wèn)題,為實(shí)現(xiàn)大視場(chǎng)視頻圖像拼接提供了基礎(chǔ)。