exponenta event banner

dsp. ВОЕННОСЛУЖАЩИЙ СЕРЖАНТСКОГО СОСТАВА

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

Описание

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

Для генерации действительных или сложных синусоидальных сигналов:

  1. Создать dsp.NCO и задайте его свойства.

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

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

Создание

Описание

пример

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

пример

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

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Укажите источник приращения фазы как 'Property' или 'Input port'.

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

Зависимости

Это свойство применяется только в том случае, если для свойства PhaseIncreureSource задано значение '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 (Communications Toolbox).

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

Зависимости

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

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

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

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

Зависимости

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

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

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

Зависимости

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

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

Укажите количество выборок на кадр выходного сигнала. Когда PhaseOffsetSource свойство - 'Input port', а свойство PhaseIncremlSource имеет значение 'Property'количество строк или размер кадра на входе фазового смещения определяет количество выборок на кадр выходного сигнала. Если для свойств PhaseOffsetSource и PhaseIncreureSource задано значение '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.

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

Описание

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 property -- Когда 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

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

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

release(obj)

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

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

Примеры

свернуть все

Примечание.Этот пример выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов функции эквивалентным step синтаксис. Например, myObject () становится step (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 - Размер таблицы поиска sine в четверти волны в байтах.

  • TheoreticalSFDR - Теоретический паразитный свободный динамический диапазон (SFDR) в dBc.

  • 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 block. Время выборки объектов составляет одну секунду.

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

.

См. также

Функции

Объекты

Представлен в R2012a