Оптимизированный HDL NCO

Сгенерируйте действительный или объедините синусоидальные сигналы — оптимизированный для генерации HDL-кода

  • Библиотека:
  • DSP System Toolbox / Операции Сигнала

    DSP System Toolbox / Источники

    Поддержка HDL DSP System Toolbox / Операции Сигнала

    Поддержка HDL DSP System Toolbox / источники

Описание

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

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

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

  • Опция, чтобы синтезировать интерполяционную таблицу к ROM при использовании HDL Coder™ с целью FPGA. Чтобы активировать эту опцию, щелкните правой кнопкой по блоку, выберите HDL Code> HDL Block Properties и установите LUTRegisterResetType на none.

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

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

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

Учитывая желаемую выходную частоту F 0, вычислите использование входного значения phase increment

phase increment=(F02NFs)

, где N является размером слова аккумулятора и

Fs=1Ts=1sample time

Можно задать шаг фазы использование параметра или входного порта.

Разрешение частоты NCO задано

Δf=1Ts2NГц

Учитывая желаемое смещение фазы (в радианах), вычислите использование входного значения phase offset

phase offset=2Ndesired phase offset2π

Можно задать смещение фазы с помощью параметра или входного порта.

Когда вы используете входные сигналы с плавающей точкой, блок не квантует накопление. Поэтому необходимо выбрать шаг и сместить значения, чтобы представлять часть 2π без квантования, видеть, Вычисляют Шаг Фазы С плавающей точкой для Оптимизированного HDL NCO.

Порты

Примечание

  • Этот блок появляется в библиотеках Sources с набором параметра Phase increment source к Property. Единственным входным портом является validIn.

  • Этот блок появляется в библиотеках Signal Operations с набором параметра Phase increment source к Input port. Эта настройка показывает дополнительному входному порту inc.

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

Входной параметр

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

Шаг фазы, заданный как скалярное целое число. Если шаг является значением фиксированной точки, блок использует только целочисленные биты и игнорирует любые дробные биты. double и типы данных single поддерживаются для симуляции, но не для генерации HDL-кода. Когда вы используете входные сигналы с плавающей точкой, необходимо выбрать шаг и сместить значения, чтобы представлять часть 2π, видеть, Вычисляют Шаг Фазы С плавающей точкой для Оптимизированного HDL NCO.

Зависимости

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

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

Смещение фазы, заданное как скалярное целое число. Если смещение является значением фиксированной точки, блок использует только целочисленные биты и игнорирует любые дробные биты. double и типы данных single поддерживаются для симуляции, но не для генерации HDL-кода. Когда вы используете входные сигналы с плавающей точкой, необходимо выбрать шаг и сместить значения, чтобы представлять часть 2π, видеть, Вычисляют Шаг Фазы С плавающей точкой для Оптимизированного HDL NCO.

Зависимости

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

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

Размойтесь, заданный как скалярное целое число. double и типы данных single поддерживаются для симуляции, но не для генерации HDL-кода.

Зависимости

Чтобы включить этот порт, установите Dither source на Input port.

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

Управляющий сигнал, который сбрасывает аккумулятор, заданный как скалярная булевская переменная. Когда этим сигналом является true (1), блок сбрасывает аккумулятор к 0.

Зависимости

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

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

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

Зависимости

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

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

Вывод

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

Сгенерированная форма волны, возвращенная как скалярный sin или значение cos, как скалярное значение exp, представляющее sine + j*cosine, или как два значения, sin и cos. Если какой-либо вход является типом с плавающей точкой, блок возвращает значения с плавающей точкой, в противном случае блок возвращает значения фиксированной точки. Типы с плавающей точкой поддерживаются для симуляции, но не для генерации HDL-кода.

Зависимости

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

Текущая фаза NCO, возвращенного как скаляр типа fixdt(1,M,-Z), где M является количеством квантованных двоичных разрядов сумматора и Z, является размером слова аккумулятора. Блок возвращает phase как плавающую точку, если вход к блоку является плавающей точкой. Типы с плавающей точкой поддерживаются для симуляции, но не для генерации HDL-кода.

Зависимости

Чтобы включить этот порт, выберите Enable phase port.

Типы данных: single | double | fixdt(1,NumQuantizerAccumulatorBits,-AccumulatorWL)

Управляющий сигнал, который указывает, допустимы ли другие значения выходного порта или нет. Когда validOut является true (1), значения на sin, cos, exp, и порты phase допустимы. Когда validOut является false (0), значения на выходных портах не допустимы.

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

Параметры

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

Основной

Примечание

Этот блок поддерживает вход double и single для симуляции, но не для генерации HDL-кода. Когда вход является фиксированной точкой, или когда все входные порты отключены, блок вычисляет выходную форму волны на основе настроек маски фиксированной точки. Когда вход является плавающей точкой, блок вычисляет выходную форму волны с двойной точностью и игнорирует параметры, связанные с настройками фиксированной точки (Number of dither bits, Quantize phase, Number of quantizer accumulator bits, Enable look up table compression method и вкладка Data Types).

Чтобы использовать тип данных заменяют функцию Fixed-Point Designer™, можно получить выходное значение double путем применения входных данных double к одному из дополнительных портов. Когда вы переключаетесь на использование шага фазы с плавающей точкой, необходимо настроить значение шага, чтобы считать из-за отсутствия квантования фазы. Смотрите Вычисляют Шаг Фазы С плавающей точкой для Оптимизированного HDL NCO.

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

Шаг фазы для сгенерированного форма волны, заданная как скалярное целое число. Если шаг является значением фиксированной точки, блок использует только целочисленные биты и игнорирует любые дробные биты. double и типы данных single поддерживаются для симуляции, но не для генерации HDL-кода. Когда вы используете входные сигналы с плавающей точкой, необходимо выбрать шаг и сместить значения, чтобы представлять часть 2π, видеть, Вычисляют Шаг Фазы С плавающей точкой для Оптимизированного HDL NCO.

Зависимости

Этот параметр видим, когда вы устанавливаете Phase increment source на Property.

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

Можно установить смещение фазы с входным портом или путем ввода значения для параметра. Если вы выбираете Property, параметр Phase offset, кажется, для вас вводит значение. Если вы выбираете Input port, порт offset появляется на блоке.

Смещение фазы для сгенерированной формы волны, заданной как скалярное целое число. Если шаг является значением фиксированной точки, блок использует только целочисленные биты и игнорирует любые дробные биты. double и типы данных single поддерживаются для симуляции, но не для генерации HDL-кода. Когда вы используете входные сигналы с плавающей точкой, необходимо выбрать шаг и сместить значения, чтобы представлять часть 2π, видеть, Вычисляют Шаг Фазы С плавающей точкой для Оптимизированного HDL NCO.

Зависимости

Этот параметр видим, когда вы устанавливаете Phase offset source на Property.

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

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

Количество битов dither, заданных как положительное целое число.

Зависимости

Этот параметр видим, когда вы устанавливаете Dither source на Property.

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

Разрешение частоты NCO задано

Δf=1Ts2NГц

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

Количество двоичных разрядов сумматора квантизатора, заданных как целочисленный скаляр, больше, чем 1 и меньше, чем размер слова аккумулятора. Этот параметр должен быть меньше чем или равен 17 битам для генерации HDL-кода. Интерполяционная таблица значений синуса имеет 2NumQuantizerAccumBits-2 записи.

Зависимости

Этот параметр видим, когда вы выбираете Quantize phase.

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

Когда эта опция отключена, вывод этого блока совпадает с выводом блока NCO.

Когда выбрано, порт reset появляется на блоке. Когда reset является true (1), блок сбрасывает аккумулятор, чтобы обнулить.

Когда выбрано, порт validIn появляется на блоке. Когда validIn является true (1), блок постепенно увеличивает фазу. Когда validIn является false (0), фаза сохранена.

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

Выведите текущую фазу аккумулятора, когда выбрано.

Типы данных

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

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

Описание типов данных аккумулятора. Этот параметр только для чтения со значением Binary point scaling. Блок задает тип данных с фиксированной точкой с помощью Accumulator Signed, Accumulator Word length и параметров Accumulator Fraction length.

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

Размер слова аккумулятора, в битах, заданных как скалярное целое число.

Если Quantize phase отключен, этот параметр должен быть меньше чем или равен 17 битам для генерации HDL-кода.

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

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

Задайте тип данных выходного сигнала. Если вы выбираете Binary point scaling, блок задает тип данных с фиксированной точкой с помощью Output Signed, Output Word length и параметров Output Fraction length.

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

Выведите размер слова, в битах, заданных как скалярное целое число.

Выведите дробную длину, в битах, заданных как скалярное целое число.

Характеристики блока

Типы данных

fixed point | integer

Прямое сквозное соединение

no

Многомерные сигналы

no

Сигналы переменного размера

no

Обнаружение пересечения нулем

no

Алгоритмы

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

Реализация NCO зависит от того, выбираете ли вы Enable look up table compression method.

Без сжатия интерполяционной таблицы блок использует ту же интерполяционную таблицу четверти синуса в качестве блока NCO. Размер LUT 2Number квантизатора accumulator bits-2×Output word length биты.

Если вы не включаете Quantize phase, то Number of quantizer accumulator bits =Accumulator Word length. Рассмотрите влияние на ресурсы памяти средства моделирования и аппаратные ресурсы, когда вы выберете эти параметры.

Ссылки

[1] Cordesses, L., "Прямой цифровой синтез: Инструмент для Периодической Генерации Волны (Часть 1)". Журнал Обработки сигналов IEEE. Объем 21, Выпуск 4, июль 2004, стр 50–54.

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

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

Блоки

Системные объекты

Введенный в R2013a