NCO HDL Optimized

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

  • Библиотека:
  • Поддержка 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.

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

Когда выбрано, порт 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.

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

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

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

Алгоритмы

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

Реализация 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