原创
在电脑上开发DSP算法
2006-11-20 21:12
4821
9
10
分类:
处理器与DSP
开发DSP程序的第一步是在电脑上实现算法,由于C语言的高度可移植性,电脑上可运行的程序几乎不需要修改就可以直接在DSP上运行。如果需要对算法性能进行优化,也尽可能地在C语言范围之内进行,例如使用DSP特有的预编译指令,或者使用DSP特有的汇编伪函数都可以提高不少运算速度。为了让使用了汇编伪函数的DSP程序也能在电脑上运行,可以在电脑上编制与伪函数功能相同的函数库。如果算法需要进一步优化的话,则需要找出真正的运算瓶颈,把运算量大的部分单独拿出来用DSP的汇编写成一个支持C语言调用的函数。一般来说,只需要把DSP编译器输出的汇编程序稍加修改就可以进行不少优化。
在电脑上写程序的时候,要注意目标DSP芯片所支持的数据类型。例如大部分DSP芯片只能进行整数运算,因此在电脑上最终也必须用定点小数实现算法。当然为了测量定点运算带来的误差,浮点数版本也是必需的。
例如我最近在实现回响算法的时候,就是先根据算法写出浮点运算的程序,然后转换为`16bit定点小数运算,并且分别对同样的声音文件进行处理,比较输出文件的误差。使用输入输出文件的比较,可以精确地定量地分析算法,但是一般来说客户方面需要更加感性的认识,因此在电脑上实现实时的效果演示也是很重要的。这就需要从Line In、麦克风或声音文件读入数据,实施地施加算法之后,通过Speaker out输出。关于这种电脑上的实时声音处理程序的编写,日后将陆续介绍。
最后我把回响算法移植到C5510DSK上运行的时候,发现他占用了60MIPS之多,于是就开始着手优化。经过一系列的优化之后,最终达到了40MIPS,从编译出来的汇编语句来看,虽然还有优化的余地,但是已经达到了预定的要求,因此可以暂且放下,待日后和其他效果同时运行速度不够时再优化不迟。
由于在电脑上也实现了DSP中的_sadd,_smpy之类的汇编伪函数,所以在DSP上优化过的程序仍然可以在电脑上运行。这样我就可以定量地分析优化所产生的误差。
同时我把回响效果添加入电脑上的实时演示程序中,并且允许用户修改回响效果的参数,让用户自己决定怎样的参数设定最符合要求,最终将在DSP程序中固定这些参数。
用户63431 2007-11-1 10:25
你好
我想问一下C代码移植到DSP的步骤,最好详细一点,谢谢!:),方便得话加我的QQ:36061074