楊柳 趙勇 楊洪元 袁偉娜
摘 要:信息傳輸的核心問題是有效性和可靠性,正交幅度調制(QAM)作為一種新的調制技術因其具有很高的頻帶利用率而得到廣泛應用。IT++是基于C++語言的信號處理和通信方面的仿真庫函數工具。本文分析和研究了M-QAM調制在IT++平臺中的實現方法,并比較了不同M值的QAM的性能。仿真結果與理論分析一致,與MATLAB相比極大地提高了仿真速度。
關鍵詞:IT++;QAM;調制
中圖分類號:TN911.3 文獻標識碼:B
1 引言(Introduction)
提高頻譜利用率一直是現在通信中人們關注的焦點之一,尋找頻譜利用率較高的數字調制方式隨著通信業務需求的迅速增長已經成為數字通信系統研究和設計的主要目標之一。正交振幅調制(Quadrature Amplitude Modulation,QAM)是一種振幅和相位聯合鍵控[1],它是一種頻譜利用率很高的調制方式,其在有線電視網絡高速數據傳輸、大中容量數字微波通信系統、衛星通信等各個領域均得到了廣泛的應用[2]。
隨著通信技術的迅猛發展,無線通信系統的功能越來越強、性能越來越高。另一方面,通信系統技術研究和產品開發的周期越來越短。強大的計算機輔助分析設計技術和仿真工具的出現為解決以上兩個問題提供了有力的支撐。目前,進行通信仿真的軟件主要采用Simulink/MATLAB和C/C++,二者各有優點。MATLAB因其在處理向量以及矩陣方面功能強大,人機界面友好,編程效率高,擁有強大而智能化的畫圖功能,進行較小規模的仿真十分方便。C/C++因其通用性強,接近底層,運行效率很好,被廣泛應用于較大規模平臺的仿真。
IT++庫是由瑞典查爾姆斯理工大學(Chalmers University of Technology)前信息理論系創建的,主要用于模擬通信系統并進行通信相關領域的研究。由于在編寫類庫時使用的是C++語言,故命名為IT++。IT++作為C++的一個庫,擁有許多類似MATLAB的向量、矩陣、數學、信號處理和通信的類和函數,結合了兩者的優點,能夠快速、方便地進行通信系統的仿真[3]。
本文將基于IT++實現QAM的調制與解調。
2 基于IT++的QAM調制解調算法實現(An
implementation of QAM modulation/
demodulation algorithm based on IT++)
2.1 QAM類介紹
在IT++中,QAM類所包含的各成員函數將實現比特流或符號到QAM星座點的映射及解映射過程。該類itpp::QAM與通用調制類的繼承關系如圖1所示。
圖1 QAM類繼承圖
Fig.1 Inheritance diagram of class QAM
QAM類用來實現方形M階QAM調制器,使用此類需添加頭文件:
#include[4]
QAM星座的大小是,這里k=1,2,...。每維符號值為。比特到符號的映射表采用格雷編碼,且符號是歸一化處理的,即平均能量是1,歸一化因子為。
2.2 實現過程
程序實現模塊框圖如圖2和圖3所示。其中,比特調制模塊主要用于計算誤碼率,符號調制模塊用于繪制星座圖。
圖2 比特調制模塊框圖
Fig.2 Flow chart of'bit modulation'
圖3 符號調制模塊框圖
Fig.3 Flow chart of'symbol modulation'
上述模塊在程序中的實現代碼見表1到表4。
表1 信號產生模塊
Tab.1 Signal generating module
功能 實現代碼
設定發送符號個數 const int no_symbols=10000;
設定每符號的比特數 int bps=round_i(qam.bits_per_symbol());
產生發送比特 bvec tx_bits=randb(no_symbols*bps);
產生發送符號 ivec tx_sym_numbers=randi(no_symbols,0, pow2i(bps)-1);
表2 調制模塊
Tab.2 Modulation module
功能 實現代碼
初始化QAM調制類型 QAM qam(16);
比特調制 tx_symbols=qam.modulate_bits(rx_symbols);
符號調制 cvec tx_symbols=qam.modulate(tx_sym_numbers);
表3 噪聲模塊
Tab.3 Additive noise module
功能 實現代碼
設置噪聲功率 const double N0=0.01
產生噪聲 cvec noise=sqrt(N0)*randn_c(no_symbols);
接收符號 cvec rx_symbols=tx_symbols+noise;
表4 解調模塊
Tab.4 Demodulation module
功能 實現代碼
比特硬解調 bvec decbits=qam.demodulate_bits(rx_symbols);
AWGN信道軟比特近似解調 vec softbits_approx=qam.demodulate_soft_bits (rx_symbols,N0,APPROX);
AWGN信道軟比特Log-MAP解調 vec softbits=qam.demodulate_soft_bits (rx_symbols,N0,LO GMAP);
3 仿真結果(Simulation results)
基于IT++平臺,以16QAM和64QAM為例,分別仿真了SNR=20dB和SNR=30dB時系統的誤碼率性能,并繪制了星座圖,如圖4到圖6所示。在相同SNR下,高階調制的誤碼率性能差于低階調制。對相同階數QAM調制,SNR越大,星座圖越清晰,系統性能越好。
a.16QAM星座圖
a.Constellations for 16QAM
b.添加噪聲后的16QAM星座圖(SNR=20dB)
b.Constellations for 16QAM with AWGN(SNR=20dB)
c.添加噪聲后的16QAM星座圖(SNR=30dB)
c.Constellations for 16QAM with AWGN(SNR=30dB)
圖4 不同SNR下16QAM調制星座圖
Fig.4 Constellations for 16QAM with different SNRs
a.64QAM星座圖
a.Constellation for 64QAM
b.添加噪聲后的64QAM星座圖(SNR=20dB)
b.Constellations for 64QAM with AWGN(SNR=20dB)
c.添加噪聲后的64QAM星座圖(SNR=30dB)
c.Constellations for 64QAM with AWGN(SNR=30dB)
圖5 不同SNR下64QAM調制星座圖
Fig.5 Constellations for 64QAM with different SNRs
圖6 16QAM、64QAM、256QAM誤碼率對比圖
Fig.6 BER comparison between 16QAM,64QAM and 256QAM
4 結論(Conclusion)
本文采用IT++庫這一新型工具,詳細研究了QAM調制解調的各個步驟,最終得到與理論一致的仿真結果。以16QAM調制為例,仿真點數為100000bit,基于IT++平臺運行時間約為14s,與MATLAB相比極大地提高了仿真速度。本文以QAM調制為例進行了研究,后續可以擴展到鏈路級,甚至系統級仿真,由此可以看出這一工具具有很大的研究空間和發展前景。
參考文獻(References)
[1] 樊昌信,曹麗娜.通信原理(第7版)[M].北京:國防工業出版社,2012.
[2] 朱泳霖,QAM調制解調技術研究及其FPGA實現[D].長沙:中南大學,2010.
[3] 劉林,王平,陳紅.無線通信系統仿真.IT++分析與實例[M].北京:電子工業出版社,2012.
[4] IT++源代碼(4.3.1)[DB/OL].[2015-4-8]http://itpp.sourceforge.net/4.3.1/files.html.
作者簡介:
楊 柳(1993-),男,本科生.研究領域:無線通信理論.
趙 勇(1993-),男,本科生.研究領域:無線通信理論.
楊洪元(1991-),男,本科生.研究領域:無線傳感器網絡技術.
袁偉娜(1979-),女,博士,副教授.研究領域:無線通信理論
與關鍵技術.