comm.OFDMModulator

Модулируйте с использованием OFDM метода

Описание

OFDMModulator объект модулирует использование ортогонального метода модуляции деления частоты. Выход представляет собой репрезентацию модулированного сигнала.

Модулировать сигнал OFDM:

  1. Задайте и настройте объект модулятора OFDM. Смотрите Конструкцию.

  2. Вызовите step модулировать сигнал согласно свойствам comm.OFDMModulator. Поведение step характерно для каждого объекта в тулбоксе.

Примечание

Запуск в R2016b, вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполните эквивалентные операции.

Конструкция

H = comm.OFDMModulator создает Системный объект модулятора, H, это модулирует входной сигнал с помощью метода ортогональной модуляции деления частоты (OFDM).

H = comm.OFDMModulator(Name,Value) создает объект модулятора OFDM, H, с каждым заданным набором свойств к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

H = comm.OFDMModulator(hDemod) создает объект модулятора OFDM, H, чьи свойства определяются соответствующим объектом демодулятора OFDM, hDemod.

Свойства

FFTLength

Длина БПФ, БПФ N, эквивалентна количеству поднесущих, используемых в процессе модуляции. FFTLength должен быть ≥ 8.

Задайте количество поднесущих. Значением по умолчанию является 64.

NumGuardBandCarriers

Количество поднесущих защитной полосы выделяется левым и правым защитным полосам.

Задайте количество левых и правых поднесущих как неотрицательные целые числа от 0 до (floor(FFTLength / 2) − 1), где вы задаете левых, N leftG, и право, N rightG, защитные полосы независимо в 2 1 вектор-столбец. Значениями по умолчанию является [6; 5].

InsertDCNull

Это - logical переменная, которая управляет, вставляется ли пустой указатель DC. Значением по умолчанию является false.

Поднесущая DC является центром диапазона частот и имеет значение индекса:

PilotInputPort

Это - logical свойство, которое управляет, можно ли задать экспериментальные индексы поставщика услуг. Если true, можно присвоить отдельные поднесущие для экспериментальной передачи; в противном случае экспериментальная информация будет принята, чтобы быть встроенной во входные данные. Значением по умолчанию является false.

PilotCarrierIndices

Если comm.OFDMModulator.PilotInputPort свойство установлено в true, можно задать индексы экспериментальных поднесущих. Можно присвоить индексы тем же или различным поднесущим для каждого символа. Точно так же экспериментальные индексы поставщика услуг могут отличаться через несколько антенн передачи. В зависимости от желаемого уровня управления для присвоений индекса варьируются размерности свойства. Допустимые экспериментальные индексы падают в области значений

[NleftG+1,NFft/2][NFft/2+2, NFftNrightG],

где значение индекса не может превысить количество поднесущих. Когда экспериментальные индексы являются тем же самым для каждого символа и передают антенну, свойство имеет размерности N pilot-1, где Npilot является количеством экспериментальных поднесущих. Когда экспериментальные индексы варьируются через символы, свойство имеет размерности N pilot-by-Nsym, где N sym является количеством символов. Если существует только один символ, но несколько антенн передачи, свойство имеет размерности пилота N 1 NT, где N T является количеством антенн передачи. Если индексы варьируются через количество символов и передают антенны, свойство имеет размерности пилота N Nsym NT. Желательно, чтобы, когда количество антенн передачи больше один, индексы на символ были взаимно отличны через антенны, чтобы избежать интерференции. Значением по умолчанию является [12; 26; 40; 54].

CyclicPrefixLength

CyclicPrefixLength свойство задает длину циклического префикса OFDM. Если вы задаете скаляр, длина префикса является тем же самым для всех символов через все антенны. Если вы задаете вектор-строку из длины N sym, длина префикса может варьироваться через символы, но остается та же длина через все антенны. Значением по умолчанию является 16.

Windowing

Это - logical свойство, состояние которого включает или отключает работу с окнами. Работа с окнами является процессом, в котором символ OFDM умножается на повышенное окно косинуса перед передачей, чтобы более быстро уменьшить мощность внеполосных поднесущих. Это служит, чтобы уменьшать спектральный перерост. Значением по умолчанию является false.

WindowLength

Это свойство задает длину повышенного окна косинуса когда comm.OFDMModulator.Windowing true. Используйте положительные целые числа значение имеющее, не больше, чем минимальная циклическая длина префикса. Например, в настройке, имеющей четыре символа с циклическими длинами префикса [12 16 14 18], длина окна не может превысить 12. Значением по умолчанию является 1.

NumSymbols

Это свойство задает количество символов, N sym. NumSymbols должно быть положительное целое число. Значением по умолчанию является 1.

NumTransmitAntennnas

Это свойство решает, что количество антенн, N T, раньше передавало OFDM модулируемый сигнал. Свойство является положительным целым числом. Значением по умолчанию является 1.

Методы

информацияПредоставьте информацию об определении размеров для метода OFDM
сбросСбросьте состояния OFDMModulator Системный объект
showResourceMappingПокажите отображение поднесущей символов OFDM, созданных Системным объектом модулятора OFDM.
шагМодулируйте с использованием OFDM метода
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

развернуть все

Система модулятора OFDM object™ может быть создана с помощью свойств по умолчанию. После того, как созданный, эти свойства могут быть изменены.

Создайте модулятор OFDM.

ofdmMod = comm.OFDMModulator;

Отобразите свойства модулятора.

disp(ofdmMod)
  comm.OFDMModulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
            InsertDCNull: false
          PilotInputPort: false
      CyclicPrefixLength: 16
               Windowing: false
              NumSymbols: 1
     NumTransmitAntennas: 1

Измените количество поднесущих и символов.

ofdmMod.FFTLength = 128;
ofdmMod.NumSymbols = 2;

Проверьте что количество поднесущих и количество измененных символов.

disp(ofdmMod)
  comm.OFDMModulator with properties:

               FFTLength: 128
    NumGuardBandCarriers: [2x1 double]
            InsertDCNull: false
          PilotInputPort: false
      CyclicPrefixLength: 16
               Windowing: false
              NumSymbols: 2
     NumTransmitAntennas: 1

showResourceMapping метод показывает отображение данных, пилота и пустых поднесущих в пространстве частоты времени. Примените showResourceMapping метод.

showResourceMapping(ofdmMod)

Система модулятора OFDM object™ может быть создана из существующего Системного объекта демодулятора OFDM.

Создайте демодулятор OFDM, ofdmDemod и задайте экспериментальные индексы для отдельного символа и двух антенн передачи.

Примечание: можно установить PilotCarrierIndices свойство в объекте демодулятора, который затем изменяет количество антенн передачи в объекте модулятора. Количество получает антенны в демодуляторе, является некоррелированым с количеством антенн передачи.

ofdmDemod = comm.OFDMDemodulator;
ofdmDemod.PilotOutputPort = true;
ofdmDemod.PilotCarrierIndices = cat(3,[12; 26; 40; 54],...
    [13; 27; 41; 55]);

Используйте демодулятор, ofdmDemod, создать модулятор OFDM.

ofdmMod = comm.OFDMModulator(ofdmDemod);

Отобразите свойства модулятора и проверьте, что они совпадают с теми из демодулятора.

disp(ofdmMod)
  comm.OFDMModulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
            InsertDCNull: false
          PilotInputPort: true
     PilotCarrierIndices: [4x1x2 double]
      CyclicPrefixLength: 16
               Windowing: false
              NumSymbols: 1
     NumTransmitAntennas: 2
disp(ofdmDemod)
  comm.OFDMDemodulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
         RemoveDCCarrier: false
         PilotOutputPort: true
     PilotCarrierIndices: [4x1x2 double]
      CyclicPrefixLength: 16
              NumSymbols: 1
      NumReceiveAntennas: 1

showResourceMapping метод отображает отображение ресурса частоты времени для каждой антенны передачи.

Создайте модулятор OFDM.

mod = comm.OFDMModulator;

Примените showResourceMapping метод.

showResourceMapping(mod)

Вставьте пустой указатель DC.

mod.InsertDCNull = true;

Покажите ресурс, сопоставляющий после добавления пустого указателя DC.

showResourceMapping(mod)

Модулятор OFDM позволяет вам задать индексы поднесущей для экспериментальных сигналов. Индексы могут быть заданы для каждого символа и антенны передачи. Когда существует больше чем одна антенна передачи, гарантируйте, что экспериментальные индексы для каждого символа отличаются между антеннами.

Создайте модулятор OFDM, который имеет два символа, и вставьте пустой указатель DC.

mod = comm.OFDMModulator('FFTLength',128,'NumSymbols',2,...
    'InsertDCNull',true);

Включите экспериментальный входной порт, таким образом, можно задать экспериментальные индексы.

mod.PilotInputPort = true;

Задайте те же экспериментальные индексы для обоих символов.

mod.PilotCarrierIndices = [12; 56; 89; 100];

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

showResourceMapping(mod)

Конкатенация второго столбца экспериментальных индексов к PilotCarrierIndices свойство задать различные индексы для второго символа.

mod.PilotCarrierIndices = cat(2, mod.PilotCarrierIndices, ...
    [17; 61; 94; 105]);

Проверьте, что экспериментальные индексы поднесущей отличаются между символами.

showResourceMapping(mod)

Увеличьте число антенн передачи к два.

mod.NumTransmitAntennas = 2;

Задайте экспериментальные индексы для каждой из двух антенн передачи. Чтобы обеспечить индексы для нескольких антенн при минимизации интерференции среди антенн, заполните PilotCarrierIndices свойство как трехмерный массив, таким образом, что индексы для каждого символа отличаются среди антенн.

mod.PilotCarrierIndices = cat(3,[20; 50; 70; 110], ...
    [15; 60; 75; 105]);

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

showResourceMapping(mod)

Задайте длину циклического префикса для каждого символа OFDM.

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

mod = comm.OFDMModulator('NumGuardBandCarriers',[4;3],...
    'NumSymbols',5,...
    'CyclicPrefixLength',[12 10 14 11 13]);

Отобразите свойства модулятора и проверьте, что циклическая длина префикса изменяется через символы.

disp(mod)
  comm.OFDMModulator with properties:

               FFTLength: 64
    NumGuardBandCarriers: [2x1 double]
            InsertDCNull: false
          PilotInputPort: false
      CyclicPrefixLength: [12 10 14 11 13]
               Windowing: false
              NumSymbols: 5
     NumTransmitAntennas: 1

Определите размерности данных о модуляторе OFDM при помощи info метод.

Создайте Систему модулятора OFDM object™ с заданными пользователями экспериментальными индексами, вставьте пустой указатель DC и задайте две антенны передачи.

hMod = comm.OFDMModulator('NumGuardBandCarriers',[4;3], ...
    'PilotInputPort',true, ...
    'PilotCarrierIndices',cat(3,[12; 26; 40; 54], ...
    [11; 25; 39; 53]), ...
    'InsertDCNull',true, ...
    'NumTransmitAntennas',2);

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

info(hMod)
ans = struct with fields:
     DataInputSize: [48 1 2]
    PilotInputSize: [4 1 2]
        OutputSize: [80 2]

Сгенерируйте модулируемые символы OFDM для использования в симуляциях уровня ссылки.

Создайте модулятор OFDM со вставленным пустым указателем DC, семью поднесущими защитной полосы и двумя символами, имеющими различные экспериментальные индексы для каждого символа.

mod = comm.OFDMModulator('NumGuardBandCarriers',[4;3],...
'PilotInputPort',true, ...
'PilotCarrierIndices',[12 11; 26 27; 40 39; 54 55], ...
'NumSymbols',2, ...
'InsertDCNull',true);

Определите входные данные, пилота и размерности выходных данных.

modDim = info(mod);

Сгенерируйте случайные символы данных для модулятора OFDM. Переменная структуры, modDim, определяет количество символов данных.

dataIn = complex(randn(modDim.DataInputSize),randn(modDim.DataInputSize));

Создайте экспериментальный сигнал, который имеет правильные размерности.

pilotIn = complex(rand(modDim.PilotInputSize),rand(modDim.PilotInputSize));

Примените модуляцию OFDM к данным и экспериментальным сигналам.

modData = step(mod,dataIn,pilotIn);

Используйте объект модулятора OFDM создать соответствующий демодулятор OFDM.

demod = comm.OFDMDemodulator(mod);

Демодулируйте сигнал OFDM и выведите данные и экспериментальные сигналы.

[dataOut, pilotOut] = step(demod,modData);

Проверьте, что в рамках жесткого допуска входные данные и экспериментальные символы совпадают с выходными данными и экспериментальными символами.

isSame = (max(abs([dataIn(:) - dataOut(:); ...
    pilotIn(:) - pilotOut(:)])) < 1e-10)
isSame = logical
   1

Алгоритмы

Ортогональная модуляция деления частоты (OFDM) делит поток данных передачи высокого показателя на потоки более низкого уровня N, каждый из которых имеет длительность символа, больше, чем распространение задержки канала. Это служит, чтобы смягчить интерференцию межсимвола (ISI). Отдельные подпотоки отправляются по подканалам параллели N, которые являются ортогональными друг другу. С помощью обратного быстрого преобразования Фурье (IFFT) OFDM может быть передан с помощью одного радио. А именно, Системный объект Модулятора OFDM модулирует входной сигнал с помощью ортогональной модуляции деления частоты. Выход представляет собой репрезентацию модулированного сигнала:

v(t)=k=0N1Xkej2πkΔft, 0tT,

где {X k} является символами данных, N является количеством поднесущих, и T является временем символа OFDM. Интервал поднесущей Δf = 1/T делает их ортогональными за каждый период символа. Это выражается как:

1T0T(ej2πmΔft)*(ej2πnΔft)dt=1T0Tej2π(mn)Δftdt=0 for mn.

Символы данных, X k, являются обычно комплексными и могут быть от любого алфавита модуляции, например, QPSK, 16-QAM, или 64-QAM.

Рисунок показывает модулятор OFDM. Это состоит из банка модуляторов комплекса N, где каждый соответствует одной поднесущей OFDM.

Защитные полосы и интервалы

Существует три типа поднесущих OFDM: данные, пилот и пустой указатель. Поднесущие данных используются в передаче данных, в то время как экспериментальные поднесущие используются в оценке канала. На пустых поднесущих нет никакой передачи, которые обеспечивают пустой указатель DC и обеспечивают буферы между блоками ресурса OFDM. Эти буферы упоминаются как защитные полосы, цель которых состоит в том, чтобы предотвратить интерференцию межсимвола. Выделение пустых указателей и защитных полос варьируется в зависимости от применимого стандарта, например, 802.11n отличается от LTE. Следовательно, объект модулятора OFDM позволяет пользователю присваивать индексы поднесущей.

Аналогичный концепции защитных полос, поддержка объектов модулятора OFDM охраняет интервалы, которые используются, чтобы обеспечить временное разделение между символами OFDM так, чтобы сигнал не терял ортогональность из-за дисперсионных временем каналов. Пока защитный интервал более длинен, чем распространение задержки, каждый символ не вмешивается в другие символы. Интервалы охраны создаются при помощи циклических префиксов, в которые последняя часть символа OFDM копируется и вставляется как первая часть символа OFDM. Преимущество циклической префиксной вставки обеспечено, пока промежуток дисперсии времени не превышает длительность циклического префикса. Объект модулятора OFDM включает установку циклической длины префикса. Недостаток в использовании циклического префикса является штрафом от увеличенных издержек.

Повышенная работа с окнами косинуса

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

Чтобы создать циклический суффикс, первые выборки WIN N данного символа добавлены в конец того символа. Однако для того, чтобы выполнить стандарт 802.11g, например, длина символа не может быть произвольно удлинена. Вместо этого циклический суффикс должен наложиться вовремя и эффективно суммирован с циклическим префиксом следующего символа. Этот перекрытый сегмент - то, где работа с окнами применяется. Два окна применяются, один из которых является математической инверсией другого. Первое повышенное окно косинуса применяется к циклическому суффиксу символа k и уменьшается с 1 до 0 по его длительности. Второе повышенное окно косинуса применяется к циклическому префиксу символа k +1 и увеличивается с 0 до 1 по его длительности. Это обеспечивает плавный переход от одного символа до следующего.

Повышенное окно косинуса, w(t), во временном интервале могут быть выражены как:

w(t)={1,  0|t|<TTW212{1+потому что[πTW(|t|TTW2)]}, TTW2|t|T+TW20, в противном случае

,

где

  • T представляет длительность символа OFDM включая защитный интервал.

  • T W представляет длительность окна.

Настройте длину циклического суффикса через свойство установки длины окна с суффиксным набором длин между 1 и минимальная циклическая длина префикса. В то время как работа с окнами улучшает спектральный перерост, она делает так за счет многопутевой исчезающей неприкосновенности. Это происходит, потому что сокращение в защитной полосе уменьшается, потому что демонстрационные значения защитной полосы поставились под угрозу сглаживанием.

Следующие фигуры отображают приложение повышенной работы с окнами косинуса.

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

[1] Дэхлмен, E., С. Парквол и Дж. Сколд. 4G LTE/LTE-Advanced для Мобильной Широкополосной связи. Лондон: Elsevier Ltd., 2011.

[2] Эндрюс, J. G. А. Гош и Р. Мухэмед. Основные принципы WiMAX. Верхний Сэддл-Ривер, NJ: Prentice Hall, 2007.

[3] Agilent Technologies, Inc., “OFDM Повышенная Работа с окнами Косинуса”, http://wireless.agilent.com/rfcomms/n4010a/n4010aWLAN/onlineguide/ofdm_raised_cosine_windowing.htm.

[4] Монтре, L., Р. Продэн и Т. Колз. “Символ TX OFDM, формирующий 802,3 миллиарда”, http://www.ieee802.org/3/bn/public/jan13/montreuil_01a_0113.pdf. Broadcom, 2013.

[5] “Стандарт IEEE 802.16TM-2009”, Нью-Йорк: IEEE, 2009.

Расширенные возможности

Смотрите также

Функции

Объекты

Блоки

Введенный в R2014a