Пропустите сигнал 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)
Модулированный сигнал состоит из четырех тонов, каждый из которых имеет пиковую степень приблизительно 20 дБм, разделенную на 200 Гц.
Пропустите сигнал через канал с релеевским замиранием и примените AWGN, имеющий отношение сигнал/шум 25 дБ.
snrdB = 25; rxSig = awgn(channel(modSig),snrdB);
Импульсная и частотные характеристики показывают, что канал ведет себя так, как будто он плоский. Это связано с тем, что пропускная способность сигнала, 800 Гц, намного меньше, чем пропускная способность когерентности, 50 кГц.
Постройте график спектра принимаемого сигнала.
spectrum(rxSig)
Четыре тона, содержащие сигнал 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)
Спектр имеет ту же форму, что и в случае с плоским замиранием, но четыре тона теперь разделены 200 кГц.
Обновите свойство частоты выборки канала. Передайте сигнал через канал с релеевским замиранием и примените AWGN.
release(channel) channel.SampleRate = fsamp; rxSig = awgn(channel(modSig),25);
Импульсная и частотные характеристики показывают, что многолучевое замирание является частотно-избирательным.
Постройте график спектра принимаемого сигнала.
spectrum(rxSig)
Существует еще четыре идентифицируемых тональных сигнала, но их относительные пиковые уровни степени различаются из-за частотно-избирательного замирания. Ширина полосы пропускания сигнала, 800 кГц, больше, чем полоса пропускания когерентности, 50 кГц.
Пропустите сигнал 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 кГц.