首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

AVS全I帧视频编码器的FPGA实时实现

AVS全I帧视频编码器的FPGA实时实现

摘  要: AVS视频编码标准是我国自主知识产权的信源编码标准。完成了AVS视频编码器在FPGA平台上的设计与实现。考虑硬件平台的结构特点,采用可重用设计和流水线设计对编码器进行优化,保证了流水线的高效运行以及硬件资源的最优利用。通过ISE软件仿真和Xilinx公司Vritex-4 pro平台验证,最高工作频率可达110 MHz,满足CIF分辨率下I帧在FPGA硬件平台的实时编码要求。
        关键词: AVS;编码器;FPGA
            AVS作为新一代音视频编码标准[1],2006年正式被批准为国家标准。AVS视频编码标准兼顾了性能与实现复杂度之间的矛盾,代表了国际先进水平。目前AVS解码器和解码芯片已经有了比较成熟的发展,但AVS编码器仍处于研究阶段,市场还未产业化。FPGA平台拥有丰富的寄存器资源和逻辑资源,其并行执行的硬件实现方式可以满足大量的高速电子线路设计需求,能实现复杂的数字视频信号处理,是硬件实现的最佳选择之一。
            本文对AVS编码I帧算法进行深入研究,根据FPGA硬件特点[2],实现了AVS的全I帧实时编码。以宏块为单元,考虑到占用资源和运行速度两方面的限制,采用适当的复用技术和流水线技术对系统进行了优化,保证了流水线的高效运行以及硬件资源的最优利用。
        1 系统设计
            本设计基于FPGA平台完成CIF分辨率图像的实时采集、AVS全I帧压缩编码和网络传输,主要由视频采集系统、数据调度系统、I帧编码系统和以太网传输系统构成,其实现框图如图1所示。

       


            视频采集系统主要完成将复合视频解码成YUV(4:2:0)数字视频,为AVS 全I帧编码准备好视频数据。
            数据调度系统主要完成向I帧编码系统提供原始数据,同时将编码后的码流传输到以太网传输系统。视频数据吞吐量大、带宽高,涉及到低速存储器(如DDR)和高速存储器(如FPGA内部RAM)之间大量的数据交换,成功的数据调度策略是实现实时编码的关键技术之一。
            I帧编码系统主要完成AVS视频I帧实时编码,整个系统使用硬件描述语言独立设计完成。
            以太网传输系统主要完成对AVS码流的打包,并将其传输到PC机。本系统包含实验室设计的以太网控制器IP核和网络传输协议IP核。
            PC机上的AVS播放器采用DirectShow架构,基于本实验室完成的AVS解码器设计了AVS实时播放器,用来验证AVS编码系统的实时编码能力。
        2 数据采集与数据交换
            前端视频采集模块采用TVP5150PBS视频解码器将输入的PAL视频信号转换成数字YUV(4:2:0)信号,输出格式为ITU-R BT.656。
            系统上电后,FPGA通过IIC总线对TVP5150解码器进行初始化配置;接通复合视频信号后,TVP5150即可正确输出8 bit数字YUV视频信号至FPGA。由于接收的视频信号为ITU565格式,视频信息仅由8 bit视频信号组成,没有独立的行、场同步信息,所以,FPGA需要从接收的8 bit视频信号中提取行场同步信号,并将相邻8 bit数据(亮度、色差信号)转换成16 bit视频信号。
            转换后的16 bit视频信号经DDR SDRAM控制器写入到外部DDR SDRAM存储器中,系统采用的DDR SDRAM存储器容量为16 M×16 bit,利用迸发模式,将接收的一行视频信号存储到DDR SDRM的一行,则一帧视频信号可存储在DDR SDRAM的一个Bank空间。
        3 I帧编码系统整体设计
            根据AVS I帧编码算法的特点,将I帧编码系统的整体设计[3]分为帧内预测模块、变换量化模块和熵编码模块,再加上残差、重构和写CBP等一些外围电路,即可实现AVS全I帧的编码。整体设计框图如图2所示。

       


            帧内预测模块主要完成从邻近宏块的重构数据中获取用于当前宏块预测的参考数据,并完成对8×8块的预测,得到预测数据和预测模式。
            变换量化模块主要完成DCT变换、量化、反量化和反DCT变换。输出的量化数据经过Z扫描后进行熵编码,输出编码码流;反DCT变换后的数据与预测数据相加,得到子宏块的重构数据,重构数据反馈给帧内预测模块进行下一个子宏块的预测。
            熵编码模块主要完成Z扫描和变长编码。对扫描后的数据进行全零判断,得到该宏块的CBP值。变长编码后的码流前面加上写入的CBP信息,组成一个宏块的编码码流,编码码流8 bit对齐放到RAM中。
        4 I帧编码模块设计
            对AVS全I帧编码设计时,需充分考虑FPGA硬件平台的特点,整个系统使用硬件描述语言独立设计完成。
        4.1 帧内预测模块
            帧内预测模块[4]以宏块为单元,主要包括参考样本获取和预测两部分。首先在预测前要从邻近宏块中获取进行16×16宏块预测时所需要的上面25个数据和前一个宏块重构的最右列16个数据。子宏块的预测数据经变换量化模块后,从重构数据中提取下一个子宏块预测所需的边界数据。输出的预测数据与子宏块编码前原始数据相减,得到的残差数据给变换量化模块。输出最佳预测模式给写CBP模块。
            算法采用多种预测模式并行执行,一个时钟预测一个像素,并对预测完的一个像素计算一次绝对值差,每次时钟都会将SAD累加,64个时钟就能将预测和计算SAD同时完成。所有可用预测模式并行完成后,进行模式判决模块,比较所有模式下SAD的最小值,选出最佳预测模式并输出对应的预测数据。本算法共享公共运算单元和多级流水线操作,资源利用率高,并且兼顾了处理速度和实现代价。
            用ModelSim进行仿真的结果如图3所示,信号sum_v、sum_h、sum_dc、sum_dc_left、sum_dc_top、sum_ddl、sum_ddr和sum_p是各种模式下计算的代价值SAD,通过比较大小,得出最佳的预测模式(logout)和预测数据(dataout_intra)。

       

继承事业,薪火相传
返回列表