位置:51电子网 » 技术资料 » 单 片 机

一种基于SoC的MPEG-4视频解码加速器

发布时间:2008/5/27 0:00:00 访问次数:646

林博 高古刚

  摘要: 本设计实现了一种应用于系统芯片(soc) 的mpeg-4 视频解码加速器。该解码器可完成mpeg-4 解码中计算量最大的离散余弦变换( idct)、反量化( inverse quantization) 和运动补偿叠加( reconstruction)。本文通过算法、总线接口、存储器结构以及硬件开销方面的优化, 使得在满足m peg-4 实时解码的基础上, 加速器占用soc系统芯片的总线带宽和硬件面积尽量的小, 并有利于存储器的复用。经实验验证, 本设计可以对mpeg-4简单层( simple profile) 实时解码。

  关键词:mepg-4;dct/idct; 视频解码

引言

  随着mpeg-4应用的普及, 符合mpeg-4标准的视频在手持设备上的应用越来越广泛, soc技术可以在完成其它功能的同时, 在手持设备上低成本低功耗的实现mpeg-4视频解码。而基于soc的解码方案可以有多种, 例如采用cpu 内核软件解码,也可引入dsp核, 或者设计专用的硬件加速电路。但是, 软件解码在系统繁忙时难以满足实时性要求,引入dsp核会使soc的芯片成本大为增加, 所以本文将mpeg-4的解码电路作为soc芯片中的一个硬件加速模块来实现。

  在手持设备应用中, mpeg-4 视频简单层(simple profile) 最为常用, 而其中计算量最大的部分是反离散余弦变换( inverse discrete cosinetransform ) , 所以反离散余弦变换的实现是加速mpeg-4 解码的关键。有很多优秀的设计专门以处理idct为目标.本文描述的mpeg-4解码加速器基于amba 总线, 作为高速总线(ahb) 上的一个主设备, 对四个亮度块(block) 和两个色差块组成的宏块(macrob lock) 一起做idct 运算, 并根据配置完成idct前的反量化和idct后运动补偿的图像叠加, 最终将结果写回显存。整个过程高度并行处理。

  本文第1部分主要介绍idct快速算法的选择和优化, 第2部分讨论硬件结构和设计技巧, 第3部分介绍仿真验证和综合结果。

1 二维dct?idct 算法描述及快速算法的选择和优化

1.1 算法描述

  对于输入矩阵f (x , y ) {0≤i, j< n }, 它的离散余弦变换式如下:


  反变换式如下:

  直接计算idct , 每个象素点f ( i, j ) 都需要计算n2次乘法, 一个块有n2 个象素点, 总共需要n4 次乘法计算, 因此计算量相当大。   

1.2 快速算法的选择
  二维idct 可以写成:

  上式括号内是对f (u, v ) 的一行作一维idct 变换, 括号外是对行idct 的结果做一维列idct变换。如不考虑系数2/n , 二维的idct 就分解为对矩阵f (u, v ) 先做行idct 再做列idct 的2n 次一维idct 变换。(本文中取n = 8)。

  对于一维idct 有许多优秀的快速算法。其中一种是将idct 原始的变换矩阵分解成几个利于计算的变换矩阵, 然后逐步计算。还有一种是利用了idct的奇偶对称性以及余弦函数的和差化积性质最大程度的共用乘法器。虽然后一种的乘法次数为12次, 少于前一种的16次,但由于前一种的乘法集中在输入附近, 也就是说绝大部分乘法的其中一个乘数是输入f(k ) , 因而可以通过提前判断输入f(k ) 中是否有较多的0 元素从而直接跳过一部分的乘加运算, 达到加速的目的。mpeg-4 解码的idct 输入中, 有大量的0, 所以前一种的算法更有利于mpeg-4 解码。其算法流程如图1。

图1 chen 算法流程ci= cos( iπ/16)

1.3 算法的优化
1.3.1 长乘法的处理
  在图1的虚线中, 前一级乘加运算的结果要与c4相乘, 如果输入数据f(k ) 和系数ci都是16位数据, 为了保证精度就要使用32 位乘16 位的乘法器,这必然成为整个电路中的关键路径, 影响其性能。若用下面的式(4) 对虚线内的条路径做变换, 虽然增加了乘法数目, 但是不仅去除掉32 位乘16 位的乘法器, 而且有利于下文将要提及的onlydc 和halfzero情况的加速。


  变换后的虚线内的算法流程如图2 所示。

图2 chen 算法变换ci= cos( iπ/16)

1.31. onlydc 和halfzero
  本文将f(k )分为三种情况:
(1) f(k )只有f(0)为非零数据, 我们称这种情况为onlydc;
(2) f(k )中f(0) , f(1) , f(2) 和f(3) 为非零数据, 其他四个数据都为零, 这种情况称为halfzero;
(3) 其它情况都归入普通情况。我们用软件直接解码的方法对典型素材作了统计(见
林博 高古刚

  摘要: 本设计实现了一种应用于系统芯片(soc) 的mpeg-4 视频解码加速器。该解码器可完成mpeg-4 解码中计算量最大的离散余弦变换( idct)、反量化( inverse quantization) 和运动补偿叠加( reconstruction)。本文通过算法、总线接口、存储器结构以及硬件开销方面的优化, 使得在满足m peg-4 实时解码的基础上, 加速器占用soc系统芯片的总线带宽和硬件面积尽量的小, 并有利于存储器的复用。经实验验证, 本设计可以对mpeg-4简单层( simple profile) 实时解码。

  关键词:mepg-4;dct/idct; 视频解码

引言

  随着mpeg-4应用的普及, 符合mpeg-4标准的视频在手持设备上的应用越来越广泛, soc技术可以在完成其它功能的同时, 在手持设备上低成本低功耗的实现mpeg-4视频解码。而基于soc的解码方案可以有多种, 例如采用cpu 内核软件解码,也可引入dsp核, 或者设计专用的硬件加速电路。但是, 软件解码在系统繁忙时难以满足实时性要求,引入dsp核会使soc的芯片成本大为增加, 所以本文将mpeg-4的解码电路作为soc芯片中的一个硬件加速模块来实现。

  在手持设备应用中, mpeg-4 视频简单层(simple profile) 最为常用, 而其中计算量最大的部分是反离散余弦变换( inverse discrete cosinetransform ) , 所以反离散余弦变换的实现是加速mpeg-4 解码的关键。有很多优秀的设计专门以处理idct为目标.本文描述的mpeg-4解码加速器基于amba 总线, 作为高速总线(ahb) 上的一个主设备, 对四个亮度块(block) 和两个色差块组成的宏块(macrob lock) 一起做idct 运算, 并根据配置完成idct前的反量化和idct后运动补偿的图像叠加, 最终将结果写回显存。整个过程高度并行处理。

  本文第1部分主要介绍idct快速算法的选择和优化, 第2部分讨论硬件结构和设计技巧, 第3部分介绍仿真验证和综合结果。

1 二维dct?idct 算法描述及快速算法的选择和优化

1.1 算法描述

  对于输入矩阵f (x , y ) {0≤i, j< n }, 它的离散余弦变换式如下:


  反变换式如下:

  直接计算idct , 每个象素点f ( i, j ) 都需要计算n2次乘法, 一个块有n2 个象素点, 总共需要n4 次乘法计算, 因此计算量相当大。   

1.2 快速算法的选择
  二维idct 可以写成:

  上式括号内是对f (u, v ) 的一行作一维idct 变换, 括号外是对行idct 的结果做一维列idct变换。如不考虑系数2/n , 二维的idct 就分解为对矩阵f (u, v ) 先做行idct 再做列idct 的2n 次一维idct 变换。(本文中取n = 8)。

  对于一维idct 有许多优秀的快速算法。其中一种是将idct 原始的变换矩阵分解成几个利于计算的变换矩阵, 然后逐步计算。还有一种是利用了idct的奇偶对称性以及余弦函数的和差化积性质最大程度的共用乘法器。虽然后一种的乘法次数为12次, 少于前一种的16次,但由于前一种的乘法集中在输入附近, 也就是说绝大部分乘法的其中一个乘数是输入f(k ) , 因而可以通过提前判断输入f(k ) 中是否有较多的0 元素从而直接跳过一部分的乘加运算, 达到加速的目的。mpeg-4 解码的idct 输入中, 有大量的0, 所以前一种的算法更有利于mpeg-4 解码。其算法流程如图1。

图1 chen 算法流程ci= cos( iπ/16)

1.3 算法的优化
1.3.1 长乘法的处理
  在图1的虚线中, 前一级乘加运算的结果要与c4相乘, 如果输入数据f(k ) 和系数ci都是16位数据, 为了保证精度就要使用32 位乘16 位的乘法器,这必然成为整个电路中的关键路径, 影响其性能。若用下面的式(4) 对虚线内的条路径做变换, 虽然增加了乘法数目, 但是不仅去除掉32 位乘16 位的乘法器, 而且有利于下文将要提及的onlydc 和halfzero情况的加速。


  变换后的虚线内的算法流程如图2 所示。

图2 chen 算法变换ci= cos( iπ/16)

1.31. onlydc 和halfzero
  本文将f(k )分为三种情况:
(1) f(k )只有f(0)为非零数据, 我们称这种情况为onlydc;
(2) f(k )中f(0) , f(1) , f(2) 和f(3) 为非零数据, 其他四个数据都为零, 这种情况称为halfzero;
(3) 其它情况都归入普通情况。我们用软件直接解码的方法对典型素材作了统计(见
相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!