Внутренняя коммуникационная ссылка MIMO-OFDM с использованием трассировки лучей

Этот пример показывает, как выполнить трассировку лучей в комнатном окружении и использовать результаты для создания модели канала для симуляции уровня ссылки с помощью метода MIMO-OFDM.

Введение

Трассировка лучей [1] стала популярным методом радиочастотного (РФ) анализа, планирования участка, моделирования канала и анализа уровня ссылки из-за тренда на работу современных коммуникационных систем на частотах РФ в десятках областях значений ГГц. В отличие от стохастических моделей, метод трассировки лучей является специфическим 3-D среды и приемопередатчиков и может иметь высокую чувствительность в окружающем окружении. Без простой формулы для вычисления потерь пути на расстоянии, метод трассировки лучей основывается на числовых симуляциях и обычно менее затратен, чем измерения поля. Результаты трассировки лучей могут использоваться, чтобы создать модели многолучевых каналов для систем связи. Для примера модель канала, основанная на трассировке лучей, была указана в разделе 8 TR 38.901 [2] для 5G и в IEEE 802.11ay для WLAN [3].

Этот пример начинается с анализа трассировки лучей между одной площадкой передатчика и одной площадкой приемника в 3-D конференц-зале. Вычисленные лучи используются, чтобы создать детерминированную модель канала, которая специфична для этих двух участков. Модель канала используется в симуляции ссылки связи MIMO-OFDM. Эта схема характеризует ссылку связи.

Трассировка лучей выполняется в закрытом окружении. Те же методы трассировки лучей могут быть применены для создания моделей каналов для внутреннего или наружного окружения. Для анализа трассировки лучей в городских условиях на открытом воздухе смотрите Urban Link и анализ покрытия с помощью примера Ray Tracing.

3-D сценария в помещении

Укажите карту 3-D в формате STL для небольшого конференц-зала с одной таблицей и четырьмя стульями. Формат STL является одним из наиболее распространенных форматов карты 3-D и часто может быть преобразован из других форматов карты 3-D в различных 3D программах.

mapFileName = "conferenceroom.stl";

Задайте несущую частоту на 5,8 ГГц и вычислите длину волны

fc = 5.8e9;
lambda = physconst('lightspeed')/fc;

Передающая антенна является 4-элементным равномерным линейным массивом (ULA), которая имеет двойную длину волны между элементами. Приемная антенна является однородным прямоугольным массивом (URA) 4x4, которая имеет одну длину волны между элементами. Обе антенны заданы как arrayConfig объект.

txArray = arrayConfig("Size",[4 1],'ElementSpacing',2*lambda);
rxArray = arrayConfig("Size",[4 4],'ElementSpacing',lambda);

Используйте функцию helperViewArray, чтобы визуализировать конфигурации ULA и URA, где антенные элементы пронумерованы для входных/выходных потоков.

helperViewArray(txArray);

Figure contains an axes. The axes with title Array Geometry contains 5 objects of type scatter, text.

helperViewArray(rxArray);

Figure contains an axes. The axes with title Array Geometry contains 17 objects of type scatter, text.

Укажите узел передатчика вблизи верхнего угла комнаты, который может быть точкой доступа Wi-Fi. Укажите сайт приемника чуть выше таблицы и перед стулом, чтобы представлять ноутбук или мобильное устройство.

tx = txsite("cartesian", ...
    "Antenna",txArray, ...
    "AntennaPosition",[-1.46; -1.42; 2.1], ...
    'TransmitterFrequency',5.8e9);

rx = rxsite("cartesian", ...
    "Antenna",rxArray, ...
    "AntennaPosition",[.3; .3; .85], ...
    "AntennaAngle",[0;90]);

Используйте функцию helperVisualizeScenario, чтобы визуализировать сценарий 3-D с помощью функций MATLAB™. Сайты передатчика и приемника окрашены в красный и синий цвета соответственно.

helperVisualizeScenario(mapFileName,tx,rx);

Figure contains an axes. The axes contains 4 objects of type patch, line, scatter.

Трассировка лучей

Выполните анализ трассировки лучей между сайтами передатчика и приемника и верните comm.Ray объекты, с использованием метода съёмки и bounicng-лучей (SBR). Укажите поверхностный материал сцены как древесину и выполните поиск лучей с 2 отражениями. Метод SBR поддерживает до 10 порядков отражений.

pm = propagationModel("raytracing", ...
    "CoordinateSystem","cartesian", ...
    "Method","sbr", ...
    "AngularSeparation","low", ...
    "MaxNumReflections",2, ...
    "SurfaceMaterial","wood");

rays = raytrace(tx,rx,pm,'Map',mapFileName);

Извлеките вычисленные лучи из возврата массива ячеек.

rays = rays{1,1};

Исследуйте результаты трассировки лучей, посмотрев на количество отражений, расстояние распространения и значение потерь пути каждого луча. Найдено 25 лучей (один лучик видимости, 6 лучей с одним отражением и 18 лучей с двумя отражениями).

[rays.NumReflections]
ans = 1×25

     0     1     1     1     1     1     1     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2     2

[rays.PropagationDistance]
ans = 1×25

    2.7602    2.8118    2.8487    2.8626    3.2029    4.6513    4.6719    2.8988    2.9125    2.9481    3.2475    3.2916    3.3243    4.6821    4.7247    4.7331    4.7433    4.7936    4.9269    4.9464    5.9868    5.9868    6.7170    8.0161    8.0460

[rays.PathLoss]
ans = 1×25

   56.5350   72.1633   70.0647   72.3180   73.3102   76.4133   76.4508   81.5418   83.8254   81.5531   83.6891   83.7784   85.7801   85.8271   83.7662   86.0508   91.6822   91.7764   86.5438   86.5283   91.2897   91.2969   94.8444   96.4455   96.4796

Используйте функцию helperVisualizeRays, чтобы добавить вычисленные лучи к ранее нанесенной 3-D сцене. Каждый луч окрашен в зависимости от значения потерь пути.

helperVisualizeRays(rays);

Figure contains an axes. The axes contains 29 objects of type patch, line, scatter.

Детерминированная модель канала из трассировки лучей

Создайте детерминированную модель многолучевого канала, используя вышеуказанные результаты трассировки лучей. Задайте мгновенную скорость приемника, чтобы отразить типичную низкую мобильность устройства в закрытом окружении.

rtChan = comm.RayTracingChannel(rays, tx, rx);
rtChan.SampleRate = 300e6;
rtChan.ReceiverVirtualVelocity = [0.1; 0.1; 0]
rtChan = 
  comm.RayTracingChannel with properties:

                      SampleRate: 300000000
                 PropagationRays: [1x25 comm.Ray]
                   TransmitArray: [1x1 arrayConfig]
    TransmitArrayOrientationAxes: [3x3 double]
                    ReceiveArray: [1x1 arrayConfig]
     ReceiveArrayOrientationAxes: [3x3 double]
         ReceiverVirtualVelocity: [3x1 double]
       NormalizeImpulseResponses: true
         NormalizeChannelOutputs: true

Ue the showProfile функция объекта для визуализации профиля задержки степени (PDP), угла отхода (AoD) и угла прихода (AoA) лучей в канале. В визуализации PDP принял во внимание усиления шаблона передающих и приёмных массивов в дополнение к потерям пути для каждого луча.

showProfile(rtChan);

Figure contains 3 axes. Axes 1 with title Power Delay Profile contains an object of type stem. Axes 2 with title Angle of Departure contains 7 objects of type quiver, text. Axes 3 with title Angle of Arrival contains 7 objects of type quiver, text.

Используйте info функция объекта для получения количества передающих и приемных элементов.

rtChanInfo = info(rtChan)
rtChanInfo = struct with fields:
             CarrierFrequency: 5.8000e+09
             CoordinateSystem: 'Cartesian'
        TransmitArrayLocation: [3x1 double]
         ReceiveArrayLocation: [3x1 double]
          NumTransmitElements: 4
           NumReceiveElements: 16
           ChannelFilterDelay: 7
    ChannelFilterCoefficients: [25x21 double]
          NumSamplesProcessed: 0

numTx = rtChanInfo.NumTransmitElements;
numRx = rtChanInfo.NumReceiveElements;

Системные параметры

Сконфигурируйте ссылку связи, который использует кодирование LDPC, 64-QAM и OFDM с 256 поднесущими. Задайте 4 кодовых слова LDPC на систему координат, что приводит к 50 символам OFDM на систему координат.

% Create LDPC encoder and decoder objects
ldpcEnc = comm.LDPCEncoder;
ldpcDec = comm.LDPCDecoder;
numCodewordsPerFrame = 4;
codewordLen = size(ldpcEnc.ParityCheckMatrix, 2);

% Parameters for QAM modulation per subcarrier
bitsPerCarrier = 6;
modOrder = 2^bitsPerCarrier;
codeRate = size(ldpcEnc.ParityCheckMatrix, 1)/size(ldpcEnc.ParityCheckMatrix, 2);

% Create OFDM modulator and demodulator objects 
fftLen = 256; 
cpLen = fftLen/4; 
numGuardBandCarriers = [9; 8];
pilotCarrierIdx = [19:10:119, 139:10:239]';
numDataCarriers = fftLen - sum(numGuardBandCarriers) - length(pilotCarrierIdx) - 1;
numOFDMSymbols = numCodewordsPerFrame*codewordLen/bitsPerCarrier/numDataCarriers/numTx;
ofdmMod = comm.OFDMModulator( ...
    "FFTLength", fftLen, ....
    "NumGuardBandCarriers", numGuardBandCarriers, ...
    "InsertDCNull", true, ...
    "PilotInputPort", true, ...
    "PilotCarrierIndices", pilotCarrierIdx, ...
    "CyclicPrefixLength", cpLen, ...
    "NumSymbols", numOFDMSymbols, ...
    "NumTransmitAntennas", numTx);
ofdmDemod = comm.OFDMDemodulator(ofdmMod);
ofdmDemod.NumReceiveAntennas = numRx;

Создайте объект вычисления частоты ошибок, чтобы вычислить вероятность битовой ошибки (BER).

errRate = comm.ErrorRate;

Присвойте значение Eb/No и выведите из него значение ОСШ для AWGN.

EbNo = 30; % in dB
bitsPerSymbol = bitsPerCarrier*codeRate;
snr = 10^(EbNo/10) * bitsPerSymbol; % Linear

Симуляция ссылки

Функция helperIndoorRayTracingWaveformGen генерирует форму волны, состоящую из одной системы координат на сайте передатчика, путем выполнения следующих шагов:

  1. Закодируйте случайным образом сгенерированные биты LDPC

  2. Модулируйте закодированные биты по 64-QAM

  3. Примените OFDM модуляцию, чтобы преобразовать сигналы из частотного диапазона во временной интервал

rng(100); % Set RNG for repeatability
[txWave, srcBits] = helperIndoorRayTracingWaveformGen(numCodewordsPerFrame, ldpcEnc, modOrder, ofdmMod);

Передайте форму волны через модель канала трассировки лучей и добавьте белый шум. Для расчета задержки фильтрации канала добавьте дополнительный нулевой символ OFDM к концу формы волны.

chanIn = [txWave; zeros(fftLen + cpLen, numTx)];
[chanOut, CIR] = rtChan(chanIn);
rxWave = awgn(chanOut, snr, numTx/numRx, 'linear');

Функция helperIndoorRayTracingRxProcessing декодирует ослабленную каналом форму волны в узле приемника путем выполнения следующих шагов:

  1. Совершенная оценка канала с использованием выхода импульсной характеристики канала (CIR) и коэффициентов фильтра канала от info объекта канала способ.

  2. Демодуляция OFDM для возврата сигналов в частотный диапазон

  3. Эквализация символов на каждой поднесущей

  4. Мягкая 64-QAM демодуляция для получения LLR

  5. Декодирование LDPC

[decBits, eqSym] = helperIndoorRayTracingRxProcessing(rxWave, CIR, rtChanInfo, ldpcDec, modOrder, ofdmDemod, snr);

Вычислите BER:

ber = errRate(srcBits, double(decBits));
disp(ber(1));
    0.0140

Чтобы построить график кривой BER относительна область значений значений Eb No, используйте функцию helper Indoor Ray Tracing Simulation Loop, чтобы повторить вышеуказанную одну обработку системы координат для до 300 систем координат при каждом значении Eb No.

EbNoRange = 27:36;
helperIndoorRayTracingSimulationLoop(ldpcEnc, ldpcDec, ofdmMod, ofdmDemod, rtChan, errRate, ...
    modOrder, numCodewordsPerFrame, EbNoRange);

Figure contains an axes. The axes contains an object of type line.

Заключение и дальнейшие исследования

Этот пример показывает, как создать детерминированную модель канала с использованием результатов трассировки лучей в закрытом конференц-зале. Для модели канала были выполнены симуляции канального уровня с использованием LDPC и MIMO-OFDM методов, и были построены результаты BER.

Дальнейшие исследования включают, но не ограничиваются:

  • Различные карты 3-D и/или поверхностные материалы

  • Различные положения на площадке передатчика и/или приемника

  • Различные спецификации передающей и/или приёмной антенной решетки

  • Различные ориентации передающей и/или приёмной антенной решетки

  • Большее количество отражений для метода трассировки лучей SBR

  • Передайте и/или принимайте формирование луча

Приложение

В этом примере используются следующие вспомогательные функции:

Избранная библиография

[1] Z. Yun, and M. F. Iskander, «Ray tracing for radio propagation modeling: Principles and applications», IEEE Access, vol. 3, pp. 1089-1100, Jul. 2015.

[2] 3GPP TR 38.901. Исследование модели канала для частот от 0,5 до 100 ГГц. Проект Партнерства 3-ьей генерации; Группа технических спецификаций Радиосеть доступ.

[3] Мальцев, А., и др. Модели каналов для 802.11ay. IEEE 802.11-15/1150r9, март 2017.