王煒琛,涂海洋,王偉明,趙曉博
(1.石家莊鐵道大學電氣與電子工程學院,河北 石家莊 050043;2.空裝北京軍代局駐石家莊地區軍代室,河北 石家莊050000)
視頻圖像分割是安全監控、3D視覺、全景影像和計算成像等視頻圖像系統中不可或缺的技術。隨著人們對視覺體驗的要求越來越高,傳統的PAL/NTSC(Phase Alternate/National Television Standards Committee)等低分辨率模擬視頻圖像格式在畫質、幀率和傳輸速度上均難以滿足需求,因此研制數字視頻圖像分割器具有較強的迫切性[1]。串行數字接口SDI(Serial Digitial Interface)技術作為數字視頻圖像的典型代表,20世紀80年代由美國的電影與電視工程師協會SMPTE(the Society of Motion Picture and Television Engineers)制定,以一根同軸電纜通過數字化的方式處理和傳輸音視頻圖像數據。SDI技術分為SD-SDI、HD-SDI、3G-SDI共3種不同的標準,有著不同的視頻圖像以及顯示格式。SDI主要應用在廣播電視行業,具有傳輸速度快、抗干擾能力強、物理接口簡單、即插即用和遠距離傳輸的優點[1,2]。

Figure 1 Block diagram of TW6874 application圖1 TW6874應用框圖
目前,多數的設計是將各路視頻圖像信號轉換成數字視頻圖像信號,最后按照數字視頻圖像的數據格式,將4路視頻圖像合成1路編碼輸出,以實現4路視頻圖像分割。圖像的提取、存儲等都在單片FPGA內實現[3,4]。這種系統設計的優點是提高了系統的集成度,但所有的模塊都是利用Verilog 進行邏輯設計,比較復雜[4]。針對以上問題,本文設計并實現了一種在XILINX Zynq的ARM+FPGA異構平臺上,利用串行高清視頻圖像解碼芯片實現視頻圖像分割的系統。相比較經典的FPGA,Zynq系列最大的特點是將處理系統PS(Processing System)和可編程資源PL(Programmable Logic)分離開來,固化了PS系統,提高了系統資源利用率,利用軟硬件協同設計,靈活方便,且利用了IP核占用芯片面積小、運行速度快、功耗低等特點,使整個系統的運行速度得到提高,功耗降低[5 - 8]。此平臺允許多路SDI的視頻圖像輸入,并將其合成1路SDI視頻圖像輸出,為進一步構建多路數字視頻圖像并行處理平臺提供了可擴展架構。
本文系統的視頻圖像輸入由TW6874 SDI視頻圖像解碼芯片產生。TW6874具有4個獨立的SDI視頻圖像接收通道,4個SDI數字相機通過75 Ω線纜連接至各個通道的SMA(SubMiniature version A )輸入端子。每個通道由自適應均衡器、時鐘數據恢復和VC-2解壓縮引擎組成。圖1所示為TW6874的應用框圖。
TW6874的視頻圖像輸出格式為HD-SDI BT.1120或SD-SDI BT.656。本文系統采用的是HD-SDI BT.1120格式。HD-SDI BT.1120包含16 bit與8 bit 2種模式,為了便于進行數據傳輸以及數據編碼,本文系統采用HD-SDI BT.1120的16 bit模式,圖2所示為其時序圖。

Figure 2 BT.1120 timing圖2 BT.1120時序圖
數據流的低8位為Y分量,數據流的高8位為C分量。圖3所示為逐行掃描模式下的BT.1120協議,一幅圖像包含消隱區和有效數據區,其中EAV、SAV(F、V、H)為圖像定時基準碼[9,10]。表1為L1~L6所代表的含義及其所對應的起始行號[9,10]。

Figure 3 BT.1120 format圖3 BT.1120格式

符號定義起始行號有效行數目1 080L1一幀的首行1L2數字幀消隱首行41L3有效圖像首行42L4有效圖像末行1 121L5數字幀消隱末行1 122L6一幀的末行1 125
本文系統的SDI高清視頻圖像輸出模塊采用如圖4所示的XILINX的SMPTE SDI IP核。

Figure 4 SMPTE SDI IP core圖4 SMPTE SDI IP核
IP核接口包括輸入和輸出2部分,本文系統只利用了此IP核的輸出接口,主要是tx_din_rdy,tx_video_a_y_in,tx_video_a_c_in,tx_mode和tx_usrclk這幾個信號。其中,tx_din_rdy在SDI模式下必須保持高電平;tx_video_a_y_in與tx_video_a_c_in寬度為10 bit,為數據流Y、C的輸入接口;tx_mode是寬度為2 bit的輸入端口,代表了輸出視頻圖像的格式。tx_mode為00,表示輸出的視頻圖像格式為HD-SDI;tx_mode為01,表示輸出的視頻圖像格式為SD-SDI;tx_mode為10,表示輸出的視頻圖像格式為3G-SDI;tx_mode為11,表示無效的視頻圖像格式。tx_usrclk為視頻圖像輸出部分的時鐘域。SMPTE SDI IP模式的數據流Y、C分量寬度均為10 bit,而TW6874串行解碼芯片產生的數據流Y、C分量寬度均為8 bit。為滿足SMPTE SDI IP 核輸出模式,將TW6874解碼產生的8 bit數據均左移2位[11]。
本文系統的硬件主要包括高清視頻圖像串行解碼芯片TW6874、自適應電纜均衡器LMH0302、可編程時鐘芯片SI5340、DDR3 SDRAM和XILINX Zynq系列的XZC7035 FPGA。圖5所示為系統硬件結構圖。

Figure 5 Hardware structure of system圖5 系統硬件結構圖
XILINX公司的Zynq系列FPGA具有很高的性價比,在工業界已經獲得了廣泛的應用。該系列資源豐富,特別是集成了雙1 GHz ARM Cortex A9硬核,極大地滿足了視頻圖像采集和各種算法處理需求,XILINX同時提供各種視頻圖像專用IP,可以大大加速開發進度[12,13]。Zynq的PS端配有1 GB的32 bit位寬的DDR3 SDRAM作為數據高速緩存。Zynq的PL端主要完成4路SDI視頻圖像的行輸入、像素抽樣,PS端主要通過調度AXI DMA(Direct Memory Access)完成視頻圖像的三緩存。
由于各通道數據帶寬大,數據通常需采用芯片來并行同步處理,才能實現高速運動畫面無撕裂、不丟幀、無圖像追趕現象的要求。TW6874正好提供了4路SDI視頻圖像的接入能力。4個高清數字相機經過TW6874解串處理后,將視頻圖像數據轉換為BT.1120數據送入PL端進行處理。處理后的數據寫入DDR3 SDRAM進行高速緩存,最后經SMPTE SDI IP核和GTX高速串行發送器輸出。其中GTX的參考時鐘為27 MHz,是通過FPGA的100 MHz進行分頻得到的,通過SI5340可編程時鐘輸出的148.5 MHz時鐘對GTX和SMPTE SDI IP提供恢復時鐘。視頻圖像數據經GTX輸出后,由線纜驅動器LMH0302為數字視頻圖像信號提供驅動能力,通過SMA線纜輸出至SDI監視器進行顯示。
首先需對4個1920×1080視頻圖像的有效數據按照圖6所示方式進行抽樣并重新排列,裁剪為4個960×540的視頻圖像數據,然后合并為1個1920×1080的視頻圖像數據。BT.1120數據的低8位排列規律為:Y0、Y1、Y2、Y3、Y4、Y5、Y6、Y7,高8位的排列規律為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視頻圖像數據抽樣為960×540視頻圖像數據。

Figure 6 Pixel up-sampling process圖6 像素的抽樣處理
由于HD-SDI BT.1120數據格式中存在消隱區,即無效數據,因此當4路SDI輸入合成1路SDI輸出時,本文系統設計了一個“輸出框架”,以SDI視頻圖像格式為基礎對視頻圖像的消隱區數據進行了統一,即根據BT.1120的格式,將視頻圖像的消隱區數據提前編寫好,并將有效數據區分為4塊,以便將處理好的有效數據導入。
在視頻圖像數據的輸入側,通過對SAV圖像定時基準碼的檢測,判斷行有效數據的起始,將每行的有效數據導入至AXI4-Stream Data FIFO中,然后利用AXI DMA模塊寫入至DDR3 SDRAM進行緩存,最后作為“輸出框架”中的有效數據區輸出至SMPTE SDI IP核。
數據輸入側的時鐘與輸出側時鐘存在著相位差,是2個不同的時鐘域。數據跨時鐘域進行傳輸時,必須要經過緩存。
目前,在Zynq平臺上對視頻圖像緩存一般采用AXI VDMA[14],這種設計大多需要與相機像素輸出時序相匹配,靈活性差,資源占用多。本文系統設計了行有效數據緩存模式,利用AXI4-Stream Data FIFO緩存1行有效數據并且產生AXI DMA所需要的握手信號。這種方式靈活,便于拓展。
本文系統中FIFO的寫入時鐘是37.125 MHz,為了滿足30幀/秒輸出幀率的要求,DDR3 SDRAM的寫入時鐘采用150 MHz。
圖7所示為AXI4-Stream Data FIFO,它是輸入輸出接口均為AXIS的數據緩存器,和其他FIFO一樣是先進先出形式,可以在跨時鐘域的應用中用于數據緩存。其主要的輸入側信號有s_axis_tvalid,s_axis_tdata,s_axis_last。通過對SAV圖像定時基準碼的檢測,判斷行有效數據的起始,并開始進行緩存。圖8所示為AXI4-Stream Data FIFO輸入信號時序。

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輸入信號時序圖
AXI DMA為內存和AXI4-Stream目標外設之間提供高帶寬內存訪問。AXI DMA的主要信號有AXI DMA寫入時鐘m_axi_mm2s_aclk,AXI DMA數據寫入端口s_axi_s2mm_tdata,AXI DMA讀出時鐘m_axi_s2mm_aclk,AXI DMA數據讀出端口m_axi_mm2s_tdata,AXI DMA的寫入握手信號有s_axi_s2mm_tready,s_axi_s2mm_tlast,s_axi_s2mm_tvalid。圖9所示為AXI DMA寫入握手信號時序圖。AXI DMA的讀出握手信號有m_axi_mm2s_tready,m_axi_mm2s_tlast,m_axi_mm2s_tvalid。圖10所示為AXI DMA讀出握手信號時序圖。

Figure 9 AXI DMA input handshake signal timing圖9 AXI DMA寫入握手信號時序圖

Figure 10 AXI DMA output handshake signal timing圖10 AXI DMA讀出握手信號時序圖
為了使視頻圖像流暢無撕裂現象,利用AXI DMA通過DDR3 SDRAM進行了幀的三緩存設計。利用AXI4-Stream Data FIFO每行960個數據產生s_axi_s2mm_tlast信號與AXI DMA進行握手,將數據緩存至DDR3 SDRAM中,緩存540行之后進行下一個緩沖區地址的切換,4個AXI DMA每路視頻圖像均有3個緩沖區,一共12個緩沖區。且通過將不同AXI DMA的m_axi_mm2s_tready信號置成高電平來切換不同的視頻圖像源,4路視頻圖像分為4個區域,形成田字格分布,分別對應4個AXI DMA模塊。圖11為AXI DMA模塊分布,前540行分別是DMA1與DMA2切換,后540行是DMA3與DMA4進行切換。

Figure 11 AXI DMA module distribution圖11 AXI DMA模塊分布
如圖12所示為本文系統在Vivado環境下的頂層設計框圖,即采用了4個AXI4-Stream Data FIFO與4個AXI DMA對視頻流進行行緩存以及利用PS核對AXI DMA進行控制。

Figure 12 Block design diagram圖12 頂層設計框圖
將4個高清數字相機通過SMA線纜與FPGA連接,加電正常工作后,如圖13所示,在監視器上可以看到4路SDI視頻流分開顯示的效果。視頻圖像無撕裂、無抖動,且流暢。整個系統設計使用的LUT、LUTRAM、FF、BRAM和IO資源利用率如表2所示。為后續加入視頻圖像處理算法提供了充裕的空間。

Figure 13 Experimental results圖13 實驗結果圖

Table 2 System resource utilization
本文設計并實現了一種基于Zynq FPGA的SDI視頻圖像分割系統。該系統采用高清數字串行解碼芯片TW6874同時對4路數字高清視頻圖像進行并行采集抽樣,并導入至FPGA中,從而在顯示器中分開顯示。采用AXI4-Stream Data FIFO模塊進行行緩存,靈活方便。并用AXI DMA模塊將視頻圖像數據高速三緩存至DDR3 SDRAM,資源占用少,為以后視頻圖像處理算法的集成提供了充裕的空間。本文系統實現了分割視頻圖像無撕裂、無抖動、高幀頻的輸出,解決了傳統的視頻圖像分割器辨率低、幀率低等問題,為實現大視場視頻圖像拼接提供了基礎。