第一节 体系规划
本项目依据FPGA渠道完结CIF分辨率图画的实时收集、AVS全I帧紧缩编码,和网络传输。本项目首要由视频收集体系,数据调度体系,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为输入的16×16宏块参阅数据,dataout为用于子宏块0猜测的参阅数据。
该部分归纳后的运用资源如下图所示:
3.1.2像素值猜测模块
1. 功用描绘:
帧内猜测形式有亮度和色度之分,亮度有5种猜测形式,别离是V(笔直)、H(水平)、DC、DDL(左下)和DDR(右下);色度有4种猜测形式V(笔直)、H(水平)、DC和P(Plane)。像素值猜测模块首要完结的是在参阅样本获取模块之后得到当时块的左面、左上和上边参阅样本数据和当时块数据,数据流遍历各种形式,多种形式并行挂起,得到各种形式的猜测值并存储到对应的双端口RAM中,一同将猜测值与当时块像素值进行SAD和值核算,经过冒泡排序法得到最小SAD值对应的形式值作为最佳猜测形式,挑选输出最佳形式对应的最佳猜测值。最佳形式值输出供熵编码运用,最佳猜测值与当时块数据做残差供DCT改换运用。 2. 完结该功用的状况搬运图如下:
Idle为闲暇状况,streceive状况完结数据接纳(当时8×8块64个数据,33个鸿沟参阅数据),当接受完数据后状况机进入stcalculate状况,将相邻的三个数进行低通滤波((a+2b+c+2)>>2),然后进入stm4状况,保存各个形式下的猜测数据,猜测完结后进入stcompare状况,比较各种形式下的代价值,而且选出最佳猜测形式。sttrans为输出最佳形式和猜测数据的进程。
仿真成果如图所示:
datain为输入的宏块数据,datain_edge为宏块鸿沟数据,dataout为输出的猜测数据。
归纳后资源占用如下图所示:
3.2 RDQIIR模块
功用描绘
本规划中将残差—DCT改换—量化—反量化—逆DCT改换—重构(简称为RDQIIR模块)作为一个全体完结。残差数据经DCT改换、量化后,数据送到熵编码模块;一同将量化后的数据再进行反量化和反DCT,得到8×8子宏块的重构数据,重构的数据反馈给帧内猜测模块,进行下一个8×8子宏块的猜测。
2.整个模块由一个状况机完结,状况搬运图如下所示:
stidle为复位时的闲暇状况,等候使能信号有用。streceive是数据接纳状况,当使能信号有用时接纳8*8块的残差数据。stread、stline和stdefer状况时,读取8*8块的一行数据,进行DCT水平改换,并将改换后的数据存入ram中。stread1、stvertical和stdefer1状况读取8*8块的一列数据,进行DCT笔直改换,并将改换后数据存入ram。stread2、stquant和stdefer2状况开端对数据量化,量化后的数据经过dataout信号输出。stread3、stvertical1和stdefer3状况对数据进行反DCT笔直改换的状况。sttransmit状况下输出量化后的数据。
仿真成果如下图所示:
图3-9中是xAVS算法中某一8×8子块的重构数据,图3-10是在ModelSim SE 6.2b环境下RDQIIR模块的仿真成果,重构数据从端口dina_sun_top_o输出。二者成果彻底共同,阐明RDQIIR模块契合算法要求。
归纳后资源占用如下图所示:
3.3 熵编码模块
1. 功用描绘
熵编码首要分为zig-zag扫描、游程编码、码字核算、码表切换、指数哥伦布编码和码流输出共6个子模块。整个熵编码部分需求3块RAM,2块ROM存储器。RAM1接纳量化系数矩阵,经zig-zag扫描后的(run,level)对存储在RAM2中,RAM3暂存指数哥伦布编码后数据;ROM1用于寄存优化后的码表,ROM2用于寄存逃逸事情中用到的RefAbsLevel_T。
stidle表明状况机处于闲暇状况。streceive状况依照zig_zag扫描次序接纳8×8块亮度系数。strle完结游程编码得到( run , level )对。sttable状况运用run和level联合查表得到码字,并完结指数哥伦布编码。ststream对码字进行收拾并输出。
对一个8×8子宏块熵编码进行验证,图3-14内存1中自地址0x00E90068起寄存的是由参阅软件xAVS编码得到的码流,图3-15 ModelSim SE 6.2b仿真得到的码流由端口dataout输出。经过比较,二者输出成果共同,阐明本规划功用契合规范算法要求。
经过输入不同的量化系数矩阵调查仿真波形,输出的码流信息与AVS参阅软件输出的成果共同。经仿真验证,本规划正确且资源运用功率高。时钟最高频率到达130MHz,可用于高分辨率实时AVS编码器中。
第四节 归纳验证
本规划运用VHDL 硬件描绘言语进行完结,Xilinx ISE 进行归纳,Modelsim仿真,器材选用Xilinx 公司的xc2vp30-6ff896,最高作业频率110MHZ 情况下,运用的资源如下图所示。
运用编解码软件截取一个宏块的数据作为参阅数据输入,运用ISE归纳,Modelsim进行仿真, 对一个宏块的验证如下图所示:
datain_mb为输入的一个宏块数据, datain_u5_top_o的输出是一个宏块编码后的码流。从图中数据能够看出,输出成果共同,阐明本规划契合编码器规范要求。
CIF分辨率,4:2:0图画格局,若到达25帧/s实时图画播映的要求,100MHz的频率下,处理一个宏块所需求的周期限定在N==10101内,本规划在100MHz的频率下,用Modelsim仿真一个宏块的周期大约为7000,彻底满意实时要求。
第五节 展望
本规划完结了AVS全I帧的编码器,CIF分辨率,4:2:0图画格局下能到达实时处理的要求。进一步的作业能够对程序优化,进步处理速度,一同还能够参加P帧和B帧的编码,然后进一步进步编码功率。