Демодуляция выборок OFDM временной области и обратных поднесущих для пользовательских протоколов связи
Беспроводная панель инструментов HDL/модуляция
Блок демодулятора OFDM демодулирует выборки мультиплексирования с ортогональным частотным разделением (OFDM) во временной области и выводит поднесущие на основе параметров OFDM. Блок поддерживает 5G новый стандарт радиосвязи (NR), долгосрочное развитие (LTE) [1], беспроводную локальную сеть (WLAN 802.11a/g/n/ac) [2], WiMAX, цифровое видео вещание (DVB) и цифровое аудио вещание (DAB).
Блок принимает входные данные вместе с действительным управляющим сигналом и этими параметрами OFDM: длиной FFT, длиной CP и количеством правой и левой защитных поднесущих. Блок выводит демодулированные данные вместе с действительными и готовыми управляющими сигналами. Блок активирует готовый выходной порт только тогда, когда эти параметры OFDM предоставляются блоку через входные порты. Блок выполняет выборку соответствующих параметров OFDM только тогда, когда порт готовности 1 (высокий) и первым допустимым портом каждого символа OFDM является 1 (высокий).
Блок поддерживает скалярные и векторные входы. Можно использовать векторный ввод для увеличения пропускной способности данных и достижения пропускной способности giga-sample-per-second (GSPS). Блок обеспечивает интерфейс и архитектуру, подходящие для генерации кода HDL и развертывания аппаратного обеспечения.
data - Входные данныеВходные данные, определяемые как скалярный или столбчатый вектор вещественных или комплексных значений. Размер вектора должен быть степенью 2 в диапазоне от 1 до 64 и меньше или равен длине БПФ.
double и single типы данных поддерживаются для моделирования, но не для генерации кода HDL.
Типы данных: single | double | int8 | int16 | int32 | signed fixed point
Поддержка комплексного номера: Да
valid - Указывает допустимые входные данныеУказывает допустимые входные данные, указанные как скаляр.
Этот порт является управляющим сигналом, который указывает, когда выборка из порта ввода данных является действительной. Когда это значение равно 1блок фиксирует значения на порте ввода данных. Когда это значение равно 0, блок игнорирует значения на порте ввода данных.
Типы данных: Boolean
FFTLen - Длина БПФДлина БПФ, заданная как скаляр. Длина БПФ должна быть мощностью 2 и находиться в диапазоне от 8 до 65536. Это значение должно быть меньше или равно значению параметра Максимальная длина БПФ.
Для поддержки минимальной длины FFT, равной 8, тип данных FFTLen должен быть fixdt(0,k,0), где k больше или равно 4.
Для активизации этого порта установите параметр источника параметров OFDM в значение Input port.
Типы данных: single | double | uint8 | uint16 | uint32 | unsigned fixed point
CPLen - Длина циклического префиксаДлина циклического префикса, заданного как скаляр в диапазоне от 0 до FFTLen.
Для поддержки минимальной длины FFT, равной 8, тип данных CPLen должен быть fixdt(0,k,0), где k больше или равно 4.
Для активизации этого порта установите параметр источника параметров OFDM в значение Input port.
Типы данных: single | double | uint8 | uint16 | uint32 | unsigned fixed point
numLgSc - Количество левых защитных несущих символа OFDMКоличество левых защитных несущих символа OFDM, указанных как скаляр в диапазоне от 0 до (FFTLen/2) - 1.
Для поддержки минимальной длины FFT, равной 8, тип данных numLgSc должен быть fixdt(0,k,0), где k больше или равно 2.
Для активизации этого порта установите параметр источника параметров OFDM в значение Input port.
Типы данных: single | double | uint8 | uint16 | uint32 | unsigned fixed point
numRgSc - Количество правых защитных несущих символа OFDMКоличество правых защитных несущих символа OFDM, указанных как скаляр в диапазоне от 0 до (FFTLen/2) - 1.
Для поддержки минимальной длины FFT, равной 8, тип данных numRgSc должен быть fixdt(0,k,0), где k больше или равно 2.
Для активизации этого порта установите параметр источника параметров OFDM в значение Input port.
Типы данных: single | double | uint8 | uint16 | uint32 | unsigned fixed point
reset - Очистить внутренние состоянияОчистить внутренние состояния, указанные как скаляр. Когда это значение равно 1 (true), блок останавливает текущий расчет и очищает все внутренние состояния.
Чтобы включить этот порт, выберите параметр Enable reset input port.
Типы данных: Boolean
data - Демодулированные выходные данныеДемодулированные выходные данные, возвращаемые как скалярный или столбчатый вектор с комплексными значениями. Тип выходных данных зависит от типа данных порта входных данных.
При установке для параметра источника параметров OFDM значения Property и сбросьте выходные сигналы Divide butterfly на два параметра, длина выходного слова увеличивается на биты log2 (длина БПФ).
При установке для параметра источника параметров OFDM значения Input port и сбросьте выходные сигналы Divide butterfly на два параметра, длина выходного слова увеличивается на биты log2 (максимальная длина БПФ).
Чтобы избежать переполнения, выберите выход «Разделить бабочку» на два параметра.
Типы данных: single | double | int8 | int16 | int32 | signed fixed point
Поддержка комплексного номера: Да
valid - Указывает допустимые выходные данныеУказывает допустимые входные данные, возвращаемые в виде скаляра.
Этот порт является управляющим сигналом, указывающим, когда порт вывода данных является действительным. Блок устанавливает для этого значения значение 1 когда выборки данных доступны на порту вывода данных. При выборе параметра Remove DC subcarrier это значение устанавливается равным 0 в центре выходных выборок для исключения несущей постоянного тока.
Типы данных: Boolean
ready - Указывает, что блок готовУправляющий сигнал, указывающий, когда блок готов к новым входным данным. Когда это значение равно 1блок принимает входные данные на следующем шаге времени. Когда это значение равно 0блок игнорирует входные данные на следующем шаге времени.
Для активизации этого порта установите параметр источника параметров OFDM в значение Input port.
Типы данных: Boolean
OFDM parameters source - Источник параметров OFDMProperty (по умолчанию) | Input portПараметры OFDM можно задать с помощью входного порта или путем выбора значения параметра.
Выбрать Property для активизации параметров длины БПФ, длины циклического префикса, количества левых защитных поднесущих и количества правых защитных поднесущих.
Выбрать Input port для активизации входных портов FFTLen, CPLen, numLgSc, numRgSc и параметра Maximum FFT length. Параметр Maximum FFT length задает верхнюю границу диапазона допустимых значений для входного порта FFTLen.
Maximum FFT length - Максимальная длина БПФ64 (по умолчанию) | мощность 2 в диапазоне от 8 до 65 536Укажите максимальную длину БПФ.
Для активизации этого параметра установите параметр источника параметров OFDM в значение Input port.
FFT length - Длина БПФ64 (по умолчанию) | мощность 2 в диапазоне от 8 до 65 536Укажите длину БПФ. При установке для параметра источника параметров OFDM значения Propertyблок использует это значение длины БПФ в качестве максимальной длины БПФ.
Для активизации этого параметра установите параметр источника параметров OFDM в значение Property.
Cyclic prefix length - Длина циклического префикса16 (по умолчанию) | целое число в диапазоне от 0 до длины БПФУкажите длину циклического префикса.
Для активизации этого параметра установите параметр источника параметров OFDM в значение Property.
Number of left guard subcarriers - Количество поднесущих защитной полосы в левом крайнем углу символа OFDM6 (по умолчанию) | целое число в диапазоне от 0 до (длина БПФ/2) - 1Укажите количество левых защитных поднесущих.
Для активизации этого параметра установите параметр источника параметров OFDM в значение Property.
Number of right guard subcarriers - Количество поднесущих защитной полосы в правом крайнем углу символа OFDM5 (по умолчанию) | целое число в диапазоне от 0 до (длина БПФ/2) - 1Укажите количество правых защитных поднесущих.
Для активизации этого параметра установите параметр источника параметров OFDM в значение Property.
Enable CP Fraction - активатор фракции CPoff (по умолчанию) | onВыберите этот параметр, чтобы включить параметр CP Fraction в маске блока.
CP Fraction - Процент удаляемого циклического префикса0.55 (по умолчанию) | диапазон от 0 до 1Фракция циклического префикса, заданная как значение от 0 до 1 включительно. Этот параметр определяет процент выборок CP, которые блок удаляет из начала символа OFDM. Блок сдвигает оставшиеся выборки СР в конец символа OFDM.
Когда этот параметр имеет значение 0.55блок удаляет 55% CP из начала символа и смещает 45% в конец символа. При установке для этого параметра значения 1блок удаляет 100% CP из начала символа OFDM и не сдвигает какие-либо выборки в конец.
Чтобы включить этот параметр, выберите параметр Enable CP Fraction.
Remove DC subcarrier - Исключить или включить поднесущую постоянного токаon (по умолчанию) | offПри выборе этого параметра блок исключает поднесущую постоянного тока на выходе, устанавливая для выходного действительного сигнала значение 0 для центра выходных поднесущих.
Enable reset input port - Сигнал сбросаoff (по умолчанию) | onВыберите этот параметр для активизации входного порта сброса.
Divide butterfly outputs by two - Разделить выходы бабочки БПФ на дваoff (по умолчанию) | onЭтот параметр управляет опцией масштабирования блока FFT HDL Optimized (DSP System Toolbox) внутри блока OFDM демодулятора.
При выборе этого параметра в БПФ реализуется общий масштабный коэффициент 1/N путем деления выходного сигнала каждого умножения бабочек на два. Эта регулировка поддерживает выход БПФ в том же диапазоне амплитуд, что и его вход. Если этот параметр снят, блок избегает переполнения, увеличивая длину слова на один бит после каждого умножения бабочки.
Rounding Method - Режим округления для внутренних расчетов с фиксированной точкойFloor (по умолчанию) | Ceiling | Convergent | Nearest | Round | ZeroЭтот параметр определяет тип режима округления для внутренних вычислений с фиксированной точкой. Дополнительные сведения о режимах округления см. в разделе Режимы округления (панель инструментов системы DSP). Если входными данными являются целочисленные данные или данные с фиксированной точкой, алгоритм БПФ использует арифметику с фиксированной точкой для внутренних вычислений. Этот параметр не применяется, если входные данные имеют тип данных single или double. Округление применяется к операциям умножения и масштабирования сдвоенного коэффициента.
Операционная последовательность блока Демодулятора OFDM осуществлена, используя эти блоки: Готовый Генератор, Циклический Съемник Префикса, Типовой Ретранслятор, Преобразователь FFT, FFT, Вниз Образец и Отборщик Подперевозчика. Параметры, показанные на этом рисунке, настраивают поведение блока.

Этот блок включает порт готовности при установке параметра источника параметров OFDM в значение Input port. Этот порт готовности управляет входными выборками на основе максимальной длины БПФ.
Применяются следующие уравнения.
Nh = ceil((Nr + FFTLen + CPLen )/vecLen)
Nl = ceil((Nr + Максимальная длина БПФ + CPLen )/vecLen) - Nh
В этих уравнениях
Nh - количество готовых тактовых циклов
N1 - количество циклов времени с низкой степенью готовности
Nr - количество оставшихся выборок из предыдущего символа OFDM. Первоначально это значение равно 0. В последующих операциях блок вычисляет Nr с помощью уравнения, (Nr + FFTLen + CPLen) - (floor((Nr + FFTLen + CPLen )/vecLen) x vecLen)
vecLen - длина вектора
Этот блок удаляет выборки CP из символа OFDM для извлечения символов созвездия. Блок выполняет удаление CP на основе следующих параметров: длина CP, фракция CP (если включена) и длина FFT.
Этот блок поддерживает передачу с окном, реализуя удаление дробного циклического префикса. Управление окнами уменьшает внеполосные выбросы. Передатчик выполняет оконную обработку, перекрывая хвостовую часть каждого символа OFDM с головкой следующего символа OFDM. Приемник должен избегать этих перекрывающихся выборок при вычислении БПФ. Дробная CP решает эту проблему, удаляя часть CP в начале символа и оставшуюся часть CP в конце символа. Реализация алгоритма CP-фракции также делает этот блок менее чувствительным к сдвигу синхронизации.
Блок обрабатывает КП в два этапа. Сначала блок вычисляет количество удаляемых CP выборок, Nr, и удаляет эти выборки из входных выборок. В этом случае Nr = фракция CP x длина CP.
Затем блок вычисляет количество выборок для сдвига, Ns, и сдвигает эти выборки в конец символа OFDM во временной области. Где Ns = CP длина - (CP фракция x CP длина).
Эти два сегмента вместе составляют общую длину циклического префикса, Ncp = Ns + Nr. Параметр фракции CP управляет количеством выборок, удаляемых блоком в начале символа. Блок сдвигает остаток циклического префикса с начала символа на конец символа. Блок квантует параметр фракции СР как fi(0,11,10). Для достижения целого числа выборок блок вычисляет Nr = floor (фракция Ncp x CP).
Например, если длина БПФ равна 128, а длина СР равна 10, блок принимает 128 выборок плюс размер циклического префикса.
Этот блок повторяет число выборок длиной БПФ, пока не сформирует максимальную длину БПФ. Для этой операции блок сначала буферизирует входные выборки, а затем повторяет выборки на основе максимального значения длины БПФ. Этот механизм повторения помогает избежать масштабирования на входе блока БПФ. Этот блок является необязательным и доступен только в том случае, если для параметра источника параметров OFDM установлено значение Input port. При установке для параметра источника параметров OFDM значения Propertyзначение длины БПФ, предоставленное в блочной маске, устанавливается как максимальная длина БПФ. Блок не должен повторять выборки в этом контексте.
Например, если длина БПФ равна 128, а максимальная длина БПФ равна 2048, каждый символ OFDM состоит из 128 выборок. Блок преобразует эти 128 выборок в 2048 выборок путем повторения 128 выборок 16 раз. После того как блок генерирует 2048 выборок данных, он посылает данные и действительные входные сигналы в следующий блок.
Обычно приемники выполняют сдвиг БПФ в частотной области. Однако этот способ требует памяти и вводит задержку, связанную с размером БПФ. Вместо этого приемник может выполнять ту же самую операцию во временной области, используя свойство сдвига частоты преобразований Фурье. Смещение функции в одной области соответствует умножению на сложную экспоненциальную функцию в другой области. Чтобы уменьшить аппаратные ресурсы и задержку, этот блок выполняет сдвиг БПФ путем умножения отсчетов временной области на сложную экспоненциальную функцию.
Эти уравнения описывают сдвиг БПФ. Уравнение для N-точечного БПФ
e − j2xeonnkN
Для сдвига БПФ N/2 несущих в любом направлении, заменить − N2, в результате чего
j2ín (k − N2) N
Это уравнение упрощает
− j2xeonnkN
Поскольку j2xeonnkN эквивалентно x (n)]ejpi = − 1, это уравнение упрощает
) nx (n)]
Окончательное уравнение показывает, что сдвиг БПФ во временной области упрощается до умножения на (-1) n. В результате блок реализует сдвиг БПФ путем умножения отсчетов временной области либо на + 1, либо на -1.
Этот блок преобразует сигнал временной области в сигнал частотной области на основе максимальной длины БПФ, обеспечиваемой для блока. Значение длины БПФ можно указать либо через параметр, либо через входной порт. Выходной сигнал подсистемы сдвига БПФ подается в блок оптимизированного БПФ HDL (DSP System Toolbox). Блок вычисляет максимальное значение БПФ для всех значений длины БПФ и длины СР.
Вывод «Разделить бабочку» на два параметра определяет, реализует ли БПФ общий масштабный коэффициент 1/N путем деления выходного сигнала каждого умножения бабочки на два. Эта регулировка поддерживает выход БПФ в том же диапазоне амплитуд, что и его вход. При очистке выходов «Разделить бабочки» по двум параметрам блок позволяет избежать переполнения, увеличивая длину слова на один бит после каждого умножения бабочек.
Это блокирует число выборок с максимальной длиной БПФ до числа выборок с длиной БПФ. Этот блок является необязательным и доступен только в том случае, если для параметра источника параметров OFDM установлено значение Input port. При установке для параметра источника параметров OFDM значения Property, значение длины БПФ, предоставленное в блочной маске, задает максимальную длину БПФ. Блок не нуждается в понижающей выборке выборок в этом контексте.
Например, если длина БПФ равна 128, а максимальная длина БПФ равна 2048, то входной сигнал равен 2048 отсчетам и должен быть уменьшен в соответствии с длиной БПФ, равной 128. В этом случае блочные выборки 1 выборка на каждые 16 выборок.
Выходные поднесущие подразделяются на данные, DC и защитные поднесущие. Поднесущие данных содержат полезные данные. Этот блок выбирает поднесущие путем удаления количества левых защитных поднесущих и правых защитных поднесущих, предусмотренных для блока. Количество защитных поднесущих для установки зависит от стандартов.
При выборе параметра Remove DC subcarrier блок исключает поднесущую DC из вывода. Блок исключает поднесущую DC путем установки для допустимого порта значения 0 (false) для центрального цикла выходных поднесущих.
Блок фиксирует выходные данные в допустимых циклах на основе типа ввода: скалярный или векторный.
На этом рисунке показаны выходной сигнал выборки и задержка блока демодулятора OFDM, когда вы указываете скалярный вход, установите параметр источника параметров OFDM в значение Property и использовать настройки по умолчанию для других параметров блока. В этом примере параметр FFTLen имеет значение 64, Параметр длины циклического префикса имеет значение 16, параметр Количество левых защитных поднесущих установлен в 6, и параметр Number of right guard subcarriers имеет значение 5.
В этом примере задержка блока вычисляется с использованием этой формулы: Длина циклического префикса + FFTLatency + Количество левых защитных поднесущих + 12, где FFTLatency - задержка блока FFT для указанной длины FFT, а 12 - количество задержек конвейера.
После вычисления задержка блока составляет 207 тактовых циклов, как показано на следующем рисунке.

На этом рисунке показана выборка выходных данных и задержка блока при указании скалярного входного значения и установке параметра источника параметров OFDM равным Input port. В этом примере для порта FFTLen установлено значение 64, для порта CPLen установлено значение 16, для порта numLgSc установлено значение 6 и для порта numRgSc установлено значение 5и параметр Maximum FFT length имеет значение 128.
Задержка блока вычисляется по формуле CPLen + FFTLen + FFTLatency + numLgSc x (Максимальная длина FFT/FFTLen) + 25, где FFTLatency - задержка блока FFT для указанной максимальной длины FFT, а 25 - количество конвейеров.
После вычисления задержка блока составляет 424 тактовых цикла, как показано на этой фигуре.

Блок принимает ввод только тогда, когда готов 1 (высокий). В этом случае блок захватывает параметры первого цикла, когда входной допустимый порт 1 (высокий).
На этом рисунке показаны выходной сигнал выборки и задержка блока демодулятора OFDM, когда вы указываете входной вектор двухэлементного столбца и устанавливаете параметр источника параметров OFDM равным Property и использовать настройки по умолчанию для других параметров блока. FFTLen имеет значение 64, длина циклического префикса установлена в 16и Количество левых защитных поднесущих и Количество правых защитных поднесущих установлены в 6 и 5соответственно.
В этом примере задержка блока вычисляется по следующей формуле: floor(Длина циклического префикса/vecLen) + vecFFTLatency + floor (Количество левых защитных поднесущих/vecLen) + 12, где vecFFTLatency - задержка блока БПФ для заданной длины БПФ и длины вектора, vecLen - длина вектора, а 12 - количество задержек конвейера.
Этот расчет показывает, что задержка блока составляет 142 тактовых цикла, как показано на этом рисунке.

На этом рисунке показана выборка выходных данных и задержка блока при указании ввода вектора двухэлементного столбца и установке параметра источника параметров OFDM равным Input port. В этом примере для параметра FFTLen установлено значение 64, CPLen имеет значение 16, numLgSc установлен в 6, numRgSc имеет значение 5и для параметра Максимальная длина БПФ (Maximum FFT length) установлено значение 128.
В этом примере задержка блока вычисляется по следующей формуле: floor(CPLen/vecLen) + FFTLen/vecLen + vecFFTLatency + floor(numLgSc/vecLen) x (Максимальная длина БПФ/FFTLen) + 26, где vecFFTLatency - задержка блока БПФ для указанной максимальной длины БПФ и длины вектора, vecLen - длина вектора, а 26 - количество задержек конвейера.
После вычисления задержка блока составляет 266 тактовых циклов, как показано на этом рисунке.

Блок принимает ввод только тогда, когда готов 1 (высокий). В этом случае блок захватывает параметры первого цикла, когда входной допустимый порт 1 (высокий).
Производительность синтезированного HDL-кода зависит от цели и вариантов синтеза. Тип входных данных, используемый в этом примере для генерации кода HDL: fixdt(1,16,14).
В этой таблице показаны результаты синтеза данных о ресурсах и производительности при использовании блока со скалярным или двухэлементным вектором-столбцом для значений конфигурации по умолчанию. Созданный HDL предназначен для платы оценки Xilinx ® Zynq ® - 7000 ZC706.
| Входные данные | LUT среза | Регистры среза | DSPs | Блок ОЗУ | Максимальная частота в МГц |
|---|---|---|---|---|---|
| Скаляр | 2434 | 4161 | 8 | 1 | 340 |
| Вектор | 4890 | 7764 | 16 | 0 | 235 |
[1] 3GPP TS 36.211 версии 14.2.0 версии 14. «Физические каналы и модуляция». LTE - усовершенствованный универсальный наземный радиодоступа (E-UTRA).
[2] «Спецификации управления доступом к среде беспроводной локальной сети (MAC) и физического уровня (PHY)». IEEE Std 802.11 - 2012.
[3] Стефания Сесия, Иссам Туфик и Мэтью Бейкер. LTE - Долгосрочная эволюция UMTS от теории к практике.
[4] Эрик Дальман, Стефан Парквалл и Йохан Скольд. 4G - LTE/LTE - Advanced for Mobile broadband Second edition.
Этот блок поддерживает генерацию кода C/C + + для режимов ускорения Simulink ® и быстрого ускорения, а также для генерации компонентов DPI.
HDL Coder™ предоставляет дополнительные опции конфигурации, которые влияют на реализацию HDL и синтезированную логику.
Этот блок не имеет свойств блока HDL.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

