exponenta event banner

Оптимизация NCO HDL

Генерирование реальных или сложных синусоидальных сигналов - оптимизировано для генерации кода HDL

  • Библиотека:
  • Системная панель инструментов DSP Поддержка HDL/Операции с сигналами

    Системная панель инструментов DSP Поддержка HDL/Источники

  • NCO HDL Optimized block

Описание

Блок NCO HDL Optimized генерирует реальные или сложные синусоидальные сигналы, обеспечивая при этом аппаратные управляющие сигналы. Блок использует тот же алгоритм накопления фаз и таблицы поиска, что и реализованный в блоке NCO. Блок использует квантованное целочисленное накопление для создания синусоидального сигнала.

Блок NCO HDL Optimized обеспечивает следующие функции:

  • Дополнительный вывод на основе кадров.

  • Параметр сжатия таблицы подстановки для уменьшения размера таблицы подстановки. Это сжатие приводит к менее чем одной потере LSB в точности. Дополнительные сведения см. в разделе Сжатие таблицы подстановки.

  • Дополнительный входной порт для внешнего сглаживания.

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

  • Дополнительный выходной порт для текущей фазы NCO.

Учитывая время выборки, Ts и желаемое разрешение Δf выходной частоты, вычисляют необходимый размер накопителя, используя Nacc = ceil (log2 (1Ts⋅Δf)).

Предполагая, что требуемая выходная частота Fo намного ниже частоты Найквиста, можно определить приемлемое квантование на выходе накопителя, используя приближение для шума на бит в дБ и желаемый ложный свободный динамический диапазон (SFDR). Квантованная длина слова для достижения заданного SFDR равна Nq = ceil (SFDR 126).

Для требуемой выходной частоты Fo вычислите приращение фазы, используя приращение фазы = скругление (F0Ts2Nacc), где Nacc - длина слова накопителя. Инкремент фазы можно задать с помощью параметра или входного порта.

Если задано требуемое фазовое смещение (в радианах), вычислите входное значение фазового смещения, используя фазовое смещение offset=2Nacc⋅desired phase offset2δ. Фазовое смещение можно задать с помощью параметра или входного порта.

Порты

Примечание

  • Этот блок появляется в библиотеках источников с параметром источника приращения фазы, равным Property. Действителен единственный входной порт.

  • Этот блок появляется в библиотеках операций с сигналами с параметром источника приращения фазы, равным Input port. В этой конфигурации показан дополнительный входной порт inc.

Этот значок показывает дополнительные порты блока NCO HDL Optimized.

Вход

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

Приращение фазы, указанное как скалярное целое число.

double и single типы данных поддерживаются для моделирования, но не для генерации кода HDL.

Зависимости

Чтобы включить этот порт, установите для параметра Phase increment source значение Input port.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixdt([],N,0)

Фазовое смещение, указанное как скалярное целое число.

double и single типы данных поддерживаются для моделирования, но не для генерации кода HDL.

Зависимости

Чтобы включить этот порт, задайте для параметра источника смещения фазы значение Input port.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixdt([],N,0)

Сглаживание, указанное как целое число или вектор столбца целых чисел. Длина вектора должна равняться значению параметра Samples per frame.

double и single типы данных поддерживаются для моделирования, но не для генерации кода HDL.

Зависимости

Чтобы включить этот порт, установите для параметра источника сглаживания значение Input port.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixdt([],N,0)

Управляющий сигнал, разрешающий операцию NCO, заданный как логический скаляр. Когда этот сигнал 1блок увеличивает фазу и фиксирует все входные значения. Когда этот сигнал 0блок содержит фазовый аккумулятор и игнорирует любые входные значения.

Если параметр Samples per frame больше, чем 1, это значение обеспечивает обработку выборок на кадр.

Типы данных: Boolean

Управляющий сигнал, сбрасывающий накопитель, заданный как логический скаляр. Когда этот сигнал 1блок сбрасывает аккумулятор до его начального значения. Этот сигнал не сбрасывает выходные выборки в конвейере.

Зависимости

Чтобы включить этот порт, выберите параметр Enable accumator reset input port.

Типы данных: Boolean

Продукция

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

Генерируемая форма сигнала, возвращаемая как скаляр или как вектор столбца с длиной, равной значению параметра Samples per frame. Выходные данные могут быть одним портом, который возвращает значения sin или cos, один порт, который возвращает значения exp, представляющие cosine + j*sine, или два порта, которые возвращают значения sin и cos соответственно. Если все входные значения имеют фиксированный тип или все входные порты отключены, блок определяет тип вывода с помощью параметра Output data type. Если какое-либо входное значение имеет тип с плавающей запятой, блок игнорирует параметр Output data type. В этом случае блок возвращает форму сигнала в виде значений с плавающей запятой.

Типы данных с плавающей запятой поддерживаются для моделирования, но не для генерации кода HDL.

Зависимости

По умолчанию этот выходной порт является синусоидальным, sin. Метка порта и формат изменяются в зависимости от параметра Type of output signal.

Текущая фаза NCO, возвращаемая как скаляр или как вектор столбца с длиной, равной значению параметра Samples per frame. Фаза является выходом квантованного накопителя с примененными смещением и приращением. Если квантование отключено, этот порт возвращает выходной сигнал накопителя с применением смещения и приращения.

Значения имеют тип fixdt(1,N,0), где N - значение параметра Число битов накопителя квантователя. Если квантование отключено, то N является значением параметра длины Accumulator Word. Если какое-либо входное значение является типом с плавающей запятой, блок возвращает фазу в виде значения с плавающей запятой.

Типы данных с плавающей запятой поддерживаются для моделирования, но не для генерации кода HDL.

Зависимости

Для активизации этого порта выберите параметр Enable phase port.

Типы данных: single | double | fixdt(1,N,0)

Управляющий сигнал, указывающий на достоверность выходных данных, возвращаемых как логический скаляр. При допустимом выводе: 1, действительны значения для портов sin, cos, exp и phase. При допустимом выводе: 0, значения на выходных портах недопустимы.

Если параметр Samples per frame больше, чем 1, этот сигнал указывает на достоверность всех элементов в выходном векторе.

Типы данных: Boolean

Параметры

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

Главный

Примечание

Этот блок поддерживает double и single ввод для моделирования, но не для генерации кода HDL. Если все входные значения имеют фиксированный тип или все входные порты отключены, блок определяет тип вывода с помощью параметра Output data type. Если какое-либо входное значение имеет тип с плавающей запятой, блок игнорирует параметр Output data type. В этом случае блок возвращает форму сигнала и необязательную фазу в виде значений с плавающей запятой.

Для использования функции переопределения типа данных Fixed-Point Designer™ можно получить double выходное значение путем применения double входные данные на один из дополнительных портов.

Можно задать приращение фазы с помощью входного порта или путем ввода значения параметра. При выборе Property, появится параметр Шаг фазы (Phase increment), чтобы ввести значение. При выборе Input port, порт inc появляется в блоке.

Приращение фазы для сгенерированного сигнала, заданного как целое число.

Зависимости

Чтобы включить этот параметр, задайте для параметра Источник приращения фазы значение Property.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixdt([],N,0)

Фазовое смещение можно задать с помощью входного порта или путем ввода значения параметра. При выборе Propertyпоявится параметр Смещение фазы (Phase offset) для ввода значения. При выборе Input port, на блоке появится смещенный порт.

Фазовое смещение для генерируемого сигнала, заданного как целое число.

Зависимости

Чтобы включить этот параметр, задайте для параметра Источник смещения фазы значение Property.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixdt([],N,0)

Можно задать сглаживание из входного порта или из параметра. При выборе Property, появится параметр Number of dethering bits. При выборе Input portна блоке появится порт. При выборе None, блок не добавляет сглаживание.

Число разрядов сглаживания, указанное как положительное целое число.

Зависимости

Чтобы включить этот параметр, установите для параметра Источник сглаживания значение Property.

При установке этого значения в значение 1, блок имеет скалярный вход и выход. Если это значение больше, чем 1, порт сглаживания ожидает вектор столбца длины Samples на кадр и sin, cos, exp и фазовые порты возвращают векторы столбцов длины Samples на кадр.

По умолчанию блок реализует несжатую таблицу поиска, и выходные данные этого блока соответствуют выходным данным блока NCO. Если этот параметр включен, блок реализует сжатую таблицу подстановки. Метод сжатия Сандерленда уменьшает размер таблицы подстановки, теряя менее одного LSB точности. Ложный свободный динамический диапазон (SFDR) эмпирически на 1-3 дБ ниже, чем в несжатом случае. Аппаратная экономия сжатой таблицы поиска позволяет повысить производительность за счет увеличения длины слова накопителя и количества квантованных битов. Подробные сведения о методе сжатия см. в разделе Алгоритмы.

Выберите этот параметр для активизации порта reset accum. Когда reset accum имеет значение 1блок сбрасывает аккумулятор до его начального значения.

При выборе Sine или Cosine, блок показывает применимый порт, sin или cos. При выборе Complex exponential, вывод имеет вид cosine + j*sine и порт помечен как exp. при выборе Sine and cosineблок показывает два порта, sin и cos.

Выберите этот параметр для возврата текущей фазы NCO на фазовом порте. Фаза представляет собой выходной сигнал квантованного накопителя с применением смещения и приращения. Если квантование отключено, этот порт возвращает выходной сигнал накопителя с применением смещения и приращения.

Типы данных

Режим округления для операций с фиксированной точкой. Режим округления - это параметр только для чтения со значением Floor.

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

Описание типа данных аккумулятора. Этот параметр доступен только для чтения со значением Binary point scaling. Блок определяет тип данных с фиксированной точкой с помощью параметров «Знак аккумулятора», «Длина слова аккумулятора» и «Длина доли аккумулятора».

Этот параметр доступен только для чтения. Все выходные данные имеют формат подписи.

Единицы измерения представлены в битах. Это значение должно включать бит знака.

Если удалить параметр фазы квантования, то длина слова Accumulator определяет размер LUT. Для генерации кода HDL размер LUT должен быть от 2 до 217 записей. Если выбран параметр Включить метод сжатия таблицы поиска, этот параметр должен быть больше 4 и меньше 22. При снятии флажка Включить метод сжатия таблицы поиска этот параметр должен быть больше 2 и меньше 20. Дополнительные сведения о том, как этот параметр влияет на размер LUT, см. в разделе Алгоритмы.

Этот параметр доступен только для чтения. Длина фракции накопителя равна нулю битов.

Аккумулятор работает на целых числах. Если приращение фазы равно fixdt с дробной частью, блок возвращает ошибку.

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

Частотное разрешение NCO определяется Δf=1Ts⋅2NHz, где N - значение параметра Число битов накопителя квантователя.

При сбросе этого параметра блок использует полный тип данных накопителя в качестве адреса таблицы подстановки. В этом случае N - значение параметра длины Accumulator Word.

Число битов накопителя квантователя, заданное как целое скалярное число, меньшее длины слова накопителя. Для генерации кода HDL это значение параметра должно привести к размеру LUT от 2 до 217 записей. Если выбран параметр Включить метод сжатия таблицы поиска, этот параметр должен быть больше 4 и меньше 22. При снятии флажка Включить метод сжатия таблицы поиска этот параметр должен быть больше 2 и меньше 20. Дополнительные сведения о том, как этот параметр влияет на размер LUT, см. в разделе Алгоритмы.

Зависимости

Чтобы включить этот параметр, выберите параметр фазы квантования.

Укажите тип данных для портов sin, cos и exp. Этот параметр игнорируется, если какой-либо вход имеет тип с плавающей запятой. В этом случае тип выходных данных - плавающая точка.

При выборе Binary point scaling, блок определяет тип данных с фиксированной точкой с помощью параметров «Выходной знак», «Длина выходного слова» и «Длина выходной дроби».

Этот параметр доступен только для чтения. Все выходные данные имеют формат подписи.

Единицы измерения представлены в битах. Это значение должно включать бит знака.

Единицы измерения представлены в битах.

Алгоритмы

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

Реализация NCO зависит от выбора опции Включить метод сжатия таблицы поиска.

Без сжатия таблицы подстановки блок использует ту же четверть-синусоидальную таблицу подстановки, что и блок NCO. Размер LUT является 2Number битов-накопителей квантователя - битов длины выходного слова 2 ×.

Если фаза квантования не включена, то число битов накопителя квантователя = длина слова накопителя. При выборе этих параметров учитывайте влияние на память симулятора и аппаратные ресурсы.

Вопросы совместимости

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

В R2020a изменилось поведение

В R2020a изменилось поведение

В R2020a изменилось поведение

Ссылки

[1] Cordesses, L., «Direct Digital Synthesis: A Tool for Periodic Wave Generation (Part 1)». Журнал обработки сигналов IEEE. Том 21, выпуск 4, июль 2004 года, стр. 50-54.

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

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