exponenta event banner

коммуникация. OFDMDemodulator

Демодуляция с использованием метода OFDM

Описание

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

Для демодуляции сигнала OFDM:

  1. Определите и установите объект демодулятора OFDM. См. раздел Строительство.

  2. Звонить step демодулировать сигнал в соответствии со свойствами comm.OFDMDemodulator. Поведение step относится к каждому объекту на панели инструментов.

Примечание

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

Строительство

H = comm.OFDMDemodulator создает объект системы демодулятора, H, которая демодулирует входной сигнал с использованием способа демодуляции с ортогональным частотным разделением.

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

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

Свойства

FFTLength

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

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

NumGuardBandCarriers

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

Укажите количество левых и правых поднесущих как неотрицательные целые числа в [0,NFFT/21] где вы указываете левую, NлефтG и правую, NireG, защитные полосы независимо в векторе столбца 2 на 1. Значения по умолчанию: [6; 5].

RemoveDCCarrier

A logical переменная, которая при true, требует удаления поднесущей DC. Значение по умолчанию: false.

PilotOutputPort

A logical свойство, определяющее, следует ли разделять пилот-сигналы и делать их доступными на дополнительном выходном порту. Местоположение каждого выходного символа пилот-сигнала определяется индексами поднесущих пилот-сигнала, определенными в PilotCarrierIndices собственность. При значении false символы пилот-сигнала могут присутствовать, но встраиваться в данные. Значение по умолчанию: false.

PilotCarrierIndices

Если PilotOutputPort свойство - true, выдавать отдельные пилот-сигналы, расположенные на индексах, заданных PilotCarrierIndices собственность. Если индексы представляют собой 2-D массив, то контрольные несущие во всех передающих антеннах на символ одинаковы. Если имеется более одной передающей антенны (эта информация не известна демодулятору), пилот-сигналы от различных передающих антенн могут создавать помехи друг другу. Чтобы избежать этого, укажите индексы несущих пилот-сигнала как 3-D массив с различными индексами пилот-сигнала для каждого символа через антенны. Это позволяет избежать взаимных помех между пилот-сигналами от различных передающих антенн, поскольку каждая передающая антенна имеет различные несущие пилот-сигнала, и модулятор OFDM создает пользовательские нулевые значения в соответствующих местоположениях. Размер третьего измерения PilotCarrierIndices свойство дает число передающих антенн.

CyclicPrefixLength

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

NumSymbols

Это свойство определяет количество символов Nsym. Укажите Nsym как положительное целое число. Значение по умолчанию: 1.

NumReceiveAntennnas

Это свойство определяет количество антенн, NR, используемых для приема модулированного сигнала OFDM. Укажите NR как положительное целое число. Значение по умолчанию: 1.

Методы

информацияПредоставление информации о размерах для метода OFDM
showResourceMappingОтображение отображения поднесущих символов OFDM, созданных объектом системы демодулятора OFDM
шагДемодуляция с использованием метода OFDM
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

reset

Сброс внутренних состояний объекта System

При использовании resetэтот способ сбрасывает подоконный суффикс с последнего символа в ранее обработанном кадре.

Примеры

свернуть все

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

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

demod = comm.OFDMDemodulator
demod = 
  comm.OFDMDemodulator with properties:

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

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

demod.FFTLength = 128;
demod.NumSymbols = 2;

Убедитесь, что количество поднесущих и символов изменилось.

demod
demod = 
  comm.OFDMDemodulator with properties:

               FFTLength: 128
    NumGuardBandCarriers: [2x1 double]
         RemoveDCCarrier: false
         PilotOutputPort: false
      CyclicPrefixLength: 16
              NumSymbols: 2
      NumReceiveAntennas: 1

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

Создайте модулятор OFDM, используя параметры по умолчанию.

mod = comm.OFDMModulator('NumTransmitAntennas',4);

Создайте соответствующий OFDM-демодулятор из модулятора, mod.

demod = comm.OFDMDemodulator(mod);

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

mod
mod = 
  comm.OFDMModulator with properties:

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

demod
demod = 
  comm.OFDMDemodulator with properties:

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

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

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

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

demod = comm.OFDMDemodulator;

Применить showResourceMapping способ.

showResourceMapping(demod)

Figure OFDM Subcarrier Mapping for All Tx Antennas contains an axes. The axes with title OFDM Subcarrier Mapping for All Tx Antennas contains an object of type image.

Удалите поднесущую DC.

demod.RemoveDCCarrier = true;

Отображение сопоставления ресурсов после удаления поднесущей DC.

showResourceMapping(demod)

Figure OFDM Subcarrier Mapping for All Tx Antennas contains an axes. The axes with title OFDM Subcarrier Mapping for All Tx Antennas contains an object of type image.

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

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

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

modDim = info(mod)
modDim = struct with fields:
     DataInputSize: [52 2]
    PilotInputSize: [4 2]
        OutputSize: [160 1]

Генерируют случайные символы данных для модулятора OFDM. Определите количество символов данных с помощью структурной переменной. modDim.

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

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

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

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

modSig = step(mod,dataIn,pilotIn);

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

demod = comm.OFDMDemodulator(mod);

Демодулируют сигнал OFDM и выводят данные и пилот-сигналы.

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

Убедитесь, что входные данные и символы пилот-сигнала совпадают с выходными данными и символами пилот-сигнала.

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

Алгоритмы

Объект демодулятора системы модуляции с ортогональным частотным разделением каналов (OFDM) демодулирует входной сигнал OFDM с использованием операции БПФ, которая приводит к N параллельным потокам данных.

На рисунке показан демодулятор OFDM. Он состоит из набора N корреляторов с одним, назначенным каждой поднесущей OFDM с последующим параллельным преобразованием в последовательный.

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

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

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

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

[1] Дальман, Э., С. Парквалл и Дж. Скольд. 4G LTE/LTE-Advanced for Mobile Broadband.London: Elsevier Ltd., 2011.

[2] Эндрюс, Дж. Г., А. Гош и Р. Мухамед, Основы WiMAX, река Верхнее Седло, Нью-Джерси: Прентис Холл, 2007.

[3] И. Е. Е. Е., «Стандарт IEEE» 802.16TM-2009.

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

.
Представлен в R2014a