张 玢
(渭南师范学院数学与信息科学学院,陕西渭南714000)
H.264是新一代的视频压缩标准,通过该标准,在同等图像质量下的压缩效率比以前的标准(MPEG2)提高了2倍左右,因此,H.264被普遍认为是最有影响力的行业标准.
H.264视频压缩标准中引入了当前视频编码的许多新技术,包括帧内预测、帧间预测、多种宏块大小模式、去块效应滤波、统一熵编码、4×4整数变换等,与现有的视频编码标准相比,这些新技术使得H.264在相同条件下可以得到更好的图像质量和更高的压缩比,但由于嵌入式开发环境具有一定的局限性,这些复杂的压缩算法将为H.264压缩标准的嵌入式应用带来巨大障碍.因此验证H.264编码芯片能否正确编码,以及芯片是否具有高效率的编码性能,将是一个重要的研究课题.
在芯片设计周期中,对芯片进行软硬件验证所花费的时间,约占整个设计周期的70% ~80%,验证已成为大规模集成电路设计的主要瓶颈.一方面,视频编码芯片编码算法实现复杂,测试时需要对大量不同规格的视频源进行验证,纯软件的虚拟仿真速度非常慢,而且其运行环境与实际工作环境相差较远,并不能真正达到实际的验证效果.[1]另一方面,数百万门级以上的芯片,每次投片费用以及一次性投片成功的风险巨大,因此投片前必须进行充分有效的验证以降低风险.随着FPGA工艺及技术的发展,其密度、速度和容量都大大增加,但成本和功耗都在不断降低,基于FPGA的原型验证可以比软件虚拟仿真速度高出4~6个数量级,而且还可以提高流片成功的概率,并为软件开发提供硬件平台,加速软件的开发速度.FPGA所具有的这些良好性能,非常适合用于具有复杂算法的H.264编码芯片的验证工作.
本文针对 H.264视频编码芯片的仿真和验证要求,采用 Xilinx公司的两片 FPGA,分别为XC5VFX200T和XC5VLX330完成验证平台的设计.
在芯片的设计阶段,根据验证需求所搭建的硬件验证平台可以作为仿真验证平台,要求能够独立完成整个视频编码过程,验证平台应该具有可重用的特点.一方面可以通过验证平台将视频编码系统的硬件模块载入,以验证硬件模块的功能;另一方面可以基于已搭建好的硬件平台,载入视频编码系统的软件部分,包括底层驱动软件、顶层应用软件、测试软件和操作系统等,已达到在同一平台下实现软硬件协同工作的目的,以最接近实际的工作环境验证整个编码系统功能的正确性,快速准确地验证视频编码的全过程.
FPGA原型验证是SoC设计中的一个重要环节,其验证环境最接近于芯片的实际运行环境,能够最大限度、最高效率地测试出芯片的功能.[2]一方面作为硬件验证工具和验证手段,可以将在虚拟原型验证阶段所设计的RTL(Register Transfer Level,寄存器传输级)级代码综合后下载到FPGA芯片中进行调试;另一方面可以在FPGA硬件平台还没有搭建完成之前,同时在主机端并行研发测试过程中所需要的软件代码,并可在验证板上对软件程序进行初步调试,如运行初始化代码、底层驱动程序、应用程序、移植并启动操作系统等,设计的FPGA原型验证平台原理图如图1所示.
图1 FPGA原型验证平台原理图
图2 H.264编码芯片FPGA原型验证平台
FPGA原型验证平台的工作原理:将在虚拟原型验证阶段调试正确的系统逻辑,综合后下载到FPGA芯片中进行测试验证.硬件验证板上的外部设备对应虚拟原型验证平台的周边逻辑单元,核心模块是两块用于下载综合逻辑的FPGA芯片.[3]验证平台的工作流程:事先将测试程序的逻辑映像烧写入FLASH存储单元,FPGA验证板上电后PowerPC处理器将从FLASH中取指执行程序,基于FPGA验证平台的工作原理和工作流程,就达到了与芯片实际工作环境相同的效果,能够方便准确地验证芯片的编码过程.
基于PowerPC440处理器的FPGA原型验证平台,主要包含软件和硬件两部分,软硬件功能的划分对系统性能起着至关重要的作用.该平台是将H.264编码核心单元和其他周边IP系统集成的逻辑,使用特定工具将综合后的逻辑下载到FPGA芯片中,编码芯片的输入/输出通过FPGA开发板上的其他外部设备来完成,如IDE电子盘、视频输入和视频输出,通过这些外部设备能够更好地完善视频编码芯片的功能.通过Xilinx编程电缆将ELF格式(Executive Linked File,即一种为linux系统所采用的通用文件格式)可执行程序加载到片内DPRAM存储单元中,对验证程序进行在线调试,或将测试程序的映像文件烧写入FPGA验证板上的FLASH存储单元,FPGA验证板上电后PowerPC处理器将从FLASH中取指执行程序.在线调试能够达到快速验证的目的,但仍受编程电缆的影响,与实际工作环境有差异,因此我们首先对程序进行在线调试,测试通过后再将其映像文件烧写入存储单元中.H.264编码芯片FPGA原型验证平台如图2所示.
1.2.1 软件组成
根据H.264视频编码芯片的功能需求,该平台的验证软件由三部分构成:运行于硬件验证板的软件、运行于主机板的软件和运行于PC主机端的软件.运行于主机板的软件采用VxWorks 5.5开发,运行于PC端的软件开发环境为VC 6.0.每个测试项所对应的软件代码主要包括三部分:初始化代码(起到初始化应用环境,引导后续程序的作用)、验证测试代码(充分全面地验证系统的各项功能)、主程序(验证项的核心部分).其中运行于主体程序之前的初始化代码非常关键,起到资源配置、环境准备的作用,一旦初始化发生异常,后续测试工作将没有任何可参考性.[4]本系统开发的所有软件具有可重用性的特点,如FPGA原型验证阶段涉及的所有软件,在虚拟原型验证阶段已经开发完成并得到充分验证,在该阶段只需做少量调整即可使用,不仅节省开发时间,而且提高验证效率,使得系统得到更加充分的验证.
1.2.2 硬件组成
H.264编码芯片的FPGA验证板上,提供了XC5VFX200T和XC5VLX330两片用于下载芯片系统逻辑的FPGA,其中XC5VFX200T和XC5VLX330T管脚兼容.基于PowerPC440的FPGA原型验证平台主要由以下几部分组成:H.264编码芯片系统集成后的逻辑、自制的H.264编码硬件验证板、带PCI接口的MPC8245主机板、PC机和Xilinx编程电缆,其示意图如图3所示.其他外部设备主要包括电子盘、FLASH存储器、SSRAM存储器、DDR2存储器、GPIO、串口、以太网、以太网外接物理器件等.FPGA验证板上的外部设备均对应于虚拟原型验证平台的周边逻辑,虽然在虚拟验证阶段已经对周边逻辑与编码核心的协调工作能力进行了验证,但逻辑代码与硬件工作环境仍有一定差距,所以基于FPGA验证板还需要进行大量而全面的验证工作.
FPGA具有高性能、灵活性、不过时、低成本等特点,而理想的编码器结构应具有高性能、灵活性、方便更新、低开发成本等特点,并且随着应用的成熟和产量的提高,需要能够提供低成本移植的途径,并能够同时支持多种标准的编码压缩方法.[5]因此,FPGA的特性非常适合视频和图像处理的体系结构,FPGA虚拟原型验证平台方案设计如图4所示.
图4 FPGA平台设计方案
只有进行了编码器虚拟原型的充分验证后,才可以进行FPGA平台的验证.首先,虚拟原型平台能够充分并且方便验证编码芯片周边逻辑的正确性,以及周边模块与编码核心模块之间协同工作是否有误,所以在虚拟原型验证的基础上进行FPGA验证,能够更加高效地验证系统性能;其次,在于准确验证编码芯片能否正确编码,虚拟原型平台验证阶段,会用标准软件模型产生的视频编码信息和验证平台生成的数据信息进行比对,也会产生波形用以进行错误分析,但基于FPGA平台的验证依据不直观,不利于开发人员分析系统错误,其依据只是编出的码流能够用标准解码程序正确解码,即说明编码码流符合H.264标准,从而验证了H.264编码器功能的正确性,所以如果在该阶段发现编码出错,就需回退到虚拟原型验证阶段查错,修改后重新综合逻辑并进行调试,依次不断叠加验证.
为了充分测试视频编码系统的性能以及编码功能,并依据验证方案中设计的验证原则,实际中采用主观和客观质量评定相结合的方法,将标准编码器和自研的H.264编码器编码结果进行对比,并通过两种编码模式(CBR/VBR,Constant Bit Rate即恒定比特率,Variable Bit Rate即非固定的比特率)进行测试,于此同时,测试项选用了多种格式的视频源作为数据输入,尽可能做到测试全面.H.264编码芯片对码率控制算法进行了优化,与标准编码器相比能够更好地控制实际码率,使码率控制的精度在10%之内.通过实验发现,H.264编码器和标准编码器的编码性能在大多数情况下相近,实际证明了本系统具有良好的性能,并且能够正确高效编码.
在硬件系统设计过程中,FPGA原型验证能够最直接和全面地验证设计的正确性和完备性.[6]本文提出了视频编码芯片的验证框架,并设计实现了基于FPGA的视频编码验证平台.该硬件验证平台包括码流输出系统、以太网传输系统、视频编码系统、视频输入系统和IDE记录系统五部分,具有操作灵活、验证效率高、可重用性强等优点.基于该验证平台已实现了多个硬件模块和H.264视频编码芯片的验证.
[1]张玢.H.264编解码器软硬件协同设计与验证技术研究[D].西安:西安石油大学硕士学位论文,2011.
[2]刘娟.光纤通道的核心技术研究与实现[D].西安:西安石油大学硕士学位论文,2010.
[3]刘志刚.基于FPGA的H.264编码器的硬件的实现[D].西安:西安电子科技大学硕士学位论文,2009.
[4]魏先政,李凤志,秦盼,等.基于FPGA的AVS视频编码芯片验证平台设计[J].电子技术应用,2012,(1):38-40.
[5]闫效莺.uC/OS-II对SOC验证支持的研究[J].自动化技术与应用,2010,29(7):23-25.
[6]熊明霞,雷宏,马小兵.FPGA片上PowerPC系统设计[J].计算机测量与控制,2007,15(9):1223-1225.