首页 理论教育 DSK C语言实现:解析14.4

DSK C语言实现:解析14.4

更新时间:2025-01-09 工作计划 版权反馈
【摘要】:需要运行本书CD中第14章的ccs\Proj_AmRx文件下的这个应用程序。在程序清单14.3中,数列“x”(第一行)包含当前和存储的(过去的)接收到的AM信号的数值。在正常的工作模式下,“r”应该稍稍低于1.0。程序清单14.3:一个基于Hilbert变换的AM接收机的变量的声明下面的代码执行一个实际的AM解调的操作。程序清单14.4:基于Hilbert变换的AM解调算法基于Hilbert的AM解调算法的6个实时步骤。你的基于Hilbert的AM接收机现在就在DSK上面运行了。

这个基于Hilbert变换的AM接收机和Matlab仿真的例子非常相似。Matlab的好处是比较容易理解,但是这是以低效率为代价的。

需要运行本书CD中第14章的ccs\Proj_AmRx文件下的这个应用程序。我们感兴趣的主文件是AMreceiver_ISRs.c,它包含中断服务子过程。这个文件包括必要的变量声明执行一个基于Hilbert变换的AM的解调。

如果你使用一个立体声的编码器(例如板级的C6713DSK编码器或者基于PCM3006的子系列的编码器C6711DSK),这个程序可以独立地执行左右通道的解码器。为了清晰起见,这个举例的程序只对一个信号的信息进行解调,并将把这个信息输出到左右两个通道。

在程序清单14.3中,数列“x”(第一行)包含当前和存储的(过去的)接收到的AM信号的数值。这个Hilbert变换滤波器的输出是“y”(第2行)。当前和最近的包络的数值(r[n]和r[n-1])存储在envelop变量中(第3行)和输出隔直滤波器存储于output变量中(第4行)。隔直滤波器惟一可调的参数是变量“r”(第5行),它可以控制在实数轴上的极点的位置。在正常的工作模式下,“r”应该稍稍低于1.0。

程序清单14.3:一个基于Hilbert变换的AM接收机的变量的声明

下面的代码执行一个实际的AM解调的操作。在这个工作模式下的6个主要步骤将在后面讨论。

程序清单14.4:基于Hilbert变换的AM解调算法

基于Hilbert的AM解调算法的6个实时步骤。

程序清单14.4的解释如下。(www.xing528.com)

(1)第2行:将AM信号的当前数值输入到DSP中。

(2)第3~7行:起始化一个滤波器的输出并执行当前的Hilbert变换,并存储输入的数值。

(3)第9行:计算AM信号的真实包络。

(4)第12行:执行隔离直流的滤波器。

(5)第14~19行:比较接收到的存储变量数值和下一次的输入数值。

(6)第21、22行:输出信息信号到左右两个通道。

现在你可以理解这些代码了。让我们继续,复制所有的这些文件到一个独立的文件夹。在CCS中打开这个工程并重新编译所有的文件。一旦编译完成,将程序调用进入DSK并单击运行。你的基于Hilbert的AM接收机现在就在DSK上面运行了。AM调制信号可以通过本书CD中的test_signal文件夹得到,然后你可以测试你的AM接收机的代码。这些文件的名称是以AM开头的。

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

我要反馈