| 定点运算DSP在应用中已取得了极大的成功,而且仍然是DSP应用的主体。然而,随着对DSP处理速度与精度、存储器容量、编程的灵活性和方便性要求的不断提高、自80年代中后期以来,各DSP生产厂家陆续推出了各自的32bit浮点运算DSP。 和定点运算DSP相比,浮点运算DSP具有许多优越性: 浮点运算DSP比定点运算DSP的动态范围要大很多。定点DSP的字长每增加1bit,动态范围扩大6dB。16bit字长的动态范围为96dB。程序员必须时刻关注溢出的发生。例如,在作图像处理时,图像作旋转、移动等,就很容易产生溢出。这时,要么不断地移位定标,要么作截尾。前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。总之,是使整个系统的性能下降。在处理低信噪比信号的场合,例如进行语音识别、雷达和声纳信号处理时,也会发生类似的问题。而32bit浮点运算DSP的动态范围可以作到1536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。 由于浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其处理速度大大高于定点DSP。这一优点在实现高精度复杂算法时尤为突出,为复杂算法的实时处理提供了保证。 32bit浮点DSP的总线宽度较定点DSP宽得多,因而寻址空间也要大得多。这一方面为大型复杂算法提供了可能、因为省的DSP目标子程序已使用到几十MB存储器或更多;另一方面也为高级语言编译器、DSP操作系统等高级工具软件的应用提供了条件。 DSP的进一步发展,必然是多处理器的应用。新型的浮点DSP已开始在通信口的设置和强化、资源共享等方面有所响应。 |
学习TI的各种DSP,本着循序渐进的原则,可以分为多个层次。根据我多年开发DSP的经验,在这里总结一下各个层次的进阶:
1、DSP2000(除了2812):
进阶:标准C -> C和汇编混合编程
说明:把DSP2000当作单片机来玩就可以了,非常简单。
2、DSP5000(包括DSP2812)
主要:标准C -> C和汇编混合编程 -> DSP/BIOS -> RF3
说明:DSP5000是个中等产品,性能不高不低,基本上也没有开发难度。
3、DSP6000
主要:标准C -> C和汇编混合编程 -> DSP/BIOS -> XDAIS -> RF5
说明:DSP6000的开发难度明显增大,不论是硬件还是软件。还分为两种档次:
(1)DSP62XX & DSP67XX:开发这两类DSP,硬件上会初步遇到信号完整性问题,软件方面来说,DSP/BIOS是必需的,复杂的程序还需要XDAIS和RF3、RF5的知识。
(2)DSP64XX:开发难度比较大,硬件方面需要重点考虑系统合理架构问题,信号完整性问题;软件方面,需要综合运用各种比较先进、专业的知识,例如用DSP/BIOS作为RTOS,用RF5作为程序架构,尽量采用MiniDriver来编写底层驱动程序等。如果深入编程,还会遇到令人困惑的Cache冲突问题(虽然TI最近专门针对这个难题升级了CCS),等等。
另外还有一些辅助知识,根据自己需要可以选学:
1、GEL:推荐所有阶段的开发者都要学;
2、RTDX:一般来说没有必要学习;
3、CCS中的C++面向对象编程技术:不建议采用;
4、CSL:对于DSP6000以上的开发,必须的;
5、各种DSP库函数:对于复杂算法程序,建议学习。 |