dsp. NCO

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

Описание

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

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

nco = dsp.NCO
nco = dsp.NCO(Name,Value)

Описание

пример

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

пример

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

Свойства

развернуть все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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.

Задайте количество битов 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'.

Задайте фиксированную точку аккумулятора как немасштабированный объект numerictype с Signedness Auto.

Задайте выходную фиксированную точку как масштабированный объект numerictype с Signedness Auto.

Зависимости

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

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

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

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

Y = nco()
Y = nco(phInc)
Y = nco(OFFSET)
Y = nco(phInc,OFFSET)
[Y,cosine] = nco(___)
[Y,qErr] = nco(___)

Описание

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

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

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

Выведите ошибку квантования, возвращенную как вектор или матрица. Выходной сигнал 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 Гц до 1 520 Гц.

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 — Частота resolultion 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