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

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

Введение

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

Системный Setup

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

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

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

% Number of simulation iterations
nIter = 10;
% QPSK modulation
M = 4;
% Scale factor for scope position
scopeSF = 0.7;

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

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

% Frequency offset for intra band contiguous aggregation
sigCombinerCB = SignalAggregator('InterpolationMode', 'Auto', ...
    'FrequencyOffset', [30e3, 90e3], 'SampleRate', 60e3);

% Frequency offset for intra band non contiguous aggregation
sigCombinerNCB = SignalAggregator('InterpolationMode', 'Auto', ...
    'FrequencyOffset', [30e3, 150e3], 'SampleRate', 60e3);

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', 240e3, 'Method', 'Filter bank', 'AveragingMethod', 'Exponential');
spectrumCB.Position = scopeSF * spectrumCB.Position;

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

for k=1:nIter

    % 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. Используйте сгенерированные модулированные сигналы с различной пропускной способностью

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

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

Кроме того, исследуйте Системный объект SignalAggregator, чтобы изучить и возможно изменить обработку, необходимую для агрегации поставщика услуг. В 'Auto' InterpolationMode Системный объект SignalAggregator интерполирует два сигнала гарантировать, что получившаяся частота дискретизации сигналов достаточна, чтобы не исказить содержимое частоты исходных сигналов после того, как они - частота, переключенная, чтобы произвести необходимую агрегацию поставщика услуг. Можно также интерполировать основополосные входные сигналы к уровню, которого вы желаете перед использованием объекта SignalAggregator и не используете 'Ни один' InterpolationMode Системного объекта, который не выполнит интерполяции.

Приложение

Следующий Системный объект используется в этом примере: