NCO

Сгенерируйте действительные или сложные синусоидальные сигналы

  • Библиотека:
  • Системный тулбокс DSP/сигнальные операции

    Системный тулбокс/источники DSP

  • NCO blockNCO block

Описание

Блок NCO генерирует многоканальный действительный или комплексный синусоидальный сигнал с независимыми частотой и фазой в каждом выходном канале. Амплитуда созданного сигнала всегда 1. Блок NCO поддерживает только действительные входы. Все выходы действительны, кроме выхода сигнала в Complex exponential режим. Для получения дополнительной информации о том, как блок вычисляет выход, см. Алгоритмы.

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

Порты

Вход

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

Сигнал шага фазы, заданный как действительный скаляр или вектор. Вход должен иметь целочисленный тип данных или тип данных с фиксированной точкой с нулевой длиной дроби. Размерности сигнала шага фазы зависят от того, как вы принимаете решение задать параметр Phase offset:

  • Когда вы задаете Phase offset в диалоговом окне блока, Phase increment должен быть скаляром или вектором с той же длиной, что и Phase offset значение. Блок применяет каждый элемент вектора к другому каналу, и поэтому длина вектора определяет количество выхода каналов.

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

Зависимости

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

Типы данных: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

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

Зависимости

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

Типы данных: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Выход

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

Синусоидальный выходной сигнал, заданный как скаляр, вектор или матрица. Можно задать тип данных сигнала с помощью параметра Output data type.

Зависимости

Чтобы включить этот порт, установите Output signal равным Sine или Sine and cosine.

Типы данных: single | double | fixed point

Косинусоидальный выходной сигнал задан как скаляр, вектор или матрица. Можно задать тип данных сигнала, используя параметр Output Data Type.

Зависимости

Чтобы включить этот порт, установите Output signal равным Cosine или Sine and cosine.

Типы данных: single | double | fixed point

Комплексный экспоненциальный выход, заданный как скаляр, вектор или матрица. Можно задать тип данных сигнала, используя параметр Output Data Type.

Зависимости

Чтобы включить этот порт, установите Output signal равным Complex exponential.

Типы данных: single | double | fixed point
Поддержка комплексного числа: Да

Ошибка квантования фазы, заданная как скаляр, вектор или матрица.

Зависимости

Чтобы включить этот порт, установите флажок Show phase quantization error port.

Типы данных: int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

Параметры

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

Главный

Фаза параметров сумматора

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

  • Если вы выбираете Input portна значке блока появляется inc входной порт.

  • Если вы выбираете Specify via dialog, появляется параметр Phase increment.

Зависимости

Когда блок приходит из библиотеки Signal Operations, значение по умолчанию параметра Phase increment Source Input port.

Когда блок поступает из библиотеки Sources, значение по умолчанию параметра Phase increment Source Specify via dialog.

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

  • Когда вы задаете смещение фазы в диалоговом окне блока, шаг фазы должен быть скаляром или вектором с той же длиной, что и смещение фазы. Блок применяет каждый элемент вектора к другому каналу, и поэтому длина вектора определяет количество выхода каналов.

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

Зависимости

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

Выберите способ задания смещения фазы. Смещение фазы может происходить из порта входа или из диалогового окна.

  • Если вы выбираете Input portпорт offset появляется на значке блока.

  • Если вы выбираете Specify via dialog, появляется параметр Phase offset.

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

Зависимости

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

Выберите, чтобы добавить внутреннюю дитеринг к алгоритму NCO. Ditering добавляется с помощью PN Sequence Generator (Communications Toolbox) из продукта Communications Toolbox™.

Задайте количество бит dither в виде положительного целого числа.

Зависимости

Чтобы включить этот порт, установите флажок Add internal dither.

Чтобы включить квантование накопленной фазы, установите этот флажок.

Задайте количество квантованных двоичных разрядов аккумулятора как скаляр целое число, больше единицы и меньше, чем размер слова аккумулятора. Это значение определяет количество записей в интерполяционной таблице.

Зависимости

Чтобы включить этот порт, установите флажок Quantize phase.

Выберите для вывода ошибки квантования фазы. При установке этого флажка на значке блока появляется Qerr порт.

Зависимости

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

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

Выберите, выводит ли блок Sine, Cosine, Complex exponential, или и то, и другое Sine and cosine сигналы. Если вы выбираете Sine and cosine, эти два сигнала выводятся на различные порты.

Когда блок действует как источник, задайте шаг расчета в секундах как положительная скалярная величина.

Зависимости

Чтобы включить этот параметр, и Phase increment source, и Phase offset source должны быть установлены на Specify via dialog. Когда либо шаг фазы, либо смещение фазы поступают через входной порт блока, шаг расчета наследуется, и этот параметр не отображается.

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

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

Зависимости

Чтобы включить этот набор параметров Phase increment source и/или Phase offset source к Specify via dialog.

Типы данных

Это свойство доступно только для чтения.

Когда вход является фиксированной точкой, блок NCO всегда использует режим округления Floor.

Это свойство доступно только для чтения.

Когда вход является фиксированной точкой, блок NCO всегда использует режим переполнения Wrap.

Задайте Word length для Accumulator как положительное целое число от 2 до 128. Этот Data Type всегда Binary point scalingи Fraction length всегда 0.

Задайте Data Type для Output блоков.

  • Выберите double или single для реализации с плавающей точкой.

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и длину дроби выхода, в битах.

Примечание

Интерполяционная таблица для этого блока построена из значений с плавающей точностью с двойной точностью. Таким образом, максимальная точность, которую вы можете достичь в своем выходе, составляет 53 бита. Установка размера слова типа Output данных более 53 биты не улучшает точность выхода.

Задайте Word length для блока Output как положительное целое число от 2 до 128.

Зависимости

Чтобы включить этот параметр, установите Data Type для Output равным Binary point scaling.

Задайте Fraction length для блока Output как скаляр целое число.

Зависимости

Чтобы включить этот параметр, установите Data Type для Output равным Binary point scaling.

Характеристика NCO

Панель NCO Characterization предоставляет подробные данные о NCO-сигнале, реализуемом блоком только для чтения:

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

2количество  квантованных  двоичных разрядов аккумулятора2+1

Пример: 1025

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

(number of data points for lookup table)(output word length)8 байты

Пример: 2050 байт

Паразитная свободная динамическая область значений (SFDR) вычисляется следующим образом для интерполяционной таблицы с 2P записи:

SFDR=(6P) дБ        без   dither SFDR=(6P+12) дБ    с dither

Пример: 84 дБк

Разрешение частоты является наименьшим возможным инкрементальным изменением частоты и определяется:

Δf=1Ts2NHz

Пример: 15.2588 uHz

Зависимости

Разрешение частоты появляется только, когда вы задаете Phase increment source и Phase offset source Specify via dialog.

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

Типы данных

fixed point | integer

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

no

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

no

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

no

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

no

Алгоритмы

Блок реализует алгоритм, как показано на следующей схеме:

Реализация численно управляемого генератора (NCO) имеет две отдельные части. Во-первых, фазовый аккумулятор накапливает шаг фазы и складывает смещение фазы. На этом этапе также может быть добавлен дополнительный внутренний dither. Выход NCO затем вычисляется путем квантования результатов секции аккумулятора фазы и использования их, чтобы выбрать значения из интерполяционной таблицы. Поскольку интерполяционная таблица содержит конечный набор записей, в своем режиме normal mode работы NCO блок позволяет числовым значениям сумматора переполняться и оборачиваться. Затем инфраструктура Fixed-Point приводит к появлению предупреждений о переполнении в командной строке. Это переполнение не имеет никакого последствия.

Учитывая необходимый выход частоту F 0, вычислите значение Phase increment параметров блоков с

phase increment=(F02NFs)

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

Fs=1Ts=1sample time

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

Δf=1Ts2NHz

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

phase offset=2Ndesired phase offset2π

Паразитная свободная динамическая область значений (SFDR) оценивается следующим образом для интерполяционной таблицы с 2P записи, где P количество квантованных двоичных разрядов аккумулятора:

SFDR=(6P) дБ        без   dither SFDR=(6P+12) дБ    с dither

Блок NCO использует метод интерполяционной таблицы с четвертью волны, который хранит значения таблицы от 0 до Блок вычисляет другие значения по запросу, используя тип данных аккумулятора, затем переводит их в тип выходных данных. Это может привести к эффектам квантования в пределах области значений заданного типа данных. Для примера рассмотрим случай, когда вы ожидаете, что значение синусоиды будет -1 в Поскольку значение интерполяционной таблицы в этой точке должно быть вычислено, блок может не дать точно -1, в зависимости от точности аккумулятора и типов выходных данных.

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

.

См. также

Блоки

Объекты

Представлено до R2006a