DSP H.264編碼器的電路設計
1 引言
本文引用地址:http://dyxdggzs.com/article/201609/303374.htmH.264是ITU-T的視頻編碼專(zhuān)家組(VCEG)和ISO/IEC的活動(dòng)圖像專(zhuān)家組(MPEG)聯(lián)合制定的視頻壓縮標準。它在H.263/H.263++的基礎上發(fā)展,在繼承所有編碼壓縮技術(shù)優(yōu)點(diǎn)的同時(shí)引入許多全新的編碼技術(shù)和網(wǎng)絡(luò )適配層NAL的概念,從而擁有更高的編碼效率和更好的網(wǎng)絡(luò )適配性。為從低碼率的實(shí)時(shí)通信系統或無(wú)線(xiàn)環(huán)境到高碼率的HDTV和數字存儲系統提供一個(gè)優(yōu)良的視頻壓縮編碼通用工具。但H.264標準優(yōu)異的性能表現是以編碼運算復雜度和運算量大為代價(jià),在通用的PC機平臺實(shí)現會(huì )占用較大的CPU和內存資源。隨著(zhù)數字信號處理器(DSP)技術(shù)的高速發(fā)展,DSP的處理速度和能力飛速提高。DSP已滿(mǎn)足H.264標準的編解碼運算速度要求。因此,在穩定的媒體處理器平臺上實(shí)現H.264標準有著(zhù)較好的工程意義和應用前景。
詳細介紹了以TMS320DM6446DSP為核心的視頻編碼系統的硬件設計,并重點(diǎn)研究了H.264編碼器在以TMS320DM 6446為目標的CCS平臺上的移植和優(yōu)化工作。
2 視頻編碼系統硬件設計
2.1 DSP的選型
DSP選用TI公司的Davinci媒體處理專(zhuān)用器件TMS320DM6446(簡(jiǎn)稱(chēng)DM6446)。它采用ARM+DSP雙核架構,包含一個(gè) TMS320C64x+核心和一個(gè)ARM926EJ-S核心。C64x+核心采用改進(jìn)的超長(cháng)指令字VLIW體系結構,內部擁有8個(gè)并行的運算單元,時(shí)鐘頻率600 MHz,峰值處理能力高達4 752 MI/s。DM6446片內為兩級高速緩存(Cache)結構,設計有獨立的32位DDR2 SDRAM接口和16位異步EMIF接口。此外,DM6446還集成有多種適用于視音頻多媒體處理的片內資源和接口,如用于和外部解碼器連接的視頻處理前端模塊VPFE、和視頻顯示設備連接的視頻處理后端模塊VPBE、多通道音頻串口等。
DM6446不僅在處理性能上完全滿(mǎn)足H.264標準要求。而且在內部結構、片內資源和外部接口上對視頻處理應用專(zhuān)門(mén)優(yōu)化,大大降低視頻應用的開(kāi)發(fā)難度和成本。
2.2 系統結構框圖
視頻編碼系統硬件結構原理框圖如圖1所示。主機通過(guò)PCIE總線(xiàn)對DSP進(jìn)行初始化加載程序。攝像頭輸出的模擬視頻信號經(jīng)視頻解碼模塊轉換為數字信號,經(jīng)FPGA轉換電平。通過(guò)DM6446的VPFE模塊接口送人DSP,進(jìn)行壓縮編碼處理。編碼后的視頻數據從DM6446的EMIF接口輸出通過(guò)PCIE 總線(xiàn)送回主機進(jìn)行下一步處理。DM6446的VPBE模塊可將采集的數字視頻信號再轉換為模擬信號輸出至電視進(jìn)行監控。DDR2 SDRAM存儲編碼過(guò)程中的原始圖像、參考幀、編碼參數等數據。DM6446通過(guò)I2C總線(xiàn)配置A/D轉換器。FPGA與PCIE橋PEX8311之間加入雙端口RAM,以提高數據的傳輸效率。

2.3 視頻解碼模塊設計
模擬視頻信號的傳輸格式種類(lèi)很多,而且國際上對數字視頻信號的傳輸格式有明確的標準規定,因此一般通用的A/D轉換器并不適合視頻領(lǐng)域應用。這里選用專(zhuān)用的視頻解碼器ADV7189B,它支持12路模擬視頻通道,包含3個(gè)具有防噪性能的12位54 MHz的A/D轉換器。支持CVBS、S-端子、YprPb 3種格式的模擬視頻信號輸入,能夠自動(dòng)偵測NTSL/PAL/SECAM制式,輸出ITU-R BT.656標準的數字視頻信號。選用12路模擬通道中的3路,復用的支持3種模擬視頻格式。ADV7189B輸出10位數字視頻信號、獨立的垂直同步信號VD、水平同步信號HD和像素同步時(shí)鐘LLC1,電壓均為3.3 V電平,經(jīng)過(guò)FPGA轉換為DM6446要求的1.8 V,然后從DM6446的VPFE模塊專(zhuān)用數字視頻信號接口送入DSP。壓縮編碼前,VPFE模塊將ITU-R BT.656標準的視頻數據轉換為H.264兼容的YUV4:2:O格式,存入DDR2 SDRAM中。VPFE模塊還支持對視頻數據進(jìn)行白平衡、縮放等預處理操作。ADG3301實(shí)現I2C總線(xiàn)的電平轉換。
2.4 視頻編碼模塊設計
DM6446片內的VPBE模塊包含4個(gè)54 MHz的D/A轉換器,可在DM6446內部將數字視頻信號直接轉化為模擬視頻信號,4路輸出,并且支持CVBS、S-端子、YprPb 3種模擬視頻格式。因此,視頻編碼模塊設計較為簡(jiǎn)單,只需對4路模擬輸出信號放大,就可直接與監視設備連接。選用TI公司的電壓反饋CMOS運算放大器 OPA357進(jìn)行運算放大。
2.5 控制電路設計
DM6446的視頻信號接口、 EMIF接口為1.8 V電平,ADV7189B接口、PCIE橋接口為3.3 V電平。系統需要大量的電平轉換工作,同時(shí)還需要實(shí)現大量的邏輯控制、PCIE橋與DM6446的通信協(xié)議。FPGA器件是最適合的選擇。選用 Altera公司的邏輯器件EP2C35,它可在片內實(shí)現1.8 V、2.5 V、3.3 V電平的轉換,并且能夠滿(mǎn)足系統對邏輯控制功能的要求。EP2C35內部集成有片內存儲器,可在A(yíng)DV7189B與DM6446之間建立一個(gè)緩存區,提高數據傳輸效率。FPGA與DM6446、ADV7189B和PCIE橋接口電路如圖2所示。

3 H.264編碼器的DSP移植與優(yōu)化
目前,H.264編碼器的實(shí)現版本主要有:JM、 T264、X264。其中JM是H.264官方源碼,實(shí)現H.264所有特征,但其程序結構冗長(cháng),只考慮引入各種新特性以提高編碼性能,忽略編碼復雜度,其復雜度極高,不宜實(shí)用;T264編碼器編碼輸出標準的264碼流,解碼器只能解T264編碼器生成的碼流;X264是編碼器注重實(shí)用,在不明顯降低編碼性能的前提下,努力降低編碼的計算復雜度。這里,用X264編碼器對DSP平臺移植、優(yōu)化。X264程序在DSP平臺上實(shí)現及優(yōu)化主要有:程序簡(jiǎn)化、代碼移植、代碼優(yōu)化。
3.1 程序簡(jiǎn)化
X264編碼器除支持H.264的基本檔次外,還包含主要檔次的某些功能選項以及其他功能模塊,代碼尺寸較大,因此需要將不必要的功能模塊刪除,以減小代碼尺寸。主要做以下刪減:刪除X264程序中的解碼部分,以及基本檔次功能之外的CABAC、B slice部分;X264程序是基于X86的PC平臺,包含了SSE、MMX等。PC平臺使用的優(yōu)化技術(shù),在DSP平臺下無(wú)效:針對DSP平臺特點(diǎn),調整刪減后的代碼文件結構。
3.2 代碼移植
TI公司的DSP開(kāi)發(fā)工具CCS 具有自己的ANSI C編譯器和優(yōu)化器,并有自己的語(yǔ)法規則和定義,經(jīng)過(guò)上一步簡(jiǎn)化后得到純C版本的X264編碼器需要經(jīng)過(guò)修改才能夠在CCS下應用于具體的DSP。主要包括:①Visual c++、CCS對于變量和結構體的“重復定義”問(wèn)題的不同處理,需更改頭文件中變量和結構體定義的位置;②用功能相同的庫函數代替CCS中沒(méi)有的庫函數,如strncasecmp();③數據格式的不同,用long代替CCS中沒(méi)有的_int64格式;④按照CCS下C語(yǔ)言的規則定義數組;⑤修改系統配置參數的讀取方式;⑥編寫(xiě)針對TMS320DM6446存儲結構的CMD文件。如此,X264便可以在CCS下編譯通過(guò)并運行。
評論