Внутренняя Линия связи MIMO-OFDM с помощью Трассировки лучей

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

Введение

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

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

Трассировка лучей выполняется во внутренней среде. Те же методы трассировки лучей могут быть применены, чтобы создать модели канала для внутренних или наружных сред. Для анализа трассировки лучей в наружной городской установке обратитесь к Городской Ссылке и Анализу покрытия с помощью примера Трассировки лучей.

3-D внутренний сценарий

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

mapFileName = "conferenceroom.stl";

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

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

Антенна передачи является универсальной линейной матрицей (ULA) с 4 элементами, которая имеет дважды длины волны между элементами. Получить антенна 4x4 универсальный прямоугольный массив (URA), который имеет одну длину волны между элементами. Обе антенны заданы 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 объекты, с помощью стрельбы и возврата лучей (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 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 против области значений значений EbNo, используйте функцию helperIndoorRayTracingSimulationLoop, чтобы повторить вышеупомянутую одну обработку системы координат максимум для 300 систем координат в каждом значении EbNo.

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

  • Передайте и/или получите beamforming

Приложение

Этот пример использует следующие функции помощника:

Выбранная библиография

[1] Цз. Юнь и М. Ф. Искандер, “Трассировка лучей для радио-моделирования распространения: Принципы и приложения”, IEEE доступ, издание 3, стр 1089-1100, июль 2015.

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

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