LTE(长期演进)下行链路 PHY(物理)层处理链路可以认为是下行链路共享信道(DLSCH)和物理下行链路共享信道(PDSCH)处理的组合。DLSCH 即 下行链路传输信道 TrCH。
LTE下行链路物理模型描述,具体可参照之前文章:
本节主要学习 LTE物理信道的调制与解调功能,文末给出仿真代码。
1、调制
LTE使用的调制方案包括:QPSK, QAM16 和 QAM64。图1所示为三个调制方案的星座图:
图1 LTE 三种调制方案星座图
1.1 QPSK调制器映射规则
表1 LTE中QPSK调制映射器规则
载荷比特图形 | 调制符号 | |
同相(I) | 正交(Q) | |
00 | ||
01 | ||
10 | ||
11 |
1.2 QAM16 调制器映射规则
表2 LTE中QAM16调制映射器规则
载荷比特 图形 | 调制符号 | 载荷比特 图形 | 调制符号 | |||
同相(I) | 正交(Q) | 同相(I) | 正交(Q) | |||
0000 | 1000 | |||||
0001 | 1001 | |||||
0010 | 1010 | |||||
0011 | 1011 | |||||
0100 | 1100 | |||||
0101 | 1101 | |||||
0110 | 1110 | |||||
0111 | 1111 |
1.3 QAM64 调制器映射规则
表3 LTE中QAM64调制映射器规则
载荷比特 图形 | 调制符号 | 载荷比特 图形 | 调制符号 | |||
同相(I) | 正交(Q) | 同相(I) | 正交(Q) | |||
000000 | 100000 | |||||
000001 | 100001 | |||||
000010 | 100010 | |||||
000011 | 100011 | |||||
000100 | 100100 | |||||
000101 | 100101 | |||||
000110 | 100110 | |||||
000111 | 100111 | |||||
001000 | 101000 | |||||
001001 | 101001 | |||||
001010 | 101010 | |||||
001011 | 101011 | |||||
001100 | 101100 | |||||
001101 | 101101 | |||||
001110 | 101110 | |||||
001111 | 101111 | |||||
010000 | 110000 | |||||
010001 | 110001 | |||||
010010 | 110010 | |||||
010011 | 110011 | |||||
010100 | 110100 | |||||
010101 | 110101 | |||||
010110 | 110110 | |||||
010111 | 110111 | |||||
011000 | 111000 | |||||
011001 | 111001 | |||||
011010 | 111010 | |||||
011011 | 111011 | |||||
011100 | 111100 | |||||
011101 | 111101 | |||||
011110 | 111110 | |||||
011111 | 111111 |
在实际实现中,尤其是matlab,我们可以调用以下代码:
QAM16 = comm.RectangularQAMModulator(16);
out = constellation(QAM16);
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 '
次为 [ 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
配置好后,分别将 “ chapter1_ex01.m”代码中 :
% Modulation Mode
ModulationMode =3; % 1--QPSK 2--QAM16 3-- QAM64
ModulationMode值设置为1,2,3,从而得到 各种调制方式下 EbNo 与 ber的关系图:
本系统完整代码资源可下载:
LTE QPSK、QAM16 以及 QAM64调制下 EbNo 与 误码率BER之间的仿真关系图
说明:本章所述原理,只为让大家有系统的认识,可以完整了解 LTE 调制信号链路。以下再补充2点:
1)关于QAM16/64具体的数学公式推导,大家可以自行搜索
2)QAM16以及QAM64关键技术实现及其难点,后续会另开帖子说明。