LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真

LTE(长期演进)下行链路 PHY(物理)层处理链路可以认为是下行链路共享信道(DLSCH)和物理下行链路共享信道(PDSCH)处理的组合。DLSCH 即 下行链路传输信道 TrCH。

LTE下行链路物理模型描述,具体可参照之前文章:   

LTE物理层概述(3)-- 下行链路物理模型概述https://blog.csdn.net/snowman898/article/details/124684077

本节主要学习 LTE物理信道的调制与解调功能,文末给出仿真代码。

1、调制

LTE使用的调制方案包括:QPSK, QAM16 和 QAM64。图1所示为三个调制方案的星座图:

LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真_第1张图片       LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真_第2张图片

  

LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真_第3张图片

图1  LTE 三种调制方案星座图

1.1  QPSK调制器映射规则

表1 LTE中QPSK调制映射器规则
载荷比特图形 调制符号
同相(I) 正交(Q)
00 \frac{1}{\sqrt{2}} \frac{1}{\sqrt{2}}
01 \frac{1}{\sqrt{2}} -\frac{1}{\sqrt{2}}
10 -\frac{1}{\sqrt{2}} \frac{1}{\sqrt{2}}
11 -\frac{1}{\sqrt{2}} -\frac{1}{\sqrt{2}}

1.2  QAM16 调制器映射规则

表2 LTE中QAM16调制映射器规则

载荷比特

图形

调制符号

载荷比特

图形

调制符号
同相(I) 正交(Q) 同相(I) 正交(Q)
0000 \frac{1}{\sqrt{10}} \frac{1}{\sqrt{10}} 1000 -\frac{1}{\sqrt{10}} \frac{1}{\sqrt{10}}
0001 \frac{1}{\sqrt{10}} \frac{3}{\sqrt{10}} 1001 -\frac{1}{\sqrt{10}} \frac{3}{\sqrt{10}}
0010 \frac{3}{\sqrt{10}} \frac{1}{\sqrt{10}} 1010 -\frac{3}{\sqrt{10}} \frac{1}{\sqrt{10}}
0011 \frac{3}{\sqrt{10}} \frac{3}{\sqrt{10}} 1011 -\frac{3}{\sqrt{10}} \frac{3}{\sqrt{10}}
0100 \frac{1}{\sqrt{10}} -\frac{1}{\sqrt{10}} 1100 -\frac{1}{\sqrt{10}} -\frac{1}{\sqrt{10}}
0101 \frac{1}{\sqrt{10}} -\frac{3}{\sqrt{10}} 1101 -\frac{1}{\sqrt{10}} -\frac{3}{\sqrt{10}}
0110 \frac{3}{\sqrt{10}} -\frac{1}{\sqrt{10}} 1110 -\frac{3}{\sqrt{10}} -\frac{1}{\sqrt{10}}
0111 \frac{3}{\sqrt{10}} -\frac{3}{\sqrt{10}} 1111 -\frac{3}{\sqrt{10}} -\frac{3}{\sqrt{10}}

 1.3  QAM64 调制器映射规则 

表3 LTE中QAM64调制映射器规则

载荷比特

图形

调制符号

载荷比特

图形

调制符号
同相(I) 正交(Q) 同相(I) 正交(Q)
000000 \frac{3}{\sqrt{42}} \frac{3}{\sqrt{42}} 100000 -\frac{3}{\sqrt{42}} \frac{3}{\sqrt{42}}
000001 \frac{3}{\sqrt{42}} \frac{1}{\sqrt{42}} 100001 -\frac{3}{\sqrt{42}} \frac{1}{\sqrt{42}}
000010 \frac{1}{\sqrt{42}} \frac{3}{\sqrt{42}} 100010 -\frac{1}{\sqrt{42}} \frac{3}{\sqrt{42}}
000011 \frac{1}{\sqrt{42}} \frac{1}{\sqrt{42}} 100011 -\frac{1}{\sqrt{42}} \frac{1}{\sqrt{42}}
000100 \frac{3}{\sqrt{42}} \frac{5}{\sqrt{42}} 100100 -\frac{3}{\sqrt{42}} \frac{5}{\sqrt{42}}
000101 \frac{3}{\sqrt{42}} \frac{7}{\sqrt{42}} 100101 -\frac{3}{\sqrt{42}} \frac{7}{\sqrt{42}}
000110 \frac{1}{\sqrt{42}} \frac{5}{\sqrt{42}} 100110 -\frac{1}{\sqrt{42}} \frac{5}{\sqrt{42}}
000111 \frac{1}{\sqrt{42}} \frac{7}{\sqrt{42}} 100111 -\frac{1}{\sqrt{42}} \frac{7}{\sqrt{42}}
001000 \frac{5}{\sqrt{42}} \frac{3}{\sqrt{42}} 101000 -\frac{5}{\sqrt{42}} \frac{3}{\sqrt{42}}
001001 \frac{5}{\sqrt{42}} \frac{1}{\sqrt{42}} 101001 -\frac{5}{\sqrt{42}} \frac{1}{\sqrt{42}}
001010 \frac{7}{\sqrt{42}} \frac{3}{\sqrt{42}} 101010 -\frac{7}{\sqrt{42}} \frac{3}{\sqrt{42}}
001011 \frac{7}{\sqrt{42}} \frac{1}{\sqrt{42}} 101011 -\frac{7}{\sqrt{42}} \frac{1}{\sqrt{42}}
001100 \frac{5}{\sqrt{42}} \frac{5}{\sqrt{42}} 101100 -\frac{5}{\sqrt{42}} \frac{5}{\sqrt{42}}
001101 \frac{5}{\sqrt{42}} \frac{7}{\sqrt{42}} 101101 -\frac{5}{\sqrt{42}} \frac{7}{\sqrt{42}}
001110 \frac{7}{\sqrt{42}} \frac{5}{\sqrt{42}} 101110 -\frac{7}{\sqrt{42}} \frac{5}{\sqrt{42}}
001111 \frac{7}{\sqrt{42}} \frac{7}{\sqrt{42}} 101111 -\frac{7}{\sqrt{42}} \frac{7}{\sqrt{42}}
010000 \frac{3}{\sqrt{42}} -\frac{3}{\sqrt{42}} 110000 -\frac{3}{\sqrt{42}} -\frac{3}{\sqrt{42}}
010001 \frac{3}{\sqrt{42}} -\frac{1}{\sqrt{42}} 110001 -\frac{3}{\sqrt{42}} -\frac{1}{\sqrt{42}}
010010 \frac{1}{\sqrt{42}} -\frac{3}{\sqrt{42}} 110010 -\frac{1}{\sqrt{42}} -\frac{3}{\sqrt{42}}
010011 \frac{1}{\sqrt{42}} -\frac{1}{\sqrt{42}} 110011 -\frac{1}{\sqrt{42}} -\frac{1}{\sqrt{42}}
010100 \frac{3}{\sqrt{42}} -\frac{5}{\sqrt{42}} 110100 -\frac{3}{\sqrt{42}} -\frac{5}{\sqrt{42}}
010101 \frac{3}{\sqrt{42}} -\frac{7}{\sqrt{42}} 110101 -\frac{3}{\sqrt{42}} -\frac{7}{\sqrt{42}}
010110 \frac{1}{\sqrt{42}} -\frac{5}{\sqrt{42}} 110110 -\frac{1}{\sqrt{42}} -\frac{5}{\sqrt{42}}
010111 \frac{1}{\sqrt{42}} -\frac{7}{\sqrt{42}} 110111 -\frac{1}{\sqrt{42}} -\frac{7}{\sqrt{42}}
011000 \frac{5}{\sqrt{42}} -\frac{3}{\sqrt{42}} 111000 -\frac{5}{\sqrt{42}} -\frac{3}{\sqrt{42}}
011001 \frac{5}{\sqrt{42}} -\frac{1}{\sqrt{42}} 111001 -\frac{5}{\sqrt{42}} -\frac{1}{\sqrt{42}}
011010 \frac{7}{\sqrt{42}} -\frac{3}{\sqrt{42}} 111010 -\frac{7}{\sqrt{42}} -\frac{3}{\sqrt{42}}
011011 \frac{7}{\sqrt{42}} -\frac{1}{\sqrt{42}} 111011 -\frac{7}{\sqrt{42}} -\frac{1}{\sqrt{42}}
011100 \frac{5}{\sqrt{42}} -\frac{5}{\sqrt{42}} 111100 -\frac{5}{\sqrt{42}} -\frac{5}{\sqrt{42}}
011101 \frac{5}{\sqrt{42}} -\frac{7}{\sqrt{42}} 111101 -\frac{5}{\sqrt{42}} -\frac{7}{\sqrt{42}}
011110 \frac{7}{\sqrt{42}} -\frac{5}{\sqrt{42}} 111110 -\frac{7}{\sqrt{42}} -\frac{5}{\sqrt{42}}
011111 \frac{7}{\sqrt{42}} -\frac{7}{\sqrt{42}} 111111 -\frac{7}{\sqrt{42}} -\frac{7}{\sqrt{42}}

在实际实现中,尤其是matlab,我们可以调用以下代码:

QAM16 = comm.RectangularQAMModulator(16);
out = constellation(QAM16);

 LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真_第4张图片

 2、Matlab实现

function y = lte_Modulator(u, Mode)

% Initialization
% Mode 1 -- QPSK 2--
%%
% 为避免每次调用函数时创建和释放系统对象的开销,函数内的系统对象为持久变量声明类型
%  持久变量声明类型可以支持只在函数第一次调用时创建系统对象,从而提高循环调用函数时的仿真速度
%%

persistent QPSK QAM16 QAM64
if isempty(QPSK)
    QPSK = comm.PSKModulator(4, 'BitInput', true, 'PhaseOffset', pi/4,...
                  'SymbolMapping', 'Custom', 'CustomSymbolMapping', [0 2 3 1]);
              
    QAM16 = comm.RectangularQAMModulator(16, 'BitInput', true, 'NormalizationMethod', 'Average power',...
                  'SymbolMapping', 'Custom', 'CustomSymbolMapping', [11 10 14 15 9 8 12 13 1 0 4 5 3 2 6 7]);
              
    QAM64 = comm.RectangularQAMModulator(64, 'BitInput', true, 'NormalizationMethod', 'Average power',...
                  'SymbolMapping', 'Custom', 'CustomSymbolMapping',...
                   [47 46 42 43 59 58 62 63 45 44 40 41 57 56 60 61 37 36 32 33 49 ...
                    48 52 53 39 38 34 35 51 50 54 55 7 6 2 3 19 18 22 23 5 4 0 1 ...
                   17 16 20 21 13 12 8 9 25 24 28 29 15 14 10 11 27 26 30 31]);
end

% Processing
switch Mode
    case 1
        y = step(QPSK, u);
    case 2
        y = step(QAM16,u);
    case 3
        y = step(QAM64,u);
end

 2.1 LTE调制Matlab实现

在QPSK调制情况下,我们可以调用 comm.PSKModulator 系统对象并将其调制阶数设置为4.参数属性描述如下:

1)' BitInput ' 属性:这里设置属性为 ' true' , 表示将调制器输入为 比特值向量。QPSK调制下,                                       每 2bit 映射到一个调制符号;

2) ' PhaseOffset ' 属性:这里设置为 pi / 4,表示调制符号对应复平面单位圆上4个点,角度依

                                           次为 [ 3/4 pi, pi / 4, -pi / 4, -3 / 4 pi ];

3)' CustomSymbolMapping ' 属性 : 确保LTE中定义的比特图形产生相应的输出符号。

对于QAM16,QAM64调制实现,可参考如上代码利用matlab通信工具箱函数实现。

 2.2 LTE解调及Matlab实现

解调可以使用硬判决或者软判决解码 —— 使用硬判决解码时,解调器输入符号映射为估计输出比特;软判决解码时,输出为对数估计似然比(LLR)向量。

硬判决解调代码如下所示:

function y = lte_DemodulatorHard(u, Mode)

% Initialization
% Mode 1 -- QPSK 2--
persistent QPSK QAM16 QAM64
if isempty(QPSK)
    QPSK = comm.PSKDemodulator('ModulationOrder',4, 'BitOutput', true, ...
           'PhaseOffset',pi/4,'SymbolMapping', 'Custom', 'CustomSymbolMapping',  ...
           [0 2 3 1]);
              
    QAM16 = comm.RectangularQAMDemodulator('ModulationOrder',16, 'BitOutput', true, ...
       'NormalizationMethod', 'Average power','SymbolMapping', 'Custom', ...
       'CustomSymbolMapping', [11 10 14 15 9 8 12 13 1 0 4 5 3 2 6 7]);
              
    QAM64 = comm.RectangularQAMDemodulator('ModulationOrder',64, 'BitOutput', true, ...
            'NormalizationMethod', 'Average power','SymbolMapping', 'Custom', ...
            'CustomSymbolMapping', [47 46 42 43 59 58 62 63 45 44 40 41 ...
            57 56 60 61 37 36 32 33 49 48 52 53 39 38 34 35 51 50 54 55 7 6 2 3 19 18 ... 
            22 23 5 4 0 1 17 16 20 21 13 12 8 9 25 24 28 29 15 14 10 11 27 26 30 31]);
end

软判决解调代码如下所示

function y = lte_DemodulatorSoft(u, Mode, NoiseVar)

% Initialization
% Mode 1 -- QPSK 2--
persistent QPSK QAM16 QAM64

if isempty(QPSK)
    QPSK = comm.PSKDemodulator('ModulationOrder',4, 'BitOutput', true,   ...
              'PhaseOffset',pi/4, 'SymbolMapping', 'Custom',   ...
              'CustomSymbolMapping', [0 2 3 1], 'DecisionMethod', ...
              'Approximate log-likelihood ratio', 'VarianceSource', 'Input port');
              
    QAM16 = comm.RectangularQAMDemodulator('ModulationOrder',16, 'BitOutput', true,  ...
              'NormalizationMethod', 'Average power', 'SymbolMapping', 'Custom', ... 
              'CustomSymbolMapping', [11 10 14 15 9 8 12 13 1 0 4 5 3 2 6 7], ...
              'DecisionMethod', 'Approximate log-likelihood ratio', ...
              'VarianceSource', 'Input port');
              
    QAM64 = comm.RectangularQAMDemodulator('ModulationOrder',64, 'BitOutput', true, ... 
              'NormalizationMethod', 'Average power', 'SymbolMapping', ...
              'Custom','CustomSymbolMapping', [47 46 42 43 59 58 62 63 45 44 40 41 ...
              57 56 60 61 37 36 32 33 49 48 52 53 39 38 34 35 51 50 54 55 7 6 2 3 19 ...
              22 23 5 4 0 1  17 16 20 21 13 12 8 9 25 24 28 29 15 14 10 11 27 26 30 31], 
              'DecisionMethod', 'Approximate log-likelihood ratio', ...
              'VarianceSource', 'Input port');
end

2.3 BER测量

    QAM16和 QAM64 的带宽利用率 分别是 QPSK 的 2倍和3倍。不过,高阶调制方案会更易受到信道噪声的影响。比较QPSK、QAM16和QAM64调制方案,在给定误码率概率下,接收端需要更高的Eb/No。

以下代码为一个简单的LTE 调制解调系统,用以衡量各种调制方案的BER和SNR之间的关系。该系统包括调制器、解调器、AWGN信道、计算BER和Eb/No的函数。主要代码展示如下所示:


clear
clc
close all

EbNo = 25;
maxNumErrs = 1000;
maxNumBits = 20e6;

FRM = 9600;
% Modulation Mode 
ModulationMode =3;          % 1--QPSK  2--QAM16  3-- QAM64
k = 2* ModulationMode;
snr = EbNo + 10*log10(k);   

% Processing loop: transmitter, channel model and receiver
 numErrs = 0;
 numBits = 0;
 
 AWGN = comm.AWGNChannel;
 AWGN.EbNo = snr;
 
 while((numErrs < maxNumErrs) && (numBits < maxNumBits))
    
     % Transmitter
    u = randi([0,1], FRM, 1);
    x = lte_Modulator( u, ModulationMode);
        
    % channel
    c0 = AWGN.step(x);
    c1 = scatterplot(c0);
    title('QAM64调制散点图');
    grid on
    
    % Receiver
    r0 = lte_DemodulatorHard(c0, ModulationMode);
    y = r0(1:FRM);
    
    % Measurements 
    numErrs = numErrs + sum(y ~= u);
    numBits = numBits + FRM;
 end
 
 %
 ber = numErrs / numBits

由于该仿真以函数形式呈现,实际执行时要调用MATLAB工具箱 bertool

LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真_第5张图片

配置好后,分别将 “ chapter1_ex01.m”代码中 :

% Modulation Mode 
ModulationMode =3;          % 1--QPSK  2--QAM16  3-- QAM64

ModulationMode值设置为1,2,3,从而得到 各种调制方式下 EbNo 与 ber的关系图:

LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真_第6张图片

 本系统完整代码资源可下载:

LTE QPSK、QAM16 以及 QAM64调制下 EbNo 与 误码率BER之间的仿真关系图icon-default.png?t=M4ADhttps://download.csdn.net/download/snowman898/85372067

说明:本章所述原理,只为让大家有系统的认识,可以完整了解 LTE 调制信号链路。以下再补充2点:

1)关于QAM16/64具体的数学公式推导,大家可以自行搜索,个人推荐以下帖子:

  QAM信号的调制解调原理icon-default.png?t=M4ADhttps://blog.csdn.net/gemengxia/article/details/116150246?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165249485116782391887600%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165249485116782391887600&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-116150246-null-null.142^v9^control,157^v4^control&utm_term=qam%E8%B0%83%E5%88%B6&spm=1018.2226.3001.4187

2)QAM16以及QAM64关键技术实现及其难点,后续会另开帖子说明。

 
 

你可能感兴趣的:(数字通信,LTE学习,网络,算法,文档资料)