基于MWORKS 2024a的MIMO-OFDM 无线通信系统设计

一、引言

在终端设备和数据流量爆发式增长的今天,如何提升通信系统容量、能量效率和频谱利用率成为5G通信的关键问题之一。大规模天线阵列作为5G及B5G无线通信关键技术通过把原有发送端天线数量提升一个或多个数量级,实现波束聚集、控制波束转向,在现代民用及军用设施中起到重要作用。在此基础上,大规模阵列天线也为波束赋形、信道预编码、信道建模等方向带来了新的挑战。

图1 大规模MIMO无线通信空口示意图

MIMO-OFDM作为主要的无线通信系统被广泛应用于5G NR、LTE、WLAN等场景中,因为它们对频率选择信道具有鲁棒性,并且支持高数据速率。随着对支持的数据速率的要求不断提高,这些系统的配置变得越来越复杂也越来越大,天线元件的数量和分配的资源(子载波)也越来越多。因此如何进行MIMO波束控制以及资源分配成为提升无线通信系统容量的关键问题。

本文展示了如何在大规模 MIMO 通信系统的发射端采用波束成形技术提升通信系统的质量。该系统采用信道探测来确定发射机上的信道状态信息并提供所需的预编码权重,进而得到简化的全数字接收器以及多个传输的数据流。系统主要分为信道探测部分和数据收发部分,对于所选的MIMO信道,前导码信号通过发射端发送,并在信道接收器上进行数据处理。接收阵列对所有链路采用信号放大器放大并进行OFDM解调和频域信道估计,随后进行波束赋形。

同时,本系统也采用了编解码器、调制解调器、信道均衡器等模块进行通信系统的设计与测量。

二、工具箱介绍

1.基础通信工具箱

MWORKS 2024a基础通信工具箱面向无线通信领域,为通信系统的设计和仿真提供各种常用函数、模型和应用程序。利用基础通信工具箱可进行通信系统物理层模型构建和模拟、可视化信道特征分析、SISO和MIMO信道建模与分析、链路级设计建模及信道衰落补偿设计。具体产品功能架构如下所示。

  • 通信系统设计

提供信源→编码→调制→信道→解调→滤波→均衡→错误检测与纠正等一系列通信系统设计方案,用以实现对通信系统端到端的链路级仿真。

  • 射频传播

针对不同环境提供相应的电磁波辐射的传播模型,包括自由空间路径损耗、大气衰减、降雨衰减等,解决了无线通信RT仿真的组件级仿真模型的需求。

  • 信道建模

提供基于高斯白噪声、瑞利衰落、多输入多输出的衰落和MIMO信道模型,可根据输入参数获得相应的信道特性,用于满足无线衰落信道建模的功能实现。

图2 基础通信工具箱产品功能架构

2.相控阵系统工具箱

MWORKS 2024a相控阵系统工具箱面向无线通信、雷达、声纳、声学和医学成像等领域,为传感器阵列和波束成形系统的设计和仿真提供各种常用函数。利用相控阵系统工具箱可满足大规模MIMO、毫米波系统的天线设计和无线信道特性分析,支持用户对5G、LTE蜂窝、卫星通信及WLAN通信系统的设计及仿真验证,以及各行业对雷达、声纳等探测及定位系统的仿真验证需求。具体产品功能架构如下所示。

  • 相控阵设计与分析

支持多种天线阵元及阵列的辐射领域、功率、幅度、极化、增益等电磁辐射特性分析,均匀线性阵列、均匀矩形阵列、均匀圆形阵列、共性阵列等阵列响应和导向矢量特性分析,并提供窄带及宽带信号辐射、相控阵信号收集、辐射、接收等模块。

  • 波束赋形及到达角估计

提供多重信号分类估计(MUSIC)、二维多重信号分类估计(2D-MUSIC)、旋转不变子空间估计(ESPRIT)、广义互相关(GCCPHAT)等阵列信号到达角估计算法。

  • 检测、距离和多普勒估计

执行恒定误报率(CFAR)检测、脉冲压缩处理、相干及非相干脉冲积分、信噪比可视化、接收机工作特性(ROC)曲线、距离和多普勒估计等信号检测与处理。

  • 波形设计及信号合成

提供部分匹配滤波、模糊功能、频谱图和范围变换的算法模型。

图3 相控阵系统工具箱产品功能架构

三、MIMO-OFDM无线通信系统设计

本文基于相控阵系统工具箱与基础通信工具箱构建MIMO-OFDM无线通信系统。首先进行信道探测建模仿真,进而得到信道预编码信息。其次,对构成发射器和前端接收器组件的辐射元件进行建模,用于 MIMO-OFDM 通信系统并进行数据处理。最后可根据指定系统参数,包括不同空间位置和阵列大小的误码率和星座图来验证系统的性能。在考虑SU-MIMO链路模型的背景下,所涉及到系统框图流程图如图4所示。

图4 通信系统数据收发示例图

信道探测

对于空间多路复用系统,发射机上信道信息可充分应用于信道预编码,目的是最大限度地提高目标方向的信号能量。在信道变化缓慢的假设下,可以通过信道探测进行信道估计,其中包括信道前导码、MIMO信道、接收器、估计信道、信道权重计算等模块。具体的信道探测反馈流程如图5所示。

图5 信道信息探测示例图

对于所选系统,前导码信号通过所发射天线元件发送,通过接收器进行数据接受处理,具体包含信号预放大、OFDM解调、频域信道估计,以及基于奇异值分解(SVD)的信道对角化反馈权重计算。部分代码示例如下。

# 信号放大
rxPreAmp = phased_ReceiverPreamp(;
Gain= Gain,
NoiseFigure=NoiseFigure,
ReferenceTemperature=ReferenceTemperature,
SampleRate=SampleRate,
)
rxPreSigAmp = step(rxPreAmp)
# OFDM信号解调
demodulatorOFDM = comm_OFDMDemodulator(;
FFTLength=FFTLength,
NumGuardBandCarriers=NumGuardBandCarriers,
PilotCarrierIndices=PilotCarrierIndices,
CyclicPrefixLength=CyclicPrefixLength,
NumSymbols=NumSymbols,
NumReceiveAntennas=NumReceiveAntennas,
)
rxOFDM = step(
demodulatorOFDM, rxPreSigAmp[(chanDelay + 1):(end - (numPadZeros - chanDelay)), :])
# MIMO信道估计
H = MIMOChannelEstimate(rxOFDM[:, 1:numSTS, :], prm)
# MIMO信道权重
v = diagbfweights(H)
# Julia Code

数据传输

基于信道探测信息进行数据发射器的参数配置。数据传输处理通过信道编码和复杂符号的位映射将单个数据流分割成多个数据发射流,同时对发射流进行预编码,进一步将带导频映射的OFDM调制信号针对发射天线进行数据复制从而形成数据发射器。MWORKS 2024a基础通信工具箱提供了卷积码编码器、QAM调制器、OFDM调制器模块,可满足工程师对发射端数据传输建模的要求。部分代码示例如下。

# 卷积码编码
encoder = comm_ConvolutionalEncoder(;
TrellisStructure=TrellisStructure, 
TerminationMethod=TerminationMethod
)
# 比特符号产生
txBits = randi([0, 1], numFrmBits, 1)
encodedBits = step(encoder, txBits)
# QAM调制
mappedSym = qammod(; encodedBits; UnitAveragePower= UnitAveragePower)
#  数据流产生
gridData = reshape(mappedSym, numCarriers, numDataSymbols, numSTS)
#  预编码权重与子载波
preData = complex(zeros(numCarriers, numDataSymbols, numSTS))
for symIdx in 1:numDataSymbols
    for carrIdx in 1:numCarriers
        Q = squeeze(Weights[carrIdx, :, :])
        normQ = Q * sqrt(numTx) / norm(Q)
        preData[carrIdx, symIdx, :] = squeeze(gridData[carrIdx, symIdx, :]) * normQ
    end
end
# OFDM调制
modulatorOFDM = comm_OFDMModulator(;
FFTLength=FFTLength,
NumGuardBandCarriers=NumGuardBandCarriers,
InsertDCNull=true,
PilotInputPort=true,
PilotCarrierIndices=PilotCarrierIndices,
CyclicPrefixLength=CyclicPrefixLength,
NumSymbols=numDataSymbols,
NumTransmitAntennas=numSTS,
)
# Julia Code

发射端波束导向

相控阵作为5G关键技术之一,极大地提升了大规模MIMO通信系统容量,通过控制阵列天线中辐射单元的馈电相位来改变方向图形状,即控制相位从而改变天线方向图最大值的指向,以达到波束扫描的目的。MWORKS 2024a相控阵系统工具箱提供适用于无线通信系统中相控阵设计和仿真的组件,可满足MIMO-OFDM系统中收发端模块的建模与仿真的需求。

本示例在发射器上采用均匀矩形阵列,天线阵列大小具体取决于所需系统的数据流数量。部分代码示例如下。

# 发射端阵列定义
# 均匀矩形阵列
arrayTx = phased_URA(;
    Size = [8 16],
    ElementSpacing = [0.04 0.04],
    Element = phased_IsotropicAntennaElement(BackBaffled = true),
    Lattice = "Rectangular")
# 发射端导向矢量设置
SteerVecTx = phased_SteeringVector(SensorArray = arrayTx)
# 导向矢量计算
wT = step(SteerVecTx,3e9,[45;-30])
# 绘图
pattern(arrayTx,3e9,[-180:180;],0,
        CoordinateSystem = "polar",
        Type = "powerdb",
        PropagationSpeed=1500.0,
        Normalize=true,
        Weights = wT)
# Julia Code

发射端二维及三维波束特性如图6所示。

图6 发射端波束特性分析

信号传输

在MIMO-OFDM系统中的信道模型有多种选择,其中WINNER II 信道模型是一个空间定义的 MIMO 信道,因其可以指定阵列几何形状和位置信息的特点被广泛应用于移动速度非常低的典型城市微蜂窝室内场景中。然而,在富散射环境下针对散射体的建模,通常使用基于散射体单反弹路径的散射信号,其中散射体的数量由用户指定。在此示例中应用了散射MIMO信道模型,散射体的数量设置为 120,可以对随机放置在发射器和接收器之间的散射体进行建模。

在此基础上,该信道模型支持基于视距 (LOS) 和非视距 (NLOS) 传播条件下的大尺度路径损耗建模。

接收端波束导向

本示例在接收器上采用均匀线性阵列以及各向同性天线元件,部分代码示例如下所示。

# 接收端阵列定义
# 均匀线性阵列
arrayRx = phased_ULA(;
    NumElements = 16,
    ElementSpacing = 0.04,
    Element = phased_IsotropicAntennaElement(),
    )
# 接收端导向矢量设置
SteerVecRx = phased_SteeringVector(SensorArray = arrayRx)
# 导向矢量计算
wR = step(SteerVecRx,3e9,[-180;0])
# 绘图
pattern(arrayRx,3e9,[-180:180;],0,
        CoordinateSystem = "polar",
        Type = "directivity",
        Weights = wR)
# Julia Code

接收端二维及三维波束特性如图7所示。

图7 接收端波束特性分析

接收处理

接收天线阵列将传播的信号传递给接收器,从而恢复嵌入在信号中的原始信息。与发射器类似,MIMO-OFDM系统中使用的接收器包含许多组件,包括OFDM解调器、MIMO均衡器、QAM解调器和Viterbi解码器等。

对于所建模的MIMO系统,接收信号的星座图给系统提供了定性的评估。同时在解码之后,可通过实际接收比特与传输比特计算实际的误码率。部分代码示例如下图所示。

# 星座图定义
constDiag = comm_ConstellationDiagram(;
    SamplesPerSymbol=1,
    ShowReferenceConstellation=true,
    ReferenceConstellation=qammod(collect(0:(64 - 1)), 64; UnitAveragePower=true),
    ColorFading=false, 
    Title="Equalized Symbols",
    EnableMeasurements=true,
    MeasurementInterval=length(rxSymbs),
)
# 星座图绘制
step(constDiag, rxSymbs)
# Julia Code

接收信号的星座图如图8所示。

图8 MIMO-OFDM接收信号星座图

四、总结与展望

在本文所示系统中,通过改变数据流的数量、收发端天线元件数量、阵列位置和几何形状、信道模型及其配置,研究参数对单独或组合系统的影响。例如,仅改变发射天线的数量,查看对控制波束主瓣以及由此产生的系统性能的影响。此外,本示例简化了前端同步、信道反馈模型,同时进行了用户速度和路径损耗模型的假设,进而模拟在富散射环境下的信道模型。

本示例重点介绍了基础通信工具箱与相控阵系统工具箱在MIMO-OFDM无线波束形成系统中的应用。不仅考虑了单个用户系统基站和移动站阵列的空间几何形状和位置,而且使用了信道探测、信道传输、数据后处理等模块,给出了当前的无线系统中预编码,天线阵列的转向建模等问题的详细解决方案,充分验证了MWORKS电子信息类专业工具箱在目前5G通信系统设计中的可靠性与前沿性。

同元软控在科学计算环境MWORKS.Syslab基础上研发了电子通信类专业阵工具箱,现已发布信号处理、数字信号处理、基础通信等六大专业函数库,滤波器设计器、窗函数设计器等信号处理类APP,已应用于相关行业业务的设计与验证中,同时也成为了同元软控电子信息领域解决方案的重要支撑工具。同元软控将持续以MWORKS为底座,打造面向装备信息物理融合的新一代科学计算与建模仿真平台。后续,电子通信类工具箱将继续迭代更新,敬请期待!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/612725.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《架构风清扬-Java面试系列第29讲》聊聊DelayQueue的使用场景

DelayQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题,老规矩,我们将从使用场景和代码示例来进行讲解 来,思考片刻,给出你的答案 1,使用场景 实现:延迟队列,其中元素只有在其预定…

使用Flask-Admin创建强大的后台管理系统

文章目录 安装Flask-Admin创建Flask应用添加Flask-Admin添加模型扩展延伸自定义视图权限管理文件上传 结语 在Web应用开发中,后台管理系统是至关重要的组成部分,它能够让管理员轻松管理应用的各种数据和配置。Flask-Admin是一个功能强大的Flask扩展&…

常见排序算法——希尔排序

基本原理 希尔排序在插入排序的基础之上,将待排序序列分成组,分成 gap 个组,组的数量通过 length / 2 获得,比如6个元素的序列,那么就是 3 个组,每个组两个元素,然后将每个组的元素进行插入排…

【Web后端】servlet基本概念

1.ServletAPI架构 HttpServlet继承GenericServletGenericServlet实现了Servlet接口,ServletConfig接口,Serializable接口自定义Servlet继承HttpServlet 2.Servlet生命周期 第一步:容器加载Servlet第二步:调用Servlet的无参构造方法&#xf…

【程序设计和c语言-谭浩强配套】(适合专升本、考研)

一晃大半年没更新了,这一年一直在备考,想着这几天把前段时间学的c语言给大家分享一下,在此做了一个专栏,有需要的小伙伴可私信获取o。 简介:本专栏所有内容皆适合专升本、考研的复习资料,本人手上也有日常…

关于架构设计:什么是完美?

这篇不谈技术。 为什么写这篇文章?因为刚毕业时看一本关于软件架构设计的书,记得有一句关于完美的话,但后来无论如何都想不起来了。只记得和飞机有关。而今年在看“The Pragmatic Programmer: your journey to mastery”第2版(20…

##13 如何在Python中优雅地使用异常处理

文章目录 引言1. 异常处理基础2. 处理多种异常3. 捕捉所有异常4. finally 语句5. 自定义异常结语参考链接 引言 在编程中,错误是在所难免的。Python提供了异常处理机制,允许程序在遇到错误时优雅地恢复。本文将介绍Python中异常处理的基本概念&#xff…

Mac YOLO V9推理测试(基于ultralytics)

环境: Mac M1 (MacOS Sonoma 14.3.1) Python 3.11PyTorch 2.1.2 一、准备工作 使用YOLO一般都会接触ultralytics这个框架,今天来试试用该框架进行YOLO V9模型的推理。 YOLOv9目前提供了四种模型下载:yolov9-c.pt、yolov9-e.pt、gelan-c.p…

异常处理/__LINE__ 与 __FILE__ 宏在调试和异常处理中的高级使用

文章目录 概述痛点分析_LINE_ 代码所在行号_LINE_ 直接转为字符串_LINE_ 作为整型数据使用_LINE_标记宏函数的调用位置 _FILE_ 代码所在文件名简单实验不期望 _FILE_ 宏代表全路径 assert 使用了 _FILE_ 和 _LINE_借助TLS技术小结 概述 _LINE_和_FILE_是C/C中的预定义宏&#…

【Sql-02】 求每个省份最新登陆的三条数据

SQL 输出要求数据准备sql查询结果 输出要求 要求输出,userid_1,logtime_1,userid_2,logtime_2,userid_3,logtime_3 数据准备 CREATE TABLE sqltest (province varchar(32) NOT NULL,userid varchar(250) DEFAULT NULL,logtime datetime ) ENGINEInnoDB DEFAULT C…

Spring框架中常见注解

Spring: SpringMVC: RequestMapping用在类上表示所有该类下方法的父路径 RequestParam 做映射,前端请求的参数映射到控制器Controller的处理方法上的参数上。 【当参数需要设置默认值(前端没有发送这个参数)、参数名…

禁止打开浏览器时弹出 internet explorer 11 停用的通知

计算机管理(我的电脑图标上右键) - 管理模板 - windows 组件 - internet explorer 启用隐藏 internet explorer 11 停用通知,如下图所示

每日算法之二叉树的最近公共祖先

题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是…

【Python特征工程系列】排列重要性法分析特征重要性-随机森林模型为例(案例+源码)

这是我的第277篇原创文章。 一、引言 排列重要性(Permutation Importance)是一种基于模型的方法,用于评估每个特征对模型性能的影响程度。该方法通过随机打乱单个特征的值并观察模型性能的变化,从而确定特征的重要性。如果某个特征…

模型预测控制与模糊控制 —— 潜力控制方案探讨

一、需要多少先验信息? 此图片来源于网络,所有的控制与估计过程都涉及了先验信息与后验信息之间的博弈 评估一个控制方案对先验信息的需求量大小和先验信息质量对其影响的方法涉及以下几个方面: 1、控制方案的理论分析: 详细分析…

【UE Niagara】在UI上生成粒子

效果 步骤 1. 在虚幻商城中将“Niagara UI Render”插件安装到引擎 2. 打开虚幻编辑器,勾选插件“Niagara UI Renderer”,然后重启编辑器 3. 先创建一个控件蓝图,该控件蓝图只包含一个按钮 这里设置尺寸框尺寸为200*50 4. 显示该控件 5. 新…

MFC中关于CMutex类的学习

MFC中关于CMutex类的学习 最近在项目中要实现两个线程之间的同步,MFC中提供了4个类,分别是CMutex(互斥量)、CCriticalSection(临界区)、CEvent(事件对象)、CSemaphore(信号量)。有关这4个类的说明,大家可以参考微软官方文档: CM…

4. 从感知机到神经网络

目录 1. 从感知机到神经网络 2. 最简单的神经网络 3. 激活函数的引入 1. 从感知机到神经网络 之前章节我们了解了感知机,感知机可以处理与门、非与门、或门、异或门等逻辑运算;不过在感知机中设定权重的工作是由人工来做的,而设定合适的&a…

AI算法工程师课程学习-数学基础-高数1-微积分

机器学习数学基础学习路线:1.高中数学-->大学2.微积分-->3.线性代数-->4.概率论-->5.优化理论。 为尽快进入到AI算法课程的学习,现在高数的学习要求: 1.看得懂,知道是什么,能听得懂,能理解讲…

Java框架精品项目【用于个人学习】

源码获取:私聊回复【项目关键字】获取 更多选题参考: Java练手项目 & 个人学习等选题参考 推荐菜鸟教程Java学习、Javatpoint学习 前言 大家好,我是二哈喇子,此博文整理了各种项目需求 此文下的项目用于博主自己学习&#x…