【摘要】:Matlab思维过程的一些限制需要我们转向高效的实时处理上来。零的内存索引值在Matlab程序的矢量中是不存在的,在C/C++编程语言中是存在的并且通常用于表示矩阵符号。这个DSP硬件必须实时处理来自于模数转换器的数据。倘若这样,对于DSP编程员来说,保证满足周期性采样对时间的要求是义不容辞的。即使DSP硬件有非常突出的处理能力,这个能力也不应该被浪费。除非你对器件编程完成这些工作,否则你的DSP硬件将不产生任何作用。
Matlab思维过程的一些限制需要我们转向高效的实时处理上来。
(1)一个词义的变化是需要的,因为在Matlab程序中“B”通常代表矢量,但是在C/C++编程语言中“B”通常代表矩阵。
(2)零的内存索引值在Matlab程序的矢量中是不存在的,在C/C++编程语言中是存在的并且通常用于表示矩阵符号。
(3)这个DSP硬件必须实时处理来自于模数转换器(ADC)的数据。因而,我们不能等到所有的采样数据收到后才开始进行算法的处理。
(4)实时数字信号处理是一个天然的中断驱动过程,并且输入采样应该只使用中断服务程序(Interrupt Service Routines,ISR)来进行处理。倘若这样,对于DSP编程员来说,保证满足周期性采样对时间的要求是义不容辞的。更直接地,如果你没有在另一个采样值到达之前完成这个算法的运算,就没有满足你的实时进度,并且你的系统将会失败。导致这种现象“正确的结果,如果到晚了,也是错的!”(www.xing528.com)
(5)即使DSP硬件有非常突出的处理能力,这个能力也不应该被浪费。
(6)输入和输出中断服务程序不是魔法般连接起来的!除非你对器件编程完成这些工作,否则你的DSP硬件将不产生任何作用。
(7)在ADC和DAC输出是固有的整数。不管ADC的输入范围是多少,这个模拟输入电压对应于一个整数值。对于一个16比特转换器来说,使用二进制补码表示,可能的整数值范围是+32767~-32767。
(8)为清晰易懂,可声明和分配一些变量。比如,FIR滤波器系数,可以被移入到.c和.h文件中。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。