积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 光电显示 >> 应用论文
  相关分类: 相关文章 | 应用论文 | 新产品 | 下载 |
基于TMS320C64x/DM64x的视频编码优化
 
作者:彭程   来源:本站原创    点击数:165   更新时间:2007-11-23
您可以添加到网摘 让更多人关注此文章:

        字视频编码在诸如数字视频监控系统与视频会议系统等众多应用中发挥着重要作用。本文将对以TMS320C64x/DM64xDSP为基础的通用视频编码器优化技术进行介绍。基于DM64x的视频编码优化结合了多种技术,其中包括算法/系统优化、存储器缓冲优化、EDMA及高速缓存利用率优化等。

  TMS320C64x/DM64x器件建立在德州仪器(TI)开发的第二代高性能VLIW架构(VelociTI.2)基础之上。该器件具有VLIW架构、2级存储器/高速缓存层次结构以及EDMA引擎等关键特性,从而使其成为计算强度较大的视频/影像应用(如视频编码与分析)的最佳选择之一。利用DM64x进行应用开发时,需要全面了解其特性与开销以实现最佳性能。下面以DM642为例在此列出其所有DSP关键特性:

  1. 增强功能单元

  DM64x的8个功能单元中的VelociTI.2扩展包括加速视频与影像应用性能的新指令。

  2. L1/L2分级存储器结构

  16KB直接映射的L1P程序高速缓存,带有32字节的高速缓存管线(8周期L1P高速缓存缺失损失)。

  16KB双路关联L1D数据高速缓存,带有64字节的高速缓存管线(6循环L1D高速缓存缺失损失)。

  256KBL2统一映射RAM/高速缓存(灵活的RAM/缓存分配)

  L2四路关联高速缓存,带有128字节的高速缓存管线。

  3. 位优先原则:低位优先(Little Endian),高位优先(Big Endian)。

  4.64位外部存储器接口(EMIF):至异步与异步存储器的无胶合逻辑接口。

  5.1024MB总的可寻址外部存储器空间。

  6.增强型直接存储器存取(EDMA)控制器(64个独立通道)。

  片上外设集包括:三个可配置的视频端口,一个10/100Mbps以太网MAC(EMAC),一个管理数据输入/输出(MDIO)模块,一个VCXO内插控制端口(VIC)。视频端口外设提供与通用视频解码器和编码器相连的无缝接口,以支持多种视频分辨率及标准,如ITU-BT.656、BT.1120、SMPTE125M/260M/274M/296M等。

  上面的功能特性对包括视频编码在内的所有算法的执行都相当重要。二级存储器/高速缓存分级结构与EDMA引擎基本决定了视频编码器实现的架构。在算法实现过程中,我们需要弄清一些有关存储器/高速缓存层次结构以及EDMA引擎的基本概念。如果代码大于L1P,就可能发生L1P高速缓存缺失,CPU停止运行至到读取到所需代码。类似地,如果数据与L1D不符,就会出现L1D高速缓存缺失并且CPU停止运行。所有的L1P与L1D缺失问题均由L2高速缓存/SRAM来解决。如果代码与数据的大小均大于L2高速缓存的容量,那么就可能出现L2高速缓存缺失。与L1P/L1D高速缓存缺失损失相比,L2缺失损失通常更严重,因为L2高速缓存需要与速度较低的片外存储器相互传递数据/代码。

  确保视频编码器最佳性能的两大重要因素是进行有利于高速缓存的程序分区(program partitioning)以及数据传输处理(如减少L1/L2缺失)。尽管L2 SRAM可用于解决L1D/L1P缺失问题,我们通常还是更倾向于采用EDMA来传输L2 SRAM与片外存储器之间的代码/数据,因为EDMA的传输效率通常高于L2高速缓存。


图1:视频编码结构图

视频编码器系统/算法优化

  图1给出了通用视频编码算法结构图,MPEG2、H.263及MPEG4等许多视频编码标准都可从该算法结构图衍生而来。在图1中,DCT与量化(Q)去除了视频的空间冗余;运动估计(ME)降低了视频的时间冗余;VLC进行熵编码(entropycoding),以将数据有效地进行分组。

  通常,视频编码器的实现是以宏模块(MB)为基础。这就是说,只有在当前MB完成所有处理步骤后,视频编码器才读取下一个MB。这种靠直觉进行操作的方法存在两大缺点:

  1.视频编码器的整体代码尺寸通常大于L1P。在每个MB读取阶段,代码都需要在L1P和L2P之间进行交换,这会造成严重的高速缓存缺失问题。

  2.用EDMA从外部视频帧存储器向内部存储器传输小块数据(如一个MB)的效率不高。

  为了避免造成大量高速缓存缺失损失和CPU停止响应问题,我们可将算法分为三个小循环/模块,每部分都能在L1P中容下。每个循环中每次同时操作M个宏模块(MB串),而不是只操作一个宏模块。M是宏模块串的大小,只受可用L1D大小的限制。M越大,就能获得的越高的EDMA数据吞吐量性能。

  三个小循环为:

  1. 宏模块编码环路

  2. 运动估计环路

  3. 宏模块重建环路

  正如上面强调指出的那样,每次都读取M个宏模块,一起经过三个环路中的一个来处理。举例来说,在宏模块编码循环中,如果将M个宏模块读入内部存储器,那么将对其进行DCT转换、量化以及熵编码。只有当宏模块编码环路结束时,这一组宏模块才离开L1D。相应的程序包括DCT、量化以及VLC内核,其会在所有M个宏模块在L1P中完全处理之后才脱离该环路。EDMA引擎驱动的乒乓存储器缓冲方案有助于减少执行一组宏模块时环路初始的设置时间,同时还可确保最小化的CPU停止周期,这是由于传输与处理并行进行的原因。

视频编码器的存储器缓冲方案

  为了获得最佳性能,许多与关键内核相关的查找表格、状态变量以及数据缓冲都必须位于内部存储器之中。除了上述基本数据所占用的存储器之外,部分TMS320DM64x仍有足够的内部存储器可容纳整个视频帧,以供编码器处理。但有的器件则不行,因为内部SRAM在不同的C64x/DM64x器件间有所差异。有些应用只需运行视频编码器,而其它应用则要运行其他算法,其中包括视频编码等。为了针对大多数视频应用情况下的所有DM64x器件提供通用的视频缓冲方案,全部视频帧应位于外部存储器,而非内部存储器中。EDMA每次将M个MB带从外部视频缓冲传输到内部缓冲。正如我们在上一节中谈到的那样,M只受L1D大小的限制。

  图片群(GOP)是视频编码中的重要概念,因为其确定了每个视频帧的编码方案。通常,在GOP中定义所有视频编码标准的I帧和P帧。B帧只包含在高级视频编码配置文件(profile)中,如MPEG4高级简单配置文件以及MPEG2主配置文件等。对于I帧而言,我们可采用类似JPEG的编码方案来去除空间冗余。对于P帧来说,我们采用前向运动估计(forward motion estimation),并以此前的I/P作为参考。对于B帧而言,前向ME(forward ME)不仅需要此前的I/P帧,而且还需要随后的I/P帧用于后向ME(backward ME)。视频编码器必须在两个P帧之间对所有B帧进行缓冲,这是由于B帧采用双向ME方案的缘故。图2给出了视频帧的数据依赖性。

  我们已经熟知,对于B帧GOP而言,视频捕获/显示的顺序不同于视频编码顺序。例如,GOP= IBBP BBP BBP BBP BB的顺序适用于捕获/显示,而GOP编码顺序则为GOP'= IPBB PBB PBB PBB……。视频编码算法分区的关键在于使CPU负载尽可能暂时不变。

EDMA的使用

  TMS320C64x器件的增强型DMA(EDMA)控制器是一种高效率的数据传输引擎,每个EDMA周期都可处理多达8个字节,从而可在CPU速率为600MHz时实现每秒2.4GB的总数据吞吐量。为了使我们的视频编码器应用能充分受益于传输引擎的带宽,充分利用可用的总线宽度非常重要。换言之,我们应该尽量使用32位大小的传输单元。为了有效利用EDMA,我们应当很好地了解EDMA的传输过程。在EDMA通信方面,每次数据传输都由传输请求(TR)发起,该请求包含执行传输所需的所有信息,如源地址、目标地址、传输属性、传输单元的数量等。TR根据优先级的不同分为不同的队列。如果TR达到队列头(head of queue),那么它将转移到EDMA传输控制器队列寄存器中,该寄存器执行由TR定义的实际数据移动。

  传输控制器(TC)是EDMA引擎处理TR并执行实际数据移动的部分。在TC中,TR被转移至传输请求队列之一,等待处理。传输优先级决定了该队列应被提交到哪个队列,一共有四个队列,对应于四种优先级,每种深度为16项。这四种队列分别为紧急(Q0)、高(Q1)、中(Q2)以及低(Q3)。可对每个TMS320C64X传输请求发出者进行编程,使其可发出任意优先级的TR。地址生成/传输逻辑一次只能为每个优先队列的一个TR提供服务。传输逻辑可并行处理不同优先级的传输。为了最大化视频编码器中的数据传输带宽,只要可能,就应在所有四种优先级上对传输进行分配。TC包含四组队列寄存器,每种对应一个优先级队列,监控传输过程。在特定队列的寄存器组中,其会保持传输的当前源地址、目标地址以及数量等。这些寄存器不在器件的存储器映射中,对CPU不可用。传输过程中的实际数据移动发生在寄存器中。

  EDMA也能通过使用CPU发出的QDMA请求执行非同步传输。换言之,QDMA传输是通过CPU实现同步的。在视频编码器中,EDMA传输由算法的数据流实现同步,而非通过外部事件实现。QDMA更适合发出单个的独立传输,以便快速移动数据,而不适合像其它EDMA通道那样执行周期性或重复性传输。每次发出的传输请求均由EDMA处理。根据优先级对请求进行排队,最先处理优先级较高的请求。由于EDMA的结构使然,要通过不同的队列提出传输请求(但根据优先级提交)。所有QDMA传输都采用帧同步提交。因此,QDMA总是请求传输数据的完整帧。对于任何QDMA提交而言,发出的请求只有一个。良好的视频编码器应并行采用所有三种优先级队列(低、中和高)以便在外部存储器与内部片上缓冲之间进行数据传输。


图2:视频编码器中视频帧的数据依赖性

EDMA的使用

  TMS320C64x器件的增强型DMA(EDMA)控制器是一种高效率的数据传输引擎,每个EDMA周期都可处理多达8个字节,从而可在CPU速率为600MHz时实现每秒2.4GB的总数据吞吐量。为了使我们的视频编码器应用能充分受益于传输引擎的带宽,充分利用可用的总线宽度非常重要。换言之,我们应该尽量使用32位大小的传输单元。为了有效利用EDMA,我们应当很好地了解EDMA的传输过程。在EDMA通信方面,每次数据传输都由传输请求(TR)发起,该请求包含执行传输所需的所有信息,如源地址、目标地址、传输属性、传输单元的数量等。TR根据优先级的不同分为不同的队列。如果TR达到队列头(head of queue),那么它将转移到EDMA传输控制器队列寄存器中,该寄存器执行由TR定义的实际数据移动。

  传输控制器(TC)是EDMA引擎处理TR并执行实际数据移动的部分。在TC中,TR被转移至传输请求队列之一,等待处理。传输优先级决定了该队列应被提交到哪个队列,一共有四个队列,对应于四种优先级,每种深度为16项。这四种队列分别为紧急(Q0)、高(Q1)、中(Q2)以及低(Q3)。可对每个TMS320C64X传输请求发出者进行编程,使其可发出任意优先级的TR。地址生成/传输逻辑一次只能为每个优先队列的一个TR提供服务。传输逻辑可并行处理不同优先级的传输。为了最大化视频编码器中的数据传输带宽,只要可能,就应在所有四种优先级上对传输进行分配。TC包含四组队列寄存器,每种对应一个优先级队列,监控传输过程。在特定队列的寄存器组中,其会保持传输的当前源地址、目标地址以及数量等。这些寄存器不在器件的存储器映射中,对CPU不可用。传输过程中的实际数据移动发生在寄存器中。

  EDMA也能通过使用CPU发出的QDMA请求执行非同步传输。换言之,QDMA传输是通过CPU实现同步的。在视频编码器中,EDMA传输由算法的数据流实现同步,而非通过外部事件实现。QDMA更适合发出单个的独立传输,以便快速移动数据,而不适合像其它EDMA通道那样执行周期性或重复性传输。每次发出的传输请求均由EDMA处理。根据优先级对请求进行排队,最先处理优先级较高的请求。由于EDMA的结构使然,要通过不同的队列提出传输请求(但根据优先级提交)。所有QDMA传输都采用帧同步提交。因此,QDMA总是请求传输数据的完整帧。对于任何QDMA提交而言,发出的请求只有一个。良好的视频编码器应并行采用所有三种优先级队列(低、中和高)以便在外部存储器与内部片上缓冲之间进行数据传输。

高速缓存优化

  最大化高速缓存的效率是实现总体视频编码性能目标的关键因素之一。高效的高速缓存可减少由于存储器活动而造成的CPU停止响应,从而提高处理器的吞吐量。正如我们在第一节中介绍的那样,包括DM64x等在内的TM320C64xDSP使用高效的二级存储器架构实现片上程序与数据存取。在这种结构层次中,CPU直接与专用一级程序(L1P)和数据(L1D)高速缓存相连。L1高速缓存工作的速度与CPU相同。直接映射的L1P高速缓存是只读的,而却可对双路关联相关高速缓存L1D进行读写。将L1存储器与称作L2的二级片上存储器连接。L2是一种统一的存储器块,其包括程序与数据。L2高速缓存作为L1和片外存储器之间连接的桥梁。如欲获得本高速缓存架构的详细文档,敬请参阅C6000外设参考指南(SPRU190f)。

参考文献:

[1] Anurag Jain, Ratna Reddy, Jeremiah Golston, Jagadeesh Sankaran, Programmable Real-time MPEG-2 Encoding, GSPx 2002.
[2] Kyoung Won Lim, Jong Beom Ra. Improved hierarchical search block matching algorithm by using multiple motion vector candidates. Electronic Letters, Volume: 33 Issue:21, 9 Oct. 1997 Page(s): 1771-1772.
[3] Ismaeil, I.R.; Docef, A., Kossentini, F., Ward, R. Motion estimation using long-term motion vector prediction. Data Compression Conference, Proc. 1999 Page(s): 531.
[4] J. Lee and B.W. Dickinson. Temporally adaptive motion interpolation exploiting temporal asking invisual perception. IEEE Trans. Image Proc., 3(5): 513-526, Sep 1994


相关文章
· 防空导弹驾驶仪测试系统[102]
· 研祥EIP基于防空导弹驾驶仪测试系统解决方案[254]
· 研祥EIP在视频会议系统中的应用[123]
· 数字视频录像系统设计[496]
· EIP在视频会议系统中的应用[169]
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM处理器应用开发4步骤

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
各种冲值卡批发销售!独家特价!
特价销售GPS车载导航系统!
数字电视批发销售!你想不到的价格!
品牌相机批发销售!你想不到的价格!
品牌手机批发销售!你想不到的价格!
笔记本电脑批发销售!你想不到的价格!
那一年我做了鸭子2
那一年我做了鸭子1
等你十年(下)
等你十年(上)
 
热门下载 [更多]
 
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
[ ] 实用电源电路集锦
 
论坛新帖 [更多]
 
新店开业,部分开发板&元器件特...
[原创]VB编程RS232串口...
红外摄像机控制故障分析与处理方...
红外防水摄像机在智能视频监控中...
步进电机不用驱动芯片能驱动吗?...
我要选一块双串口,带AD的单片...
[分享]运放和功放的区别是什么...
4×4矩阵式键盘的课程设计...
做过高速信号滤波的高手帮忙...
做视频信号放大器,各位有什么好...

 
赞助商 [更多]
 


ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网