您的位置 首页 被动

根据FPGA NiosII的MPEG-4视频播放器规划

多媒体技术实用化的关键技术之一,就是解决视频、音频数字化以后数据量大,与数字存储媒体、通信网容量小的矛盾,其解决途径就是压缩。为了支持低比特率视频传输业务,MPEG.

引 言

多媒体技能实用化的关键技能之一,便是处理视频、音频数字化今后数据量大,与数字存储媒体、通信网容量小的对立,其处理途径便是紧缩。

为了支撑低比特率视频传输事务,MPEG(Moving Picture Expert5 Group)推出了MPEG-4规范。于1999年正式成为国际规范的MPEG-4是一个适合于低传输率的视频、音频处理方案,更注重于多媒体体系的交互性和灵敏性。MPEG-4视频紧缩规范供给了一种高度灵敏、依据“内容”的编码办法,解码端能够“按需解码”,还能够增加目标和信息。这种灵敏性使得MPEG-4具有高效的编码功率、依据内容的可扩展性以及在易受搅扰环境下的鲁棒性。

MFEG-4的这些特性使得它非常适合于存储容量有限的手持终端设备。可是MPEG-4视频解码中触及的反量化(Inverse Quantlzation,IQ)、反离散余弦改换(InverseDiscrete Cosine Transform,IDCT),运动补偿(Motion Composition,MC)等技能均是典型的核算密集型改换,关于自身处理才能有限,功耗受限的手持终端设备而言,视频解码的实时性是一个很大的应战。

本体系在NiosIIFPGA构成的SOPC渠道上,运用NiosII的用户自定义指令以硬件逻辑办法完结MPEG-4解码中的IQ、IDCT、MC等核算杂乱、高度耗时的功用模块,极大地进步解码速度。然后在以GPL协议发布的XviD Codec基础上,完结Simple Profile视觉框架下,L1级、QCIF(177×144分辨率)、25fps的MPEG-4实时解码,并经过DMA办法在LCD上加以显现。

1 体系功用描绘

本体系从功用上能够分为视频文件存取、视频解码器、YUV-RGB改换器和LCD操控模块4个部分。

1.1 视频文件存取

要进行视频文件的播映,首要需求对视频文件进行方便地存储和读取。体系播映的MP4文件由XviD Codec在PC上对4:2:0的YUV文件紧缩得到。该MP4文件选用177×144分辨率的QCIF格局,25帧/s。在下载形式,能够经过JTAG接口将MP4文件写入Flash存储器中。在播映形式下,Nios II处理器将MP4文件从Flash存储器中读出,送入文件缓冲池中等候解码器对其进行读取并解码。

1.2 视频解码器

视频解码器是体系的中心。如图1所示,视频解码器由熵解码器、反量化、反离散余弦改换、运动补偿模块和视频帧缓存5个模块组成。

解码时,首要对输入码流进行熵解码,然后依据帧的头信息判别帧的类型。关于每个宏块,熵解码后首要经过IQ,再经过IDCT改换得到空问域的值。关于参阅帧(R_ Frame),因为不需求进行运动补偿,改换后的成果直接输出,一起还要将它存储在视频帧缓存中.留给后边的猜测帧(P-Frame)做运动补偿。关于猜测帧,先经过熵解码得到运动向量,依据运动向量查找到相应的参阅帧后,再将IDCT改换后的猜测差值与之相加,组成终究的猜测帧图画。解码后的猜测帧同样是一路输出,一路存放于视频帧缓存傍边。

视频解码假如选用纯软件办法完结,运算量太大,难以满意实时性要求。运用NiosII的自定义指令,将IQ、IDCT和MC这3个首要的核算密集型解码单元用硬件逻辑办法完结,以硬件逻辑的杂乱性交换解码的实时性。

1.3 YUV-RGB改换器

解码器解码得到的YUV格局图画不适合直接用于LCD显现。要在LCD上显现解码得到的图象必须将YUV格局的图画转化为RGB格局,两者的转化联系如下:

YUV到RGB格局的转化是一个很占用CPU资源的进程。本体系以查表的办法,选用硬件逻辑完结该转化。

1.4 LCD操控模块

规范VGA LCD显现模块(640×480,@60 Hz)是一种逐行扫描设备。这种扫描是次序的,下一个扫描点能够预知,然后能够将需求送出的像素信息排成一行,看作一个数据流(Streaming)。借助于NiosII的Avalon流形式外设的规划办法,能够完结一个Avalon流形式的LCD操控器。运用DMA操控器在流形式的LCD操控器和体系SDRAM之间树立一条DMA传送通道,由硬件完结像素信息的读取和送出。NiosII只需求操作SDRAM中的相应区域就可完结显现图画的更新。

2 体系规划结构

2.1 体系硬件结构

体系硬件结构如图2所示。

为了到达25 fps的实时解码速度,IDCT、IQ、MC和YUV-RGB转化这4部分核算密集型的功用单元悉数以用户自定义指令的办法完结。

2.1.1 反量化

系数的二维数组QF[v][u]被反量化,发生重构的DCT系数。该进程的本质是以量化步长为倍数的乘法运算。

内部编码块DC系数的反量化进程不同于其他的AC系数。DC反量化系数由一个常数因子intra-dc与QF[0][0]相乘而得到。intra_dc与编码精度有关,表1显现的即为两者对应联系。

AC系数的反量化要用到两个加权矩阵,别离用于内部子块和非内部子块。用户也能够运用自定义的量化矩阵。假如用QDCT表明输入已量化的AC系数,用DCT表明反量化后的AC系数,那么AC系数的IQ改换公式如下:

式中,quantiser_scale为0~112之间的两组数值,别离对应不同的比特流操控状况。可是在本体系选用的XviDCodec版别中,比特流操控功用并没有得到完结,所以这儿quantiser_scale的取值固定。

反量化得到的成果经过饱满化,使其约束在[-2048,+2047]之间。

IQ在FPGA上依照图3的框图进行硬件完结。

2.1.2 反离散余弦改换

IDCT是DCT的逆进程,用于复原DCT系数矩阵。

IDCT进程可由下面的公式描绘:

将8元的输入向量[X0,X1,X2,X3,X4,X5,X6,X7]分红奇元素[X1,X3,X5,X7]和偶元素[Xo,X2,X4,X6],8×8矩阵则用2个4×4矩阵来替代,奇元素和偶元素别离与这2个矩阵v和u相乘,生成2个4×4向量p和q,经过加减向量p和q,可得到输出向量x。

算法能够表明成下面的公式:

依据8×8矩阵的IDCT算法,在FPGA上依照图4所示的结构加以硬件完结。

2.1.3 运动补偿

运动补偿是一种很多、单调的运算。为了能完结运动补偿,选用了多级、多个运算单元并行流水运算的办法,如图5所示。

运动补偿模块的操控很杂乱。实践规划时将它分红几个子模块:补偿操控、补偿地址发生、差分数据供给以及补偿运算。这几个子模块直接选用硬件逻辑规划,运行时无需NiosII处理器干涉。其间补偿操控是完结整个运动补偿的操控,供给输入操控信号、输出操控信号、缓存操控信号、猜测数据和差分数据等;补偿地址发生用于生成猜测数据在帧缓存中的地址及补偿成果的写地址;差分数据担任接纳IDCT的成果,经过缓存在恰当机遇供给补偿运用;补偿运算则完结终究猜测数据的核算。

2.1.4 YUV-RGB转化

依据YUV到RGB颜色空间的转化联系,对每个乘积项都预先做出成果,存放在ROM傍边。对每一个YUV重量的输入,由硬件逻辑发生存取地址,并进行加法运算,然后得到对应的成果。其完结结构如图6所示。

2.2 体系软件作业流程

本体系的软件作业流程如图7所示。

结 语

该体系选用依据Altera FPGA嵌入式NiosII软核的SOPC渠道完结,具有较低的硬件本钱,IP核的很多运用,杰出的体系扩展性的特色。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/188570.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部