dsp.NCO

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

Описание

Численно управляемый генератор, или NCO объект генерирует действительные или комплексные синусоидальные сигналы. Амплитуда сгенерированного сигнала всегда равна 1.

Чтобы сгенерировать действительные или комплексные синусоидальные сигналы:

  1. Создайте dsp.NCO Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

пример

nco = dsp.NCO возвращает NCO Системные object™, nco, который генерирует многоканальный действительный или комплексный синусоидальный сигнал с независимыми частотой и фазой в каждом выходном канале.

пример

nco = dsp.NCO(Name,Value) возвращает NCO Системный объект, nco, с каждым заданным набором свойств до заданного значения.

Свойства

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

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Укажите источник шага фазы следующим 'Property' или 'Input port'.

Задайте шаг фазы как целочисленный скаляр или вектор.

Зависимости

Это свойство применяется только, когда вы задаете свойство PhaseIncrementSource равным 'Property'.

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

Укажите источник смещения фазы следующим 'Property' или 'Input port'.

Задайте смещение фазы как целочисленный скаляр или вектор.

Зависимости

Это свойство применяется только, когда вы задаете свойство PhaseOffsetSource равным 'Property'.

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

Установите это свойство на true для добавления внутренней дитерации к алгоритму NCO. Дитеринг добавляется с помощью PN Sequence Generator (Communications Toolbox).

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

Зависимости

Это свойство применяется только при установке Dither свойство к true.

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

Установите это свойство на true для обеспечения квантования накопленной фазы.

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

Зависимости

Это свойство применяется только, когда вы задаете свойство PhaseQuantization равным true.

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

Установите это свойство на true для вывода ошибки квантования фазы.

Зависимости

Это свойство применяется только, когда вы задаете свойство PhaseQuantization равным true.

Укажите тип выходного сигнала.

Задайте количество выборок на систему координат выходного сигнала. Когда PhaseOffsetSource свойство 'Input port', и свойство PhaseIncrementSource 'Property'количество строк или формат кадра входа смещения фазы определяет количество выборок на систему координат выходного сигнала. Когда вы задаете свойства PhaseOffsetSource и PhaseIncrementSource равными 'Input port', количество строк во входах должно быть 1, и выборки на систему координат выходного сигнала равны 1.

Зависимости

Это свойство применяется только, когда вы задаете свойство PhaseOffsetSource равным 'Property'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

Задайте тип выходных данных следующим 'double', 'single' или 'Custom'. Когда вы выбираете 'Custom'необходимо также задать свойство CustomOutputDataType.

Свойства с фиксированной точкой

Это свойство константы имеет значение 'Floor'.

Это свойство константы имеет значение 'Wrap'.

Это свойство константы имеет значение 'Custom'.

Задайте тип фиксированной точки аккумулятора как unscaled numerictype (Fixed-Point Designer) объект с Signedness от Auto.

Задайте тип данных с фиксированной точкой на выходе как масштабированный numerictype (Fixed-Point Designer) объект с Signedness от Auto.

Зависимости

Это свойство применяется только, когда вы задаете значение свойства OutputDataType Custom.

Использование

Описание

Y = nco() возвращает синусоидальный сигнал, когда PhaseIncrementSource и PhaseOffsetSource для свойств задано значение 'Property'.

Y = nco(phInc) возвращает синусоидальный сигнал, Y, сгенерированный NCO с заданным шагом фазы, phInc.

Y = nco(OFFSET) возвращает синусоидальный сигнал, Y, со смещением фазы, OFFSET, когда PhaseOffsetSource для свойства задано значение 'Input port'.

Y = nco(phInc,OFFSET) возвращает синусоидальный сигнал, Y, с шагом фазы, phInc, и смещение фазы, OFFSET, когда PhaseIncrementSource и PhaseOffsetSource оба свойства 'Input port'. phInc и OFFSET должны быть векторы-строки одной длины, где длина определяет количество каналов в выход сигнале.

[Y,cosine] = nco(___) возвращает синусоидальный сигнал, Yи косинусоидальный сигнал, cosine, когда Waveform для свойства задано значение 'Sine and cosine'. Этот синтаксис может включать любой из входных параметров в предыдущих синтаксисах.

[Y,qErr] = nco(___) возвращает синусоидальный сигнал, Y, и выводит ошибку квантования, qErr, когда PhaseQuantization и PhaseQuantizationErrorOutputPort оба свойства true.

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

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

Шаг фазы, заданный как скаляр или вектор-строка, где каждый элемент соответствует отдельному каналу.

Когда оба PhaseIncrementSource и PhaseOffsetSource для свойств задано значение 'Input port', эти два входа, phInc и OFFSET должно иметь одинаковое количество каналов.

Зависимости

Это свойство применяется только когда PhaseIncrementSource для свойства задано значение 'Input port'.

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

Смещение фазы, заданное как вектор-строка или матрица. Количество строк OFFSET определяет количество выборок на систему координат выходного сигнала. Количество столбцов OFFSET определяет количество каналов выходного сигнала.

Когда оба PhaseIncrementSource и PhaseOffsetSource для свойств задано значение 'Input port', phInc и OFFSET должно иметь одинаковое количество каналов.

Зависимости

Это свойство применяется только когда PhaseOffsetSource для свойства задано значение 'Input port'.

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

Выходные аргументы

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

Вывод NCO, возвращенный как вектор или матрица. Количество строк в выход сигнале определяется:

  • SamplesPerFrame свойство -- Когда PhaseOffsetSource установлено в 'Property'

  • OFFSET входной параметр -- Когда PhaseOffsetSource установлено в 'Input port'

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

Тип данных выхода определяется OutputDataType свойство.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

Косинусоидальный сигнал, возвращенный как вектор или матрица. The cosine выходной сигнал имеет тот же размер и тип данных что и синусоидальный сигнал, Y.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

Выводит ошибку квантования, возвращается как вектор или матрица. The qErr выходной сигнал имеет тот же размер, что и синусоидальный сигнал, Y.

Зависимости

Этот выход доступен только тогда, когда оба PhaseQuantization и PhaseQuantizationErrorOutputPort для свойств задано значение true.

Типы данных: fi

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

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

infoХарактеристическая информация о сгенерированном сигнале
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Примечание.Этот пример выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов функции на эквивалентный step синтаксис. Для примера myObject () становится шагом (myObject).

Проектируйте источник NCO в соответствии с заданными спецификациями.

df = 0.05; % Frequency resolution = 0.05 Hz
minSFDR = 96; % Spurious free dynamic range >= 96 dB
Ts = 1/8000; % Sample period = 1/8000 sec
dphi = pi/2; % Desired phase offset = pi/2;

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

Nacc = ceil(log2(1/(df*Ts)));

Достигнуто фактическое частотное разрешение.

actdf = 1/(Ts*2^Nacc);

Вычислите количество квантованных двоичных разрядов аккумулятора, требуемых из требования SFDR

Nqacc = ceil((minSFDR-12)/6);

Вычислите смещение фазы

phOffset = 2^Nacc*dphi/(2*pi);

Проектируйте источник NCO.

nco = dsp.NCO('PhaseOffset', phOffset,...
    'NumDitherBits', 4, ...
    'NumQuantizerAccumulatorBits', Nqacc,...
    'SamplesPerFrame', 1/Ts, ...
    'CustomAccumulatorDataType', numerictype([],Nacc));
san = dsp.SpectrumAnalyzer('SampleRate', 1/Ts, ...
    'PlotAsTwoSidedSpectrum', false);

Просмотрите выход источника NCO на анализаторе спектра. Измените частоту выхода в середине симуляции с 510 Гц до 1520 Гц.

tic;
while toc < 10

    if toc < 5
        F0 = 510;
    else
        F0 = 1520;
    end
    % Calculate the phase increment
    phIncr = int32(round(F0*Ts*2^Nacc));
    y = nco(phIncr);
    san(y)
end

Информация о характеристиках объекта NCO определяется следующими полями:

  • NumPointsLUT - Количество точек данных в интерполяционной таблице.

  • SineLUTSize - Размер интерполяционной таблицы синуса в байтах.

  • TheoreticalSFDR - Теоретическая паразитная свободная динамическая область значений (SFDR) в дБц.

  • FrequencyResolution - Частотное разрешение NCO.

Чтобы получить вышеуказанные характеристики для определенного NCO объект, вызовите info функция на объекте.

nco = dsp.NCO
nco = 
  dsp.NCO with properties:

                PhaseIncrementSource: 'Input port'
                   PhaseOffsetSource: 'Property'
                         PhaseOffset: 0
                              Dither: true
                       NumDitherBits: 4
                   PhaseQuantization: true
         NumQuantizerAccumulatorBits: 12
    PhaseQuantizationErrorOutputPort: false
                            Waveform: 'Sine'
                     SamplesPerFrame: 1
                      OutputDataType: 'Custom'

  Show all properties

info(nco)
ans = struct with fields:
           NumPointsLUT: 1025
            SineLUTSize: 2050
        TheoreticalSFDR: 84
    FrequencyResolution: 1.5259e-05

Поля и соответствующие им значения изменяются в зависимости от настроек объекта. Для образца, если PhaseQuantization для свойства задано значение false, а TheoreticalSFDR поле не отображается.

nco.PhaseQuantization = false;
info(nco)
ans = struct with fields:
           NumPointsLUT: 16385
            SineLUTSize: 32770
    FrequencyResolution: 1.5259e-05

Алгоритмы

Этот объект реализует алгоритм, входы и выходы, описанные на NCO блочных страниц с описанием. Свойства объекта соответствуют свойствам блока, за исключением того, что нет свойства объекта, соответствующего Sample time параметров блоков. Объекты берут шаг расчета одной секунды.

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

.

См. также

Функции

Объекты

Введенный в R2012a