NCO HDL Optimized

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

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

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

  • 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)

Dither, заданный как целое число или вектор-столбец целых чисел. Длина вектора должна равняться 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 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, этот параметр должен быть больше 4 и меньше 22. Когда вы очищаете Enable look up table compression method, этот параметр должен быть больше 2 и меньше 20. Для получения дополнительной информации о том, как этот параметр влияет на размер LUT, смотрите раздел «Алгоритмы».

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

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

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

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

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

Количество двоичных разрядов аккумулятора квантования, заданное как целочисленный скаляр, меньше размер слова аккумулятора. Для генерации HDL-кода это значение параметров должно привести к размеру LUT между 2 и 217 записи. Когда вы выбираете Enable look up table compression method, этот параметр должен быть больше 4 и меньше 22. Когда вы очищаете Enable look up table compression method, этот параметр должен быть больше 2 и меньше 20. Для получения дополнительной информации о том, как этот параметр влияет на размер LUT, смотрите раздел «Алгоритмы».

Зависимости

Чтобы включить этот параметр, выберите параметр 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 of quantizer accumulator bits-2× Output word length биты.

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

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

расширить все

Поведение изменено в R2020a

Поведение изменено в R2020a

Поведение изменено в R2020a

Ссылки

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

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

.

См. также

Блоки

Объекты

Введенный в R2013a