MPEG声音编码的单片DSP实现
发布时间:2008/5/27 0:00:00 访问次数:577
mpeg[1]声音压缩算法是关于高保真数字声音压缩的第1个国际标准,自1992年末国际标准化组织和国际电工委员会采纳这项标准以来,它在数字声音的存储、internet上的多媒体传输、声音数字广播(dab)[2]等领域都得到了广泛的应用.然而,mpeg声音编码算法相当复杂,它对运算量和存储量都有很高的要求,加上市场对编码器的需求不大,因而到目前为止还没有专门的asic芯片.现在常用的方法是采用通用的dsp完成mpeg声音压缩编码,但是国外仅有dec,philips,xingit等为数不多的几家公司在单片dsp中完成了此算法,而且购买时费用昂贵,没有源码;国内也有使用两片ti公司的tms320c30实现mpeg声音编码第2层[3],但是使用两片dsp不但协调控制电路复杂,而且加上片外存储器价格仍然不菲.因此,研究具有自有产权并且价格便宜的软硬件实现成为必然的选择.
1 mpeg声音编码原理
mpeg声音编码是一种基于人耳听觉特性的子带声音编码算法,它属于一种感觉声音编码方法.感觉声音编码算法的基本结构如图1所示.根据编码器着重于频率分辨率还是时间分辨率,可分为子带编码器和变换编码器.mpeg声音第2层编码算法在频域上把声音信号划分为32个子带,属于一种子带编码器.在图1 中,时频映射也称滤波器组,用于把输入的声音信号映射成亚抽样的频率分量.根据使用的滤波器组的性质,即滤波器组在频域的分辨率的大小,这些频率分量又可叫做子带样值或频率线.
(a)
(b)
图1 感觉声音解码器结构框图
滤波器的输出或者与滤波器组并行的时频变换的输出,提供给心理声学模型以估计时间相关的声音掩蔽门限.心理声学模型使用了人们所知的同时掩蔽效应,包括有调音的掩蔽特性和无调音的掩蔽特性.如果使用声音的前后掩蔽效应,还可进一步提高掩蔽门限估计的准确性.子带样值或频率线按照尽量保证量化噪声的频谱处于掩蔽门限以下的准则进行量化和编码,这样能保证被人耳感知的量化引入的噪声最小.根据对复杂度的要求,可以使用块压扩或熵编码的分析合成方法.
帧打包把量化编码的输出和相关边信息按照规定的格式组合起来,以便供解码器使用.
2 编码质量和dsp速度
单片adsp-2181实现mpeg声音编码关键需要解决两个问题:一是如何保证声音编码质量;其次是如何充分利用dsp的运算速度.而这两个问题往往又是一对矛盾,需要找到其最佳结合点.
一般而言,决定mpeg声音编码器的优劣主要是声学模型的好坏.但是,对于使用单片16bit定点dsp的应用而言,这个结论就不再适用了.分析表明,此时有限字长效应对编码质量的影响成了主要矛盾.特别是分析滤波器组,截尾效应竟带来了33倍于16bitad转换量化误差的噪声,而窗系数的有限长度表示则使本来高达96db旁瓣衰减的滤波器响应降低到不到70db.因此,要保证声音编码质量,分析滤波器组算法必须进行精度扩展.
关于速度问题,首先想到的是使用快速算法,我们也尝试了在子带滤波中使用快速算法[4]. 但是,实践证明,这些快速算法使用在dsp上效果并不理想,其原因有以下3条:(1)只考虑了加法和乘法的次数,而对附值、寻址等操作毫不关心,但对所有指令都是单周期的dsp而言,乘法和加法的次数相对其他操作并不显得特别重要;(2)没有考虑dsp的硬件特点,其算法不能充分发挥dsp的乘累加器(mac)并行处理的能力;(3)adsp-2181是为16位算法操作优化的,在需要精度扩展的情况下,运算量将以数量级的速度急剧增加.
基于以上质量和速度要求的分析,我们选用了适合dsp乘累加指令的多相结构滤波器组实现方式,且采用基于mac结构的精度扩展方法,较好地解决了编码质量和dsp速度之间的矛盾.另外,对抽样数据的输入方式、心理声学模型、比例因子编码都进行了适于adsp-2181的改进,减少了运算量,保证了实时性.
3 算法的软件设计
软件设计是mpeg声音编码的单片dsp实现的核心,编码质量和速度的要求都需要通过精心设计dsp软件才能实现.
(1)基于mac结构的精度扩展 mpeg声音编码的分析滤波器组可以有许多种实现方式,多相结构是mpeg标准推荐的一种,其数学表示为
(1)
(2)
分析表明,对yk进行双字扩展可将截尾效应带来的噪声降低33倍.但是,考虑到adsp-2181只支持16bit的乘累加运算,需要对式(1)进行转化,即
(3) yk=hyk+2-16lyk
(4)
mpeg[1]声音压缩算法是关于高保真数字声音压缩的第1个国际标准,自1992年末国际标准化组织和国际电工委员会采纳这项标准以来,它在数字声音的存储、internet上的多媒体传输、声音数字广播(dab)[2]等领域都得到了广泛的应用.然而,mpeg声音编码算法相当复杂,它对运算量和存储量都有很高的要求,加上市场对编码器的需求不大,因而到目前为止还没有专门的asic芯片.现在常用的方法是采用通用的dsp完成mpeg声音压缩编码,但是国外仅有dec,philips,xingit等为数不多的几家公司在单片dsp中完成了此算法,而且购买时费用昂贵,没有源码;国内也有使用两片ti公司的tms320c30实现mpeg声音编码第2层[3],但是使用两片dsp不但协调控制电路复杂,而且加上片外存储器价格仍然不菲.因此,研究具有自有产权并且价格便宜的软硬件实现成为必然的选择.
1 mpeg声音编码原理
mpeg声音编码是一种基于人耳听觉特性的子带声音编码算法,它属于一种感觉声音编码方法.感觉声音编码算法的基本结构如图1所示.根据编码器着重于频率分辨率还是时间分辨率,可分为子带编码器和变换编码器.mpeg声音第2层编码算法在频域上把声音信号划分为32个子带,属于一种子带编码器.在图1 中,时频映射也称滤波器组,用于把输入的声音信号映射成亚抽样的频率分量.根据使用的滤波器组的性质,即滤波器组在频域的分辨率的大小,这些频率分量又可叫做子带样值或频率线.
(a)
(b)
图1 感觉声音解码器结构框图
滤波器的输出或者与滤波器组并行的时频变换的输出,提供给心理声学模型以估计时间相关的声音掩蔽门限.心理声学模型使用了人们所知的同时掩蔽效应,包括有调音的掩蔽特性和无调音的掩蔽特性.如果使用声音的前后掩蔽效应,还可进一步提高掩蔽门限估计的准确性.子带样值或频率线按照尽量保证量化噪声的频谱处于掩蔽门限以下的准则进行量化和编码,这样能保证被人耳感知的量化引入的噪声最小.根据对复杂度的要求,可以使用块压扩或熵编码的分析合成方法.
帧打包把量化编码的输出和相关边信息按照规定的格式组合起来,以便供解码器使用.
2 编码质量和dsp速度
单片adsp-2181实现mpeg声音编码关键需要解决两个问题:一是如何保证声音编码质量;其次是如何充分利用dsp的运算速度.而这两个问题往往又是一对矛盾,需要找到其最佳结合点.
一般而言,决定mpeg声音编码器的优劣主要是声学模型的好坏.但是,对于使用单片16bit定点dsp的应用而言,这个结论就不再适用了.分析表明,此时有限字长效应对编码质量的影响成了主要矛盾.特别是分析滤波器组,截尾效应竟带来了33倍于16bitad转换量化误差的噪声,而窗系数的有限长度表示则使本来高达96db旁瓣衰减的滤波器响应降低到不到70db.因此,要保证声音编码质量,分析滤波器组算法必须进行精度扩展.
关于速度问题,首先想到的是使用快速算法,我们也尝试了在子带滤波中使用快速算法[4]. 但是,实践证明,这些快速算法使用在dsp上效果并不理想,其原因有以下3条:(1)只考虑了加法和乘法的次数,而对附值、寻址等操作毫不关心,但对所有指令都是单周期的dsp而言,乘法和加法的次数相对其他操作并不显得特别重要;(2)没有考虑dsp的硬件特点,其算法不能充分发挥dsp的乘累加器(mac)并行处理的能力;(3)adsp-2181是为16位算法操作优化的,在需要精度扩展的情况下,运算量将以数量级的速度急剧增加.
基于以上质量和速度要求的分析,我们选用了适合dsp乘累加指令的多相结构滤波器组实现方式,且采用基于mac结构的精度扩展方法,较好地解决了编码质量和dsp速度之间的矛盾.另外,对抽样数据的输入方式、心理声学模型、比例因子编码都进行了适于adsp-2181的改进,减少了运算量,保证了实时性.
3 算法的软件设计
软件设计是mpeg声音编码的单片dsp实现的核心,编码质量和速度的要求都需要通过精心设计dsp软件才能实现.
(1)基于mac结构的精度扩展 mpeg声音编码的分析滤波器组可以有许多种实现方式,多相结构是mpeg标准推荐的一种,其数学表示为
(1)
(2)
分析表明,对yk进行双字扩展可将截尾效应带来的噪声降低33倍.但是,考虑到adsp-2181只支持16bit的乘累加运算,需要对式(1)进行转化,即
(3) yk=hyk+2-16lyk
(4)
热门点击
- 电子报晓公鸡
- 电子模拟金丝雀
- 电子萤火虫
- TMS320C6201/6701 DSP处理
- 趣味电子鸟
- 英飞凌推出具备DSP功能的实时信号控制器XE
- 光控玩具车向前向后电路
- 用8位微处理器实现数字低通滤波器设计
- 基于TSl01型DSP链路口的多通道高精度数
- 瑞萨采用平行运算和结构优化提高DSP核处理速
推荐技术资料
- 业余条件下PCM2702
- PGM2702采用SSOP28封装,引脚小而密,EP3... [详细]