微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > AVS I帧视频编码器的FPGA实时实现

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

时间:12-06 来源:互联网 点击:

  第一节 系统设计

  本项目基于FPGA平台完成CIF分辨率图像的实时采集、AVSI帧压缩编码,和网络传输。本项目主要由视频采集系统,数据调度系统,I帧编码系统和以太网传输系统构成,其实现框图如图1-1所示。

  视频采集系统主要完成将复合视频解码成YUV(4:2:0)数字视频,为AVS 全I帧编码准备好视频数据。

  数据调度系统主要完成向I帧编码系统提供原始数据,同时将编码后的码流传输到以太网传输系统。视频数据吞吐量大,带宽高,涉及到低速存储器(如DDR)和高速存储器(如FPGA内部RAM)之间大量的数据交换,成功的数据调度策略是实时实现编码的关键技术之一。本系统包含实验室设计的DDR控制器IP核和数据调度IP核。

  I帧编码系统主要完成AVS视频I帧实时编码,整个系统包括帧内预测模块,变换量化熵编码模块和控制模块。整个系统使用硬件描述语言独立设计完成。

  以太网传输系统主要完成对AVS码流的打包,传输到PC机。本系统包含实验室设计的以太网控制器IP核和网络传输协议IP核。

  PC机上的AVS播放器采用DirectShow架构,基于本实验室完成的AVS解码器设计了AVS实时播放器,用来验证AVS编码系统的实时编码能力。

  第二节 数据采集与数据交换

  前端视频采集模块采用TVP5150PBS视频解码器将输入的PAL视频信号进行转换成数字YUV(4:2:2)信号,输出格式为ITU-R BT.656。

  系统上电后,FPGA通过IIC总线对TVP5150解码器进行初始化配置,接通复合视频信号后,TVP5150即可正确输出8位数字YUV视频信号至FPGA。由于接收的视频信号为ITU565格式,视频信息仅由8位视频信号组成,没有独立的行、场同步信息,所以,FPGA需要从接收的8位视频信号中提取行场同步信号,并将相邻8位数据(亮度、色差信号)转换成16位视频信号。

  转换后的16位视频信号经DDR SDRAM控制器写入到外部DDR SDRAM存储器中,系统采用的DDR SDRAM存储器容量为16M*16bit,利用迸发模式,将接收的一行视频信号存储到DDR SDRM的一行,则一帧视频信号可存储器在DDR 的一个Bank空间。

  视频编码时,按照宏块顺序从DDR 中读取数据,即第一个宏块数据为DDR SDRAM中的第1行至第16行、列地址0至15的前16个地址数据,第二个宏块为DDR SDRAM第1行至第16行、列地址16至23的数据内容,其余宏块读取地址依次类推。

  第三节 模块设计

  3.1 帧内预测模块

  帧内预测模块从功能上可以分为参考样本获取模块和像素值预测模块两部分。

  3.1.1 参考样本获取模块

  1. 功能描述:

  参考样本获取模块主要是将重构数据按子块进行保存,暂存到双端口RAM中,并从重构子块中提取相应的边界数据,即当前子块的右列、下行和右下像素值,并将其存储在寄存器中,作为下一子块的参考数据;保存的当前块边界进行重组得到参考样本,该参考样本作为像素值预测模块的边界参考数据。

  由图1-1可知,子块0需要保存右列像素用于子块1预测时的左边参考样本,下行像素保存用于子块2的上边参考样本,右下像素点保存用于子块3的左上参考样本点;子块1的下行保存作为子块3的上边参考样本,右下像素点保存作为相邻的下一个宏块的子块2的左上参考像素点,右列保存和子块3的右列一起作为下一相邻宏块的左边参考样本;子块2的右列保存作为子块3的左边参考样本;子块2和3的下行保存一起作为下一宏块行的相邻宏块上边参考样本。一个宏块的子块1和3的右列在宏块级更新,子块2和3的下行在宏块行级更新。

  2. 实现该功能的状态转移图如下:

   stidle为空闲状态,streceive 为数据接收状态,stm 为中间的判断状态,根据count值,分别执行不同的指令。st0 st1 st2 st3产生用于各个子宏块预测的边界参考数据, strans 状态时输出边界参考数据,stwait 状态等待下一个子宏块的重构数据。

  仿真结果如图所示:

    datain为输入的16x16宏块参考数据,dataout为用于子宏块0预测的参考数据。

  该部分综合后的使用资源如下图所示:

  3.1.2像素值预测模块

  1. 功能描述:

帧内预测模式有亮度和色度之分,亮度有5种预测模式,分别是V(垂直)、H(水平)、DC、DDL(左下)和DDR(右下);色度有4种预测模式V(垂直)、H(水平)、DC和P(Plane)。像素值预测模块主要完成的是在参考样本获取模块之后得到当前块的左边、左上和上边参考样本数据和当前块数据,数据流遍历各种模式,多种模式并行挂起,得到各种模式的预测值并存储到对应的双端口RAM中,同时将预测值与当前块像素值进行SAD和值计算,通过冒泡排序法得到最小SAD值对应的模式值作为最佳预测模式,选择输出最佳模式对应的最佳预测值。最佳模式值输出供熵编码使用,最佳预测值与当前块数据做残差供DCT变换使用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top