NCO HDL Optimized

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

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

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

  • NCO HDL Optimized block

Описание

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

Генератор с программным управлением (NCO) накапливает шаг фазы и использует квантованный выход аккумулятора как индекс к интерполяционной таблице, которая содержит значения синусоиды. Переносить типов данных аккумулятора и квантизатора фиксированной точки обеспечивает периодичность синусоиды, и квантование уменьшает необходимый размер таблицы для данного разрешения частоты.

Для примера того, как сгенерировать синусоиду с помощью блока NCO HDL Optimized, смотрите, Генерируют Sine wave. Для получения дополнительной информации о настройке и реализации, обратитесь к разделу Algorithms.

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

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

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

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

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

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

Порты

Примечание

  • Этот блок появляется в библиотеках 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, то Accumulator word length определяет размер LUT. Для генерации HDL-кода размер LUT должен быть между 2 и 217 записи. Когда вы выбираете Enable look up table compression method, этот параметр должен быть целым числом в области значений [5,21]. Когда вы очищаете Enable look up table compression method, этот параметр должен быть целым числом в области значений [3,19]. Для получения дополнительной информации о том, как этот параметр влияет на размер LUT, смотрите раздел Algorithms.

Когда вы выбираете параметр Quantize phase, нет никакого предела значению параметров Accumulator word length.

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

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

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

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

Количество двоичных разрядов аккумулятора квантизатора в виде целочисленного скаляра меньше, чем размер слова аккумулятора. Для генерации HDL-кода это значение параметров должно привести к размеру LUT между 2 и 217 записи. Когда вы выбираете Enable look up table compression method, этот параметр должен быть целым числом в области значений [5,21]. Когда вы очищаете Enable look up table compression method, этот параметр должен быть целым числом в области значений [3,19]. Для получения дополнительной информации о том, как этот параметр влияет на размер LUT, смотрите раздел Algorithms.

Зависимости

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

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

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

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

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

Модули находятся в битах.

Алгоритмы

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

Разрешение частоты синусоиды зависит от размера аккумулятора. Учитывая шаг расчета, T s и желаемое выходное разрешение частоты Δf, вычисляют необходимый размер слова аккумулятора, N.

N=ceil(log2(1TsΔf))

Для желаемой выходной частоты F o, вычислите phase increment.

phase increment=round(F0Ts2N)

Квантование выхода аккумулятора фазы позволяет вам уменьшать размер интерполяционной таблицы, не понижая разрешение частоты. Вычислите квантованный размер слова, чтобы достигнуть желаемого свободного от паразитных составляющих динамического диапазона (SFDR).

Q=ceil(SFDR126)

Смещение фазы и dither опционально добавляются на этапе аккумулятора. Для желаемого смещения фазы (в радианах) выходной формы волны, вычислите значение phase offset, которое блок добавляет в аккумуляторе.

phase offset=2Ndesired phase offset2π

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

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

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

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

Для примера того, как сгенерировать синусоиду с помощью блока NCO HDL Optimized, смотрите, Генерируют Sine wave.

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

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

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

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

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

Ссылки

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

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

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

Блоки

Объекты

Введенный в R2013a
Для просмотра документации необходимо авторизоваться на сайте