白皮书

MATLAB 与 5G NR 波形生成和空口测试

简介

开发 5G NR 无线系统需要大量的仿真和测试。能够在构建系统之前对系统行为进行仿真可以带来显著的成本效益,并大大减少将新系统发布到生产环境所需的总时间。尽管仿真有诸多好处,但最终系统仍需要使用原型发射机和接收机在现实条件下进行测试。空口测试 (OTA) 在系统开发的这一阶段发挥着重要作用。无论您是对系统进行仿真还是空口测试,MATLAB® 和 Simulink® 都可以帮助您将无线系统从早期设计过渡到生产。

节

挑战

在开发 5G 无线系统时,系统组件的复杂性给设计和测试带来了挑战。工程师需要解决以下问题:

  • 符合标准 — 您需要设计完全符合标准规范的发射机和信道模型。这意味着开发的算法需表示 5G 规范文档中描述的数学模型。
  • 算法测试需达到必要的参数覆盖率 — 之后,您必须生成大量符合 5G 标准的测试信号,以确保涵盖所有可能的工作模式。您还需要添加各种射频损伤,并使用多种接收机模型来恢复信号。所有这些都增加了测试系统端到端链路级性能的复杂性。在此阶段使用误码率 (BER)、误块率 (BLER)、误差矢量幅度 (EVM) 和吞吐量等指标来验证系统性能是否符合设计规范。
  • 被测设备验证 — 在硬件中实现所有算法后,您需要通过 OTA 发射和/或接收来使用被测硬件测试系统的性能。
  • 集成测试和参数优化 — 最后,您需要确保在各种失真条件下都能实现符合标准预期的性能。还需要执行测量以验证其在任何给定时间可以承受的失真程度。

图 1 显示了一些关键组件。让我们从用户数据(例如语音、视频或文本)开始。这些数据是从通信栈的较高层传输到物理层的。之后,这些信息会以比特形式流入发射机子系统,后者定义了生成基带 IQ 信号所需的信道编码和调制。例如,在 5G 兼容信号中,信道编码可能包括低密度奇偶校验 (LDPC) 或极化编码。极化编码是一种在存在噪声和干扰的情况下有助于纠正错误的编码方案。信道编码完成后,会使用 QPSK、16QAM、64QAM 或 256QAM 等调制方案调制数据。然后使用诸如波束成形之类的 MIMO 技术。利用 OFDM 调制生成基线信号并将其映射为多个天线层和元件上的输出。产生信号会通过对空方式发射出去。

5G 无线通信系统的组件。

图 1. 5 G 无线通信系统的组件。

发射的信号经过信道失真后,会由接收机获取并处理。在此阶段,我们会“反向执行”在发射机上所执行的操作,将信号恢复成对传输信息比特的最佳估计。这些操作包括同步和 OFDM 解调、信道估计和均衡、解调、解扰和信道解码。

节

工作流

在本节中,我们将介绍如何利用 MATLAB、5G Toolbox™Instrument Control Toolbox™无线波形发生器来解决 5G 系统设计和测试中的诸多难题。我们将考虑整个测试和验证工作流:

  • 使用 5G 波形发生器生成基带波形
  • 对空发射信号
  • 通过 TCP/IP 从信号分析仪中读取 IQ 数据
  • 测量接收到的 5G 波形

具体来说,我们将使用 5G 波形发生器生成 5G NR 测试模型 (NR-TM) 波形,并使用 Instrument Control Toolbox 将生成的波形下载到 Keysight™ E4438C 矢量信号发生器,以进行对空发射。然后,我们将使用 Keysight N9030A 信号分析仪捕获发射的无线信号,并在 MATLAB 中分析该信号。此图显示了一个通用工作流。

图 2.使用射频测试设备生成、捕获和分析 OTA 波形。

图 2. 使用射频测试设备生成、捕获和分析 OTA 波形。

节

使用 5G 波形发生器生成基带波形

要进行测试首先需要的是 5G 波形。5G Toolbox 配备函数、App 和参考示例,使您能够表征和生成 5G NR 上行链路和下行链路波形。波形生成可通过编程方式(使用 5G Toolbox 函数编写 MATLAB 程序)或交互方式(使用 App)完成。

无线波形发生器本质上是一个使波形生成任务变得更容易、更具交互性的用户界面。使用该 App,您无需编写任何代码即可创建各种信号,包括 5G NR、LTE、802.11 (Wi-Fi) 和蓝牙信号。为了评估射频设计对系统性能的影响,您可以在信号中添加相位偏移、频率偏移和 IQ 不平衡等损伤。创建信号后,可以在内置的频谱分析仪上可视化信号。5G NR 标准定义了用于一致性测试的预定义链路和波形配置集。其中包括用于基站 (eNodeB) 射频测试的 NR 测试模型 (NR-TM),以及用于用户设备 (UE) 输入测试的下行链路固定参考信道 (FRC)。

无线波形发生器允许您基于两个选项生成波形:预定义的 NR-TM 或 FRC 集;或自定义设计的 5G NR 波形。让我们从生成预定义的 NR 测试模型开始。

在 MATLAB 中的 App 选项卡上,单击 5G 波形发生器以启动该 App。在 Waveform Type(波形类型)部分,单击 NR Test Models(NR 测试模型)以设置所选波形的参数。在本示例中,我们选择以下参数:

  • Frequency range(频率范围)设置为 FR1 (410 MHz - 7.125 GHz)
  • Test model(测试模型)设置为 NR-FR1-TM3.1(全频段、统一 64 QAM)
  • Channel bandwidth (MHz)(频道带宽 (MHz))设置为 10
  • Subcarrier spacing (kHz)(子载波间隔 (kHz))设置为 30
  • Duplex(双工)模式设置为 FDD

在 App 工具条上,单击 Generate(生成)。App 显示 5G NR 测试信号的频谱。

通过使用一系列参数和不同类型的 5G NR 波形(例如上面示例中的波形),您可以确保涵盖设计的各种测试条件。

无线波形发生器自定义和生成 5G NR-TM 波形。

图 3. 无线波形发生器自定义和生成 5G NR-TM 波形。

5G 中的频率范围应为 FR1(7 GHz 以下)或 FR2(毫米波)。接下来,根据频率范围选择带宽并设置常规参数。然后,可以选择信号的不同分量。单击 Generate(生成)后,App 会自动提供信号的两种可视化显示。第一种可视化是信号的标准频域(频谱分析仪)视图。第二种可视化显示时间和频率资源网格。使用 Export(导出)选项卡可以将波形导出为工作区文件或 MATLAB 脚本。您为定义波形而做出的所有选择都将反映在 MATLAB 中的逐行参数化中。所生成的 MATLAB 代码可供 App 之外的程序使用,生成各种 5G 波形来对您的设计进行大规模测试。

从 MATLAB 2021a 版本开始,还可以使用无线波形发生器通过单独设置参数信道和信号来生成自定义的下行链路和上行链路波形。

要指定波形的参数,可以使用 App 中提供的不同选项卡。例如,如果要生成自定义 5G 下行链路波形,可以在 PDSCH(物理下行链路共享信道)和 SS Burst(同步信号突发)选项卡中设置所选参数集,以及在 PDFCCH(物理下行链路控制信道)和 CSI-RS(信道状态信息参考信号)选项卡中设置控制数据。可以将多个用户分配到不同的带宽部分 (BP),并为每个用户分配不同的参数。图 4 显示了使用默认参数的 5G NR 下行链路自定义波形的可视化结果。

图 4.无线波形发生器自定义和生成定制 5G 下行链路波形。

图 4. 无线波形发生器自定义和生成定制 5G 下行链路波形。

在本文的剩余部分,我们将使用用 NR-TM 生成的波形。

节

对空发射信号

要对空发送信号,可以使用 Wireless Waveform Generator 上的 Transmitter(发射机)选项卡。在这里,您可以连接来自 Keysight、Rhode & Schwarz 和其他供应商的信号发生器。App 支持通过 TCP/IP 连接并具有 IVI 或 SCPI 驱动程序的信号发生器。可以在 App 中配置载波频率和输出功率。App 会自动查找通过 TCP/IP 接口连接的信号发生器。

这很容易做到。在无线波形发生器的 Transmitter(发射机)选项卡上:

  • Driver(驱动程序)设置为 Agilent/Keysight Signal Generator SCPI
  • Center Frequency (GHz)(中心频率 (GHz))设置为 3.4
  • Output Power (dbM)(输出功率 (dbM))设置为 -15

App 会自动从生成的波形中获取基带采样率。要开始发射,我们只需要单击工具条中的 Transmit(发射)。至此,我们已经生成并发射了 5G NR 波形而没有编写任何代码。

图 5.连接射频信号发生器,并使用无线波形发生器发射波形。

图 5. 连接射频信号发生器,并使用无线波形发生器发射波形。

节

从信号分析仪读取 IQ 数据

现在我们已经通过空中传输了信号,我们需要从信号分析仪接收 IQ 数据。在我们的例子中,信号分析仪连接了一根天线来接收信号。我们将使用 MATLAB 代码执行信号采集。以下代码节全部代码中具有代表性的部分,说明了在 MATLAB 中采集和分析 IQ 数据的关键步骤。要获得完整代码,请参阅此示例

要将同相正交 (IQ) 数据读入 MATLAB 进行分析,我们首先使用 Instrument Control Toolbox 配置 Keysight N9030A 信号分析仪。我们需要根据被测信号定义仪器配置参数。

 % Set parameters for the spectrum analyzer centerFrequency = 3.4e9; sampleRate = 15.36e6; measurementTime = 20e-3; mechanicalAttenuation = 0; %dB startFrequency = 3.39e9; stopFrequency = 3.41e9; resolutionBandwidth = 220e3; videoBandwidth = 220000; 

我们还需要在连接到频谱分析仪之前执行这些步骤。这可以通过几行 MATLAB 代码来完成。

  • 找到 Keysight N9030A 信号分析仪的资源 ID
  • 使用虚拟仪器软件结构 (VISA) 接口连接到仪器
  • 调整输入缓冲区大小以保存仪器返回的数据
  • 设置超时,以允许有足够的时间进行测量和数据传输
 foundVISA = visadevlist; resourceID = foundVISA(foundVISA.Model == "N9030A",:).ResourceName; resourceID = resourceID(contains(resourceID,"N9030A")); sigAnalyzerObj = visadev(resourceID); sigAnalyzerObj.ByteOrder = "big-endian"; sigAnalyzerObj.Timeout = 20; 

接下来,我们使用适当的可编程仪器标准命令 (SCPI) 将仪器复位到已知状态。查询仪器标识以确保连接了正确的仪器。

 writeline(sigAnalyzerObj,"*RST"); instrumentInfo = writeread(sigAnalyzerObj,"*IDN?"); fprintf("Instrument identification information: %s",instrumentInfo); 

X 序列信号和频谱分析仪执行 IQ 测量以及频谱测量。在本例中,我们采集时域 IQ 数据,利用 MATLAB 对数据进行可视化,并对采集到的数据执行信号分析。要配置中心频率和触发属性等仪器设置并定义数据传输格式,您可以使用此示例中详述的 SCPI 命令。仪器设置好后,我们就可以采集波形了。

要采集 IQ 波形,我们需要先触发仪器进行测量,并等待测量操作完成。在处理数据之前,我们需从仪器接收到的交错数据中分离出 I 和 Q 分量,并在 MATLAB 中创建一个复矢量,如下面的代码示例所示。

作为分析接收到的波形的第一步,我们可以捕获并显示关于最近采集的数据的信息,以查看我们采集了多少频率点以及信号的最大值和最小值。

 % Trigger the instrument and initiate measurement writeline(sigAnalyzerObj,"*TRG"); writeline(sigAnalyzerObj,":INITiate:WAVeform"); % Wait until measure operation is complete measureComplete = writeread(sigAnalyzerObj,"*OPC?"); % Read the IQ data writeline(sigAnalyzerObj,":READ:WAV0?"); data = readbinblock(sigAnalyzerObj,"double"); % Separate the data and build the complex IQ vector inphase = data(1:2:end); quadrature = data(2:2:end); rxWaveform = inphase+1i*quadrature; 
 writeline(sigAnalyzerObj,":FETCH:WAV1?"); signalSpec = readbinblock(sigAnalyzerObj,"double"); % Display the measurement information captureSampleRate = 1/signalSpec(1); fprintf("Sample Rate (Hz) = %s",num2str(captureSampleRate)); 

采样率 (Hz) = 15360000

 fprintf("Number of points read = %s",num2str(signalSpec(4))); 

读取的点数 = 307201

 fprintf("Max value of signal (dBm) = %s",num2str(signalSpec(6))); 

信号最大值 (dBm) = -39.0019

信号最小值 (dBm) = -107.9755

 fprintf("Min value of signal (dBm) = %s",num2str(signalSpec(7))); 

接下来,我们使用下面的代码来绘制所采集波形的频谱,以确认所接收信号的带宽。图 6 显示空口传输的信号带宽看起来与我们使用无线波形发生器生成的带宽信号非常相似。

 % Ensure rxWaveform is a column vector if ~iscolumn(rxWaveform) rxWaveform = rxWaveform.'; end % Plot the power spectral density (PSD) of the acquired signal spectrumPlotRx = dsp.SpectrumAnalyzer; spectrumPlotRx.SampleRate = captureSampleRate; spectrumPlotRx.SpectrumType = "Power density"; spectrumPlotRx.PowerUnits = "dBm"; spectrumPlotRx.Window = "Hamming"; spectrumPlotRx.SpectralAverages = 10; spectrumPlotRx.YLimits = [-140 -90]; spectrumPlotRx.YLabel = "PSD"; spectrumPlotRx.ShowLegend = false; spectrumPlotRx.Title = "Received Signal Spectrum: 10 MHz 5G NR-TM Waveform"; spectrumPlotRx(rxWaveform); 
图 6.经过空口传输后接收到的信号频谱。

图 6. 经过空口传输后接收到的信号频谱。

现在,我们可以对接收到的 IQ 数据执行更多的测量了。

节

测量接收到的 5G 波形

信号通过空口传输后,使用接收机子系统对信号进行检测,然后对其进行解调和解码。在接收机可以解码信号之前,需要使用信道估计和均衡来抵抗信号通过多路径段抵达接收机导致的信号衰落的影响。使用解调参考信号 (DM-RS) 进行信道估计。信号解调后,将进一步解码以重建原始文本、视频或语音信号。

首先,使用 hNRReferenceWaveformGenerator 辅助文件的 generateWaveform 函数来提取我们使用无线波形发生器生成的同一特定 NR-TM 的波形信息。

 % Set the NR-TM parameters for the receiver nrtm = "NR-FR1-TM3.1"; % Reference channel bw = "10MHz"; % Channel bandwidth scs = "30kHz"; % Subcarrier spacing dm = "FDD"; % Duplexing mode 
 tmwavegen = hNRReferenceWaveformGenerator(nrtm,bw,scs,dm); [~,tmwaveinfo,resourcesInfo] = generateWaveform(tmwavegen); 

然后,我们使用解调参考信号 (DM-RS) 以 1 kHz 的增量寻找粗略的频率偏移,直到 100 kHz。

 frequencyCorrectionRange = -100e3:1e3:100e3; [rxWaveform, coarseOffset] = DMRSFrequencyCorrection(rxWaveform,captureSampleRate,… frequencyCorrectionRange,tmwavegen,resourcesInfo); fprintf("Coarse frequency offset = %.0f Hz", coarseOffset) 

现在,我们使用 DM-RS 偏移以 5 Hz 的增量寻找精细的频率偏移,直到 100 Hz。

 frequencyCorrectionRange = -100:5:100; [rxWaveform, fineOffset] = DMRSFrequencyCorrection(rxWaveform,captureSampleRate,frequencyCorrectionRange,tmwavegen,resourcesInfo); fprintf("Fine frequency offset = %.1f Hz", fineOffset) 

EVM 测量

我们使用 hNRPDSCHEVM 辅助函数来分析波形。该函数执行以下步骤:

  • 在一帧上同步 DM-RS 用于频分复用 (FDD),在两帧上同步用于时分复用 (TDD)
  • 解调接收到的波形
  • 估计信道
  • 均衡符号
  • 估计和补偿公共相位误差 (CPE)

使用下面的代码,我们将定义 hNRPDSCHEVM 函数的配置设置并输出结果。

 cfg = struct(); cfg.PlotEVM = true; % Plot EVM statistics cfg.DisplayEVM = true; % Print EVM statistics cfg.Label = nrtm; % Set to TM name of captured waveform cfg.SampleRate = captureSampleRate; % Use sample rate during capture [evmInfo,eqSym,refSym] = hNRPDSCHEVM(tmwavegen.Config,rxWaveform,cfg); 

然后,我们计算结果信号的 EVM。我们绘制每个 OFDM 符号、时隙和子载波的 RMS 和峰值 EVM。我们还计算了整体 EVM(RMS EVM 在整个波形上的平均值)。注意,还计算了直流子载波处的 EVM。根据您的实现,您可能需要在整体信号质量评估中丢弃该子载波。

查看资源网格的每个资源元素上的 EVM 测量值,注意每个子载波和 OFDM 符号上有合理的低失真。星座图也证实了产生的 16QAM 信号可以轻松地解调和解码。

测量结果表明,对接收到的波形的解调是成功的。频谱分析仪的直流分量对直流子载波的干扰会导致测量中的 EVM 值偏高。使用两个辅助函数(DMRSFrequencyCorrectionreferenceGrid)来辅助处理 5G 波形。完整的示例代码中包含了这些辅助函数。

节

摘要

MATLAB 使设计和测试无线系统变得容易。利用无线波形发生器和 5G Toolbox,可以生成 5G 和其他基于标准的信号,以在 MATLAB 中仿真您的 5G 通信系统,而无需编写任何代码。优化仿真后,利用 Instrument Control Toolbox 和无线波形发生器可以使用标准射频测试设备在现实条件下对无线系统进行空口 (OTA) 测试。

最后,可以在 MATLAB 中执行接收机操作,并通过计算 EVM 等质量指标来分析信号以验证您的设计。MathWorks 工具让您专注于设计迭代和优化,并帮助您加快推进设计从早期研究一直到生产阶段。