原文 Understanding LTE with MATLAB  ,作者Houman Zarrinkoub,本文是对于该书的翻译,书中的专业性词汇给出了英文原文,图和表的排版都是参考原文,翻译不准确的地方请读者多多包涵。

本文仅限于个人学习,研究,交流,不得用于其他商业用途!

第 4 章 调制与编码

LTE(长期演进)下行链路PHY(物理层)链可以看作应用于下行链路共享信道(DLSCH)和物理下行链路共享信道(PDSCH)的处理的组合。DLSCH处理也称为下行链路传输信道(TrCH)处理。它包括循环冗余校验(CRC)码附加、数据子块处理、基于turbo编码器的信道编码、速率匹配、混合自动重复请求(HARQ)处理和码字重构等步骤。码字是PDSCH处理的输入,包括加扰、调制、多天线多输入多输出(MIMO)处理、时频资源映射和正交频分复用(OFDM)传输。我们将这个两步DLSCH和PDCH处理链的组件细分为三个部分,将在接下来的三章中讨论。

在本章中,我们研究LTE标准中使用的调制和编码方案。这些包括所有组合的DLSCH和PDSCH处理步骤,不包括MIMO和OFDM操作。接下来的两章将讨论OFDM和MIMO。首先,我们将研究PDSCH处理中的耦合操作,包括加扰和调制。然后我们将研究TrCH处理,包括一系列操作,这些操作将逻辑信道和用户比特有效负载映射到码字,这些码字被传递到共享物理信道。

我们将创建Matlab®程序,在发射机和接收机中完全指定TrCH处理。我们将使用MATLAB函数研究不同调制方案和不同编码速率对加性高斯白噪声(AWGN)信道模型误码率(BER)性能的影响。这些操作完全指定如何处理用户数据位,以产生用于后续MIMO和OFDM功能块传输的输入符号。MIMO和OFDM的细节在接下来的两章中被研究。

4.1 LTE调制方案

LTE标准中使用的调制方案包括QPSK(正交相移键控)、16QAM(正交幅度调制)和64QAM。图4.1显示了这三种调制方案的星座图。


在QPSK调制的情况下,每个调制符号可以具有四个不同值中的一个,这些值被映射到星座图中的四个不同位置。QPSK需要2位来编码它的四个不同的调制符号中的每一个。16QAM调制涉及使用16个不同的信令选择,因此利用4比特信息对每个调制符号进行编码。64QAM调制涉及64个不同的可能信令值,因此需要6位来表示单个调制符号。

多个调制方案的可用性有助于实现基于信道条件的自适应调制。当无线电链路相对干净——即,信噪比(SNR)相对高——我们可以使用密集星座的调制方案,例如64QAM。在这种情况下,发送单个码元导致6比特的传输,因此可以增加吞吐量。然而,随着信道变得更加嘈杂,我们应该使用具有更多码间分离的调制方案,例如QPSK。这又将减少每个样本的位数,并降低吞吐量。

在LTE的调制映射,它指定如何调制符号位序列分配到每一个这样的表,如表4.1和4.2的QPSK和16QAM所示。64QAM调制映射表尺寸过大,可以参考文献[1]。

我们注意到位(bit)到符号(symbols)的映射既不是基于典型的二进制,也不是基于灰阶编码(graycoded)方法。 LTE 定义使用了一种星座映射的方式。LTE使用同样的方式定义了的调制符号,这种方式平均信号功率是一个统一的标准。

4.1.1 MATLAB 案例

模拟LTE下行链路的第一步,我们从LTE调制方式开始。如下的两个MATLAB算法显示了LTE的调制和解调算法,在此我们调用了系统工具箱。

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

调制器函数具有两个输入参数:输入比特流(U)和表示调制模式(MODE)的参数。作为其输出,函数计算调制符号。该函数实现了LTE标准中使用的三种不同类型的调制器。例如,在QPSK的情况下,我们使用一个COM.PSK调制器系统对象,并将其调制顺序设置为4。类似地,对于16QAM和64QAM,我们使用comm.RectangulatQAMModulator() 系统对象,并将它们的调制顺序分别设置为16和64。根据调制模式的值,我们处理输入比特以产生调制符号作为输出。

为了确保系统对象精确地匹配LTE标准所指定的内容,我们可以设置其他属性:

  • 1.我们可以设置 BitInput=true,这意味着调制器输入被解释为比特值的向量。例如,在QPSK调制器的情况下,因为每2位被映射到一个调制符号,所以输出向量的大小是输入向量的一半。

  • 2.我们可以设置PasieOffice=PI/4。这意味着调制符号对应于具有单位长度的复平面中的四个点,其角度从以下集合中选择: [3?/4, ?/4, −?/4, −3?/4]。

  • 3.使用CustomSymbolMapping属性,可以确保LTE中指定的位模式产生相应的输出符号。

本文所涉及的接收机默认执行发射器的逆操作,这些提出的逆运算表示恢复传输比特的估计。虽然标准中没有规定,但是为了评估系统的精度和性能,有必要包括这些接收机侧的逆操作。

作为解调的逆操作调制,我们现在提出一些典型的解调方法。在解调器功能中,我们使用LTE中使用的相同的三种调制类型,并且根据调制模式,我们处理输入符号以生成解调输出。如前一节所讨论的,解调可以基于硬判决译码或软判决译码。在硬判决译码中,解调器的输入符号被映射到估计比特,而在软判决译码中,输出是对数似然比(LLR)的向量。

解调函数 DemodulatorHard.m 采用硬判决译码的解调实现。该函数将接收到的调制符号(U)和调制模式(模式)作为输入, 函数输出包括解调比特。

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

函数 DemodulatorSoft.m 采用软判决译码进行解调。该函数有三个输入参数:接收的调制符号流(u)、当前子帧中噪声方差的估计(NoiseVar)和表示调制模式的参数。作为其输出,函数计算LLR。检查函数之间的差异,我们可以看到,通过在解调器系统对象中设置几个属性,包括名为DecisionMethod的属性,我们可以实现软判决解调。

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

4.1.2 误码率BER 测量

LTE中使用多种调制方法的动机是在给定的传输带宽内提供更高的数据速率。带宽利用率以 bit/s/Hz 表示。与QPSK相比,16QAM和64 QAM的带宽利用率分别提高了2倍和3倍。然而,高阶调制方案对信道噪声的鲁棒性降低。与QPSK相比,对于给定的比特错误概率,诸如16QAM或64QAM之类的调制方案在接收机处要求更高的Eb/N0值。

下面的MATLAB函数说明了一系列函数中的第一个,这些函数最终将在MATLAB中实现用于LTE PHY建模的现实收发器。我们从这个简单的系统开始,这个系统由调制器、解调器和AWGN信道组成,并且根据Eb/N0比计算BER。通过以一系列Eb/N0值运行该函数,并改变ModulationMode参数,我们可以可视化调制顺序和对信道噪声的鲁棒性之间的关系。

 1function [ ber,numBits ] = chap4_ex01( EbNo,maxNumErrs,maxNumBits )2%% Constants3FRM = 2400; % Size of bit frame4% ModulationMode = 1;5% ModulationMode = 2;6ModulationMode = 3; %QAM647k = 2* ModulationMode; % Number of bits per modulation symbol8snr = EbNo +10*log10(k);9%% Processing loop
10numErrs = 0;
11numBits = 0;
12while((numErrs < maxNumErrs)&&(numBits<maxNumBits))
13% Transmitter
14u = randi([0 1],FRM,1);
15t0 = Modulator(u,ModulationMode);
16% Channel
17c0 = AWGNChannel(t0,snr);
18% Receiver
19r0 = DemodulatorHard(c0,ModulationMode);
20y = r0(1:FRM);
21% Measurements
22numErrs = numErrs + sum(y~=u);
23numBits = numBits + FRM;
24end
25ber = numErrs/numBits;
26end

第一函数chap4_ex01.m使用基于硬判决解调的解调器,而第二函数chap4_ex02.m 基于软判决解码。在这两个函数中常见的元素,代表了一系列函数的模式,如下:

  • 签名和输入输出参数;

  • 用户有效载荷的大小(对PHY的输入)(用表示一帧数据中输入比特数的参数(FRM)指定);

  • 停止标准;

  • 发射机、信道模型、接收机和测量部分;

  • 在模拟结束时计算BER。

为了达到一定的传输质量——即,对于给定的误码率——当我们从QPSK移动到16QAM和64QAM调制时,所需的E/N值逐渐变高。这表明,诸如QPSK之类的低阶调制方案被用于具有高度退化的信道中,以便以较低数据速率运行的成本降低出错的概率。更高阶的调制方案如64 QAM被应用在更干净的信道中,并且可以提供数据速率的提升。通过运行具有不同E/N值和不同调制模式参数的chap4_ex01.m函数,获得了图4.2中捕获的结果。结果比较了LTE标准中使用的调制方案的理论和仿真BER曲线。

图4.2 不同调制方式下,误码率BER 与Eb/No的关系曲线

在第7章中,我们将讨论各种可用于调度器的方法,用于基于信道条件在每个调度间隔中改变调制方案的选择。到目前为止,我们只讨论了调制方案,并没有添加编码和扰码到混合。其次,介绍了比特级置乱技术及其在MATLAB中的实现。接着介绍了基于turbo编码的纠错编码以及CRC检测处理的纠错机制。


未完待续

2018/11/21

点击关注了解更多精彩内容!!

LTE 调制与解调——QPSK,16QAM,64QAM误码率比较相关推荐

  1. 基于MATLAB的自适应调制解调通信系统的误码率仿真,对比BPSK,QPSK,16QAM,64QAM

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  2. Matlab-QPSK调制与解调 QPSK信号产生的信息、I路、Q路信号对比图以及接收端解调的I路,Q 路,信息恢复的对比图

    本博客环境为Matlab2018 ,软件版本不同可能会有些出入,需要稍作修改. QPSK调制与解调 仿真要求: 画出QPSK信号产生的信息.I路.Q路信号对比图以及接收端解调的I路,Q 路,信息恢复的 ...

  3. 【调制识别】基于高阶累积量的调制方式识别算法matlab仿真,课题识别BPSK, QPSK, 16QAM, 64QAM

    目录 一.理论基础 二.核心程序 三.仿真测试结果 一.理论基础 由于数字调制信号越来越多地应用于通信信号处理领域,因此对数字信号调制识别的研究也越来越多.传统的调制识别的判决方法有:决策判决法.高阶 ...

  4. BPSK,QPSK,2FSK,16QAM,64QAM信号在高斯信道与瑞利信道下的误码率性能仿真

    BPSK,QPSK,2FSK,16QAM,64QAM信号在高斯信道与瑞利信道下的误码率性能仿真_南大小王-CSDN博客 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计.结果及结论.完整代 ...

  5. bpsk调制及解调实验_无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解...

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 先从IQ调制说起: IQ调制:IQ解调原理:Linux下使用GNU Octave运行下面的代码: ...

  6. 4QAM、16QAM 调制与解调仿真电路,观察并分析QAM星座图和误码率曲线【matlab代码】

    源码: https://download.csdn.net/download/qq_44394952/86236776 要求 完成两种调制方式的调制解调:4QAM.16QAM (1)画出系统框图,搞清 ...

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

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

  8. QPSK调制解调过程,包括串并转换,电平转换,载波调制,相干解调,抽样判决等

    目录 一.理论基础 二.核心程序 三.仿真结论 一.理论基础 QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式.在19世纪80 ...

  9. QPSK调制与解调原理

    输入的比特流分别映射成I/Q路的幅度信息, 然后进行IQ路调制, 得到正交两路数据. 以下内容是QPSK的调制内容, 对于其他高阶调制, 例如QAM/16QAM/64QAM调制等, 完全类似. 1.J ...

  10. 16QAM调制与解调-MATLAB基带仿真

    16QAM调制与解调-MATLAB基带仿真 ---------------------------- 2020.05.14更新:---------------------------------- 有 ...

最新文章

  1. 计算机系统上线保障计划,系统运维信息系统运行保障方案计划新.docx
  2. IM4Java + GraphicsMagick 实现高清图片剪裁处理
  3. Variational Inference
  4. cc压力测试_斯坦福大学鲍哲南院士AFM综述:教你如何设计压力传感器的微结构...
  5. linux 管道非阻塞,linux – 管道上的非阻塞读取
  6. Python爬取猫眼电影排行榜并写入MySQL
  7. Could not load the defaultimg image referenced from a nib in the bundle with identifier com.abc
  8. QCSPCChart SPC控制图工具软件是面向对象的工具包
  9. 激光成像雷达技术 你了解清楚了吗?
  10. R语言数据导出(数据保存、导出、持久化到本地指定目录文件)、使用xlsx包的write.xlsx函数将dataframe导出为excel文件xls格式、而非xlsx格式
  11. 为什么有些微信群要不定期清理不活跃成员?
  12. ARM架构(RISC)和x86架构(CISC)以及传统与移动CPU/GPU厂商
  13. SpringMVC -- Restful风格的API
  14. Hive修复外表分区时报错
  15. 文字下划线效果(标题hover效果)
  16. glob.glob() 函数
  17. java上溯造型与下溯造型
  18. Python 必须掌握的知识
  19. Java把带小数点的字符串转换成整数
  20. 国产化Kettle、JDK、MySQL下载安装操作步骤

热门文章

  1. pci串口驱动安装失败_PCI转串口卡驱动安装问题
  2. J2EE(集合框架)
  3. SVN创建分支-查看分支创建之前文件的历史记录
  4. 使用AForge录制视频
  5. 服务器行业深度解析:服务器未来需求知多少
  6. Spring Bean生命周期
  7. 计算机系统硬件基本组成
  8. 【备忘】虚拟化容器/Docker视频教程/kubernetes/云计算/实例教程
  9. spring 定时器功能
  10. photoshop抠图怀恋抽出滤镜