Многополосная генерация сигнала

В этом примере показано, как сгенерировать многополосный сигнал эффективно с помощью Communications Toolbox™.

Введение

Взрывной рост потребительского спроса на более высокие скорости передачи данных в мобильных приложениях приводит к более высокой скорости передачи. Большинство современных беспроводных стандартов включает метод, чтобы улучшить информационную емкость путем объединения двух или больше несущих в один канал данных. Этот метод называется агрегацией несущей в 5G и терминологии LTE и канале, связывающемся в терминологии Wi-Fi®. Этот рисунок иллюстрирует три различных типов агрегации несущей.

Системный Setup

Этот пример демонстрирует один подход к агрегации несущей модели в основополосной симуляции. Два сгенерированных модулированных сигнала сгенерированы - каждый - QPSK, модулируемый сигнал и другой являются GMSK модулируемый сигнал. Каждый сигнал занимает 60 кГц полосы пропускания.

MultibandCombiner Система object™ выполняет задачи, необходимые для агрегации несущей. Если частота дискретизации входных сигналов не будет достаточно высока, содержимое частоты будет искажено, когда исходные сигналы будут частотой, переключенной, чтобы произвести желаемую агрегацию несущей. Установка OutputSampleRateSource свойство к 'Auto' конфигурирует объект автоматически вычислить выходную частоту дискретизации и интерполировать два сигнала при необходимости, чтобы гарантировать, что получившаяся частота дискретизации сигнала достаточно высока, чтобы не искажать. info метод Системного объекта показывает частоту дискретизации выходного сигнала. После интерполяции объект применяет заданные сдвиги частоты на сигналы и комбинирует их в один сигнал. Для получения дополнительной информации об обработке алгоритма, смотрите comm.MultibandCombiner страница с описанием.

Системная симуляция

nFrames = 10; % Number of data frames
M = 4;        % Modulation order (QPSK modulation)
Fs1 = 60e3;   % Input sample rate

qpskTxFilter = comm.RaisedCosineTransmitFilter(RolloffFactor = 0.3, ...
    OutputSamplesPerSymbol = 2);

gmskMod = comm.GMSKModulator(BitInput = true, SamplesPerSymbol = 2);

% Create multiband combiner object with specified frequency offsets for the
% intra-band contiguous aggregation
sigCombinerCB = comm.MultibandCombiner(InputSampleRate = Fs1, ...
    FrequencyOffsets = [-30e3, 30e3], OutputSampleRateSource = 'Auto');
Fs2 = info(sigCombinerCB).OutputSampleRate;

% Create multiband combiner object with specified frequency offsets for the
% intra-band noncontiguous aggregation
sigCombinerNCB = comm.MultibandCombiner(InputSampleRate = Fs1, ...
    FrequencyOffsets = [-60e3, 60e3], OutputSampleRateSource = 'Auto');
Fs3 = info(sigCombinerNCB).OutputSampleRate;

scopeSF = 0.7; % Scale factor for scope position
spectrumBB = dsp.SpectrumAnalyzer(Name = 'Baseband Signals', ...
    NumInputPorts = 2, SampleRate = 60e3, ...
    Method = 'Filter bank', AveragingMethod = 'Exponential', ...
    ShowLegend = true, ChannelNames = {'QPSK Signal', 'GMSK Signal'});
spectrumBB.Position = scopeSF * spectrumBB.Position;
spectrumBB.Position(1) = spectrumBB.Position(1) - ...
    spectrumBB.Position(3);

spectrumCB = dsp.SpectrumAnalyzer(Name = 'Intra-Band Contiguous', ...
    NumInputPorts = 1, SampleRate = Fs2, ...
    Method = 'Filter bank', AveragingMethod = 'Exponential');
spectrumCB.Position = scopeSF * spectrumCB.Position;

spectrumNCB = dsp.SpectrumAnalyzer(Name = 'Intra-Band Non-Contiguous', ...
    NumInputPorts = 1, SampleRate = Fs3, ...
    Method = 'Filter bank', AveragingMethod = 'Exponential');
spectrumNCB.Position = scopeSF * spectrumNCB.Position;
spectrumNCB.Position(1) = spectrumNCB.Position(1) + ...
    spectrumNCB.Position(3);

for k = 1:nFrames

    % Generate QPSK signal
    data = randi([0, M-1], 200, 1);
    modSig = pskmod(data, M, pi/4, 'gray');
    qpskSignal = qpskTxFilter(modSig);

    % Generate GMSK signal
    data = randi([0, 1], 200, 1);
    gmskSignal = gmskMod(data);

    % Visualize the two signals
    spectrumBB(qpskSignal, gmskSignal)

    % Upsample, frequency shift and combine the two signals to model
    % intra-band contiguous carrier aggregation
    combinedSignal = sigCombinerCB([qpskSignal, gmskSignal]);

    % Visualize the resulting signal
    spectrumCB(combinedSignal)

    % Upsample, frequency shift and combine the two signals to model
    % intra-band non contiguous or inter-band non contiguous carrier
    % aggregation
    combinedSignal = sigCombinerNCB([qpskSignal, gmskSignal]);

    % Visualize the resulting signal
    spectrumNCB(combinedSignal)
end

release(spectrumBB)
release(spectrumCB)
release(spectrumNCB)

Визуализация

Непрерывная агрегация внутриполосы приводит к сигналу, который имеет два исходных сигнала, каждый 60 кГц шириной, занимая две непрерывных полосы 60 кГц каждый. Во внутриполосе агрегация, состоящая из нескольких несмежных участков, два сигнала занимают полосы, состоящие из нескольких несмежных участков, как показано разрывом между спектрами сигнала во Внутриполосе Спектр, Состоящий из нескольких несмежных участков, Анализатор. Межполоса агрегация, состоящая из нескольких несмежных участков, может быть так же достигнута соответствующими сдвигами частоты сигналов.

Итоговое и дальнейшее исследование

Этот пример иллюстрирует метод, чтобы смоделировать агрегацию несущей, которая используется большинством современных стандартов радиосвязей, чтобы увеличить скорости передачи данных. Системный объект используется, чтобы инкапсулировать необходимую обработку интерполяции, сдвига частоты и объединения сигнала. Можно исследовать далее в различных способах:

  1. Используйте сгенерированные модулированные сигналы с различными полосами пропускания. Как MultibandCombiner Системный объект требует, чтобы все входные сигналы имели ту же частоту дискретизации, передискретизировали один или несколько сигналов принести все сгенерированные модулированные сигналы к тому же уровню перед использованием MultibandCombiner Системный объект.

  2. Агрегат больше чем два сгенерированных модулированных сигнала,

  3. Используйте различные группы агрегации и несущие межполосе модели агрегация, состоящая из нескольких несмежных участков.

Кроме того, исследуйте MultibandCombiner Системный объект, чтобы учиться и возможно изменить обработку, необходимую для агрегации несущей. Помимо конфигурирования объекта автоматически вычислить выходную частоту дискретизации путем установки OutputSampleRateSource к 'Auto', можно также интерполировать входные сигналы основной полосы к уровню, которого вы желаете перед использованием MultibandCombiner объект, затем устанавливает OutputSampleRateSource к 'Property' и набор 'OutputSampleRate' равняйтесь 'InputSampleRate' который конфигурирует Системный объект, чтобы не выполнить любую интерполяцию.