NCO HDL Optimized

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

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

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

  • NCO HDL Optimized block

Описание

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

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

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

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

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

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

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

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

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

Для желаемой выходной частоты F o, вычислите phase increment при помощи phase increment=round(F0Ts2Nacc), где Nacc является размером слова аккумулятора. Можно задать шаг фазы использование параметра или входного порта.

Учитывая желаемое смещение фазы (в радианах), вычислите входное значение phase offset при помощи phase offset=2Naccdesired phase offset2π. Можно задать смещение фазы с помощью параметра или входного порта.

Порты

Примечание

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

  • Этот блок появляется в библиотеках Signal Operations с набором параметров Phase increment source к 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-кода.

Зависимости

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

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

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

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

Зависимости

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

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

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

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

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

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

Зависимости

Чтобы включить этот порт, выберите параметр Enable accumulator 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 значение параметров Number of quantizer accumulator bits. Если квантование отключено, то N значение параметров Accumulator Word length, Если какое-либо входное значение является типом с плавающей точкой, блок возвращает phase как значение с плавающей точкой.

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

Зависимости

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

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

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

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

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

Параметры

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

Основной

Примечание

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

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

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

Шаг фазы для сгенерированного форма волны в виде целого числа.

Зависимости

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

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

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

Фаза возмещена для сгенерированной формы волны в виде целого числа.

Зависимости

Чтобы включить этот параметр, установите параметр 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.

Когда вы устанавливаете это значение к 1, блок имеет скалярный ввод и вывод. Когда это значение больше 1, порт dither ожидает вектор-столбец длины Samples per frame и sin, cos, exp, и порты phase возвращают вектор-столбцы длины Samples per frame.

По умолчанию блок реализует несжатую интерполяционную таблицу, и выход этого блока совпадает с выходом блока 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 на порте phase. Фазой является выход квантованного аккумулятора со смещением и примененным шагом. Если квантование отключено, этот порт возвращает выходной параметр аккумулятора со смещением и примененным шагом.

Типы данных

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

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

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

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

Модули находятся в битах. Это значение должно включать знаковый бит.

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

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

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

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

Разрешение частоты NCO задано Δf=1Ts2NГц, где N является значением параметров Number of quantizer accumulator bits.

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

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

Зависимости

Чтобы включить этот параметр, выберите параметр Quantize phase.

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

Если вы выбираете 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. Рассмотрите удар на ресурсы памяти средства моделирования и аппаратные ресурсы, когда вы выберете эти параметры.

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

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

Поведение изменяется в R2020a

Поведение изменяется в R2020a

Поведение изменяется в R2020a

Ссылки

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

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

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

Блоки

Объекты

Введенный в R2013a