QAM调制及其软解调

本文以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

2,一种简化的16QAM软解映射算法

posted on 2021-01-05 17:09  阿长长  阅读(7777)  评论(0编辑  收藏  举报

导航