exponenta event banner

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

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

Введение

Трассировка лучей [1] стала популярной методикой радиочастотного (RF) анализа, планирования площадки, моделирования каналов и анализа уровня линии связи благодаря тенденции работы современных систем связи на радиочастотных частотах в диапазоне десятков ГГц. В отличие от стохастических моделей, метод трассировки лучей является специфичным 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;

Передающая антенна представляет собой 4-элементную однородную линейную решетку (ULA), которая имеет удвоенную длину волны между элементами. Приемная антенна представляет собой равномерную прямоугольную решетку (URA) 4 4, которая имеет одну длину волны между элементами. Обе антенны определяются 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]);

Используйте функцию helperVisualityScription для визуализации 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

Используйте функцию helperVisualityRays, чтобы добавить вычисленные лучи в ранее построенную сцену 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 и выведите из него значение SNR для AWGN.

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

Моделирование связи

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

  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');

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

  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 используйте функцию helperIndedRayTrelingLoop, чтобы повторить вышеупомянутую обработку одного кадра для до 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

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

Приложение

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

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

[1] З. Юн и М. Ф. Искандер, «Трассировка лучей для моделирования распространения радио: принципы и применения», IEEE Access, том 3, стр. 1089-1100, июль 2015.

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

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