使用SDR-B1进行LTE发射指标测试

1. 概述

本文给出使用正旗通信软件无线电平台SDR-B1加载LTE波形进行发射测试的方法,以便评估SDR-B1及外置射频功放的性能。SDR-B1基于Xilinx XC7Z045及ADI AD9361实现,文中采用的射频功放是正旗通信推出的DPA-1。

2. 测试仪表

  • NI PCIe-5644R
  • GWINSTEK GPD-3303S

3. 测试软件

  • Matlab R2024a(AMD SoC Support from SoC Blockset)
  • NI RFmx

4. 测试设置

按照如下的方式进行连接,PC1与SDR-B1通过网线相连接,PC1的IP地址设置为192.168.3.30,用于运行Matlab程序,向SDR-B1发送波形;SDR-B1的IP地址设置为192.168.3.2,并烧写我司提供的专用测试固件;PC2运行NI RFmx,并与NI PCIe-5644R通过雷电线连接。

5. 测试过程

(1) 妥善连接线缆,为SDR-B1加电,当SDR-B1启动完成后,在串口中输入用户名root及密码root,然后,输入以下命令

ifconfig eth0 192.168.3.2

如下图

(2) 使用Matlab打开lte_tx_gen.m,并在第44行前设置断点,如下图

(3) 点击Matlab的运行按钮,在弹出的AD9361 Filter Wizard界面中Device Settings处选择AD9361LTE10(Rx & Tx),如下图

(4) 然后点击Design Filter,界面参数会更新为当前的滤波器参数并在Filter Specifications处显示该滤波器的幅频响应,如下图

随后点击左侧Controls下方的Apply filter design,在弹出的对话框上点击确定,然后关掉AD9361 Filter Wizard即可。

(5) 将RFmx中心频率设置为1470MHz,即可看到当前的射频指标,如下图

可以看到,RFmx读到的输出功率是-16.5dBm,由于仪器外接了约35dB的衰减器,所以当前射频功放的实际输出功率约为18.5dBm,ACP优于-52dB,平均EVM为0.77%(约为-42dB),性能优异,可作为信号源使用。

附件

lte_tx_gen.m内容如下:


% Generated by MATLAB(R) 24.1 (R2024a) and LTE Toolbox 24.1 (R2024a).
% Generated on: 11-Mar-2025 09:35:37

%% Generating LTE Test Models waveform
% LTE Test Models configuration
cfg = struct('TMN', '1.1', ...
'BW', '10MHz', ...
'NCellID', 1, ...
'DuplexMode', 'FDD', ...
'TotSubframes', 10, ...
'Windowing', 0);

cfg = lteTestModel(cfg);

% Generation
[waveform, grid, cfg] = lteTestModelTool(cfg);

Fs = cfg.SamplingRate; % Specify the sample rate of the waveform in Hz

%% Visualize
% Spectrum Analyzer
spectrum = spectrumAnalyzer('SampleRate', Fs);
spectrum(waveform);
release(spectrum);

%% Transmit waveform over the air
zynqTx = sdrtx('AD936x', IPAddress='192.168.3.2');
designCustomFilter(zynqTx);
zynqTx.CenterFrequency = 1470000000;
zynqTx.Gain = -20;
zynqTx.BasebandSampleRate = Fs;
zynqTx.ChannelMapping = 1;

db_backoff = 3;

waveform_scaled = waveform * (10^(-db_backoff/20))/max([max(real(waveform)) abs(min(real(waveform))) max(imag(waveform)) abs(min(imag(waveform)))]);

% Transmit (for 10 sec):
transmitRepeat(zynqTx, waveform_scaled);

% Stop transmission:
%pause(10);
release(zynqTx);
%fprintf('Transmission stopped.\n')