MSCBSC 移动通信论坛
搜索
登录注册
网络优化工程师招聘专栏 4G/LTE通信工程师最新职位列表 通信实习生/应届生招聘职位
 

  • 阅读:988
  • 回复:0
Understanding LTE with MATLAB——3.1到3.10节
destild
初级会员
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

积分 122
帖子 23
威望 2250 个
礼品券 0 个
专家指数 7
注册 2017-1-19
专业方向 
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2018-11-4 16:57:45  只看楼主 


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

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


1.PNG



第三章  MATLAB仿真通信系统


在本章中,我们介绍了MATLAB中与通信系统的分析、设计、建模、仿真、实现和验证相关的一些功能。我们试图回答以下问题:MATLAB,一种高级编程语言,一个拥有大量软件工具箱的设计和仿真环境,如何帮助学者和实践者开发移动和无线系统?


3.1 系统开发工作流

为了回答这个问题,我们回顾了开发的多个阶段:从早期研究和算法设计到将单个算法集成到原型系统模型中,到使用系统按预期工作的仿真进行验证,到检查系统是否可实现,到对其资源消耗、内存、复杂度等进行编码,将设计编码为软件或硬件实现。实现前的步骤——即系统级资源评估——需要某种形式的用于系统级仿真的软件编码。它还包括将数据类型和内存等实际约束与复杂性权衡相结合。此系统级代码可用作硬件实现的基础,目的是集成足够的细节,使得实现者的任务成为创建软件仿真的位精确模型,作为用于在数字信号处理器上实现的汇编代码。用于在现场可编程门阵列(FPGA)或专用集成电路(ASIC)数字信号处理器(DSP)或硬件描述语言(HDL)代码。在整个过程中,我们必须不断监测新的细节,因为它们被添加到模型,以确保精心设计的仍然满足在研究和开发水平提出的要求。


3.2 挑战和能力

当我们从一个典型的标准规范开始,直到我们实现设计时,我们面临许多挑战。这些挑战包括:

  • 从基于文本的解释的规范转换为可作为实现蓝图的软件模型;

  • 为标准提供灵活性的接收机操作引入创新的专有算法;

  • 执行软件模型以执行动态系统级性能评估;

  • 加速处理大型数据集的模拟;

  • 解决执行工作流中的缺陷。


Matlab及其工具箱可以帮助解决这些挑战。

  • 数字信号处理和高级线性代数作为LTE(长期进化)标准的基础,构成了MATLAB语言的核心能力。标准的组成可以用一系列MATLAB程序逐渐直观地合成;

  • 通信系统工具箱为通信系统模型的构建提供了随时可用的MATLAB工具。通过超过100种用于调制、信道建模、纠错、MIMO(多输入多输出)技术、均衡器等的算法,工具箱允许我们专注于通信系统设计而不是软件工程。它还包括许多基于标准的示例,以便允许快速启动;

  • Matlab和Simulink是动态和大规模仿真的理想环境;

  • Matlab使模拟加速;

  • Matlab允许实现工作流间隙,使用:

Matlab到C/C++和HDL(硬件描述语言)代码生成的自动生成;

硬件反馈的验证。


我们可以将这些能力分为四类:算法开发、建模和仿真、模拟加速和实现路径。在本章中,在简要介绍了作为核心产品的MATLAB和Simulink之后,我们将介绍三类能力:

  • 建模和仿真工具

  • 加速模拟速度的工具

  • 实现路径的工具


包括各种工具箱在内的建模和仿真能力使得用户能够创建包括无线和移动标准在内的通信标准的仿真模型。运行这些仿真模型使设计者能够评估整个系统和各个算法的性能,并确定信道退化和其他实时条件的影响。


3.3 重点关注

本书的重点是用MATLAB程序为LTE PHY(物理层)建模。例如,我们只讨论在FDD(频分双工)模式下LTE标准的建模和仿真。没有任何损失的通用性和MATLAB代码的一些修改,读者可以采用我们的MATLAB程序TDD(时分双工)模式。我们将不涉及与控制平面处理、漫游或随机接入或多媒体广播帧相关的主题,也不涉及与多播模式或多用户MIMO有关的详细MATLAB程序。我们将重点放在一个通用的场景中,其中移动单元被分配给小区,并且我们完全详细地描述用户平面数据处理。


3.4 方法

从LTE的最简单组件(即调制器)开始,我们将创建一系列MATLAB程序,逐步向信号处理链添加其他组件,如加扰和信道编码。在每个阶段,我们将计算性能度量,如误码率(BER),以确保组件组合在MATLAB中得到适当的建模。我们将继续这个过程,并开发MATLAB程序来模拟标准中指定的OFDM和MIMO操作。这样,我们还将生成多个子函数,帮助将模型与LTE标准相匹配。在这个过程的最后,我们将用MATLAB程序和Simulink模型来表示LTE标准的各种下行链路模式的重要信号处理操作。


3.5 MATLAB仿真物理层模型

在这本书中,我们将迭代地、系统地在MATLAB中建立LTE PHY的下行链路传输的必要组件。然而,受限于本书的大小,我们必须有选择性强调部分细节。迭代和渐进设计的思想比遵守标准中规定的所有参数和细节更有益。正如本书的标题所证明的那样,我们的目标是通过利用可以在MATLAB中执行的软件程序来增强对LTE的技术讨论,从而建立对LTE的理解。运行和执行软件并模拟系统的能力为理解水平增加了另一个维度。接下来,我们将重点介绍帮助用户建模、仿真、原型和在MATLAB中实现无线系统的各种产品。


3.6 MATLAB

MATLAB是一种广泛使用的程序设计语言,用于算法开发、数据分析、可视化和数值计算。如果说大量的技术论文和出版物都提到了这一点,那么MATLAB在通信系统设计中有着悠久的历史,并且被学术界和实践界所使用。它让设计者专注于算法而不是低级编程。它的许多特性和能力非常适合于对无线系统进行建模:

  • 它有一个符合科学探索性质的交互式程序和环境;

  • 它提供对数据和算法的无缝访问;

  • 它有用于可视化、算法开发数据分析的工具


矩阵作为基本数据类型:Matlab中的基本数据类型是矩阵。由于通信系统中使用的大多数算法是基于数据块或基于帧的处理,所以在MATLAB中表达这些算法是很自然的。这意味着以矩阵形式表示的数学公式在MATLAB中立即表达。例如,在MIMO系统中,接收和发送数据之间的关系由y=Ax+n形式的线性方程组来表示,这种关系可以用一行MATLAB代码来表示。将其与代表相同算法的典型C代码进行比较,这将看起来像一个双循环。

线性代数和傅立叶分析:MATLAB包含数学、统计和工程功能,支持所有常见的工程和科学操作。这些函数是由数学专家开发的,是Matlab语言的基础。核心数学函数使用LAPACK和BLAS线性代数子程序库和FFTW离散傅里叶变换库。线性代数、统计学、傅立叶分析、滤波、优化和数值积分等数学函数在MATLAB中实现为快速准确的函数。

可视化用于设计验证:可视化工程和科学数据所需的大多数图形特征在MATLAB中可用。这些功能包括2D和3D绘图功能、3D体可视化功能、用于交互式创建绘图的工具以及将结果导出到所有流行的图形格式。情节可以通过多种方法来定制。

复数和一系列数据类型:通信系统的模拟依赖于大量使用复数和随机数发生器。Matlab使您能够在广泛的数据类型上执行算术运算,包括双倍、单数和整数。MATLAB还具有随机数发生器的优化功能。诸如randn(用正态分布对随机数建模)、rand(用于均匀分布)和randi(用于离散整数随机分布)之类的函数在周期性和效率方面都有良好的性质[1]。


3.7 MATLAB工具箱

MATLAB的附加软件工具称为工具箱。这些提供专门的数学功能,包括信号处理和通信领域。他们补充核心MATLAB库和提供应用程序特定的功能和目标,加快构建算法和系统建模过程。这些算法的积木使用户能够专注于他们的专业领域而不是改造和实施的基础。

四系统工具箱–DSP系统工具箱[2],实现通信系统[3],相控阵系统工具箱[4],与计算机视觉系统工具箱[5]–特别适合不同应用领域的系统建模。他们不仅提供设计,算法仿真和验证的各个应用领域,但是他们提供方便的动态系统建模仿真试验台的创建组件。在后面的部分中,我们将进一步详细地介绍这些系统工具箱中的一些。


3.8 Simulink

MATLAB Simulink需要提供一个多领域仿真和基于模型的动态和嵌入式系统设计环境[ 6 ]。它提供了一个交互式图形环境和组块库函数。一个易于使用的图形化的设计环境,Simulink允许我们设计、模拟、实施和测试各种时变系统,包括通信、控制、信号处理、视频处理。


使用Simulink,我们可以使用一组全面的预定义块创建、建模和维护系统的详细框图。Similink为分层建模、数据管理和子系统定制提供了工具。附加的块集或系统工具箱扩展了Simulink,具有用于航空航天、通信、射频、信号处理、视频、图像处理和其他应用的特定功能;这些特性对于通信系统的建模和仿真特别有用。


MATLAB的集成:可以在Simulink模型中调用MATLAB函数,以便实现能够分析数据和验证设计的算法。MATLAB函数块在Simulink中的使用允许MATLAB代码集成到Simulink中。Simulink首先使用其代码生成能力将MATLAB代码转换为C代码,然后将C代码编译为MEX(MATLAB可执行文件)函数,并在执行Simulink模型时调用生成的MEX函数。


信号属性和数据类型支持:像MATLAB一样,Simulink定义了以下信号和参数属性:数据类型——单位、双位、有符号或无符号8、16或32位整数;布尔和不动点;维度——标量、向量、矩阵或N-D数组;值——实数或复数这使我们能够例如监视有限字长对算法中计算精度的影响。


仿真能力:在SIMULINK中建立模型后,我们可以模拟其动态行为并查看结果。Simulink提供了几个特性和工具,确保了仿真的速度和精度,包括固定步长和可变步长的求解器、图形调试器和模型剖析器。


使用解算器:解算器是利用模型中包含的信息计算系统随时间变化的动力学的数值积分算法。Simulink提供解算器以支持连续时间(模拟)、离散时间(数字)、混合(混合信号)和多速率系统的仿真。


执行模拟:一旦我们为模型设置了模拟选项,就可以使用Simulink GUI(图形用户界面)交互地运行模拟,或者通过从MATLAB命令行以批处理模式系统地运行模拟。可以使用以下模拟模式:

  • 正常(默认),它解释性地模拟模型;

  • –加速器,通过创建编译的目标代码来加速模型执行,同时仍然允许更改模型参数;

  • –快速加速器,它可以比加速器模式更快地模拟模型,但是交互性更低,方法是创建一个与Simulink分离的可执行文件,可以在第二个处理核心上运行。

 

3.9 建模与仿真

针对各种系统和组件的大多数算法开发在MATLAB中开始。通过数字信号处理、线性代数和数学运算符的库,设计可以很容易地用MATLAB表示为由相关操作序列组成的算法。当各个算法被开发并相互连接时,这就构成了系统模型的基础。系统建模最好在Matlab或Simulink中完成。正如我们前面看到的,Simulink允许MATLAB算法和函数作为系统组件无缝集成。通过使用各种附加工具箱,我们可以扩展系统的范围,并对其进行仿真,以验证其行为是否符合规范。在这一节中,我们将介绍一些Matlab和Simulink附加工具箱。


3.9.1 DSP System工具箱

DSP系统工具箱为基础信号处理操作提供算法和工具。它提供了一系列专门的滤波器设计能力,FFT(快速傅立叶变换),以及作为系统对象捕获的多速率处理能力和特征算法,使得处理流数据以及创建实时原型的任务更加容易。DSP系统工具箱具有用于连接音频文件和设备、执行频谱分析以及使用能够分析系统行为和性能的其他交互式可视化技术的专用工具。所有这些组件支持自动C/C++代码生成,大部分支持定点数据,少数生成HDL代码。


3.9.2 Communications System 工具箱

通信系统工具箱提供用于通信系统的设计、仿真和分析的算法和工具。这个工具箱是专门设计用来模拟通信系统的PHY的。它包含组件库,包括用于信源编码、信道编码、交织、调制、均衡、同步、MIMO和信道建模的组件。这些组件作为MATLAB函数、MATLAB系统对象和Simulink块提供,因此它们可以作为MATLAB或Simulink系统模型的一部分。全部支持C/C++代码生成,大部分支持定点数据运算,少数生成HDL代码用于FPGA或ASIC硬件实现。


3.9.3 Parallel Computing 工具箱

并行计算工具箱[7]可以帮助加速使用多核处理器、GPU(Graphics Progressing Units)和计算机集群的计算和数据密集型问题。诸如循环并行化、特殊数组类型和并行化数值算法等特性允许MATLAB应用程序的并行化。工具箱可以与Simulink 一起使用,并行运行一个模型的多个模拟。模拟加速度的两种主要方法可以识别:

  • 多重或集群处理:一些应用程序可以通过将它们组织成独立的任务并在不同的处理单元上同时执行几个来加快速度。这类任务并行应用包括仿真优化设计、BER测试和蒙特卡洛仿真。作为其易于使用和直观的能力之一,工具箱提供parfor——一种并行for循环结构,可以自动将独立任务分发给多个MATLAB工作者。Matlab工作者是一个独立于桌面Matlab会话运行的MATLAB计算引擎。MATLAB可以自动检测工人的存在,并且如果仅存在桌面会话,它将恢复到串行行为。还可以使用其他方法来设置任务执行,例如工具箱中的任务对象的操作;

  • GPU处理:并行计算工具箱提供了一种特殊的数组类型,允许直接从MATLAB对启用CUDA的NVIDIA GPU执行计算。支持的函数包括FFT、元素运算和若干线性代数运算。工具箱还提供了一种机制,允许现有的基于CUDA的GPU内核直接从Matlab中使用。通信系统工具箱有许多专门的算法支持GPU处理。并行计算工具箱可用于直接在GPU上执行许多通信算法。


3.9.4 Fixed Point 设计器

定点设计器[8],以前的定点工具箱,在Matlab中提供定点数据类型、操作和算法。使用定点设计,有限字长的影响可以被建模为各种算法中的变量。该工具箱允许使用MATLAB语法设计固定点算法,并将结果与相同算法的浮点实现进行比较。这些算法可以在Simulink中重用,并可以将定点数据传递给Simulink模型。工具箱提供了一组工具,使得算法从浮点转换为定点实现更加容易。


3.10 原型设计与实现

各种MathWork产品可以帮助在实验室环境中从概念到可嵌入代码的设计。MATLAB算法必须首先基于字长、限制和复杂度等约束条件进行定义。然后可以将其集成并仿真为更大的系统模型的一部分,并且可以生成位真测试序列来验证软件和硬件实现是否与MATLAB中的黄金参考结果匹配。最后,可以生成C和HDL代码用于硬件实现。通过该步骤,可以通过在MATLAB中保持单个设计源来避免手动编码引入的误差。本节介绍了这些产品中的一些。


3.10.1 Matlab 编译器

Matlab编码器(9)从MATLAB代码生成独立的C和C++代码。生成的源代码是便携式的和可读的。MATLAB编码器支持MATLAB语言的一个大子集的代码生成,包括程序控制结构、函数和矩阵操作。它还支持各种工具箱和系统工具箱的功能和系统对象的代码生成。用MATLAB编码器我们可以生成:

  • MEX函数,它让我们加速MATLAB代码的计算密集部分,并验证生成的代码的行为;

  • 与现有C/C++源代码和环境集成的可读和可移植的C/C++代码;

  • 与基于C的工具和环境集成的动态和静态库;

  • C/C++可执行的算法的原型和概念证明的提供。


3.10.2 硬件实现

通信系统的设计可以实现为嵌入式软件或嵌入式硬件。嵌入式软件实现的目标是DSP和通用处理器。从Matlab模型到嵌入式软件实现的路径包括两个步骤:

  • C/C++代码生成从Matlab;

  • 编译或手工编码C代码作为汇编代码在目标上。

第一步可以使用MATLAB编码器,第二步可以使用针对硬件目标的各种软件模拟器的编译器。

嵌入式硬件实现的目标是FPGAs和ASICS的设计。实现从MATLAB模型到最终FPGA或ASIC原型的设计的过程包括两个步骤:

  • 通过HDL编码器生成MATLAB函数的VHDL或Verilog代码或Simulink模型;

  • 通过集成仿真环境进行后处理,以转换RTL(寄存器)。

Verilog和VHDL代码转换成一个完全合成的FPGA或ASIC设计。HDL编码器[10]从MATLAB函数和Simulink模型生成可移植的、可合成的VHDL和Verilog代码。它可以用于执行第一步。另一个MathWorks HDL工具,HDL验证器,使用HDL模拟器和FPGA硬件在环使Verilog和VHDL设计验证自动化。HDL验证器[11]可以用来将RTL设计引入MATLAB,并通过比较VHDL和Verilog代码的输出和在MATLAB和Simulink中相同算法的详细实现来验证它。由于在这本书中我们主要关注LTE标准的建模、仿真和软件原型,所以关于硬件实现和设计的实现的讨论超出了我们的范围。



待续待续

2018/11/4

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


2.PNG



微信扫描分享本文到朋友圈
微信扫描二维码,手机阅读更便捷
每天分享朋友圈可获得威望奖励(前两次)

对本帖内容的看法? 我要点评

 
[充值威望,立即自动到帐] [VIP贵宾权限+威望套餐] 另有大量优惠赠送活动,请光临充值中心
充值拥有大量的威望和最高的下载权限,下载站内资料无忧

快速回复主题    
标题
内容
 上传资料请点左侧【添加附件】



当前时区 GMT+8, 现在时间是 2018-11-14 15:41:26
渝ICP备11001752号  Copyright @ 2006-2016 mscbsc.com  本站统一服务邮箱:mscbsc@163.com

Processed in 0.027930 second(s), 14 queries , Gzip enabled
TOP
清除 Cookies - 联系我们 - 移动通信网 - 移动通信论坛 - 通信招聘网 - Archiver