1 GFSK 背景知識
調製分類如下:[2]
GFSK 是 FSK 的擴展,其中調製信號的頻率不會在二進制數據的每個符號週期開始時立即改變。 因此,bit 0-> 1 或反之變得更加平滑。換句話說,與傳統的 FSK 相比,調製信號的幅度和相位變化將相對較小。原則上,FSK 是使用獨立的本地振盪器分別用於同相和正交分量來實現的,並且振盪器將在每個符號週期開始時切換以生成用於調製的載波頻率。一般而言,所有獨立振盪器在符號週期開始時不會處於相同的幅度和相位,因此這會導致傳輸信號的每個比特變化的頻率突然變化。因此,調製後的 FSK 信號將非常寬,並且具有不可忽略的旁瓣。下圖說明了這一點。
信號被正確解碼的前提是:在每個符號週期之後具有精確和準確的幅度和相位值。如果接收端收到這樣的信號,將會造成信道失真、干擾、熱再生等,從而降低 FSK 的性能。
在 GFSK 調製方案中,需要在基帶波形信號前引入高斯濾波器。典型的高斯濾波器是脈衝響應爲高斯函數的濾波器(如下圖爲高斯脈衝響應)
時閾上的高斯函數在頻閾上仍是高斯函數,因此該濾波器的頻率響應非常窄。當輸入信號通過此類濾波器時,與不涉及濾波的 FSK 方案相比,所得到的濾波信號的頻譜寬度會減小。因此,FSK 中頻率的任何突然變化都會被濾除,這使得每個符號週期開始時的轉換比 FSK 相對平滑(下圖是 GFSK 信號的響應)
該濾波器的優點是降低邊帶功率,減少對相鄰信道的干擾,但代價是增加碼間干擾 (ISI)。因此,仔細設計具有最佳截止頻率的高斯濾波器對於確保最小化 ISI 相關影響非常重要。此外,還可以使用其他穩健的信號處理和信道均衡技術來克服 ISI 的影響。
調製信號之前的這個濾波階段也稱爲脈衝整形,因爲數據脈衝被濾除以產生具有急劇上升和下降時間的乾淨輸出信號,這有助於準確確定接收信號的載波頻率。GFSK 技術非常有用,廣泛用於無線系統和技術,例如改進 Layer 2 protocol,、藍牙、IEEE 802.15.4 和 Z-wave。
2 GNU Radio GFSK 模塊參數詳解
GFSK Mod 的輸入是字節流 byte stream,輸出是基帶複雜調製信號。
參數 | 意義 | 解釋 |
---|---|---|
Samples/Symbol | Samples per baud >= 2 (integer) Default value = 2 |
這有個鏈接介紹的比較清楚 |
Sensitivity | Given to the Frequency Mod Default value = 1.0 |
Frequency Mod |
BT | Gaussian filter bandwidth * symbol time (float) Default value = 0.35 |
這有個 matlab 關於高斯濾波器的 BT 參數對濾波效果的影響文章 |
Verbose | Prints the value of bits per symbol and BT Default value = Off |
|
Log | Prints the following modulation data to .dat files: * Chunks to Symbol data is written to "nrz.dat" * Output of Gaussian filter is written to "gaussian_filter.dat" * Output of frequency modulator is written to "fmmod.dat" Default value = Off |
|
Unpack (depreciated in GNU Radio 3.8) | Unpack input byte stream? |
GFSK Demod 的輸入是基帶複雜調製信號,輸出是 a stream of bits unpacked, 1 bit per byte (the LSB)
參數 | 意義 | 解釋 |
---|---|---|
Samples/Symbol | Samples per baud >= 2 (integer) |
|
Sensitivity | Given to the Quadrature Demod |
|
Gain Mu | Controls rate of mu adjustment |
|
Mu | Fractional delay [0.0, 1.0] |
|
Omega Relative Limit | Sets max variation in omega (float, typically 0.000200 (200 ppm)) |
|
Freq Error | Bit rate error as a fraction |
|
Verbose | Print information about modulator? |
|
Log | Print modualtion data to files? (bool) |
3 GNU Radio GFSK 模塊簡示例
我們對 9 位長的比特流 000111011
進行 GFSK 調製,然後對其進行 GFSK 解調:
運行後效果如下:
解釋:我這裏採樣率故意設置爲 10KHz,這樣在時序圖中每個採樣佔用 0.1 MS 方便觀察。從圖中可以看到信號 2 和信號 3 是一致的,說明我們經過 GFSK 調製解調後數據和原來保持一致。(這裏有個 delay 滑動條,用來平移原始信號,方便錯開觀察的,其數值的意義是延遲 n 個樣本)
4 本文視頻教程
參考鏈接
[1].什麼是 GFSK 調製?
[2].Frequency-shift keying
[3].GFSK vs FSK
[4].Digital GFSK Carrier Synchronization-IEEE
[5].Samples Per Symbol
[6].FIR Gaussian Pulse-Shaping Filter Design - Matlab
[7].數字和模擬濾波器 — 示例
[8].Frequency Mod
[9].GFSK Demod
教程列表
基礎教程:
- [1]. GNU Radio 系列教程(一) —— 什麼是 GNU Radio
- [2]. GNU Radio 系列教程(二) —— 繪製第一個信號分析流程圖
- [3]. GNU Radio 系列教程(三) —— 變量的使用
- [4]. GNU Radio 系列教程(四) —— 比特的打包與解包
- [5]. GNU Radio 系列教程(五) —— 流和向量
- [6]. GNU Radio 系列教程(六) —— 基於層創建自己的塊
- [7]. GNU Radio 系列教程(七)—— 創建第一個塊
- [8]. GNU Radio 系列教程(八)—— 創建能處理向量的 Python 塊
- [9]. GNU Radio 系列教程(九)—— Python 塊的消息傳遞
- [10]. GNU Radio 系列教程(十)—— Python 塊的 Tags
- [11]. GNU Radio 系列教程(十一)—— 低通濾波器
- [12]. GNU Radio 系列教程(十二)—— 窄帶 FM 收發系統(基於ZMQ模擬射頻發送)
- [13]. GNU Radio 系列教程(十三)—— 用兩個 HackRF 實現 FM 收發
- [14]. GNU Radio 系列教程(十四)—— GNU Radio 低階到高階用法的分水嶺 ZMQ 的使用詳解
- [15]. GNU Radio 系列教程(十五)—— GNU Radio GFSK 模塊
綜合教程:
- [1]. SDR 教程實戰(一) —— 利用 GNU Radio + HackRF 做 FM 收音機
- [2]. SDR 教程實戰(二) —— 利用 GNU Radio + HackRF 做藍牙定頻測試工具(超低成本)
- [3]. SDR 教程實戰(三) —— 利用 GNU Radio + HackRF + WireShark 做藍牙抓包器(超低成本)
- [4]. SDR 教程實戰(四) —— 利用 GNU Radio + HackRF 手把手深入瞭解藍牙協議棧(從電磁波 -> 01數據流 -> 藍牙數據包)
- [5]. SDR 教程實戰(五) —— 利用 GNU Radio + LimeSDR+ WireShark 做藍牙抓包器(上上個視頻使用 HackRF)
視頻和博客
: 如果覺得不錯,幫忙點個支持哈~