avs i帧视频编码器的fpga实时实现技术报告_第1页
avs i帧视频编码器的fpga实时实现技术报告_第2页
avs i帧视频编码器的fpga实时实现技术报告_第3页
avs i帧视频编码器的fpga实时实现技术报告_第4页
avs i帧视频编码器的fpga实时实现技术报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AVSI帧视频编码器的FPGA实时实现第一节系统设计本项目基于FPGA平台完成CIF分辨率图像的实时采集、AVS全I帧压缩编码,和网络传输。本项目主要由视频采集系统,数据调度系统,I帧编码系统和以太网传输系统构成,其实现框图如图11所示。复合视频视频采集系统数据调度系统全I帧编码系统以太网传输系统AVS播放器图11系统设计框图视频采集系统主要完成将复合视频解码成YUV(420)数字视频,为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(422)信号,输出格式为ITURBT656。系统上电后,FPGA通过IIC总线对TVP5150解码器进行初始化配置,接通复合视频信号后,TVP5150即可正确输出8位数字YUV视频信号至FPGA。由于接收的视频信号为ITU565格式,视频信息仅由8位视频信号组成,没有独立的行、场同步信息,所以,FPGA需要从接收的8位视频信号中提取行场同步信号,并将相邻8位数据(亮度、色差信号)转换成16位视频信号。转换后的16位视频信号经DDRSDRAM控制器写入到外部DDRSDRAM存储器中,系统采用的DDRSDRAM存储器容量为16M16BIT,利用迸发模式,将接收的一行视频信号存储到DDRSDRM的一行,则一帧视频信号可存储器在DDR的一个BANK空间。视频编码时,按照宏块顺序从DDR中读取数据,即第一个宏块数据为DDRSDRAM中的第1行至第16行、列地址0至15的前16个地址数据,第二个宏块为DDRSDRAM第1行至第16行、列地址16至23的数据内容,其余宏块读取地址依次类推。第三节模块设计31帧内预测模块帧内预测模块从功能上可以分为参考样本获取模块和像素值预测模块两部分。311参考样本获取模块1功能描述参考样本获取模块主要是将重构数据按子块进行保存,暂存到双端口RAM中,并从重构子块中提取相应的边界数据,即当前子块的右列、下行和右下像素值,并将其存储在寄存器中,作为下一子块的参考数据;保存的当前块边界进行重组得到参考样本,该参考样本作为像素值预测模块的边界参考数据。0123图31子块重构数据保存由图11可知,子块0需要保存右列像素用于子块1预测时的左边参考样本,下行像素保存用于子块2的上边参考样本,右下像素点保存用于子块3的左上参考样本点;子块1的下行保存作为子块3的上边参考样本,右下像素点保存作为相邻的下一个宏块的子块2的左上参考像素点,右列保存和子块3的右列一起作为下一相邻宏块的左边参考样本;子块2的右列保存作为子块3的左边参考样本;子块2和3的下行保存一起作为下一宏块行的相邻宏块上边参考样本。一个宏块的子块1和3的右列在宏块级更新,子块2和3的下行在宏块行级更新。2实现该功能的状态转移图如下EN_PREOUT1EN1RST1STRECEIVESTRANSSTST0ST1ST2ST3STWAITSTIDLECOUNT1COUNT2COUNT0COUNT3COUNT4EN0EN_PREOUT0EN_REC1ST0_CNT64ST1_CNT64ST2_CNT64ST3_CNT64图32亮度参考样本获取模块状态转移图STIDLE为空闲状态,STRECEIVE为数据接收状态,STM为中间的判断状态,根据COUNT值,分别执行不同的指令。ST0ST1ST2ST3产生用于各个子宏块预测的边界参考数据,STRANS状态时输出边界参考数据,STWAIT状态等待下一个子宏块的重构数据。仿真结果如图所示图33亮度参考样本获取模块仿真DATAIN为输入的16X16宏块参考数据,DATAOUT为用于子宏块0预测的参考数据。该部分综合后的使用资源如下图所示图34亮度参考样本获取模块资源利用情况312像素值预测模块1功能描述帧内预测模式有亮度和色度之分,亮度有5种预测模式,分别是V(垂直)、H(水平)、DC、DDL(左下)和DDR(右下);色度有4种预测模式V(垂直)、H(水平)、DC和P(PLANE)。像素值预测模块主要完成的是在参考样本获取模块之后得到当前块的左边、左上和上边参考样本数据和当前块数据,数据流遍历各种模式,多种模式并行挂起,得到各种模式的预测值并存储到对应的双端口RAM中,同时将预测值与当前块像素值进行SAD和值计算,通过冒泡排序法得到最小SAD值对应的模式值作为最佳预测模式,选择输出最佳模式对应的最佳预测值。最佳模式值输出供熵编码使用,最佳预测值与当前块数据做残差供DCT变换使用。2实现该功能的状态转移图如下STTRANSSTIDLESTRECEIVESTCALCULATESTM4STCOMPAREEN_CUR1EN_REF1RST1EN_REF0STCALCULATE_CNT65STM4_CNT129STCOMPARE_CNT5STTRANS_CNT66图35像素值预测模块状态机IDLE为空闲状态,STRECEIVE状态完成数据接收(当前8X8块64个数据,33个边界参考数据),当接受完数据后状态机进入STCALCULATE状态,将相邻的三个数进行低通滤波(A2BC22),而后进入STM4状态,保存各个模式下的预测数据,预测完成后进入STCOMPARE状态,比较各种模式下的代价值,并且选出最佳预测模式。STTRANS为输出最佳模式和预测数据的过程。仿真结果如图所示图36亮度像素值预测模块仿真DATAIN为输入的宏块数据,DATAIN_EDGE为宏块边界数据,DATAOUT为输出的预测数据。综合后资源占用如下图所示图37亮度像素值预测模块资源利用情况32RDQIIR模块1功能描述本设计中将残差DCT变换量化反量化逆DCT变换重构(简称为RDQIIR模块)作为一个整体实现。残差数据经DCT变换、量化后,数据送到熵编码模块;同时将量化后的数据再进行反量化和反DCT,得到8X8子宏块的重构数据,重构的数据反馈给帧内预测模块,进行下一个8X8子宏块的预测。2整个模块由一个状态机实现,状态转移图如下所示STIDLESTSUBSTQUANTSTREAD1STDEFER2STVERTICAL1STTRANSMITSTDEFER3STRESTRUCTURESTLINESTDEFERSTREADSTDEFER1STVERTICALEN1LINE_CNT4LINE_OVER1VERTICAL_OVER1VERTICAL_CNT6READ_CNT8QUANT_CNT8READ1_CNT8QUANT_OVER1VERTICAL1_CNT6VERTICAL1_OVER1RDQIIR模块SUB_CNT64RES_CNT64STTRANSMIT_CNT64图38RDQIIR模块的状态转移图STIDLE为复位时的空闲状态,等待使能信号有效。STRECEIVE是数据接收状态,当使能信号有效时接收88块的残差数据。STREAD、STLINE和STDEFER状态时,读取88块的一行数据,进行DCT水平变换,并将变换后的数据存入RAM中。STREAD1、STVERTICAL和STDEFER1状态读取88块的一列数据,进行DCT垂直变换,并将变换后数据存入RAM。STREAD2、STQUANT和STDEFER2状态开始对数据量化,量化后的数据通过DATAOUT信号输出。STREAD3、STVERTICAL1和STDEFER3状态对数据进行反DCT垂直变换的状态。STTRANSMIT状态下输出量化后的数据。仿真结果如下图所示图39XAVS算法中一个子宏块的重构数据图310MODELSIMSE62B仿真结果RDQIIR模块图39中是XAVS算法中某一88子块的重构数据,图310是在MODELSIMSE62B环境下RDQIIR模块的仿真结果,重构数据从端口DINA_SUN_TOP_O输出。二者结果完全一致,说明RDQIIR模块符合算法要求。综合后资源占用如下图所示表311RDQIIR模块资源利用总结33熵编码模块1功能描述熵编码主要分为ZIGZAG扫描、游程编码、码字计算、码表切换、指数哥伦布编码和码流输出共6个子模块。整个熵编码部分需要3块RAM,2块ROM存储器。RAM1接收量化系数矩阵,经ZIGZAG扫描后的(RUN,LEVEL)对存储在RAM2中,RAM3暂存指数哥伦布编码后数据;ROM1用于存放优化后的码表,ROM2用于存放逃逸事件中用到的REFABSLEVEL_T。RAM1Z扫描游程编码码流输出指数哥伦布编码码表查询切换RAM2RAM3ROM1ROM2图312子块熵编码的整体框图2实现该功能的状态转移图如下STIDLESTRECEIVESTSTREAMSTRLESTTABLECURRENTSTRECEIVE_CNT63STRLE_CNT64STTABLE_CNTCOUNTEN1STREAM_CNTCOUNTCOUNT_ESCAPE图313熵编码模块状态转移图STIDLE表示状态机处于空闲状态。STRECEIVE状态按照ZIG_ZAG扫描顺序接收88块亮度系数。STRLE完成游程编码得到RUN,LEVEL对。STTABLE状态利用RUN和LEVEL联合查表得到码字,并完成指数哥伦布编码。STSTREAM对码字进行整理并输出。图314XAVS算法中的码流输出图315码流输出的仿真结果对一个88子宏块熵编码进行验证,图314内存1中自地址0X00E90068起存放的是由参考软件XAVS编码得到的码流,图315MODELSIMSE62B仿真得到的码流由端口DATAOUT输出。经过比较,二者输出结果一致,说明本设计功能符合标准算法要求。综合后资源占用如下图所示图316熵编码模块资源利用总结通过输入不同的量化系数矩阵观察仿真波形,输出的码流信息与AVS参考软件输出的结果一致。经仿真验证,本设计正确且资源利用效率高。时钟最高频率达到130MHZ,可用于高分辨率实时AVS编码器中。第四节综合验证本设计使用VHDL硬件描述语言进行实现,XILINXISE进行综合,MODELSIM仿真,器件选用XILINX公司的XC2VP306FF896,最高工作频率110MHZ情况下,使用的资源如下图所示。图41综合验证资源利用情况利用编解码软件截取一个宏块的数据作为参考数据输入,使用ISE综合,MODELSIM进行仿真,对一个宏块的验证如下图所示图41输入数据图42输出码流DATAIN_MB为输入的一个宏块数据,DATAIN_U5_TOP_O的输出是一个宏块编码后的码流。从图中数据可以看

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论