基于DSP设计MPEG-4无线视频产品
应用来说还远远不够,它们的要求更高,并且需要更多的运算单元来加快运行速度。
第二级可定制性允许向处理器添加DDCU协处理器。设计者先要对所需完成的应用有一个大致的认识,接着对该应用进行分析,将其中的一些专用函数分离出来,然后在硬件上专门针对这些函数进行加速处理,即添加DDCU。此外,设计者还可以分析一下,采用工具组添加DDCU来加快运行速度会对处理器的性能造成怎样的潜在影响,以及在诸如此类的一些其他假设下会出现什么情况。
DDCU是一种适用于专用算法的计算单元。一旦设计者确认了哪个算法需要用DDCU进行硬件加速之后,就可以写出实现该DDCU的RTL 代码,并将其加入用户应用引擎。例如,在通用DSP中加入滤波DDCU,那么若用该DSP实现一个需要滤波的应用,其表现出来的性能就会有所增强。
除此以外,设计者还要在增加并行性所带来的性能优化和该并行性对指令的影响之间寻找最佳平衡。为解决这一问题,可以在VLIW指令中定义分段的数目(从而定义最大并行度),并为每一段分别分配CU和DDCU(见图1)。
最后一级可定制性表现在处理器资源的选择上。设计者可以自己决定需要多大的数据存储器,以及需要多少个数据寄存器和地址寄存器。而且,根据具体应用所提出的数据要求,设计者还可以增加存储器接口,以便提供并行数据访问。这些共享的存储器接口又可以用来连接多个处理器引擎,这就为处理器资源提供了一定的可伸缩性。
采用DSP引擎的一个关键的好处是可以加快产品投入市场的时间。但要达到这个目的,还要先定义一系列与DSP引擎协作的DDCU协处理器。在设计MPEG-4引擎的时候,首先要对其各个方面进行全面分析,确定需要采用哪些DDCU。然后用这些DDCU构建起一个大致MPEG-4引擎,分析其性能瓶颈,并针对性能瓶颈再定义一些DDCU加入引擎中,从而提高该引擎的性能,冲破其瓶颈。为了更方便地完成以上工作,人们开发出一个专门用于MPEG -4应用的DDCU库。以下讨论了该库中的某些专用DDCU。
1. 比特流/可变长度解码DDCU
在视频编码中常常会遇到可变长度解码。比特流/可变长度解码DDCU 可以加快从输入比特流中取出可变长度字段的速度,这是一种基本操作。如果用软件来实现这种比特流管理,会消耗大量的时钟周期来处理指针的移位、屏蔽和管理,而采用比特流/可变长度解码DDCU则可以在一个简单的硬件单元里快速完成同样的功能。
在比特流/可变长度解码DDCU中,由用户设计的指令组集中完成普通比特的提取和插入操作。这种DDCU不但能加快处理速度,提高整个视频引擎的性能,还可以解放处理器中的其他资源,使之得以用于周围的其他处理过程。因此,采用这种DDCU不但可以减小指令长度,同时还增强了系统性能。实际上,在DSP中加入这种计算单元会使可变长度解码的速度增快23.2%。
2. 量化/反量化DDCU
量化和反量化是视频编解码中的两种基本操作,其计算量占整个视频编解码计算量的10%甚至更多。量化/反量化DDCU允许在单周期内处理多像素,其内部操作可以满足多种MPEG-4等级的量化需求。在比特流/可变长度解码DDCU中,将可变长度解码模块的计算需求降低15.4%时,指令存储空间也会减小,这一特性同样适用于量化、反量化DDCU。
3. 半像素内插/运动补偿DDCU
这种运算单元用于加速半像素内插操作,该操作所需计算量相当大。在解码器中,内插/补偿操作所消耗的时钟周期约为总时钟周期的40%。该单元中所涉及的运算其实很简单,只需要面积很小的硅片就能完成,因此很容易移入DDCU中去。就算是边缘扩展这样的涉及大量计算的操作,只要不需要进行优化处理,也还是可以较好地移入硬件中。
不论采用哪种内插类型,内插/运动补偿DDCU中的指令组都允许每周期内插4个像素,这一特性也减少了需要执行的指令数。通过使用内插/运动补偿DDCU,半像素内插/运动补偿操作的速度可以增快74.6%。
4. DCT/IDCT DDCU
IDCT(反离散余弦变换)和DCT(离散余弦变换)都是视频编码中固有的运算。众所周知,这两种运算需要占用大量的时钟周期,并要求在编写其汇编代码时非常小心。本文谈到的这种专用DCT/IDCT DDCU单元(依据IEEE 1180-1990规范)可模仿DCT/IDCT中的"蝶形"运算。通过使用这种计算单元可以大大提高视频设计的性能和生产力,从而使开发人员能够集中精力开发视频应用中的其他方面,以达到使其产品区别于其他同类产品的目的。
5. 运动估计(MEMC)DDCU
MEMC单元用于帮助完成运动估计这一计算量最大的操作。无线视频应用中,在每个运动矢量的位置上都必须进行误差测量。MEMC DDCU可以完成两种最常见的误差测量计算:绝对误差和
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)