基于FPGA NiosII的MPEG-4视频播放器

发布者:BoldDreamer最新更新时间:2012-02-11 来源: elecfans关键字:MPEG-4  FPGA 手机看文章 扫描二维码
随时随地手机看文章
   

基于FPGA NiosII的MPEG-4视频播放器

    介绍Altera FPGA SOPC平台上MPEG-4视频播放器的实现。以NiosII用户自定义指令方式实现IQ、IDCT、MC等计算密集型功能模块,从而在XviD Codec基础上实现Simple Profile视觉框架下,L1级、QCIF、25fps的MPEG-4视频实时解码。
关键词 MPEG-4 视频播放器 SOPC NiosII FPGA

引 言
    
多媒体技术实用化的关键技术之一,就是解决视频、音频数字化以后数据量大,与数字存储媒体、通信网容量小的矛盾,其解决途径就是压缩。

    为了支持低比特率视频传输业务,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)等技术均是典型的计算密集型变换,对于本身处理能力有限,功耗受限的手持终端设备而言,视频解码的实时性是一个很大的挑战。

    本系统在NiosII 和FPGA构成的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部分计算密集型的功能单元全部以用户自定义指令的方式实现。[page]

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核的大量使用,良好的系统扩展性的特点。

关键字:MPEG-4  FPGA 引用地址:基于FPGA NiosII的MPEG-4视频播放器

上一篇:FPGA设计开发中应用仿真技术解决故障的方法
下一篇:虚拟FPGA逻辑验证分析仪的设计

推荐阅读最新更新时间:2024-05-02 21:54

关于基于FPGA平台的手持式频谱分析仪的实现原理
课题研究的目的和意义 频谱分析仪可以方便设计人员确定干扰信号的频率范围,以便选择合理的滤波方案,但一般的频谱分析仪体积较大,不便于工业现场使用,因此设计手持式频谱分析仪,便于携带,功耗低,可长时间记录数据,还可通过网络远程操作。 本频谱仪的设计是以赛灵思的FPGA为核心,先在模拟前端驱动可编程放大器完成模拟信号的放大及电平迁移,然后按设定的采样频率驱动ADC完成数据采集,之后完成快速傅立叶变换,最后将结果显示在4寸彩色液晶屏上,并按设定存储数据或是通过网络传输数据。 频谱分析在生产实践和科学研究中有着广泛的应用。所谓频谱分析就是将信号源发出的信号强度按频率顺序展开,使其成为频率的函数,并考察变化规律。对于一个电信号的研究
[测试测量]
关于基于<font color='red'>FPGA</font>平台的手持式频谱分析仪的实现原理
PWM控制电路基本原理与FPGA
在直流伺服控制系统中,通过专用集成芯片或中小规模的数字集成电路构成的传统PWM控制电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点因此PWM控制电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高.随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便.针对以上情况,本文给出一种基于复杂可编程逻辑器件(CPLD)的PWM控制电路设计和它的仿真波形.    1 PWM控制电路基本原理    为了实现直流伺
[嵌入式]
PWM控制电路基本原理与<font color='red'>FPGA</font>
FPGA与云端需求“不谋而合” 国产先从“中低端”发力
  多方资料显示, FPGA 将在云端数据中心业务发挥突出的作用。据某数据调研报告预计,未来云端芯片的空间2020年有望达105亿美元,其中 FPGA 将贡献20亿美元。下面就随嵌入式小编一起来了解一下相关内容吧。   上海安路信息科技有限公司(以下简称“安路科技”)市场与应用部副总经理陈利光告诉记者:“ FPGA 已经在大型数据中心得到大规模应用,全球七大超级云计算数据中心包括亚马逊AWS、微软Azure、阿里云、腾讯云、百度云、IBM、Facebook都采用了FPGA加速服务器。人工智能的广泛应用场景的架构多样性,可以充分发挥FPGA的优势和特点,开创新型FPGA在数据中心的新局面。”   陈利光强调,云端数据中心处理业务具
[嵌入式]
技术文章:详解FPGA如何实现FP16格式点积级联运算
摘要: 通过使用Achronix Speedster7t FPGA中的机器学习加速器MLP72,开发人员可以轻松选择浮点/定点格式和多种位宽,或快速应用块浮点,并通过内部级联可以达到理想性能。 神经网络架构中的核心之一就是卷积层,卷积的最基本操作就是点积。向量乘法的结果是向量的每个元素的总和相乘在一起,通常称之为点积。此向量乘法如下所示: 图 1 点积操作 该总和S由每个矢量元素的总和相乘而成,因此s=a 1 b 1 +a 2 b 2 +a 3 b 3 +...本文讲述的是使用FP16格式的点积运算实例,展示了MLP72支持的数字类型和乘数的范围。 此设计实现了同时处理8对FP16输入的点积。该设计包含四个MLP7
[嵌入式]
技术文章:详解<font color='red'>FPGA</font>如何实现FP16格式点积级联运算
ARM+FPGA最新重大进展!赛灵思ARM联手开拓嵌入式应用新蓝海
就像行走江湖的武林侠客都梦想有一把神兵利器一样,耕耘于电子产业的工程师们也希望有一种强大器件可以实现自己诸多的设计梦想,现在,这个器件终于要诞生了,近日,赛灵思和ARM联合发布了基于28nm工艺的全新的可扩展式处理平台 (Extensible Processing Platform) 架构,这款基于双核ARM® Cortex™-A9 MPCore™ 处理器平台可以让开发人员同时拥有串行和并行处理能力!它可为各种嵌入式系统的开发人员提供强大的系统性能、灵活性和集成度。   “与以往在FPGA中嵌入处理器内核最大的不同是,以往嵌入的内核都是依FPGA为主以处理器为辅,这次是以处理器为主FPGA为辅。”在该平台全球发布会上,赛灵
[汽车电子]
ARM+<font color='red'>FPGA</font>最新重大进展!赛灵思ARM联手开拓嵌入式应用新蓝海
基于FPGA的语音端点检测
语音端点检测就是从背景噪声中找到语音的起点和终点,其目标是要在一段输入信号中将语音信号同其他信号(如背景噪声)分离并且准确地判断出语音的端点。研究表明,即使在安静的环境中,一半以上的语音识别系统识别错误来自端点检测。因此,端点检测的重要性不容忽视,尤其在噪声环境下语音的端点检测,它的准确性很大程度上直接影响着后续的工作能否有效进行 。 当前语音识别系统大多以ARM、DSP为设计核心,其设计费用高、缺乏灵活性、开发周期长,而且很难满足高速的系统要求。在对语音端点检测算法的研究中,提出了诸如基于能量、过零率、LPC预测残差等多种算法 ,但这些方法大部分都是基于计算机软件的,不适合进行硬件开发 。 FPGA具有功耗低、体积小、速度快
[测试测量]
基于<font color='red'>FPGA</font>的语音端点检测
IIS接口的FPGA实现
在嵌入式系统中经常采用IIS(Inter-IC Sound)总线连接专用音频器件以实现音频输入输出。不少嵌入式处理器带有专用的通过操作特殊功能寄存器实现对外接音频器件的操作,但也有一些嵌入式处理器没有扩展IIS总线,如ARM7芯片S3C4510B。近年来,FPGA技术发展迅速,现已成为可编程片上系统(SoPC)的硬件载体。采用FPGA实现IIS总线及与总线相关的接口控制,一方面可以用硬件的方法实现IIS总线操作,使嵌入式系统很容易扩展音频功能;另一方面由于FPGA可以实现大量的组合逻辑和时序逻辑,还可以用来实现DSP算法,增加了系统的灵活性。   1 基本原理   1.1 系统方案   嵌入式处理器采用Samsung公司
[工业控制]
IIS接口的<font color='red'>FPGA</font>实现
FPGA:下一代汽车设计的基本构建模块
汽车科技方兴未艾。 几年前,围绕全自动驾驶的讨论声势浩大,然而现实汽车世界的技术发展趋于平静。现在人们更加务实,希望探讨哪些技术现在更能为汽车带来有意义的价值,以及哪些技术的发展尚需时日。更重要的是,市场越来越认识到将更先进的技术引入汽车是多么重要。 汽车领域发展的主要受益者之一就是FPGA。多年来,这些可编程芯片一直为汽车提供一系列关键功能。随着日益复杂的汽车电子产品的兴起以及人们对软件定义汽车的持续关注,FPGA的机会正在增加。 由于其非常灵活的特性,FPGA可以在多个汽车子系统中提供多种类型的功能,包括车载信息娱乐系统、高级驾驶辅助系统(ADAS)以及混合动力和电车的充电系统。基于FPGA的产品具有多种功能,例如
[汽车电子]
<font color='red'>FPGA</font>:下一代汽车设计的基本构建模块
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved