dsp.NCO

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

Описание

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

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

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

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

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

Создание

Описание

пример

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 Sequence Generator.

Задайте количество битов 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'единственный или 'Custom'. Когда вы выбираете 'Custom', необходимо также установить свойство CustomOutputDataType.

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

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

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

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

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

Задайте тип данных с фиксированной точкой на выходе как масштабированный numerictype объект с 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

Косинусоидальный сигнал, возвращенный как вектор или матрица. 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