原创 在电脑上开发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程序中固定这些参数。
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户63431 2007-11-1 10:25

你好

我想问一下C代码移植到DSP的步骤,最好详细一点,谢谢!:),方便得话加我的QQ:36061074

相关推荐阅读
用户66522 2006-12-14 18:06
常用红外遥控编码资料集
常用红外遥控编码资料集...
用户66522 2006-12-13 10:00
超级单片机工具集
超级单片机工具集...
用户66522 2006-12-07 19:53
业余发射电路精品
...
用户66522 2006-12-04 15:00
TTL和CMOS电平总结
1,TTL电平(什么是TTL电平): 输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>=2....
用户66522 2006-12-04 14:35
自动充电器电路
自动充电器电路...
用户66522 2006-12-02 23:29
挺实用的单片机教材
挺实用的单片机教材...
我要评论
1
9
关闭 站长推荐上一条 /3 下一条