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

NCO

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

Тип: NCO

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

/Signal Operations/Sources/NCO

Описание

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

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

Порты

Выход

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

Details

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

Зависимости

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

Типы данных

Float32, Float64, Fixed

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

Нет

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

Details

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

Зависимости

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

Типы данных

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

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

Нет

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

Details

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

Зависимости

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

Типы данных

Float32, Float64, Fixed

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

Нет

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

Details

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

Зависимости

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

Типы данных

Float32, Float64, Fixed

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

Да

Вход

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

Details

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

Зависимости

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

Типы данных

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

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

Нет

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

Details

Сигнал приращения фазы, заданный в виде скаляра или вектора с вещественным значением. Вход должен иметь целочисленный тип данных или тип данных с фиксированной точкой с нулевой длиной дроби. Размеры сигнала приращения фазы зависят от того, как вы решили указать параметр 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

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

Нет

Параметры

Phase adder parameters

# Phase increment source — способ задания приращения фазы
Specify via dialog | Input port

Details

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

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

  • Specify via dialog — значение приращения фазы можно задать в параметре Phase increment.

Значения

Specify via dialog | Input port

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

Specify via dialog

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

PhaseIncrementSource

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

Нет

Вычисляемый

Нет

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

Details

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

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

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

Зависимости

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

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

100

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

PhaseIncrement

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

Нет

Вычисляемый

Да

# Phase offset source — способ задания сдвига фазы
Specify via dialog | Input port

Details

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

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

  • Specify via dialog — значение сдвига фазы можно задать в параметре Phase offset.

Значения

Specify via dialog | Input port

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

Specify via dialog

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

PhaseOffsetSource

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

Нет

Вычисляемый

Нет

# Phase offset — значение сдвига фазы

Details

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

Зависимости

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

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

0

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

PhaseOffset

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

Нет

Вычисляемый

Да

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

Details

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

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

true (включено)

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

AddInternalDither

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

Нет

Вычисляемый

Нет

# Number of dither bits — количество битов сглаживания
Вещественное число

Details

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

Зависимости

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

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

4

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

NumDitherBits

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

Нет

Вычисляемый

Да

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

Details

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

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

true (включено)

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

QuantizePhase

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

Нет

Вычисляемый

Нет

# Number of quantized accumulator bits — количество квантованных битов накопителя
Вещественное число

Details

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

Зависимости

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

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

12

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

NumQuantizeAccBits

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

Нет

Вычисляемый

Да

# Show phase quantization error port — вывод ошибки квантования фазы
Логический тип

Details

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

Зависимости

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

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

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

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

ShowErrPort

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

Нет

Вычисляемый

Нет

Output parameters

# Output signal — выходной сигнал
Sine | Cosine | Complex exponential | Sine and cosine

Details

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

Значения

Sine | Cosine | Complex exponential | Sine and cosine

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

Sine

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

OutputSignal

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

Нет

Вычисляемый

Нет

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

Details

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

Зависимости

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

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

1

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

SampleTimeParam

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

Нет

Вычисляемый

Да

# Samples per frame — отсчеты на кадр
Вещественное число

Details

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

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

Зависимости

Чтобы использовать этот параметр, установите для параметра Phase increment source и/или для параметра Phase offset source значение Specify via dialog.

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

1

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

SamplePerFrame

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

Нет

Вычисляемый

Да

Fixed-point operational parameters

# Rounding mode — метод округления
Floor

Details

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

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

Значения

Floor

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

Floor

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

RM

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

Нет

Вычисляемый

Нет

# Overflow mode — метод при переполнении
Wrap

Details

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

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

Значения

Wrap

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

Wrap

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

OM

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

Нет

Вычисляемый

Нет

Accumulator

# Data type — тип данных накопителя
Binary point scaling

Details

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

Значения

Binary point scaling

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

Binary point scaling

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

AccDataType

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

Нет

Вычисляемый

Нет

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

Details

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

Значения

yes

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

yes

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

AccSign

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

Нет

Вычисляемый

Нет

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

Details

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

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

16

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

AccWorldLen

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

Нет

Вычисляемый

Да

# Fraction length — длина дроби данных накопителя
0

Details

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

Значения

0

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

0

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

AccFracLen

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

Нет

Вычисляемый

Нет

Output

# Data type — тип выходных данных
Binary point scaling | Float64 | Float32

Details

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

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

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

Примечание

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

Значения

Binary point scaling | Float64 | Float32

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

Binary point scaling

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

OutputDataType

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

Нет

Вычисляемый

Нет

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

Details

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

Зависимости

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

Значения

yes

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

yes

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

OutputSign

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

Нет

Вычисляемый

Нет

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

Details

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

Зависимости

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

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

16

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

OutputWorldLen

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

Нет

Вычисляемый

Да

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

Details

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

Зависимости

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

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

14

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

OutputFracLen

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

Нет

Вычисляемый

Да

Алгоритмы

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

nco 1 ru

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

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

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

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

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

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

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

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

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