exponenta event banner

Многолучевой канал замирания

В этом примере показано, как использовать объекты системы с многолучевым замиранием Rayleigh и Rician и их встроенную визуализацию для моделирования замирания канала. Каналы Рэлея и Рикского замирания являются полезными моделями реальных явлений в беспроводной связи. Эти явления включают в себя эффекты многолучевого рассеяния, временную дисперсию и доплеровские сдвиги, которые возникают в результате относительного движения между передатчиком и приемником.

Обработка сигнала с использованием канала замирания включает в себя следующие этапы:

  1. Создайте системный object™ канала, описывающий канал, который требуется использовать. Объект канала - это тип переменной MATLAB ®, которая содержит информацию о канале, такую как максимальный доплеровский сдвиг.

  2. При необходимости настройте свойства объекта System в соответствии с вашими потребностями. Например, можно изменить задержки пути или среднее увеличение пути.

  3. Примените к сигналу объект channel System с помощью пошагового метода, который генерирует случайные дискретные усиления тракта и фильтрует входной сигнал.

Характеристики канала могут быть показаны со встроенной поддержкой визуализации объекта System.

Инициализация

Следующие переменные управляют объектами Rayleigh и Rician канала. По умолчанию канал моделируется как четыре пути замирания, каждый из которых представляет кластер многолучевых компонентов, принятых с приблизительно той же задержкой.

sampleRate500kHz = 500e3; % Sample rate of 500K Hz
sampleRate20kHz  = 20e3; % Sample rate of 20K Hz
maxDopplerShift  = 200; % Maximum Doppler shift of diffuse components (Hz)
delayVector = (0:5:15)*1e-6; % Discrete delays of four-path channel (s)
gainVector  = [0 -3 -6 -9]; % Average path gains (dB)

Максимальный доплеровский сдвиг вычисляется как v * f/c, где v - мобильная скорость, f - несущая частота, а c - скорость света. Например, максимальный доплеровский сдвиг 200 Гц (как указано выше) соответствует мобильной скорости 65 миль/ч (30 м/с) и несущей частоте 2 ГГц.

По соглашению задержка первого тракта обычно устанавливается равной нулю. Для последующих путей задержка в 1 микросекунду соответствует разности 300 м в длине пути. В некоторых наружных многолучевых средах отраженные пути могут быть на несколько километров длиннее кратчайшего пути. При указанных выше задержках пути последний путь на 4,5 км длиннее кратчайшего пути и, таким образом, прибывает на 15 микросекунд позже.

Вместе задержки тракта и усиления тракта определяют средний профиль задержки канала. Обычно средний тракт увеличивается экспоненциально с задержкой (т.е. значения дБ линейно затухают), но конкретный профиль задержки зависит от среды распространения. В профиле задержки, указанном выше, мы предполагаем уменьшение средней мощности на 3 дБ за каждые 5 микросекунд задержки тракта.

Следующие переменные управляют объектом Rician channel System. Доплеровский сдвиг зеркального компонента обычно меньше максимального доплеровского сдвига (выше) и зависит от направления движения подвижного элемента относительно направления зеркального компонента. Коэффициент K определяет линейное отношение средней принимаемой мощности от зеркального компонента к отношению к мощности соответствующих диффузных компонентов.

KFactor = 10; % Linear ratio of specular power to diffuse power
specDopplerShift = 100; % Doppler shift of specular component (Hz)

Создание системных объектов канала

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

% Configure a Rayleigh channel object
rayChan = comm.RayleighChannel( ...
    'SampleRate',sampleRate500kHz, ...
    'PathDelays',delayVector, ...
    'AveragePathGains',gainVector, ...
    'MaximumDopplerShift',maxDopplerShift, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',10, ...
    'PathGainsOutputPort',true);

% Configure a Rician channel object
ricChan = comm.RicianChannel( ...
    'SampleRate',sampleRate500kHz, ...
    'PathDelays',delayVector, ...
    'AveragePathGains',gainVector, ...
    'KFactor',KFactor, ...
    'DirectPathDopplerShift',specDopplerShift, ...
    'MaximumDopplerShift',maxDopplerShift, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',100, ...
    'PathGainsOutputPort',true);

Модуляция и канальная фильтрация

Создать comm.QPSKModulator Системный объект для модуляции данных канала, которые были сгенерированы с помощью randi функция. В данном коде «кадр» относится к вектору информационных битов. В этом примере используется фазовое смещение pi/4.

qpskMod = comm.QPSKModulator('BitInput',true,'PhaseOffset',pi/4);

% Number of bits transmitted per frame is set to be 1000. For QPSK
% modulation, this corresponds to 500 symbols per frame.
bitsPerFrame = 1000;
msg = randi([0 1],bitsPerFrame,1);

% Modulate data for transmission over channel
modSignal = qpskMod(msg);

% Apply Rayleigh or Rician channel object on the modulated data
rayChan(modSignal);
ricChan(modSignal);

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

Объекты системы с замиранием канала имеют встроенную визуализацию для отображения импульсной характеристики канала, частотной характеристики или доплеровского спектра при запуске объекта. Чтобы вызвать его, установите Visualization до требуемого значения перед вызовом объекта. Теперь отпустите объекты системы Rayleigh и Rician channel System, чтобы изменить их значения свойств.

release(rayChan);
release(ricChan);

Широкополосное или частотно-селективное замирание

Установка Visualization свойство для 'Impulse response' показывает запрещенную импульсную характеристику (желтые круги). Визуализация также показывает задержки и величины усиления основного пути замирания (розовые звездочки), сгруппированные вокруг пика импульсной характеристики. Обратите внимание, что коэффициенты усиления тракта не равны AveragePathGains значение свойства, поскольку эффект Доплера вызывает колебания усиления во времени.

Аналогично, установка Visualization свойство для 'Frequency response' показывает частотную характеристику (преобразование DFT) импульсов. Также можно задать Visualization кому 'Impulse and frequency responses' отображение одновременно импульсных и частотных откликов.

Можно управлять процентом входных образцов, которые должны быть визуализированы, изменив SamplesToDisplay собственность. Как правило, чем меньше процент, тем быстрее выполняется моделирование. Как только откроется рисунок визуализации, щелкните значок Playback и выключить опцию «Уменьшить обновления для повышения производительности» или «Уменьшить скорость печати для улучшения производительности», чтобы еще больше повысить точность отображения. Опция включена по умолчанию для более быстрого моделирования. Чтобы просмотреть отклик канала для каждой входной выборки, снимите этот флажок и установите SamplesToDisplay кому '100%'.

rayChan.Visualization = 'Impulse and frequency responses';
rayChan.SamplesToDisplay = '100%';

% Display impulse and frequency responses for 2 frames
numFrames = 2;
for i = 1:numFrames
    % Create random data
    msg = randi([0 1],bitsPerFrame,1);
    % Modulate data
    modSignal = qpskMod(msg);
    % Filter data through channel and show channel responses
    rayChan(modSignal);
end

Как вы видите, частотная характеристика канала не является плоской и может иметь глубокие замирания на полосе частот 500K Гц. Поскольку уровень мощности изменяется по ширине полосы сигнала, его называют частотно-избирательным замиранием.

Для той же спецификации канала мы теперь отображаем доплеровский спектр для его первого дискретного пути, который является статистической характеристикой процесса замирания. Объект Системы производит периодические измерения доплеровского спектра (синие звезды). Со временем с большим количеством образцов, обработанных объектом Системы, среднее значение этого измерения лучше приближается к теоретическому спектру Доплера (желтая кривая).

release(rayChan);
rayChan.Visualization = 'Doppler spectrum';

% Display Doppler spectrum from 5000 frame transmission
numFrames = 5000;
for i = 1:numFrames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChan(modSignal);
end

Узкополосное или частотно-плоское замирание

Когда ширина полосы слишком мала для сигнала, чтобы разрешить отдельные компоненты, частотный отклик приблизительно плоский из-за минимальной временной дисперсии, вызванной многолучевым каналом. Этот вид многолучевого замирания часто называют узкополосным замиранием или частотно-плоским замиранием.

Теперь мы уменьшаем полосу пропускания сигнала с 500 кбит/с (250 кбит/с) до 20 кбит/с (10 кбит/с), так что интервал задержки (15 микросекунд) канала намного меньше, чем период символа QPSK (100 микросекунд). Результирующая импульсная характеристика имеет очень малые межсимвольные помехи (ISI), и частотная характеристика является приблизительно плоской.

release(rayChan);
rayChan.Visualization = 'Impulse and frequency responses';
rayChan.SampleRate = sampleRate20kHz;
rayChan.SamplesToDisplay = '25%';  % Display one of every four samples

% Display impulse and frequency responses for 2 frames
numFrames = 2;
for i = 1:numFrames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChan(modSignal);
end

Для упрощения и ускорения моделирования узкополосные каналы замирания обычно моделируются как однопутный канал замирания. То есть модель многолучевого замирания переопределяет узкополосный канал замирания. Следующие настройки соответствуют узкополосному каналу замирания. Обратите внимание, что форма запрещенной импульсной характеристики является плоской.

release(rayChan);
rayChan.PathDelays = 0;        % Single fading path with zero delay
rayChan.AveragePathGains = 0;  % Average path gain of 1 (0 dB)

for i = 1:numFrames % Display impulse and frequency responses for 2 frames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChan(modSignal);
end

Объект Rician fading channel System моделирует распространение линии визирования в дополнение к диффузному многолучевому рассеянию. Это приводит к меньшему изменению величины усиления траектории. Чтобы сравнить различия между каналами Рэлея и Рикия, мы используем timescope объект для просмотра выигрышей их пути с течением времени. Заметим, что величина колеблется в диапазоне приблизительно 10 дБ для канала замирания Rician (синяя кривая) по сравнению с 30-40 дБ для канала замирания Rayleigh (желтая кривая). Для канала с замиранием Rician эта вариация будет дополнительно уменьшена за счет увеличения коэффициента K (в настоящее время установленный равным 10).

release(rayChan);
rayChan.Visualization = 'Off'; % Turn off Rayliegh object visualization
ricChan.Visualization = 'Off'; % Turn off Rician object visualization

% Same sample rate and delay profile for the Rayleigh and Rician objects
ricChan.SampleRate = rayChan.SampleRate;
ricChan.PathDelays = rayChan.PathDelays;
ricChan.AveragePathGains = rayChan.AveragePathGains;

% Configure a Time Scope System object to show path gain magnitude
gainScope = timescope( ...
    'SampleRate',rayChan.SampleRate, ...
    'TimeSpanSource','Property',...
    'TimeSpan',bitsPerFrame/2/rayChan.SampleRate, ... % One frame span
    'Name','Multipath Gain', ...
    'ShowGrid',true, ...
    'YLimits',[-40 10], ...
    'YLabel','Gain (dB)');

% Compare the path gain outputs from both objects for one frame
msg = randi([0 1],bitsPerFrame,1);
modSignal = qpskMod(msg);
[~,rayPathGain] = rayChan(modSignal);
[~,ricPathGain] = ricChan(modSignal);
% Form the path gains as a two-channel input to the time scope
gainScope(10*log10(abs([rayPathGain,ricPathGain]).^2));

Влияние канала замирания на созвездие сигналов

Теперь мы возвращаемся к нашему первоначальному четырехпутному каналу Рэлея. Мы используем comm.ConstellationDiagram Объект системы, показывающий влияние узкополосного замирания на совокупность сигналов. Для замедления динамики канала в целях визуализации снижаем максимальный доплеровский сдвиг до 5 Гц. По сравнению с входным сигналом канала QPSK можно наблюдать затухание и вращение сигнала на выходе канала, а также некоторое искажение сигнала из-за малого количества ISI в принимаемом сигнале.

clear hRicChan hMultipathGain;
release(rayChan);

rayChan.PathDelays = delayVector;
rayChan.AveragePathGains = gainVector;
rayChan.MaximumDopplerShift = 5;

% Configure a Constellation Diagram System object to show received signal
constDiag = comm.ConstellationDiagram( ...
    'Name','Received Signal After Rayleigh Fading');

numFrames = 16;

for n = 1:numFrames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChanOut = rayChan(modSignal);
    % Display constellation diagram for Rayleigh channel output
    constDiag(rayChanOut);
end

Когда мы увеличиваем пропускную способность сигнала до 500 кбит/с (250 кбит/с), мы видим гораздо большие искажения в созвездии сигналов. Это искажение является ISI, которое происходит от временной дисперсии широкополосного сигнала. Интервал задержки (15 микросекунд) канала теперь больше, чем период символа QPSK (4 микросекунды), так что результирующая импульсная характеристика с ограниченной полосой частот больше не является приблизительно плоской.

release(rayChan);
release(constDiag);
rayChan.SampleRate = sampleRate500kHz;

for n = 1:numFrames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChanOut = rayChan(modSignal);
    constDiag(rayChanOut);
end