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

news2024/11/17 23:40:57

一、引言

在终端设备和数据流量爆发式增长的今天,如何提升通信系统容量、能量效率和频谱利用率成为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.coloradmin.cn/o/1662563.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

钒回收树脂五氧化二钒净化回收工艺

钒是一种重要的工业金属,广泛应用于钢铁合金、化工、航空和电池材料等领域。随着资源的日益紧张和环保要求的提高,回收利用钒成为了一个重要的研究方向。树脂吸附技术是一种常用的从废水或废料中回收钒的方法,具有操作简便、效率高、成本相对…

OpenCV中的模块:点云配准

点云配准是点云相关的经典应用之一。配准的目的是估计两个点云之间位姿关系从而完成两者对应点之间的对齐/对应,因而在英文中又叫“align”、“correspondence”。笔者曾经是基于OpenCV进行三维重建的,并且从事过基于深度学习的6DoF位置估计等工作。在这些工作中,除了重建点…

Ansible的安装与配置

Ansible的安装与配置 1. 安装ansible # ansible是epel源提供的,所以必须安装epel: [rootRocky9 ~]# yum -y install epel-release Last metadata expiration check: 0:01:53 ago on Tue 26 Dec 2023 10:05:34 PM CST. Dependencies resolved. Package …

如何在 CentOS 上安装并配置 Redis

如何在 CentOS 上安装并配置 Redis 但是太阳,他每时每刻都是夕阳也都是旭日。当他熄灭着走下山去收尽苍凉残照之际,正是他在另一面燃烧着爬上山巅散烈烈朝晖之时。 ——史铁生 环境准备 本教程将在 CentOS 7 或 CentOS 8 上进行。确保你的系统已更新到最…

Java入门基础学习笔记7——Intellij IDEA开发工具概述、安装

之前的开发工具存在一些问题: 文本编辑工具:记事本、NotePad、EditPlus、Sublime...编写代码的时候没有错误提醒、没有智能代码提示、需要自己进行编译、执行、功能不够强大。 集成开发环境(IDE:Integrated Development Environm…

Python 3 中zip()函数的用法

1 创作灵感 我们在阅读代码的时候,经常会看到zip函数,有的时候还和循环在一起用,今天举几个例子测试一下该函数的用法 2.应用举例 (1)定义了两个列表一个是num,一个是letter (2)使用zip可以把num列表和letter列表中…

k8s遇到的常见问题及解决

1. error: open /var/lib/kubelet/config.yaml: no such file or directory 解决:关键文件缺失,多发生于没有做 kubeadm init就运行了systemctl start kubelet。 要先成功运行kubeadm init 2. 执行初始化kubeadm init ------的时候报错 The HTTP call…

视频批量剪辑高效掌握,轻松驾驭视频制作,播放速度与帧数尽在掌控

在追求速度与激情的视频制作世界里,你是否曾渴望拥有一款能够轻松调整播放速度和秒数的神器?现在,这款神器已经来到了你的身边,让你在视频制作的道路上更加得心应手,效率倍增! 首先,我们要进入媒…

机器学习-L1正则/L2正则

机器学习-L1正则/L2正则 目录 1.L1正则 2.L2正则 3.结合 1.L1正则 L1正则是一种用来约束模型参数的技术,常用于机器学习和统计建模中,特别是在处理特征选择问题时非常有用。 想象一下,你在装备行囊准备去旅行,但你的行囊有一…

如何用python的Turtle绘画?

目录 一、画一个圆和正方形 二、简单的方式来画一个美女 三、Turtle是一个用于绘制图形的标准库 一、画一个圆和正方形 import turtle# 创建一个图形窗口 window turtle.Screen() window.bgcolor("white")# 创建一个海龟画笔 pen turtle.Turtle() pen.shape(&q…

Maven 插件使用

1.spring-boot-maven-plugin 我们直接使用 maven package (maven自带的package打包功能),打包Jar包的时候,不会将该项目所依赖的Jar包一起打进去,在使用java -jar命令启动项目时会报错,项目无法正常启动。…

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

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

2024-05-10 C语言使用开源的JPEG解码库libjpeg 读取JPEG文件并将其解码为RGB24格式的数据

一、可以使用开源的JPEG解码库&#xff0c;例如libjpeg库&#xff0c;来读取JPEG文件并将其解码为RGB24格式的数据。 二、在ubuntu上面进行测试。 2.1安装了libjpeg-dev包 sudo apt-get install libjpeg-dev 2.2 测试c源码 #include <stdio.h> #include <stdlib.h&…

ssrf(第二弹)

四&#xff0c;post请求 1.打开环境&#xff0c;提示说发一个HTTP POST请求&#xff0c;ssrf是用php的curl实现的.并且会跟踪302跳转。 2.用dirsearch扫一下常见的端口&#xff0c;看到有三个可以访问的页面 3.构造伪协议&#xff0c;因为要通过172.0.0.1访问&#xff0c;我们…

在centos7中运行向量数据库PostgreSQL连接不上如何排查?

1. 检查 PostgreSQL 服务状态 首先&#xff0c;您需要确认 PostgreSQL 服务是否正在运行。您可以使用以下命令来检查服务状态&#xff1a; sudo systemctl status postgresql如果服务没有运行&#xff0c;您需要启动它&#xff1a; sudo systemctl start postgresql2. 确认 …

activiti 工作流基本使用

Activiti 介绍 Activiti 是一个开源架构的工作流引擎&#xff0c;基于bpmn2.0 标准进行流程定义。其前身是JBPM&#xff0c;Activiti 通过嵌入到业务系统开发中进行使用。 官方是这样介绍 activiti的&#xff1a; Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎&…

【百家稷学】大语言模型核心算法原理与综合实践(北京信息科技大学实训)...

继续咱们百家稷学专题&#xff0c;本次是有三AI在北京信息科技大学进行的培训。百家稷学专题的目标&#xff0c;是走进100所高校和企业进行学习与分享。 分享主题 本次分享是在北京信息科技大学&#xff0c;面向全校学生报名&#xff0c;主题是《大语言模型核心算法原理与综合实…

HaDoop Hive

目录 1.VMware 的配置 2.JDK的部署 3.防火墙&#xff0c;SElinux&#xff0c;时间同步设置 4.云平台 5.阿里云 6.UCloud 7.Hadoop理论 7.1 Hadoop理论 7.2 VMware Hadoop实践 7.3集群部署常见问题解决 7.4 云服务器上 Hadoop实践 7.5 HDFS 的 shell 7.6…

Vitis HLS 学习笔记--理解串流Stream(3)

目录 1. 简介 2. 综合报告的差别 2.1 包含 do-while 2.2 不包含 do-while 2.3 报告差异分析 3. 总结 1. 简介 针对《Vitis HLS 学习笔记--理解串流Stream(2)-CSDN博客》博文的内容&#xff0c;做进一步说明。 2. 综合报告的差别 2.1 包含 do-while Performance & …

Gltf.Export不可用解决办法

报错信息 在代码里面如果我们希望在runtime的时候导出GLTF&#xff0c;我们可以使用到FastGltf的export功能&#xff0c;但是当我们在代码里面使用的时候&#xff0c;却发现报错&#xff1a; error CS0234: The type or namespace name Export does not exist in the namespac…