实验四数字MSK调制系统的DSP实现一、实验目的1、通过实验学习数字信号处理器的开发软件CCS的使用;2、掌握数字信号处理算法的软件仿真及DSP实现;3、培养学生的实际动手能力。要求学生理解实验原理及实验方案,掌握正确的操作规程;二、实验设备硬件:计算机软件:WINDOWS操作系统、CCS软件和MATLAB(含SIMULINK工具包)软件三、实验内容基带码元速率为1000B,载频为3000Hz,实现数字MSK的调制系统,并给出仿真结果。1、最小频移键控(MSK)频移键控和相位键控一样,由于调制信号包络恒定,有利于在非线性的信道中传输。MSK是二进制连续相位FSK的一种特殊情况,有时叫做快速频移键控(FFSK),有时也叫做最小频移键控(MSK)。这两种名称的侧重点不同:MSK的“最小(minimum)”二字指的是这种调制方式能以最小的调制指数(h=0.5)获得正交的调制信号,而FFSK的“快速”二字指的是对于给定的频带,它能比BPSK传输更高速率的数据。2、MSK的基本概念若CPFSK信号表示为:式中相位ϕ(t)是时间t的连续函数,标称载频fc是f2和f1的算术平均值,即:式中,频率f2代表所传输数字序列{ak}中符号“1”,f1代表符号“-1”。(实际上传输数字序列{ak}中符号“1”和“-1”,相当于二进制数据中的“1”和“0”,如下图)。这样CPFSK信号用以下形式区分符号“1”和“-1”:式中,ϕk是t=kTb时刻ϕ(t)的值,它与调制过程的以往状态有关,它是为了保证t=kTb时相位连续而加入的相位常数。调制指数为:......(1)考虑ϕk取值和调制指数h,可把(1)式统一表达式如下:......(2)当(2)式中的h=0.5时,就得到了MSK信号的数学表达式:式中,ak取值±1。而波形相位为:......(3)可以看出:式中ϕ(t)是时间的连续函数,而MSK本身smsk(t)也是时间的连续函数(包括随机符号转换t的瞬间在内)。这使得信号smsk(t)的谱密度随频率(远离信号带宽中心)倒数的四次幂而下降,而通常的离散相位FSK信号的谱密度却随频率倒数的平方下降。因此,MSK信号在带外产生的干扰非常小。这正是限带工作情况下,所希望有的宝贵特点。3、MSK调制的特点最小频移键控(MSK)有时也称做快速频移键控(FFSK)。这种调制可以看成是调制指数为0.5的连续相位二进制频移键控。MSK具有如下特点:1.恒定包络,允许用非线性幅度饱和器件放大。2.连续相位,使得功率谱密度按f-4速率降低。功率谱在主瓣以后衰减得较快。3.在码元转换时刻,信号的相位是连续的,或者说,信号的波形没有突变。4.码元转换可在瞬时幅度为零时发生,从而使调制器开关过程的波形失真最小。5.频谱带宽窄,99%的能量集中在1.15/Tb的带宽内,从而可允许带通滤波器带宽较窄。与QPSK相比,MSK具有较宽的主瓣,其第一个零点出现在0.75fs处,而QPSK的第一个零点出现在0.5fs处。由于信号能量在0.75fs之外下降很快,所以典型带宽取0.75fs即可。由于上述特点及恒定包络特点,MSK信号在幅度和频率受限时能量损失不大。四、实验步骤1、芯片设置双击SetupCCS2快捷方式,clear清除所有已import的芯片,选择c5416DeviceSimulator。Import后点击saveandquit。如下图2、建立工程建立工程,设置BuildOption如下。3、编写工程文件编写工程的.cmd文件与主程序.c文件。代码如下。1)、msk.cmd-w-stack2000h-heap100-lrts.libMEMORY{PAGE0:VECT:o=80h,l=80hPRAM:o=200h,l=1f00hPAGE1:DRAM:o=3000h,l=3000h}SECTIONS{.text:{}PRAMPAGE0.data:{}PRAMPAGE0.cinit:{}PRAMPAGE0.switch:{}PRAMPAGE0.const:{}DRAMPAGE1.bss:{}DRAMPAGE1.stack:{}DRAMPAGE1.vectors:{}VECTPAGE0}2)、msk.c#includemath.h#includestdlib.h#definepi3.1415926535#definedata_len10#definesample_number50intRb=1000;intfs=3000;voidmain(){intdata_out[data_len*sample_number],data_t[data_len*sample_number];inti,j,n;doubleout[data_len*sample_number];doublet[data_len*sample_number];intdata[10]={1,1,1,1,0,0,1,1,1,1};for(j=0;jdata_len;j++){for(n=0;nsample_number;n++){data_out[sample_number*j+n]=data[j];}}for(j=0;jdata_len*sample_number;j++){if(data_out[j]==0)data_t[j]=-1;if(data_out[j]==1)data_t[j]=1;}t[0]=0;for(i=1;idata_len*sample_number;i++){t[i]=(3.0*pi/fs)/sample_number+t[i-1];}for(i=0;idata_len*sample_number;i++){out[i]=cos((fs+data_t[i]/2.0*Rb)*t[i]);}j=0;}4、调试和仿真依次点击RebulidALL,loadprogram,如下图所示设置断点,运行程序。点击View-Graph-Time/Frequency..分别设置图像相关显示,得到MSK调制前的0,1数字信号与调制后的正弦波信号,如下图所示。