Документация Engee

Числовой задающий генератор (NCO)

Генерирует вещественные или комплексные синусоидальные сигналы.

Тип: NCO

Путь в библиотеке:

/Signal Operations/Sources/NCO

Описание

Блок Числовой задающий генератор (NCO) генерирует многоканальный вещественный или комплексный синусоидальный сигнал с независимой частотой и фазой в каждом выходном канале. Амплитуда созданного сигнала всегда равна 1. Все выходы являются вещественными, за исключением exp – выходного сигнала формируемого в режиме Комплексная экспонента, который включается путем выбора соответствующего пункта в выпадающем списке Выходной сигнал. Более подробную информацию о том, как блок вычисляет выходной сигнал, см. в Алгоритмы.

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

Порты

Выход

# sin — синусоидальный выход
скаляр | вектор | матрица

Details

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

Зависимости

Чтобы использовать этот порт, установите для параметра Выходной сигнал значение Синус или Синус и косинус.

Типы данных

Float32, Float64, Fixed

Поддержка комплексных чисел

Нет

# Qerr — ошибка квантования фазы
скаляр | вектор | матрица

Details

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

Зависимости

Чтобы использовать этот порт, установите флажок Показывать порт ошибки квантования фазы.

Типы данных

Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64, Fixed

Поддержка комплексных чисел

Нет

# cos — косинусоидальный выход
скаляр | вектор | матрица

Details

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

Зависимости

Чтобы использовать этот порт, установите для параметра Выходной сигнал значение Косинус или Синус и косинус.

Типы данных

Float32, Float64, Fixed

Поддержка комплексных чисел

Нет

# exp — комплексный экспоненциальный выход
скаляр | вектор | матрица

Details

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

Зависимости

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

Типы данных

Float32, Float64, Fixed

Поддержка комплексных чисел

Да

Вход

# offset — сдвиг фазы
скаляр | вектор | матрица

Details

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

Зависимости

Чтобы использовать этот порт, установите для параметра Источник смещения фазы значение Входной порт.

Типы данных

Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64, Fixed

Поддержка комплексных чисел

Нет

# inc — приращение фазы
скаляр | вектор

Details

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

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

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

Зависимости

Чтобы использовать этот порт, установите для параметра Источник приращения фазы значение Входной порт.

Типы данных

Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64, Fixed

Поддержка комплексных чисел

Нет

Параметры

Параметры фазового сумматора

# Источник приращения фазы — способ задания приращения фазы
Из поля для ввода | Входной порт

Details

Выберите способ задания приращения фазы:

  • Входной порт — значение приращения фазы будет поступать на входной порт inc;

  • Из поля для ввода — значение приращения фазы можно задать в параметре Приращение фазы.

Значения

Specify via dialog | Input port

Значение по умолчанию

Specify via dialog

Имя для программного использования

PhaseIncrementSource

Настраиваемый

Нет

Вычисляемый

Нет

# Приращение фазы — значение приращения фазы

Details

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

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

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

Зависимости

Чтобы использовать этот параметр, установите для параметра Источник приращения фазы значение Из поля для ввода.

Значение по умолчанию

100

Имя для программного использования

PhaseIncrement

Настраиваемый

Нет

Вычисляемый

Да

# Источник смещения фазы — способ задания сдвига фазы
Из поля для ввода | Входной порт

Details

Выберите способ задания сдвига фазы:

  • Входной порт — значение сдвига фазы будет поступать на входной порт offset;

  • Из поля для ввода — значение сдвига фазы можно задать в параметре Смещение фазы.

Значения

Specify via dialog | Input port

Значение по умолчанию

Specify via dialog

Имя для программного использования

PhaseOffsetSource

Настраиваемый

Нет

Вычисляемый

Нет

# Смещение фазы — значение сдвига фазы

Details

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

Зависимости

Чтобы использовать этот параметр, установите для параметра Источник смещения фазы значение Из поля для ввода.

Значение по умолчанию

0

Имя для программного использования

PhaseOffset

Настраиваемый

Нет

Вычисляемый

Да

# Добавить внутреннее дрожание — добавить внутренний шум
Логический тип

Details

Установите этот флажок, чтобы добавить сглаживание в алгоритм NCO. Сглаживание добавляется с помощью алгоритма, применяемого в блоке Генератор PN последовательности последовательности.

Значение по умолчанию

true (включено)

Имя для программного использования

AddInternalDither

Настраиваемый

Нет

Вычисляемый

Нет

# Количество бит дрожания — количество битов сглаживания
Вещественное число

Details

Укажите количество битов сглаживания в виде целого положительного числа.

Зависимости

Чтобы использовать этот порт, установите флажок Добавить внутреннее дрожание.

Значение по умолчанию

4

Имя для программного использования

NumDitherBits

Настраиваемый

Нет

Вычисляемый

Да

# Квантовать фазу — включить квантование накопленной фазы
Логический тип

Details

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

Значение по умолчанию

true (включено)

Имя для программного использования

QuantizePhase

Настраиваемый

Нет

Вычисляемый

Нет

# Количество бит квантованного аккумулятора — количество квантованных битов накопителя
Вещественное число

Details

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

Зависимости

Чтобы использовать этот параметр, установите флажок Квантовать фазу.

Значение по умолчанию

12

Имя для программного использования

NumQuantizeAccBits

Настраиваемый

Нет

Вычисляемый

Да

# Показывать порт ошибки квантования фазы — вывод ошибки квантования фазы
Логический тип

Details

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

Зависимости

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

Значение по умолчанию

false (выключено)

Имя для программного использования

ShowErrPort

Настраиваемый

Нет

Вычисляемый

Нет

Параметры выхода

# Выходной сигнал — выходной сигнал
Синус | Косинус | Комплексная экспонента | Синус и косинус

Details

Выберите, какой сигнал выводит блок: Синус, Косинус, Комплексная экспонента или два сигнала Синус и косинус. Если вы выберете Синус и косинус, то сигналы будут выводиться на разные порты.

Значения

Sine | Cosine | Complex exponential | Sine and cosine

Значение по умолчанию

Sine

Имя для программного использования

OutputSignal

Настраиваемый

Нет

Вычисляемый

Нет

# Период дискретизации — период дискретизации
Вещественное число

Details

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

Зависимости

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

Значение по умолчанию

1

Имя для программного использования

SampleTimeParam

Настраиваемый

Нет

Вычисляемый

Да

# Отсчётов на кадр — отсчеты на кадр
Вещественное число

Details

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

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

Зависимости

Чтобы использовать этот параметр, установите для параметра Источник приращения фазы и/или для параметра Источник смещения фазы значение Из поля для ввода.

Значение по умолчанию

1

Имя для программного использования

SamplePerFrame

Настраиваемый

Нет

Вычисляемый

Да

Операционные параметры в виде фиксированной точки

# Режим округления — метод округления
Округление вниз

Details

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

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

Значения

Floor

Значение по умолчанию

Floor

Имя для программного использования

RM

Настраиваемый

Нет

Вычисляемый

Нет

# Режим переполнения — метод при переполнении
Циклический

Details

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

Когда на входе тип данных с фиксированной точкой, блок Числовой задающий генератор (NCO) всегда использует метод при переполнении Циклический.

Значения

Wrap

Значение по умолчанию

Wrap

Имя для программного использования

OM

Настраиваемый

Нет

Вычисляемый

Нет

Аккумулятор

# Тип данных — тип данных накопителя
Масштабирование по двоичной точке

Details

Указывает тип данных накопителя.

Значения

Binary point scaling

Значение по умолчанию

Binary point scaling

Имя для программного использования

AccDataType

Настраиваемый

Нет

Вычисляемый

Нет

# Знаковый — знаковый тип данных накопителя
да

Details

Указывает, что тип данных накопителя является знаковым.

Значения

yes

Значение по умолчанию

yes

Имя для программного использования

AccSign

Настраиваемый

Нет

Вычисляемый

Нет

# Длина слова — длина слова накопителя
Вещественное число

Details

Укажите длину слова накопителя в виде положительного целого числа от 2 до 128.

Значение по умолчанию

16

Имя для программного использования

AccWorldLen

Настраиваемый

Нет

Вычисляемый

Да

# Длина дробной части — длина дроби данных накопителя
0

Details

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

Значения

0

Значение по умолчанию

0

Имя для программного использования

AccFracLen

Настраиваемый

Нет

Вычисляемый

Нет

Выход

# Тип данных — тип выходных данных
Масштабирование по двоичной точке | Float64 | Float32

Details

Укажите тип выходных данных:

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

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

Примечание

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

Значения

Binary point scaling | Float64 | Float32

Значение по умолчанию

Binary point scaling

Имя для программного использования

OutputDataType

Настраиваемый

Нет

Вычисляемый

Нет

# Знаковый — знаковый тип выходных данных
да

Details

Указывает, является ли тип выходных данных знаковым.

Зависимости

Чтобы использовать этот параметр, установите для параметра Тип данных значение Масштабирование по двоичной точке.

Значения

yes

Значение по умолчанию

yes

Имя для программного использования

OutputSign

Настраиваемый

Нет

Вычисляемый

Нет

# Длина слова — длина слова выходных данных
Вещественное число

Details

Укажите длину слова выходных данных в виде положительного целого числа от 2 до 128.

Зависимости

Чтобы использовать этот параметр, установите для параметра Тип данных значение Масштабирование по двоичной точке.

Значение по умолчанию

16

Имя для программного использования

OutputWorldLen

Настраиваемый

Нет

Вычисляемый

Да

# Длина дробной части — длина дроби выходных данных
Вещественное число

Details

Укажите длину дроби выходных данных в виде скалярного целого числа.

Зависимости

Чтобы использовать этот параметр, установите для параметра Тип данных значение Масштабирование по двоичной точке.

Значение по умолчанию

14

Имя для программного использования

OutputFracLen

Настраиваемый

Нет

Вычисляемый

Да

Алгоритмы

На схеме ниже показан алгоритм, который реализует блок.

nco 1 ru

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

Учитывая желаемую выходную частоту , рассчитайте значение параметра блока Приращение фазы следующим образом:

где — длина слова накопителя, а

Частотное разрешение NCO в Гц определяется как:

Учитывая желаемый сдвиг фазы (в радианах), рассчитайте параметр блока Смещение фазы следующим образом:

Динамический диапазон без помех (spurious free dynamic range, SFDR) для таблицы поиска с записей, где — количество квантованных битов накопителя, оценивается следующим образом:

  • дБ, без шумов;

  • дБ, c шумами.

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