NCO
Генерирует вещественные или комплексные синусоидальные сигналы.
Тип: NCO
Путь в библиотеке:
|
Описание
Блок NCO генерирует многоканальный вещественный или комплексный синусоидальный сигнал с независимой частотой и фазой в каждом выходном канале. Амплитуда созданного сигнала всегда равна 1
. Все выходы являются вещественными, за исключением exp – выходного сигнала формируемого в режиме Complex exponential
, который включается путем выбора соответствующего пункта в выпадающем списке Output signal. Более подробную информацию о том, как блок вычисляет выходной сигнал, см. в Алгоритмы.
Чтобы получить многоканальный выход, задайте параметры Phase increment и Phase offset в виде векторов. Оба параметра должны иметь одинаковую размерность, которая определяет количество выходных каналов. Каждый элемент каждого вектора применяется к отдельному выходному каналу.
Порты
Выход
#
sin
—
синусоидальный выход
скаляр
| вектор
| матрица
Details
Синусоидальный выходной сигнал, заданный в виде скаляра, вектора или матрицы. Можно указать тип данных сигнала с помощью параметра Data type.
Зависимости
Чтобы использовать этот порт, установите для параметра Output signal значение Sine
или Sine and cosine
.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
Qerr
—
ошибка квантования фазы
скаляр
| вектор
| матрица
Details
Ошибка квантования фазы, заданная в виде скаляра, вектора или матрицы.
Зависимости
Чтобы использовать этот порт, установите флажок Show phase quantization error port.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
cos
—
косинусоидальный выход
скаляр
| вектор
| матрица
Details
Косинусоидальный выходной сигнал, заданный в виде скаляра, вектора или матрицы. Можно указать тип данных сигнала с помощью параметра Data type.
Зависимости
Чтобы использовать этот порт, установите для параметра Output signal значение Cosine
или Sine and cosine
.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
exp
—
комплексный экспоненциальный выход
скаляр
| вектор
| матрица
Details
Комплексный экспоненциальный выход, заданный в виде скаляра, вектора или матрицы. Можно указать тип данных сигнала с помощью параметра Data type.
Зависимости
Чтобы использовать этот порт, установите Output signal в значение Complex exponential
.
Типы данных |
|
Поддержка комплексных чисел |
Да |
Вход
#
offset
—
сдвиг фазы
скаляр
| вектор
| матрица
Details
Сигнал сдвига фазы, заданный в виде вещественного скаляра, вектора или полной матрицы. Входные данные должны иметь целочисленный тип или тип данных с фиксированной точкой с нулевой длиной дроби. Блок рассматривает каждый столбец входных данных порта смещения как независимый канал. Количество каналов в сигнале сдвига фазы должно соответствовать количеству каналов во входных данных. Для каждого кадра входных данных блок может применять различные фазовые смещения к каждому образцу и каналу.
Зависимости
Чтобы использовать этот порт, установите для параметра Phase offset source значение Input port
.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
#
inc
—
приращение фазы
скаляр
| вектор
Details
Сигнал приращения фазы, заданный в виде скаляра или вектора с вещественным значением. Вход должен иметь целочисленный тип данных или тип данных с фиксированной точкой с нулевой длиной дроби. Размеры сигнала приращения фазы зависят от того, как вы решили указать параметр Phase offset:
-
Когда вы указываете Phase offset в диалоговом окне блока, параметр Phase increment должен быть скаляром или вектором с той же длиной, что и значение Phase offset. Блок применяет каждый элемент вектора к отдельному каналу, поэтому длина вектора определяет количество выходных каналов.
-
Когда вы указываете Phase offset через входной порт, порт offset рассматривает каждый столбец входа как независимый канал. Длина Phase increment должна быть равна количеству столбцов на входе в порт offset.
Зависимости
Чтобы использовать этот порт, установите для параметра Phase increment source значение Input port
.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
Параметры
Phase adder parameters
#
Phase increment source —
способ задания приращения фазы
Specify via dialog
| Input port
Details
Выберите способ задания приращения фазы:
-
Input port
— значение приращения фазы будет поступать на входной порт inc; -
Specify via dialog
— значение приращения фазы можно задать в параметре Phase increment.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
# Phase increment — значение приращения фазы
Details
Укажите приращение фазы в виде скаляра или вектора с целочисленным значением. Допускаются только целочисленные типы данных, включая типы данных с фиксированной точкой и нулевой длиной дроби. Размерность приращения фазы зависит от размерности сдвига фазы:
-
Когда вы указываете сдвиг фазы в параметре блока Phase offset, приращение фазы должно быть скаляром или вектором с той же размерностью, что и сдвиг фазы. Блок применяет каждый элемент вектора к отдельному каналу, поэтому длина вектора определяет количество выходных каналов.
-
Когда вы указываете сдвиг фазы через входной порт offset, порт сдвига рассматривает каждый столбец входа как независимый канал. Длина приращения фазы должна быть равна количеству столбцов на входе порта сдвига.
Зависимости
Чтобы использовать этот параметр, установите для параметра Phase increment source значение Specify via dialog
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Phase offset source —
способ задания сдвига фазы
Specify via dialog
| Input port
Details
Выберите способ задания сдвига фазы:
-
Input port
— значение сдвига фазы будет поступать на входной порт offset; -
Specify via dialog
— значение сдвига фазы можно задать в параметре Phase offset.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
# Phase offset — значение сдвига фазы
Details
Укажите сдвииг фазы в виде скаляра или вектора с целочисленным значением. Допускаются только целочисленные типы данных, включая типы данных с фиксированной точкой и нулевой длиной дроби. Когда вы указываете сдвиг фазы с помощью этого параметра, оно должно быть скаляром или вектором с той же размерностью, что и приращение фазы. Скаляры разворачиваются в вектор с той же размерностью, что и приращение фазы. Каждый элемент вектора сдвига фазы применяется к отдельному каналу входа, поэтому длина вектора определяет количество выходных каналов.
Зависимости
Чтобы использовать этот параметр, установите для параметра Phase offset source значение Specify via dialog
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Add internal dither —
добавить внутренний шум
Логический тип
Details
Установите этот флажок, чтобы добавить сглаживание в алгоритм NCO. Сглаживание добавляется с помощью алгоритма, применяемого в блоке Генератор PN последовательности последовательности.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Number of dither bits —
количество битов сглаживания
Вещественное число
Details
Укажите количество битов сглаживания в виде целого положительного числа.
Зависимости
Чтобы использовать этот порт, установите флажок Add internal dither.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Quantize phase —
включить квантование накопленной фазы
Логический тип
Details
Чтобы включить квантование накопленной фазы, установите этот флажок.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Number of quantized accumulator bits —
количество квантованных битов накопителя
Вещественное число
Details
Укажите количество квантованных битов накопителя в виде целого скаляра, который больше единицы и меньше длины слова накопителя. Это значение определяет количество записей в таблице поиска.
Зависимости
Чтобы использовать этот параметр, установите флажок Quantize phase.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Show phase quantization error port —
вывод ошибки квантования фазы
Логический тип
Details
Выберите вывод ошибки квантования фазы. Когда вы устанавливаете этот флажок, то порт Qerr появляется на значке блока.
Зависимости
Чтобы включить этот параметр, установите флажок Quantize phase.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
Output parameters
#
Output signal —
выходной сигнал
Sine
| Cosine
| Complex exponential
| Sine and cosine
Details
Выберите, какой сигнал выводит блок: Sine
, Cosine
, Complex exponential
или два сигнала Sine and cosine
. Если вы выберете Sine and cosine
, то сигналы будут выводиться на разные порты.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Период дискретизации —
период дискретизации
Вещественное число
Details
Если блок выступает в качестве источника, укажите период дискретизации в секундах в виде положительного скаляра.
Зависимости
Чтобы использовать этот параметр, для обоих параметров Phase increment source и Phase offset source должно быть установлено значение Specify via dialog
. Когда приращение фазы или сдвиг фазы поступают через входной порт блока, период дискретизации наследуется, и этот параметр не используется.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Samples per frame —
отсчеты на кадр
Вещественное число
Details
Укажите количество отсчетов на кадр в виде положительного целого числа. Если это значение больше единицы, то приращение фазы и сдвиг фазы могут меняться от канала к каналу и от кадра к кадру, но они постоянны для каждого канала в данном кадре.
Когда используется входной порт сдвига фазы offset, он имеет тот же статус кадра, что и любой выходной порт. Когда используется входной порт приращения фазы inc, кадры не поддерживаются.
Зависимости
Чтобы использовать этот параметр, установите для параметра Phase increment source и/или для параметра Phase offset source значение Specify via dialog
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
Fixed-point operational parameters
#
Rounding mode —
метод округления
Floor
Details
Этот параметр доступен только для чтения.
Когда на входе тип данных с фиксированной точкой, блок NCO всегда использует метод округления Floor
.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Overflow mode —
метод при переполнении
Wrap
Details
Этот параметр доступен только для чтения.
Когда на входе тип данных с фиксированной точкой, блок NCO всегда использует метод при переполнении Wrap
.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
Accumulator
#
Data type —
тип данных накопителя
Binary point scaling
Details
Указывает тип данных накопителя.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Signed —
знаковый тип данных накопителя
yes
Details
Указывает, что тип данных накопителя является знаковым.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
World length —
длина слова накопителя
Вещественное число
Details
Укажите длину слова накопителя в виде положительного целого числа от 2
до 128
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Fraction length —
длина дроби данных накопителя
0
Details
Указывает, что тип данных накопителя всегда имеет длину дробной части, равную 0
.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
Output
#
Data type —
тип выходных данных
Binary point scaling
| Float64
| Float32
Details
Укажите тип выходных данных:
-
Выберите
Float64
илиFloat32
для реализации с плавающей точкой. -
Когда вы выбираете
Binary point scaling
, вы можете указать длину слова и длину дроби для выходных данных, в битах.
Примечание
Таблица поиска для этого блока строится из значений с плавающей точкой двойной точности. Таким образом, максимальная точность, которой вы можете достичь в выводе, составляет 53 бита. Установка длины слова типа данных Output в значения, превышающие 53 бита, не улучшит точность вывода.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Signed —
знаковый тип выходных данных
yes
Details
Указывает, является ли тип выходных данных знаковым.
Зависимости
Чтобы использовать этот параметр, установите для параметра Data type значение Binary point scaling
.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
World length —
длина слова выходных данных
Вещественное число
Details
Укажите длину слова выходных данных в виде положительного целого числа от 2
до 128
.
Зависимости
Чтобы использовать этот параметр, установите для параметра Data type значение Binary point scaling
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Fraction length —
длина дроби выходных данных
Вещественное число
Details
Укажите длину дроби выходных данных в виде скалярного целого числа.
Зависимости
Чтобы использовать этот параметр, установите для параметра Data type значение Binary point scaling
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
Алгоритмы
На схеме ниже показан алгоритм, который реализует блок.
Реализация генератора с числовым управлением (numerically controlled oscillator, NCO) состоит из двух отдельных частей. Во-первых, фазовый накопитель накапливает приращение фазы и добавляет сдвиг фазы. На этом этапе также может быть добавлен дополнительный внутренний сигнал сглаживания (шум). Затем выход NCO вычисляется путем квантования результатов секции фазового накопителя и использования их для выбора значений из таблицы поиска. Поскольку таблица поиска содержит конечный набор записей, в нормальном режиме работы блок NCO допускает переполнение числовых значений в сумматоре и позволяет им замыкаться в пределах доступного диапазона.
Учитывая желаемую выходную частоту , рассчитайте значение параметра блока Phase increment следующим образом:
где — длина слова накопителя, а
Частотное разрешение NCO в Гц определяется как:
Учитывая желаемый сдвиг фазы (в радианах), рассчитайте параметр блока Phase offset следующим образом:
Динамический диапазон без помех (spurious free dynamic range, SFDR) для таблицы поиска с записей, где — количество квантованных битов накопителя, оценивается следующим образом:
-
дБ, без шумов;
-
дБ, c шумами.
Блок NCO использует метод четвертьволновой таблицы поиска, в которой хранятся значения от 0
до π/2
. Блок вычисляет другие значения по запросу, используя тип данных накопителя, а затем переводит их в тип выходных данных. Это может привести к эффектам квантования на границах диапазона данного типа данных. Например, рассмотрим случай, когда ожидается, что значение синусоиды будет равно -1
в точке π
. Поскольку значение таблицы поиска в этой точке должно быть вычислено, блок может дать значение, отличное от -1
, в зависимости от точности типов данных накопителя и выходного сигнала.