首页 理论教育 直接数字合成方法:5.4.1优化方案

直接数字合成方法:5.4.1优化方案

时间:2023-06-23 理论教育 版权反馈
【摘要】:第一个方法的目的是增加程序可读性,但常常是以损失效率为代价的。记住,16比特的DAC的范围是+32767到-32768。程序清单5.3:与正弦信号产生有关的变量声明下面的代码执行实际的信号生成运算。程序清单5.4:与正弦信号产生有关的算法在基于DDS信号生成中的4个实时步骤关于程序清单5.4的几点说明如下。

直接数字合成方法:5.4.1优化方案

这个版本的直接数字合成方法和Matlab的DDS例子非常相似。第一个方法的目的是增加程序可读性,但常常是以损失效率为代价的。

运行这个应用程序所必需的文件在本书CD中第5章的ccs\sigGen目录中。我们感兴趣的主要文件是sinGenerator_ISR.c,它包含中断服务程序。并且要保证这是包含在本工程中的惟一的ISR文件。这个文件包含了必要的变量声明和执行实际的正弦信号产生程序。而且,如本书中包含的所有CCS工程一样,你应该养成在工程中检查其他文件的习惯,比如StartUp.c,必然有助于你理解这个程序的全部工作。

如果在你的DSK板上使用了一个立体声编解码器,程序能够为左、右声道执行两个独立的正弦信号发生器。为了表达清晰,这个例子的程序将仅包含一个单一的相位累加器,而且这个相位将被用于为左声道产生一个正弦波,并且为右声道产生一个余弦波。

代码如下,其中“A”、“fDesired”和“phase”(第1~3行)分别是信号的幅度、频率和相位。记住,16比特的DAC的范围是+32767到-32768。相位变量不仅设置信号的初始相位,而且将充当相位累加器。π(第5行“pi”)和系统的采样频率(第8行“fs”)的定义顾及到计算相位增量,相位增量在第6行作了声明。

程序清单5.3:与正弦信号产生有关的变量声明

下面的代码执行实际的信号生成运算。在这个运算中涉及的4个主要步骤将在下面的程序代码清单中讨论。

程序清单5.4:与正弦信号产生有关的算法

在基于DDS信号生成中的4个实时步骤(www.xing528.com)

关于程序清单5.4的几点说明如下。

(1)第2行:在每次调用ISR程序时,此行代码会计算相位增量。如果需要的话,在程序执行过程中将允许我们改变信号的频率。

(2)第3行:此行代码把相位增量加到当前的相位值上。

(3)第5行:此行代码执行相当于一个模2π的运算。为了避免信号混叠,相位增量必须≤π。由于最大的增量值是π,所以这个取模的运算能被简化为仅仅检验和一个2π的减法。减2π运算每经过一个完整的周期后“重新开始”。这种方法和使用取模运算比起来效率更高。

(4)第7、8行:这两行代码计算正弦和余弦的值,通过乘以“A”来放大它们的值,并且把这个结果写入到DAC。

现在你理解了这段代码,让我们继续,将所有文件复制到一个独立的文件夹。在CCS中打开这个工程,重新编译所有的文件。一旦编译完成,将程序加载到DSK中,单击运行。1kHz正弦发生器现在就运行在DSK板上。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈