程序清单16.5是程序代码的声明部分。在这里没有出现的是coeff.c文件,但它也是工程CCS的一个部分。这个文件包含Matlab输出的200阶升余弦FIR滤波器的系数。
程序清单16.5:脉冲调制升余弦脉冲型工程程序代码的声明部分
程序清单16.5的解释如下。
(1)第1行:声明和初始化counter变量,这个变量用于表示算法处理的当前符号位相对于符号的开始位(0)和符号的终止位(19)的相对位置。
(2)第2行:声明和起始化samplesPerSymbol变量。从它的名字可以看出,它表示一个符号中的采样数。对于BPSK而言,符号和比特位是一样的。
(3)第3行:声明symbol变量,它是当前比特位的数值(0或者1)。
(4)第4行:声明和起始化跟0与1相联系的双极变量。
(5)第5行:声明和起始化变量cosine,它包含所有12kHz余弦载波的所有可能的本振数值。
(6)第6行:声明变量i,用于点乘操作的序数。
(7)第8行:声明变量x,用于存储当前和过去信息位的数值。
(8)第9行:声明变量y,用于脉冲调至的当前输出数值。(www.xing528.com)
(9)第10行:声明变量output,它是BPSK调制器的输出数值。
程序清单是算法部分的程序代码。
程序清单16.6:脉冲调制升余弦脉冲型工程程序代码的算法部分
程序清单16.6的解释如下。
(1)第2~5行:每个符号创建一个随机的二进制数,并把这个二进制数映射到允许的电平。它的数值在后面的20个采样中保持不变。
(2)第8~12行和第18~20行:执行和脉冲调制器相关的FIR滤波操作。矢量B包含升余弦滤波器的系数,它是使用Matlab rcosfir函数产生并输出的。虽然实现了一个高达200阶滤波器,但是只需要10个乘法,这是因为所有的其他乘法都有0这个乘数。这些乘法操作在输出未知的情况下也不需要执行。这个特点是脉冲调制的最重要的优势。
(3)第14、15行:当计数器等于19,算法达到符号的终端。在这点,计数器重置并开始下一个符号周期。
(4)第23行:变量counter加1为下一次ISR做准备。
(5)第25行:计算当前信息数值和本振的数值的乘积。这实际上是将BPSK信号混频到12kHz。
(6)第27、28行:输出BPSK发射机信号的当前数值到左通道和右通道。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。