Визуализация эффектов частотно-избирательного замирания

FSK-модуляция в канале с замираниями

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

FSK-модуляция при плоском замирании

Установите порядок модуляции 4, модулированную скорость символа 45 бит/с и частотное разделение 200 Гц.

M = 4;           % Modulation order
symbolRate = 45; % Symbol rate (bps)
freqSep = 200;   % Frequency separation (Hz)

Вычислите выборки по параметру символа, sampPerSym, как функцию порядка модуляции, частотного разделения и скорости символа. Чтобы избежать сглаживания выходного сигнала, продукт sampPerSym и symbolRate должно быть больше продукт M и freqSep. Вычислите частоту дискретизации выходного сигнала FSK.

sampPerSym = ceil(M*freqSep/symbolRate);
fsamp = sampPerSym*symbolRate;

Создайте FSK модулятор.

fskMod = comm.FSKModulator(M, ...
    'FrequencySeparation',freqSep, ...
    'SamplesPerSymbol',sampPerSym, ...
    'SymbolRate',symbolRate);

Установите задержки пути и среднее усиление пути для замирающего канала.

pathDelays = [0 3 10]*1e-6; % Discrete delays of three-path channel (s)
avgPathGains = [0 -3 -6];   % Average path gains (dB)

По соглашению задержка первого пути обычно устанавливается на нуль. Для последующих путей задержка 1 микросекунда соответствует различию в длине пути на 300 м. Задержки пути и коэффициент усиления пути определяют средний профиль задержки канала.

Создайте канал Релея с использованием заданных параметров. Установите Visualization свойство для отображения импульсной и частотных характеристик.

channel = comm.RayleighChannel(...
    'SampleRate',fsamp, ...
    'PathDelays',pathDelays, ...
    'AveragePathGains',avgPathGains, ...
    'MaximumDopplerShift',0.01, ...
    'Visualization','Impulse and frequency responses', ...
    'SamplesToDisplay','10%');

Сгенерируйте символы случайных данных и примените FSK модуляцию.

data = randi([0 3],2000,1);
modSig = fskMod(data);

Постройте график спектра модулированного FSK сигнала.

spectrum = dsp.SpectrumAnalyzer('SampleRate',fsamp);
spectrum(modSig)

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains an object of type line. This object represents Channel 1.

Модулированный сигнал состоит из четырех тонов, каждый из которых имеет пиковую степень приблизительно 20 дБм, разделенную на 200 Гц.

Пропустите сигнал через канал с релеевским замиранием и примените AWGN, имеющий отношение сигнал/шум 25 дБ.

snrdB = 25;
rxSig = awgn(channel(modSig),snrdB);

Figure Frequency Response contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type text, line. This object represents Channel 1.

Figure Impulse Response contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 3 objects of type stem, text. These objects represent Path Gain, Channel Filter Coefficient.

Импульсная и частотные характеристики показывают, что канал ведет себя так, как будто он плоский. Это связано с тем, что пропускная способность сигнала, 800 Гц, намного меньше, чем пропускная способность когерентности, 50 кГц.

Постройте график спектра принимаемого сигнала.

spectrum(rxSig)

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains an object of type line. This object represents Channel 1.

Четыре тона, содержащие сигнал FSK, поддерживают одинаковые уровни разделения частот и пиковой степени относительно друг друга. Абсолютные пиковые уровни степени уменьшились из-за затухания канала.

FSK-модуляция при частотно-селективном замирании

Увеличьте скорость символа до 45 кбит/с и частотное разделение до 200 кГц. Вычислите новые выборки по символу и параметрам частоты дискретизации.

symbolRate = 45e3;
freqSep = 200e3;
sampPerSym = ceil(M*freqSep/symbolRate);
fsamp = sampPerSym*symbolRate;

Обновите свойства модулятора FSK.

release(fskMod)
fskMod.SymbolRate = symbolRate;
fskMod.FrequencySeparation = freqSep;

Обновите свойство скорости выборки анализатора спектра, sa.SampleRate. Примените FSK-модуляцию и постройте график полученного спектра.

release(spectrum)
spectrum.SampleRate = sampPerSym*symbolRate;

modSig = fskMod(data);
spectrum(modSig)

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains an object of type line. This object represents Channel 1.

Спектр имеет ту же форму, что и в случае с плоским замиранием, но четыре тона теперь разделены 200 кГц.

Обновите свойство частоты выборки канала. Передайте сигнал через канал с релеевским замиранием и примените AWGN.

release(channel)
channel.SampleRate = fsamp;

rxSig = awgn(channel(modSig),25);

Figure Impulse Response contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 3 objects of type text, stem. These objects represent Path Gain, Channel Filter Coefficient.

Figure Frequency Response contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 2 objects of type text, line. This object represents Channel 1.

Импульсная и частотные характеристики показывают, что многолучевое замирание является частотно-избирательным.

Постройте график спектра принимаемого сигнала.

spectrum(rxSig)

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains an object of type line. This object represents Channel 1.

Существует еще четыре идентифицируемых тональных сигнала, но их относительные пиковые уровни степени различаются из-за частотно-избирательного замирания. Ширина полосы пропускания сигнала, 800 кГц, больше, чем полоса пропускания когерентности, 50 кГц.

QPSK-модуляция в канале с замираниями

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

QPSK-модуляция при плоском замирании

Установите параметр скорости символа равным 500 бит/с.

symbolRate = 500;

Сгенерируйте символы случайных данных и примените QPSK модуляцию.

data = randi([0 3],10000,1);
modSig = pskmod(data,4,pi/4,'gray');

Установите задержки пути и среднее усиление пути для замирающего канала.

pathDelays = [0 3 10]*1e-6;     % Discrete delays of three-path channel (s)
avgPathGains = [0 -3 -6];       % Average path gains (dB)

По соглашению задержка первого пути обычно устанавливается на нуль. Для последующих путей задержка 1 микросекунда соответствует различию в длине пути на 300 метров. Задержки пути и коэффициент усиления пути определяют средний профиль задержки канала.

Создайте канал Релея с использованием заданных параметров. Установите Visualization свойство для отображения импульсной и частотных характеристик.

fsamp = symbolRate;
channel = comm.RayleighChannel(...
    'SampleRate',fsamp, ...
    'PathDelays',pathDelays, ...
    'AveragePathGains',avgPathGains, ...
    'MaximumDopplerShift',0.01, ...
    'Visualization','Impulse and frequency responses');

Передайте сигнал через канал Релея и примените AWGN.

rxSig = awgn(channel(modSig),25);

Импульсная и частотные характеристики показывают, что канал ведет себя так, как будто он плоский. Это связано с тем, что полоса пропускания сигнала, 500 Гц, намного меньше, чем полоса пропускания когерентности, 50 кГц. Альтернативно, диапазон задержки канала (10 микросекунд) намного меньше, чем период символа QPSK (2 миллисекунды), поэтому результирующая полосно-ограниченная импульсная характеристика приблизительно плоская.

Постройте график созвездия.

constDiagram = comm.ConstellationDiagram;
constDiagram(rxSig)

Созвездие QPSK показывает эффекты затухающего канала; однако сигнал все еще имеет четыре идентифицируемых состояния.

QPSK-модуляция при частотно-селективном замирании

Увеличьте скорость символа до 500 кбит/с и обновите свойство связанного канала. Передайте сигнал через канал Релея и примените AWGN.

symbolRate = 500e3;

release(channel)
channel.SampleRate = symbolRate;

rxSig = awgn(channel(modSig),25);

Импульсная и частотные характеристики показывают, что многолучевое замирание является частотно-избирательным.

Постройте график созвездия.

constDiagram(rxSig)

Когда ширина полосы сигналов увеличивается с 500 Гц до 500 кГц, сигнал становится сильно искаженным. Это искажение связано с межсимвольной интерференцией (ISI), которая происходит от временной дисперсии широкополосного сигнала. Диапазон задержки канала (10 микросекунд) теперь больше, чем период символа QPSK (2 микросекунды), поэтому результирующая полосно-ограниченная импульсная характеристика больше не является плоской. В качестве альтернативы ширина полосы пропускания сигнала намного больше, чем ширина полосы когерентности, 50 кГц.