蓝牙基带调制(GFSK)

   日期:2020-12-18     浏览:208    评论:0    
核心提示:蓝牙基带调制(GFSK:Gauss frequency Shift Keying )前言一、高斯滤波器二、使用步骤1.引入库2.读入数据总结前言 蓝牙发展到现在已经是5.2版本,包含**经典蓝牙(BT)**和**低功耗蓝牙(BLE)**,尽管经过多带迭代,其基带调制解调方式还是GFSK和DPSK。下面介绍的就是用的较多的GFSK调制,对比FSK调制。都知道FSK是二选一的频率键控调制,其调制解调也是极为简单,通信原理可能就有很详细的介绍,其中非相干最佳接收机结构尤为经典。而GFSK的关键是在高斯

蓝牙基带调制(GFSK:Gauss frequency Shift Keying )

  • 前言
  • 一、高斯滤波器
  • 二、高斯滤波
  • 三、相位积分
  • 四、TX设置和信号波形
  • 总结

前言

蓝牙发展到现在已经是5.2版本,包含经典蓝牙(BT)低功耗蓝牙(BLE),尽管经过多次迭代,其基带调制解调方式还是GFSK和DPSK。下面介绍的就是用的较多的GFSK调制,对比FSK调制。都知道FSK是二选一的频率键控调制,其调制解调也是极为简单,通信原理可能就有很详细的介绍,其中非相干最佳接收机结构尤为经典。而GFSK的关键是在高斯滤波器的应用,因为高斯滤波器的存在,GFSK的带外泄露或者说功率谱旁瓣扩展很小。

一、高斯滤波器

其中高斯滤波器的公式可以写作:

g ( n ) = 1 4 N [ e r f ( π K B T 2 l n 2 ( n N + 1 2 ) ) − e r f ( π K B T 2 l n 2 ( n N − 1 2 ) ) ] g(n) = \frac{1}{4N}\left[erf\left(\pi K_{BT}\sqrt{\frac{2}{ln2}}\left(\frac{n}{N}+\frac{1}{2}\right)\right)-erf\left(\pi K_{BT}\sqrt{\frac{2}{ln2}}\left(\frac{n}{N}-\frac{1}{2}\right)\right)\right] g(n)=4N1[erf(πKBTln22 (Nn+21))erf(πKBTln22 (Nn21))]
这里采用的时误差函数形式,有的用的也是Q函数形式,但是根据误码率和大部分trans文章的分析,采用误差函数的方式应该是正确的。

对应的matlab代码如下:
函数的输入:
B B B :表示带宽,这里设置为500KHz;
symb_rate :表示GFKS的符号速率这里设置为1MHz;
ts :表示采样时间,这里设置为 1 12 e 6 \frac{1}{12e^6} 12e61;
delay :2*delay表示高斯滤波器覆盖的符号数目,这里设置为1.5;

function [Gaussian_filter_q,Gaussian_filter_e] = Gaussian_filter(B,symb_rate,delay,ts)
symb_T      = 1/symb_rate;          
Gau_t       = -delay*symb_T:ts:delay*symb_T;
 K          = 2*pi*B/sqrt(log(2)); 
Gau_det     = K*(Gau_t-symb_T/2);
Gau_sum     = K*(Gau_t+symb_T/2);
Gaussian_filter_q = 1/4/symb_T*(qfunc(2*pi*B*symb_T*Gau_det)-qfunc(2*pi*B*symb_T*Gau_sum));
Gaussian_filter_e = 1/4/symb_T*(erfc(Gau_det/sqrt(2))-erfc(Gau_sum/sqrt(2)));
end

二、高斯滤波

GFSK与FSK的区别在于多了一个高斯滤波器滤波和相位连续,高斯滤波的过程就是现将bit数据转换为NRZ码,然后上采样再经过高斯滤波,也就是卷积高斯滤波器。

w [ n ] = 2 π h ∑ k = − ∞ ∞ p [ k ] g [ n − k N ] w[n]=2\pi h\sum_{k=-\infty}^{\infty}p[k]g[n-kN] w[n]=2πhk=p[k]g[nkN]
代码如下:

[~,Gaus_fil]= Gaussian_filter(TX.B,TX.symb_rate,TX.Gau_del,TX.samp_time);
TX_dat      = 2*TX_bits - 1;
dat_len     = length(TX_dat);
TX_dat_samp = upsample(TX_dat,TX.Oversample);
TX_Gaus_fil = 2*pi*TX.h*conv(Gaus_fil,TX_dat_samp);

三、相位积分

GFSK相位连续就是因为相位积分而来,也是因为相位连续而不会出现相位的突然跳变,看功率谱可知,相位的突然可能引起谐波分量。
θ [ n ] = ∑ v = − ∞ n w [ v ] \theta[n] = \sum_{v=-\infty}^{n}w[v] θ[n]=v=nw[v]
代码如下:

TX_phase    = TX.samp_time*cumsum(TX_freq(13:end));

四、TX设置和信号波形

当得到信号的相位以后就可以IQ调制GFSK信号:
s [ n ] = e j θ [ n ] = e x p { j ∑ v = − ∞ n w [ v ] } s[n]=e^{j\theta [n]}=exp\left\{ j \sum_{v=-\infty}^{n}w[v]\right\} s[n]=ejθ[n]=exp{ jv=nw[v]}
代码如下:

TX_cos      = cos(TX_phase);
TX_sin      = sin(TX_phase);
TX_GFSK1    = complex(TX_cos,TX_sin); 

TX的参数设置为:

function TX = TXSetting()
TX.h            = 0.32;  %mod index
TX.Fs           = 12e6; %sample rate
TX.samp_time    = 1/12e6;
TX.symb_rate    = 1e6;
TX.Oversample   = TX.Fs/TX.symb_rate;
TX.Packet_len   = 1000;
TX.Gau_del      = 1.5;
TX.B            = 0.5*TX.symb_rate;
TX.ac_code      = [1 1 1 1 1 0 0 1 1 0 1 0 1];
TX.Packet_num   = 100;
TX.SNR          = 0:2:16;
end

总结

调制好后的基带波形如下图

对比GFSK和FSK信号的功率谱就只到两者明显的区别:

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服