目录
1.GMSK调制原理
1.1 基带信号
1.2 高斯滤波器
1.3 相位调制
2.GMSK解调原理
3. MATLAB程序
4.仿真结果
GMSK(高斯最小频移键控)是一种连续相位的频移键控(CPFSK)调制方法,它在数字通信中得到了广泛应用,特别是在移动通信系统中。GMSK通过限制频率偏差的累积来减少带外辐射,并通过使用高斯滤波器对基带信号进行预调制来平滑相位路径。
1.GMSK调制原理
高斯最小频移键控(Gaussian Filtered Minimum Shift Keying),这是GSM系统采用的调制方式。数字调制解调技术是数字蜂窝移动通信系统空中接口的重要组成部分。GMSK调制是在MSK(最小频移键控)调制器之前插入高斯低通预调制滤波器这样一种调制方式。GMSK提高了数字移动通信的频谱利用率和通信质量。
对于MSK调制,频偏为符号速率的1/4,这就使得每个符号周期内旋转90°,当符号为1111时,则沿着逆时针呈现四个90°相位跳变,如下图所示。MSK调制的这种特性使得其具有类似于QPSK调制的星座图,但是本质上仍然为2FSK,因此一个符号仍然只携带1bit信息。如果发射机端采用了Gaussian pulse shaping filter,则为GSM制式中使用的GMSK调制方式。
GMSK调制技术是从MSK(Minimum Shift Keying)调制的基础上发展起来的一种数字调制方式,其特点是在数据流送交频率调制器前先通过一个Gauss滤波器(预调制滤波器)进行预调制滤波,以减小两个不同频率的载波切换时的跳变能量,使得在相同的数据传输速率时频道间距可以变得更紧密。由于数字信号在调制前进行了Gauss预调制滤波,调制信号在交越零点不但相位连续,而且平滑过滤,因此GMSK调制的信号频谱紧凑、误码特性好,在数字移动通信中得到了广泛使用,如广泛使用的GSM(Global System for Mobile communication)移动通信体制就是使用GMSK调制方式。
通常将高斯滤波器的3dB带宽B和输入码元宽度T的乘积BT值作为设计高斯滤波器的一个主要参数。BT值越小,GMSK信号功率频谱密度的高频分量衰减越快。GMSK调制技术的基本结构如下所示:
1.1 基带信号
在GMSK中,首先需要将数字比特流转换为双极性不归零(NRZ)或归零(RZ)的基带信号。对于NRZ信号,逻辑“1”和“0”分别映射为+1和-1(或相反)。RZ信号在每个比特周期开始时都有一个电平跳变。
1.2 高斯滤波器
接下来,基带信号通过一个高斯低通滤波器进行滤波。高斯滤波器可以表示为:
1.3 相位调制
经过高斯滤波后的信号用于调制一个载波的瞬时相位。
原始码元信号首先经过双极性编码,然后对其进行采样,经过插值提高数据采样率,通过高斯低通滤波器对原始信号进行带宽限制处理,然后对限带信号进行MSK基带调制,生成相互正交的I、Q两路基带信号,I、Q两路信号再分别与在载波 、 相乘,最终再通过加法器,使两路信号相加,得到最终的GMSK调制信号,通过DA送到天线部分。
经过AD采样过后的GMSK信号首先分别和数字载波 、 相乘,再通过低通滤波器,得到I、Q两路信号,对I、Q信号通过MSK解调,得到基带信号,通过CIC抽取滤波器后,降低基带信号的采样率,最后对解调后的基带信号做位同步、抽样判决,最后解码恢复出原始码元。
2.GMSK解调原理
GMSK解调通常涉及非线性处理,如鉴频器或延迟检测器,来恢复基带信号。以下是一种基于延迟差分检测的解调方法。GMSK解调技术的基本结构如下所示:
如图所示,GMSK调制器基本上使用arctan函数推导回Φ,将其应用于推导器块以获得NRZ信号回推。 在进行混合之前,先进行低通滤波以从两条链中获得I和Q分量。
3. MATLAB程序
........................................................... for EbNo = (0:1:10) % 生成随机±1序列,作为消息源 m = randsrc(1,20000); % 定义时间序列 t1 = 0:SamplePeriod:(length(m)*Tb); % 移除时间序列中多余的列 t1(:, length(t1)) = []; %GMSK 调制 rect = kron(m,ones(1,samples));% 使用kron函数对比特进行上采样 % 创建高斯低通滤波器 gaussfilter = GMSK_gaussian_filter(Tb,samples); % 将消息信号通过高斯LPF m_filtered = conv(gaussfilter,rect); % 在末尾添加一个额外的样本 m_filtered = [m_filtered m_filtered(length(m_filtered))]; % 对数据进行积分 m_filtered1 = cumsum(m_filtered); % 生成调制后的I和Q通道信号 m_filtered2_real = cos(m_filtered1); m_filtered2_imag = sin(m_filtered1); m_filtered2 = m_filtered2_real + j*m_filtered2_imag; %AWGN 信道 noisy_real = m_filtered2_real; noisy_imag = m_filtered2_imag; % 首次测试:无噪声 noisy_real = AWGN_channel(m_filtered2_real, EbNo,Tb); noisy_imag = AWGN_channel(m_filtered2_imag, EbNo, Tb); %GMSK 解调 mfilt_samples = 7; % 通过匹配滤波器 matchfilter = GMSK_matched_filter(Tb,mfilt_samples); % 将滤波器与信号进行卷积,并在末尾添加一个额外的样本 filt_noisy_real = conv(matchfilter,noisy_real); filt_noisy_imag = conv(matchfilter,noisy_imag); filt_noisy_real = [filt_noisy_real filt_noisy_real(length(filt_noisy_real))]; filt_noisy_imag = [filt_noisy_imag filt_noisy_imag(length(filt_noisy_imag))]; % 获取模拟信号的相位 phase = unwrap(angle(filt_noisy_real+filt_noisy_imag*j)); % 获取信号的导数 derivative = diff(phase); derivative = [phase(1) derivative]; % 对信号进行下采样 rx_dwnsmpled = GMSK_downsample(70,71,samples,derivative); % GMSK_ADC rx_digital = GMSK_ADC(rx_dwnsmpled); % 计算符号错误率 [num,rat] = symerr(m,rx_digital); Pe = [Pe rat]; end % ---------------- Generate EbNo vs. BER plot ----------------- EbNo_temp = 0:1:10; semilogy(EbNo_temp,Pe,'b-o'); title('GMSK (BT=0.3) - EbNo vs. BER'); grid on up4027