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

Эта модель показывает, как использовать блок SISO Fading Channel из Communications Toolbox™ для симуляции многолучевых каналов Релея и Райса с замираниями, которые являются полезными моделями явлений реального мира в беспроводной связи. Эти явления включают многолучевые эффекты рассеяния, дисперсию во времени и доплеровские сдвиги, которые возникают из-за относительного движения между передатчиком и приемником. Модель также показывает, как визуализировать характеристики канала, такие как импульсная и частотные характеристики, Допплеровский спектр и усиления компонента.

Модель и параметры

Модель примера моделирует передачу QPSK по многолучевому Каналу с релеевским замиранием и многолучевому каналу Райса с замираниями. Оба блоков канала сконфигурированы из библиотечного блока SISO с замираниями канала. Вы можете управлять параметрами передачи и канала через переменные рабочей области.

modelname     = 'commmultipathfading';
rayleighBlock = [modelname '/Rayleigh Channel'];
ricianBlock   = [modelname '/Rician Channel'];
rayleighCD    = [modelname '/Rayleigh Constellation Diagram'];
pathGainBlock = [modelname '/Path Gains (dB)'];
open_system(modelname);

Следующие переменные управляют блоком «Bit Source». По умолчанию скорость передачи битов составляет 10M b/s (5M sym/s), и каждый переданная система координат имеет длину 2000 бит (1000 символов).

bitRate  % Transmission rate (b/s)
bitsPerFrame  % Number of bits per frame
bitRate =

    10000000


bitsPerFrame =

        2000

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

delayVector  % Discrete path delays (s)
gainVector  % Average path gains (dB)
delayVector =

   1.0e-06 *

         0    0.2000    0.4000    0.8000


gainVector =

     0    -3    -6    -9

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

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

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

maxDopplerShift  % Maximum Doppler shift of diffuse components (Hz)
maxDopplerShift =

   200

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

LOSDopplerShift  % Doppler shift of line-of-sight component (Hz)
KFactor  % Ratio of specular power to diffuse power (linear)
LOSDopplerShift =

   100


KFactor =

    10

Блок SISO Fading Channel может визуализировать импульсную характеристику канала, частотную характеристику и Допплеровский спектр во время работы модели. Чтобы вызвать его, установите Channel visualization параметр к желаемой характеристике (характеристикам) канала перед запуском модели. Обратите внимание, что включение визуализации канала может замедлить вашу симуляцию.

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

По умолчанию диапазон задержек (0,8 микросекунд) канала больше, чем входной период QPSK символа (0,2 микросекунды), и вызывает значительную межсимвольную интерференцию (ISI). Таким образом, результирующая частотная характеристика канала не является плоской и может иметь глубокие затухания на 10M Гц сигнальной полосе. Поскольку уровень степени изменяется по ширине полосы, он упоминается как частотно-избирательное замирание.

Установка Channel visualization Параметр блока канала на 'Импульсную характеристику' показывает полосно-ограниченную импульсную характеристику (желтые круги). Визуализация также показывает задержки и величины базовых усилений затухающего пути (розовые стебли), кластеризованных вокруг пика импульсной характеристики. Обратите внимание, что коэффициент усиления пути не равен Average path gains (dB) значение параметров, потому что эффект Доплера заставляет усиления колебаться с течением времени.

set_param(rayleighBlock,'Visualization','Impulse response');
set_param(modelname,'SimulationCommand','start');
set_param(modelname,'SimulationCommand','pause');

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

Точно так же установите Channel visualization Параметр 'Frequency response' показывает частотную характеристику канала. Можно также задать Channel visualization к 'Импульсной и частотным характеристикам', чтобы отобразить как импульсную, так и частотные характеристики один за другим. Можно увидеть, что уровень степени канала изменяется по всей полосе пропускания.

set_param(modelname,'SimulationCommand','stop');
set_param(rayleighBlock,'Visualization','Frequency response');
set_param(rayleighBlock,'SamplesToDisplay','50%');
set_param(modelname,'SimulationCommand','start');
set_param(modelname,'SimulationCommand','pause');

Как показано на графиках визуализации канала, можно также управлять процентом входных выборок, которые будут визуализированы путем изменения Percentage of samples to display параметр канального блока. В целом, чем меньше процент, тем быстрее работает модель. Когда рисунок визуализации откроется, щелкните Playback и выключите Reduce Updates to Improve Performance или Reduce Plot Rate to Improve Performance опция дальнейшего повышения точности отображения. Опция включена по умолчанию для более быстрой симуляции. Чтобы увидеть ответ канала для каждой выборки входа, снимите флажок с этой опции и установите Percentage of samples to display к '100%'.

MultipathFadingChannelSimulinkExample

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

set_param(modelname,'SimulationCommand','stop');
set_param(rayleighBlock,'Visualization','Doppler spectrum');
set_param(modelname,'StopTime','3');
set_param(modelname,'SimulationCommand','start');
set_param(modelname,'SimulationCommand','pause');

while get_param(modelname,'SimulationTime') < 2
    set_param(modelname,'SimulationCommand','continue');
    pause(1);
    set_param(modelname,'SimulationCommand','pause');
end

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

set_param(modelname,'SimulationCommand','stop');
maxDopplerShift = 5;
set_param(rayleighBlock,'Visualization','Off');
set_param(rayleighCD,'openScopeAtSimStart','on')
sim(modelname,0.2);

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

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

Чтобы наблюдать эффект, теперь мы уменьшаем полосу пропускания сигнала с 10M b/s (5M sym/s) до 1M b/s (500K sym/s), поэтому диапазон задержки (0,8 микросекунды) канала намного меньше, чем период символа QPSK (2 микросекунды). Эффективно все отложенные компоненты объединяются с одной задержкой (в этом случае в нуле).

bitRate = 1e6  % 50 kb/s transmission
bitRate =

     1000000

Мы можем визуально подтвердить это узкополосное поведение с замираниями путем установки Channel visualization параметр к 'Импульсу и частотным характеристикам' для блока канала Релея и затем запуска модели.

close_system(rayleighCD);
set_param(rayleighCD,'openScopeAtSimStart','off')
maxDopplerShift = 200; % Change back to the original value
set_param(rayleighBlock,'Visualization','Impulse and frequency responses');
set_param(modelname,'SimulationCommand','start');
set_param(modelname,'SimulationCommand','pause');

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

set_param(modelname,'SimulationCommand','stop');
delayVector = 0;  % Single fading path with zero delay
gainVector = 0;  % Average path gain of 0 dB
set_param(modelname,'SimulationCommand','start');
set_param(modelname,'SimulationCommand','pause');

Теперь мы возвращаемся к нашему исходному четырехпутевому замирающему каналу и наблюдаем, как узкополосное замирание вызывает ослабление сигнала и вращение фазы, путем открытия схемы созвездия, следующей за блоком канала Релея. В дополнение к ослаблению и вращению, вы можете увидеть некоторое искажение сигнала из-за небольшого количества ISI в выходном сигнале канала. Искажение намного меньше, чем то, что видно выше для широкополосного канала.

set_param(modelname,'SimulationCommand','stop');
delayVector = [0 2 4 8]*1e-7; % Change back to original value
gainVector = (0:-3:-9); % Change back to original value
maxDopplerShift = 5; % Reduce to slow down channel dynamics
set_param(rayleighBlock,'Visualization','Off');
set_param(rayleighCD,'openScopeAtSimStart','on')
sim(modelname,0.15);

Райс-затухание

Блок канала Райса с замираниями моделирует распространение линии зрения в дополнение к диффузному многолучевому рассеянию. Это приводит к меньшему изменению величины усиления пути. Чтобы сравнить изменения между каналами Релея и Райса, мы повторно конфигурируем блоки канала, чтобы смоделировать задержку с одним путем и использовать блок Time Scope, чтобы просмотреть их усиления пути с течением времени. Обратите внимание, что величина колеблется в области значений приблизительно 5 дБ для канала Райса с замираниями по сравнению с приблизительно 15 дБ для канала с релеевским замиранием. Для канала Райса с замираниями это изменение будет дополнительно уменьшаемо путем увеличения K-фактора (в настоящее время установлен на 10).

delayVector = 0;  % Single fading path with zero delay
gainVector = 0;  % Average path gain of 0 dB
maxDopplerShift = 200; % Change back to the original value
close_system(rayleighCD);
set_param(rayleighCD,'openScopeAtSimStart','off')
set_param(pathGainBlock,'OpenAtSimulationStart','on');
sim(modelname,0.1);

Очистка

close_system(modelname,0);