隨著社會信息量的增大,人們對多媒體視頻壓縮的要求越來越高,“高壓縮、低比特速率”的高清視頻壓縮已廣泛應用于家用電器、醫療設備、軍事偵察、衛星遙感等領域。ADI公司最新推出的ADV212是一款具有實時壓縮/解壓縮標準(SD)視頻信號和高清晰度(HDTV)視頻信號功能的器件,具有可靠性好、配置靈活、支持視頻格式多樣等優點,適用于多種視頻格式的數據處理。本文介紹了基于ADV212高清視頻壓縮系統的設計方案,該系統可支持SMPTE274M(1080i)視頻實時編碼。 1 ADV212的編解碼原理 圖l所示為ADV212的功能圖,主要由像素接口、小波變換引擎、熵編/解碼器、嵌入式RISC處理器、存儲器系統和內外部DMA等組成。操作的基本流程是視頻或像素數據通過ADV212像素接口輸入,有效采樣值則經過隔行掃描傳輸到小波變換引擎中(小波變換引擎,可以對碼塊進行高達6級的小波分解)。進入小波變換引擎的數據被分瓦片或幀,每個瓦片或幀將通過5/3定點運算或9/7浮點運算濾波器分解成許多子帶,并生成相對應的小波系數,然后寫入內部寄存器中。3個熵編/解碼器用來對小波系數的編碼塊進行背景建模和算術編碼,并在壓縮過程中計算最佳速率和失真度。熵編碼形成的JPEG2000標準的數據碼流被存入代碼FIFO中。代碼FIFO主要緩沖內部高速總線和低速主機接口。碼流數據可通過共用的讀寫存取協議( ,ADDR)從主機接口輸出,或者通過DREQ/DACK協議由外部DMA控制器協調下的外部DMA引擎輸出。內部DMA引擎完成存儲器之間以及各模塊和存儲器之間的高帶寬、高性能傳輸。RISC處理器具有每一個程序和數據存儲器、中斷控制器、標準總線接口及定時器計數器所對應的ROM和RAM。 2 統硬件設計 本方案作為實現高清視頻數據壓縮系統,首先從系統實現功能和性價比上考慮,采用FPGA+ADV212來實現。 視頻解碼器選取:視頻解碼器選用ADV7402型高清視頻解碼器。它采用10位ADC,12個模擬輸入,支持標清(480i,NTSC,PAL,SECAM)、高清(1080i,720p)和圖形RGB輸入(1 280xl 024@60 Hz),可以實現與ADV212無縫連接。 ADV212片數選取:1個10 bit的高清晰度(HDTV)視頻信號,輸入數據傳輸率大約為124 Ms/s,而ADV212像素接口輸入速率限制,在不可逆模式下為65 MS/s,可逆模式下為32 MS/s。這就要求系統至少要由2片ADV212組成,本系統選擇2片ADV212壓縮器件,YCbCr數據采取在4:2:2格式,分別完成亮度(Y)和色度(CbCr)的數據壓縮處理,輸入數據使用是EAV/SAV編碼格式。圖2所示為系統結構框圖,本方案包括視頻采集解碼模塊、視頻圖像JEPG200壓縮模塊、壓縮合并模塊、邏輯控制模塊和通信輸出模塊。 FPGA選取:選用Altera公司的CycloneIII系列EP3C55F484C8器件,其具有328個用戶I/O,55 856個可用邏輯元,312個嵌入式乘法器單元和4個鎖相環,可輕松實現ADV212初始化及壓縮數據捕獲和亮度壓縮數據與色度壓縮數據的合并等功能。 3 ADV212器件初始化流程和參數配置 3.1 ADV212初始化流程 ADV212初始化程序依據特定的指令命令配置ADV212內部直接寄存器和間接寄存器來完成。圖3所示為ADV212編碼初始化流程,初始化程序從PLL寄存器、BOOT寄存器、MMODE寄存器和BUSMODE寄存器等直接寄存器的接入開始,訪問直接寄存器時目標系統必須保持輸入管腳ADDR, ,和HDATA(寫)的狀態。當裝載完固件和配置參數后,軟件重啟,然后再次配置BUSMODE和MMODE寄存器和應用特殊寄存器。下一步,要確定正確的固件被應用ID裝載。正確的固件裝載能被EIRQFLG寄存器的中斷或投票程序證實。當你確定固件連接裝載和EIRQFLG寄存器清零后。編碼開始。 3.2 ADV212參數配置 時鐘配置:高清視頻1080i要求VCLK為74.25 MHz。根據ADV212的數據表,JCLK必須至少為2VCLK,因此最大的脈沖頻率推薦為0.35J-CLK,這接近50 MHz,這是最大的讀寫脈沖頻率。 總線及DMA配置:HDTV(1080i)應用時,2個ADV212必須工作在不可逆最大傳輸率為65 MS/s模式,視頻輸入采取32位VDATA總線(像素接口),壓縮數據輸出采取2個ADV212共享32位HDATA總線(主機接口)。初始化ADV212選擇屬性類型5(ATTRTYPE),屬性數據讀取采用單一傳輸的DREQ/DACK DMA模式,碼流讀取采取脈沖傳輸DREQ/DACK DMA模式。 如圖3所示。根據ADV212的直接寄存器配置,設定ADV212內部時鐘、總線模式、間接寄存器訪問模式等。ADV212_l和ADV212_2初始化流程說明如下:PLL_HIOx008h、PLL_HO,0x0084:設置VCLK為74.25 MHz;BOOT:0x008A引導模式用來那上否裝載;BUSMODE:0x000A設置主機控制數據寬度和DMA數據寬度為32位;MMODE:0x000A設置間接數據存取位數和間接地址步長大小為32位;IADDR:Ox00050000設置程序存儲的起始點;IDATA:0x********在程序存儲器裝載程序;BOOT Ox008D軟件重啟;BUSMODE0x000A重新設置主機控制數據寬度和DMA數據寬度為32位:MMODE 0x000A重新設置間接數據存取位數和間接地址步長大小為32位。ADV212的參數根據IADDR和IDATA設置,參數配置說明如下:IADDR 0x00057F00 ADV212_1和ADV212_2的編碼參數起始地址;IDATA 0x02010503(ADV212_1)、0x03010503(ADV212_2)02=1080i亮度(03=1080i色度);0l=10位精度;05=5級小波變換;03=Y,C單級;IDATA 0x03000000 03=碼塊大小為128x32;00=不可逆9x7小波;00=跳過無字節區域;00=無屬性數據輸出;IDATA0x01019500(ADV212_1)、0x01008700(ADV212_2) Ol=目標視頻域,幀大小;019500=10:1壓縮率(008700=30:1壓縮率);IDATA 0x00000001 00=LRCP級數格式;00=EAV.SAV編碼,所有陰極同步;00=Qfaetor是1X;01=編碼格式是.j2c;IDATA0x00000000保存參數。 上述配置好以后,ADV212_1和ADV212_2的EIRQFLG(地址Ox6h)寫入0x0400去清除軟件中斷(SEIRQ0)并開始程序,當DREQ0變為有效,ADV2-12準備從CODE FIFO傳輸數據,主機按照ADV212特定時序說明開始數據傳輸。 4 FPGA結構功能 圖4為FPGA內部邏輯組成,FPGA主要由以下功能模塊組成:1)主機邏輯,基于Nios的嵌入式主機邏輯模塊,主要實現2片ADV212的讀寫操作,實現對ADV212的初始化和固件下載;2)ADV212仲裁邏輯,實現2片ADV212壓縮數據同步,應答總線判斷狀態的應答信號功能;3)Y/C合并邏輯,該部分根據讀出的屬性和代碼信息,實現亮度壓縮數據與色度壓縮數據的合并功能;4)數據緩沖控制模塊,緩沖外部DMA通道讀取速率和亮度/色度合并邏輯模塊間的數據流。 在FPGA主控模塊中,要確保ADV212加載了正確的固件,通過4個步驟來實現:第1步是向外部中斷使能寄存器中寫入0x0400來屏蔽軟件中斷0位:第2步等待到中斷引腳IRQ被拉低,第3步檢查外部中斷標記寄存器的EIRQFlLG[10]位是否被設置,第4步從軟件標記寄存器中讀應用標識,如果讀到的是0XFF82,則說明固件加載正確,系統可以開始工作。 系統開始工作時,FPGA在仲裁,控制模塊中將從ADV212屬性FIFO中讀取的分區字節數信息進行分析判斷,數據緩沖控制模塊將ADV212代碼FIFO中讀到的壓縮數據進行寄存。仲裁/控制模塊分析結果來控制亮度/色度合并邏輯模塊,碼流從Y數據開始從兩個器件相對部分(Y和CbCr)交錯合并,輸出到緩沖器再由通信端口輸出。 5 結束語 基于FPGA+ADV212結構的高清視頻壓縮系統可實現高清視頻(YCbCr 4:2:2格式)信號的實時處理,本系統具有性價比高、可靠性好、調整靈活、壓縮信號易恢復等優點。但本系統采用的是不可逆9/7小波變換,視頻處理具有一定的失真,為獲取1080i視頻信號具有更好的特性(如無損壓縮),建議用3片或3片以上的ADV212來處理信號,信號格式可采取YCbCr 4:4:4格式。隨著JPEG2000的廣泛應用,專用圖像壓縮器件ADV212必將被越來越多地應用到視頻和圖像壓縮方面的領域中。 |