Демодулируйте выборки OFDM временной области и возвращайте поднесущие для пользовательских протоколов связи
Беспроводной HDL Toolbox/модуляция
Блок OFDM Demodulator демодулирует выборки ортогональной частоты деления мультиплексирования во временной области (OFDM) и выходах поднесущие на основе параметров OFDM. Блок поддерживает новый стандарт 5G (NR), долгосрочную эволюцию (LTE) [1], беспроводную локальную сеть (WLAN 802.11a/g/n/ac) [2], WiMAX, цифровую видеотрансляцию (DVB) и цифровую аудиотрансляцию (DAB).
Блок принимает входные данные вместе с действительным сигналом управления и этими параметрами OFDM: длина БПФ, длина CP и количество правых и левых защитных поднесущих. Блок выводит демодулированные данные вместе с допустимыми и готовыми управляющими сигналами. Блок включает готовый выходной порт только, когда эти параметры OFDM предоставляются блоку через входные порты. Блок дискретизирует соответствующие параметры OFDM только, когда порт ready 1
(высокий) и первый valid порт каждого символа OFDM 1
(высокий).
Блок поддерживает скалярные и векторные входы. Можно использовать вектор вход, чтобы увеличить пропускную способность данных и достичь выборки гига сэмплов в секунду (GSPS) пропускной способности. Блок обеспечивает интерфейс и архитектуру, подходящую для генерации HDL-кода и аппаратного развертывания.
data
- Входные данныеВходные данные, заданные как скаляр или вектор-столбец вещественных или комплексные числа. Размер вектора должен быть степенью 2, в области значений от 1 до 64 и меньше или равен длине БПФ.
double
и single
типы данных поддерживаются для симуляции, но не для генерации HDL-кода.
Типы данных: single
| double
| int8
| int16
| int32
| signed fixed point
Поддержка комплексного числа: Да
valid
- Указывает на действительные входные данныеУказывает допустимые входные данные, заданные как скаляр.
Этот порт является управляющим сигналом, который указывает, когда выборка от data входного порта действительна. Когда это значение 1
блок захватывает значения на data входном порте. Когда это значение 0
блок игнорирует значения на data входном порте.
Типы данных: Boolean
FFTLen
- Длина БПФДлина БПФ, заданная как скаляр. Длина БПФ должна быть степенью 2 и в области значений от 8 до 65 536. Это значение должно быть меньше или равно Maximum FFT length значению параметров.
Чтобы поддержать минимальную длину БПФ 8, FFTLen тип данных должен быть fixdt(0,k,0)
, где k больше или равно 4.
Чтобы включить этот порт, установите параметр OFDM parameters source равным Input port
.
Типы данных: single
| double
| uint8
| uint16
| uint32
| unsigned fixed point
CPLen
- Длина циклического префиксаДлина циклического префикса, заданная как скаляр в области значений от 0 до FFTLen.
Чтобы поддержать минимальную длину БПФ 8, CPLen тип данных должен быть fixdt(0,k,0)
, где k больше или равно 4.
Чтобы включить этот порт, установите параметр OFDM parameters source равным Input port
.
Типы данных: single
| double
| uint8
| uint16
| uint32
| unsigned fixed point
numLgSc
- Количество левых защитных носителей символа OFDMКоличество левых защитных носителей символа OFDM, заданное в виде скаляра в области значений от 0 до (FFTLen/2) - 1.
Чтобы поддержать минимальную длину БПФ 8, numLgSc тип данных должен быть fixdt(0,k,0)
, где k больше или равно 2.
Чтобы включить этот порт, установите параметр OFDM parameters source равным Input port
.
Типы данных: single
| double
| uint8
| uint16
| uint32
| unsigned fixed point
numRgSc
- Количество правых защитных носителей символа OFDMКоличество правых защитных носителей символа OFDM, заданное в виде скаляра в области значений от 0 до (FFTLen/2) - 1.
Чтобы поддержать минимальную длину БПФ 8, numRgSc тип данных должен быть fixdt(0,k,0)
, где k больше или равно 2.
Чтобы включить этот порт, установите параметр OFDM parameters source равным Input port
.
Типы данных: single
| double
| uint8
| uint16
| uint32
| unsigned fixed point
reset
- Очистить внутренние состоянияОчистить внутренние состояния, заданные как скаляр. Когда это значение 1
(true), блок останавливает текущее вычисление и очищает все внутренние состояния.
Чтобы включить этот порт, выберите параметр Enable reset input port.
Типы данных: Boolean
data
- Демодулированные выходные данныеДемодулированные выходом данные, возвращенные как комплексный скаляр или вектор-столбец. Тип выходных данных зависит от типа данных входного data порта.
Когда вы устанавливаете параметр OFDM parameters source равным Property
и очистите параметр Divide butterfly outputs by two, длина выходного слова увеличивается на log2 (FFT length) бита.
Когда вы устанавливаете параметр OFDM parameters source равным Input port
и очистите параметр Divide butterfly outputs by two, длина выходного слова увеличивается на log2 (Maximum FFT length) бита.
Чтобы избежать переполнения, выберите параметр Divide butterfly outputs by two.
Типы данных: single
| double
| int8
| int16
| int32
| signed fixed point
Поддержка комплексного числа: Да
valid
- Указывает на действительные выходные данныеУказывает действительные входные данные, возвращенные как скаляр.
Этот порт является управляющим сигналом, который указывает, когда data выходной порт действителен. Блок устанавливает это значение равным 1
когда выборки данных доступны на data выходном порту. Когда вы выбираете параметр Remove DC subcarrier, это значение устанавливается на 0
в центре выходных выборок, чтобы исключить несущую постоянного тока.
Типы данных: Boolean
ready
- Указывает, что блок готовУправляющий сигнал, который указывает, когда блок готов к новым входным данным. Когда это значение 1
блок принимает входные данные на следующем временном шаге. Когда это значение 0
блок игнорирует входные данные на следующем временном шаге.
Чтобы включить этот порт, установите параметр OFDM parameters source равным Input port
.
Типы данных: Boolean
OFDM parameters source
- Источник параметров OFDMProperty
(по умолчанию) | Input port
Можно задать параметры OFDM с входом портом или путем выбора значения для параметра.
Выберите Property
для включения параметров FFT length, Cyclic prefix length, Number of left guard subcarriers и Number of right guard subcarriers.
Выберите Input port
для включения FFTLen, CPLen, numLgSc numRgSc входных портов и параметра Maximum FFT length. Параметр Maximum FFT length устанавливает верхнюю границу области значений для FFTLen входного порта.
Maximum FFT length
- Максимальная длина БПФ64
(по умолчанию) | степень 2 в области значений от 8 до 65 536Задайте максимальную длину БПФ.
Чтобы включить этот параметр, установите параметр OFDM parameters source равным Input port
.
FFT length
- Длина БПФ64
(по умолчанию) | степень 2 в области значений от 8 до 65 536Задайте длину БПФ. Когда вы устанавливаете параметр OFDM parameters source равным Property
блок использует это значение длины БПФ как максимальную длину БПФ.
Чтобы включить этот параметр, установите параметр OFDM parameters source равным Property
.
Cyclic prefix length
- Длина циклического префикса16
(по умолчанию) | целое число в области значений от 0 до FFT lengthЗадайте длину циклического префикса.
Чтобы включить этот параметр, установите параметр OFDM parameters source равным Property
.
Number of left guard subcarriers
- Количество поднесущих защитной полосы в левом крайнем значении символа OFDM6
(по умолчанию) | целое число в области значений от 0 до (FFT length/2) - 1Укажите количество левых защитных поднесущих.
Чтобы включить этот параметр, установите параметр OFDM parameters source равным Property
.
Number of right guard subcarriers
- Количество поднесущих защитной полосы в правой крайней части символа OFDM5
(по умолчанию) | целое число в области значений от 0 до (FFT length/2) - 1Укажите количество правых защитных поднесущих.
Чтобы включить этот параметр, установите параметр OFDM parameters source равным Property
.
Enable CP Fraction
- Активатор фракции CPoff
(по умолчанию) | on
Выберите этот параметр, чтобы включить параметр CP Fraction на маске блока.
CP Fraction
- Процент удаляемого циклического префикса0.55
(по умолчанию) | в области значений от 0 до 1Циклическая дробь префикса, заданная как значение от 0 до 1 включительно. Этот параметр задает процент выборок CP, которые блок удаляет из начала символа OFDM. Блок смещает оставшиеся выборки CP в конец символа 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
Выберите этот параметр, чтобы включить reset входной порт.
Divide butterfly outputs by two
- Разделите выходы БПФ-бабочки на дваoff
(по умолчанию) | on
Этот параметр управляет опцией масштабирования блока FFT HDL Optimized (DSP System Toolbox) внутри блока OFDM Demodulator.
Когда вы выбираете этот параметр, БПФ реализует общий коэффициент N 1/ шкал путем деления выхода каждого умножения бабочки на два. Эта регулировка сохраняет выход БПФ в той же амплитуде, область значений и его вход. Если вы очистите этот параметр, блок избегает переполнения, увеличивая размер слова на один бит после каждого умножения бабочки.
Rounding Method
- Режим округления для внутренних вычислений фиксированной точкиFloor
(по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Zero
Этот параметр задает тип режима округления для внутренних вычислений с фиксированной точкой. Для получения дополнительной информации о режимах округления см. Раздел «Режимы округления» (DSP System Toolbox). Когда вход является любым целочисленным типом данных или типом данных с фиксированной точкой, алгоритм БПФ использует арифметику с фиксированной точкой для внутренних вычислений. Этот параметр не применяется, когда вход имеет тип данных single
или double
. Округление применяется к операциям умножения и масштабирования двух множителей.
Последовательность операций блока OFDM Demodulator реализована с использованием этих блоков: Ready Generator, Cyclic Prefix Remover, Sample Repeater, FFT Shifter, БПФ Sampler и Selector поднесущей. Параметры, показанные на этом рисунке, конфигурируют поведение блока.
Этот блок включает готовый порт, когда вы устанавливаете параметр OFDM parameters source равным Input port
. Этот готовый порт контролирует выборки входа на основе максимальной длины БПФ.
Применяются следующие уравнения.
N h = ceil
((N r + FFTLen + CPLen )/ vecLen)
N l = ceil
(N r + Maximum FFT length + CPLen )/ vecLen) - N ч
В этих уравнениях,
N h - количество тактов высокой готовности
N l - количество низкоготовых тактовых импульсов
N r - количество остальных выборок из предыдущего символа OFDM. Первоначально это значение 0
. В последующих операциях блок вычисляет N r с помощью уравнения (N r + FFTLen + CPLen) - (floor
((N r + FFTLen + CPLen )/ vecLen) x vecLen)
vecLen - длина вектора
Этот блок удаляет выборки CP из символа OFDM для извлечения символов созвездия. Блок выполняет удаление CP на основе следующих параметров: CP length, CP fraction (при включении) и FFT length.
Этот блок поддерживает оконную передачу путем реализации дробного удаления циклического префикса. Оконная обработка уменьшает выбросы вне диапазона. Передатчик выполняет оконцевание путем перекрытия хвоста каждого символа OFDM с главой следующего символа OFDM. Приемник должен избегать этих перекрываемых выборок в расчете БПФ. Дробная CP решает эту проблему, удаляя часть CP в начале символа и оставшуюся часть CP в конце символа. Реализация алгоритма CP-дроби также делает этот блок менее чувствительным к смещению по времени.
Блок обрабатывает CP в два этапа. Во-первых, блок вычисляет количество выборок CP, чтобы удалить, N r, и удаляет эти выборки из входных выборок. В этом случае N r = CP fraction x CP length.
Затем блок вычисляет количество выборок для сдвига, N с, и смещает эти выборки в конец символа OFDM во временном интервале. Где, N s = CP length - (CP fraction x CP length ).
Эти два сегмента вместе составляют общую длину циклического префикса, N cp = N s + N r. Параметр CP fraction управляет тем, сколько выборок блок удаляют в начале символа. Блок смещает оставшуюся часть циклического префикса с начала символа на конец символа. Блок квантует параметр CP fraction следующим fi(0,11,10)
. Чтобы достичь целого числа выборок, блок вычисляет N r = floor
(N cp x CP fraction).
Для примера, если длина БПФ составляет 128, а длина БПФ равна 10, блок получает 128 выборок плюс размер циклического префикса.
Этот блок повторяет количество выборок FFT до тех пор, пока оно не образует максимальную длину БПФ. Для этой операции блок буферизует сначала входные выборки, а затем повторяет выборки на основе максимального значения длины БПФ. Этот механизм повторения помогает избежать масштабирования на входе БПФ блока. Этот блок является необязательным и доступен только, когда вы задаете параметр OFDM parameters source равным Input port
. Когда вы устанавливаете параметр OFDM parameters source равным Property
, значение длины БПФ, заданное в маске блока, устанавливается как максимальная длина БПФ. Блок не должен повторять выборки в этом контексте.
Для примера, если длина БПФ составляет 128, а максимальная длина БПФ составляет 2048, каждый символ БПФ состоит из 128 выборок. Блок преобразует эти 128 выборки в 2048 выборки путем повторения 128 выборки 16 раз. После того, как блок генерирует 2048 выборок данных, он отправляет данные и действительные входные сигналы в следующий блок.
Обычно приемники выполняют сдвиг БПФ в частотный диапазон. Однако этот метод требует памяти и вводит задержку, связанную с размером БПФ. Вместо этого приемник может выполнить ту же операцию во временном интервале, используя свойство перемены частоты преобразований Фурье. Сдвиг функции в одной области соответствует умножению на комплексную экпоненту функцию в другой области. Чтобы уменьшить оборудование ресурсы и задержки, этот блок выполняет сдвиг БПФ, умножая выборки во временной области на функцию комплексной экпоненты.
Эти уравнения описывают сдвиг БПФ. Уравнение для БПФ с N точками
Для сдвига БПФ N/2 несущих в любом направлении замените , в результате чего
Это уравнение упрощает
С тех пор эквивалентно , и , это уравнение упрощает
Окончательное уравнение показывает, что сдвиг БПФ во временном интервале упрощается умножением на (-1)n. В результате блок реализует сдвиг БПФ путем умножения выборок во временной области на + 1 или -1.
Этот блок преобразует сигнал временной области в сигнал частотного диапазона на основе максимальной длины БПФ, предусмотренной для блока. Можно задать значение длины БПФ либо через параметр, либо через вход порт. Выход подсистемы сдвига БПФ подается на блок FFT HDL Optimized (DSP System Toolbox). Блок вычисляет максимальное значение БПФ для всех значений длины и длины БПФ.
Эти < reservedrangesplaceholder2 > наборы параметров, реализует ли БПФ общий коэффициент шкалы 1/ N путем деления выхода каждого умножения бабочки на два. Эта регулировка сохраняет выход БПФ в той же амплитуде, область значений и его вход. Когда вы очищаете параметр Divide butterfly outputs by two, блок избегает переполнения, увеличивая размер слова на один бит после каждого умножения бабочки.
Этот блок уменьшает количество выборок с максимальной длиной FFT до количества выборок с длиной FFT. Этот блок является необязательным и доступен только, когда вы задаете параметр OFDM parameters source равным Input port
. Когда вы устанавливаете параметр OFDM parameters source равным Property
, значение длины БПФ, заданное в маске блока, устанавливает максимальную длину БПФ. Блок не должен понижать значения выборок в этом контексте.
Для примера, если длина БПФ составляет 128, а максимальная длина БПФ составляет 2048, вход составляет 2048 выборок и должен быть понижен с соответствующей длиной БПФ, равной 128. В этом случае блок отбирает 1 выборку на каждые 16 выборок.
Поднесущие выходы классифицируются в данные, DC и защитные поднесущие. Поднесущие данных содержат полезные данные. Этот блок выбирает поднесущие путем удаления количества левых защитных поднесущих и правых защитных поднесущих, предусмотренных для блока. Количество защитных поднесущих, которые нужно задать, изменяется со стандартами.
Если вы выбираете параметр Remove DC subcarrier, блок исключает поднесущую постоянного тока из выхода. Блок исключает поднесущую постоянного тока путем установки порта valid на 0
(false) для центрального цикла выходов поднесущих.
Блок захватывает выходные данные в допустимых циклах на основе типа входа: скаляра или вектора.
Этот рисунок показывает выход выборки и задержку блока OFDM Demodulator, когда вы задаете скалярный вход, задайте значение параметра OFDM parameters source Property
и используйте настройки по умолчанию для других параметров блоков. В этом примере параметр FFTLen установлен на 64
, Cyclic prefix length параметр установлен в 16
, Number of left guard subcarriers параметр установлен в 6
, и Number of right guard subcarriers параметр установлен в 5
.
В этом примере время ожидания блока вычислено, используя эту формулу: Cyclic prefix length + FFTLatency + Number of left guard subcarriers + 12, где FFTLatency время ожидания FFT блок для указанной длины БПФ, и 12, является количеством задержек трубопровода.
После вычисления задержка блока составляет 207 тактов, как показано на следующем рисунке.
Этот рисунок показывает выход выборки и задержку блока, когда вы задаете вход скаляра и устанавливаете параметр OFDM parameters source на Input port
. В этом примере порт FFTLen установлен на 64
, CPLen порт установлен в 16
, numLgSc порт установлен в 6
и numRgSc порт установлен в 5
, и Maximum FFT length параметр установлен в 128
.
Время ожидания блока вычислено, используя формулу <reservedrangesplaceholder7> + FFTLen + FFTLatency + <reservedrangesplaceholder4> x (Maximum FFT length / FFTLen) + 25, где FFTLatency - время ожидания FFT, блок для указанной максимальной длины БПФ, и 25 является количеством задержек трубопровода.
После вычисления задержка блока составляет 424 тактовых импульса, как показано на этом рисунке.
Блок принимает вход только, когда ready 1
(высокий). В этом случае блок захватывает параметры в первом цикле, когда входной valid порт 1
(высокий).
Этот рисунок показывает выход выборки и задержку блока OFDM Demodulator, когда вы задаете двухэлементный вектор-столбец вход и устанавливаете параметр OFDM parameters source на Property
и используйте настройки по умолчанию для других параметров блоков. FFTLen установлено на 64
Cyclic prefix length установлено на 16
, и Number of left guard subcarriers и Number of right guard subcarriers установлены в 6
и 5
, соответственно.
В этом примере задержка блока вычисляется с помощью этой формулы: floor
(Cyclic prefix length / vecLen) + vecFFTLatency + floor
(Number of left guard subcarriers/ vecLen) + 12, где vecFFTLatency - задержка блока FFT для заданных длины и длины вектора FFT, vecLen - длина вектора, и 12 - количество задержек трубопровода.
Это вычисление показывает, что задержка блока составляет 142 такта, как показано на этом рисунке.
Этот рисунок показывает выборочный выход и задержку блока, когда вы задаете двухэлементный вектор-столбец входа и устанавливаете параметр OFDM parameters source на Input port
. В данном примере FFTLen установлено на 64
CPLen установлено на 16
numLgSc установлено на 6
numRgSc установлено на 5
, и Maximum FFT length установлено равным 128
.
В этом примере задержка блока вычисляется с помощью этой формулы: floor
(CPLen / vecLen) + FFTLen / vecLen + vecFFTLatency + floor
(numLgSc / vecLen) x (Maximum FFT length / FFTLen) + 26, где vecFFTLatency время ожидания FFT, блок для указанной максимальной длины БПФ и длины вектора, vecLen является длиной вектора, и 26 количество задержек трубопровода.
После вычисления задержка блока составляет 266 тактов, как показано на этом рисунке.
Блок принимает вход только, когда ready 1
(высокий). В этом случае блок захватывает параметры в первом цикле, когда входной valid порт 1
(высокий).
Эффективность синтезированного HDL-кода варьируется с вашей целью и опциями синтеза. Тип входных данных, используемый в этом примере для генерации HDL-кода fixdt(1,16,14)
.
Эта таблица показывает результаты синтеза данных о ресурсах и эффективности при использовании блока со скалярным или двухэлементным вектором-столбцом входа для значений строения по умолчанию. Сгенерированный HDL нацелен на Xilinx® Zynq®- 7000 ZC706 оценочного совета.
Входные данные | Срез LUTs | Регистры срезов | DSPs | Блокируйте ОЗУ | Максимальная частота в МГц |
---|---|---|---|---|---|
Скаляр | 2434 | 4161 | 8 | 1 | 340 |
Вектор | 4890 | 7764 | 16 | 0 | 235 |
[1] 3GPP TS 36.211 версии 14.2.0 Release 14. «Физические каналы и модуляция». LTE - Evolved Universal Terrestrial Radio Access (E-UTRA).
[2] «Управление доступом к среде беспроводной локальной сети (MAC) и физическим слоем (PHY) Спецификаций». IEEE Std 802.11 - 2012.
[3] Стефания Сесия, Иссам Туфик и Мэтью пекарь. LTE - Долгосрочная эволюция UMTS от теории к практике.
[4] Эрик Дальман, Стефан Парквалль и Йохан Сколд. 4G - LTE/LTE - Расширенный для мобильной широкополосной связи Второе издание.
Этот блок поддерживает генерацию кода C/C + + для Simulink® режимы Accelerator и Rapid Accelerator и для генерации компонентов DPI.
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Этот блок не имеет свойств HDL-блоков.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.