藍牙基帶調製(GFSK)

藍牙基帶調製(GFSK:Gauss frequency Shift Keying )

前言

藍牙發展到現在已經是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信號的功率譜就只到兩者明顯的區別:
在這裏插入圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章