最近在ST公司的STxp70的dsp平台上开发音频codec模块.
公司最近和ST公司有个DAB的项目, 需要将AACplus,BSAC,MPEG-lay2以及lay3的算法在该dsp平台上
进行优化.这个dsp平台比较的奇怪和TI的以及arm的core不太一样,它有一个基本core以及基本指令集,它的
扩展的一些数学指令集是通过增加一些extension库来实现的.不过优化后的效率还是比较令人满意的.
用的时候感觉同neon指令集似曾相识,
其实是不一样的, st的这个dsp对于SIMD方面的支持较少, 主要是对于数据精度上可以给用户以很大的支持.
有浮点寄存器组以及相应的指令集和宽度达到为64位的寄存器组以及相应的指令集.我想这些在一些对于音频效果
要求较高的场合可能有用处吧.
在开发的过程中碰到一些问题,但是都不是技术上的,发现老外的效率并不如想象中的那么高,常常一个问题的
提出到收到他们的回复,一个多星期都已经过去了. 因为这个浪费了我不少的时间.本来三个codec一共可能只要
两个月时间都可以搞定的,但是前期他们给的支持太少,文档又没有给全,导致优化完后,他们又发来一些新的
指令集的文档,又要使用新指令集重新进行优化.
其中MP1x标志是对于多媒体处理方面指令集的扩展;fpx标志是浮点指令扩展标志.
ST的该款dsp的v3版本支持program cache,data cache没有. internal program memory只有64kb,
internal data memory有160kb. 它的外部memory有高达26个cycle的延迟, 而经过测试它的p-cache
效果并不是非常理想. 不过该dsp的开发环境workbench中通过使用IPA标志可以较大的对code size进行压缩,
效果还是比较的理想. 并且提供对代码进行性能测试的工具与函数. 不过它的profiler工具总是无法在我自己的
机子上工作, 真是很郁闷.
感觉自己目前对于音频codec在应用方面的能力已经没有什么问题了,目前自己具备的经验包括:
1)浮点算法阶段需要的进行算法级优化的能力: FFT的优化(实序列方面), mdct方面的优化.
2)TI公司系列的汇编指令64系列,54以及55系列.
ARM公司v4,v5,v6,以及neon指令系列
以及最近搞的st公司的dsp汇编指令.
目前感觉新拿到一个core的manual可以保证在一个星期内熟悉指令集并进行开工优化.
其实个人感觉只要你懂了TI公司的C64的汇编优化方法,其他大部分的core的优化都应该问题不大.
因为他们的优化难度都不如TI的c64, 这是我的体会.
3)掌握了将算法从浮点转换到定点.
以下是以后要做的:
以后可能要多看看数字信号处理方面的书籍,如oppenham的书.
掌握基音搜索算法在speech领域.
掌握huffman编码方面的知识.
多多使用matlab进行算法方面的仿真来加深自己对知识的理解.