-
介绍
-
GMSK
-
code
-
pic
1 介绍
GMSK是连续香味调制的一种,其中GMSK为最典型并且成功商用。
2 GMSK
高斯最小频移键控,当脉冲时间减小是脉冲持续时间增加。在实际应用中,通常将脉冲持续时间截短到某特定的固定长度。欧洲数字蜂窝i系统GSM就是采用了BT=0.3的GMSK.
3 code
CPM_GMSK.m
% CPM_GMSK.m
%
% Simulation program to realize GMSK
%
% Programmed by Y.S. Cui
%
clear all;
close all;
%******************** Preparation part ************************************
% Ts=1/16000; %基带信号周期为1/16000s,即为16KHz
Tb=1/32000; %[码元]输入信号周期为Ts/2=1/32000s,即32KHz【奈奎斯特采样】
BbTb= 0.1:0.1:1; %取BbTb为0.5,调制指数为0.5的二元数字频率调制
Bb=BbTb/Tb; %3dB带宽 -_-半带宽=码元频率一半-_-!
Fc=32000; %载波频率为32KHz -_-载波频率=码元频率-_-!
Fc_sample=64; %每载波采样64个点
B_num=8; %基带信号为8个码元
Dt=1/(Fc*Fc_sample); %采样间隔[载波周期/采样点数][4.88281250000000e-07]
B_sample=Tb/Dt; %每基带码元采样点数 B_sample=Tb/Dt[输入信号/采样间隔]
t=0:Dt:B_num*Tb-Dt; %仿真时间离散点[采样间隔,码元数*(时间/码元)]
T=Dt*length(t); %仿真时间值[采样间隔*512个采样点]
Ak=[0 0 1 0 1 0 1 0]; %产生8个基带信号[8个比特]
Ak=2*Ak-1; %[多此一举] %单极性码元—>双极性码元
gt=ones(1,B_sample); %每码元对应的载波信号[1*64]
Akk=sigexpand(Ak,B_sample); %码元扩展[64*8->1*512]
temp=conv(Akk,gt); %码元扩展[卷积向量Akk和gt 512+64-1]
Akk=temp(1:length(Akk)); %码元扩展[取出temp变量中前512个,类似于银行存款,第一年存入的钱会一直享受利息值最后一年,第二年存入的钱会一直享受利息值最后一年]
%************************* Filter initialization **************************
tt=-2.5*Tb:Dt:2.5*Tb-Dt; %{2.5*码元周期}/{采样间隔=[载波周期/采样点数]}
%g(t)=Q[2*pi*Bb*(t-Tb/2)/sqrt(log(2))]-Q[2*pi*Bb*(t+Tb/2)/sqrt(log(2))];
%Q(t)=erfc(t/sqrt(2))/2;
color=[1 0 0;0 1 0;0 0 1;0.5 0.8 0.9;1 1 0;...
1 0 1;0 1 1;0.5 0 0;0.5 0.5 0.5;2/3 2/3 1];%定义一个颜色矩阵
for i=1:10
gaussf=( erfc(2*pi*Bb(i)*(tt-Tb/2))-erfc(2*pi*Bb(i)*(tt+Tb/2)) )/sqrt(log(2));
plot(tt,gaussf,'color',color(i,:),'LineWidth',2);
text(tt(170),gaussf(170),'\leftarrow BT'); %在(k,l)处加上sin(x)←并带有左箭头指向
leg_str{i}=['data',num2str(i)];
legend(leg_str);
hold on;box off;grid on;
end
gtext('BT = 0.1,0.2,...,1');
xlabel('t[T]');ylabel('g(t)/[1/T]');title('GMSK 脉冲');
4 pic