本文以16QAM與64QAM為例,介紹QAM調制方式及其軟解調。
QAM調制一般采用格雷碼,其調制過程如下:
以16QAM為例,可將其分為兩部分,高兩位沿虛軸自下而上對二進制0到3依次進行格雷碼轉換。即將00,01,10,11轉換為00,01,11,10。低兩位則沿實軸自左而右按照同樣的方式進行編碼,最后得到16QAM調制星座圖:
注:采用格雷碼進行星座映射有多種方式,本文僅展現了其中一種,其是由Matlab QAM調制函數參數設置為格雷碼方式且初始相位為pi/2后得到的,若初始相位為默認值0,則星座圖如下所示:
注:初始相位設置為多少對性能並無影響,主要是其對應的軟解調方法會稍作調整(同樣的解映射方式,但軟信息所對應的比特位有所不同——因為經過了相位旋轉),而軟解調算法的論文研究常將高兩位沿虛軸變化,低兩位沿實軸變化,其所對應的Matlab QAM函數的初始相位便為pi/2(若初始相位為0,觀察上圖可知高兩位沿實軸變化,低兩位沿虛軸變化)。
附錄:
1,16QAM二進制轉格雷碼Matlab代碼:
%% 16QAM星座格雷碼映射--binary to gray % bitshift函數輸入必須是十進制數 % bitxor函數輸入必須是十進制數 % a = ['00';'01';'10';'11']; % a = bin2dec(a); a = 0:3; b = bitshift(a,-1); c = bitxor(a,b); d = dec2bin(c);
2,QAM格雷碼映射的規則(Gray Code Mapping in QAM)
64QAM調制同理。
初始相位為pi/2的64QAM星座圖為:
初始相位為0的64QAM星座圖為:
64QAM二進制轉格雷碼Matlab代碼:
%% 64QAM星座格雷碼映射--binary to gray % bitshift函數輸入必須是十進制數 % bitxor函數輸入必須是十進制數 % a = ['000';'001';'010';'011';'100';'101';'110';'111']; % a = bin2dec(a); a = 0:7; b = bitshift(a,-1); c = bitxor(a,b); d = dec2bin(c);
關於QAM的軟解調可參考兩篇論文,以下給出論文中的關鍵截圖以及論文鏈接:
16QAM軟解調:
64QAM軟解調:
QAM軟解調一般化:
QAM軟解調對邊界距離的修正(將常數改為變量):
參考鏈接:
1,Simplified soft-output demapper for binary interleaved COFDM with application to HIPERLAN/2