Модели ионосферного канала HF

Этот пример показывает, как симулировать высокочастотные (HF) ионосферные каналы, основываясь на моделях, описанных в Рекомендации ITU-R F.1487. В частности, показано, как симулировать общую модель канала Ваттерсона, и другие упрощенные модели канала, используемые в количественной проверке HF-модемов. Он использует comm.RayleighChannel Системные object™ и stdchan функция наряду с Гауссовыми и би-Гауссовыми doppler структуры от Communications Toolbox™.

Модели канала HF ITU-R: обзор

В ионосферных радиосвязях HF переданный сигнал может несколько раз отскочить от слоев E и F ионосферы, что приводит к нескольким путям распространения, также называемым режимами [1]. Обычно многолучевые задержки являются большими по сравнению с мобильным радио. Также сигнал может страдать от Допплеровского распространения из-за турбулентности ионосферы. Однако скорость затухания обычно меньше, чем для мобильного радио.

Рекомендация ITU-R F.1487 [1] предлагает общую модель Гауссова рассеяния для симуляции ионосферных каналов HF. Эта модель основана на модели канала Уоттерсона [2]. Более простые модели также предложены в [1] для использования в тестах HF-модема с заданными параметрами.

Инициализация специфичных для симуляции параметров

Симуляция частоты дискретизации Rs задается как 9.6K Гц и остается тем же самым в оставшейся части примера. Мы используем схему QPSK модуляции с нулевым смещением фазы.

Rs = 9.6e3;                      % Channel sampling rate
M = 4;                           % Modulation order
qpskMod = comm.QPSKModulator(0); % QPSK modulator object

Модель канала Ваттерсона

Модель канала Ваттерсона состоит из выделенной линии задержки, где каждый контакт соответствует разрешимому пути распространения. На каждом отводе присутствуют два магнитоионных компонента: каждый моделируется как комплексный Гауссов случайный процесс с заданным усилением и сдвигом частоты, и доплеровский спектр которого Гауссов с заданным стандартным отклонением [2]. Следовательно, для каждого крана характерен би-Гауссов доплеровский спектр, который состоит из двух Гауссовых функций в частотный диапазон, каждый со своим набором параметров (степень коэффициент усиления, сдвиг частоты и стандартное отклонение).

В этом примере мы следуем модели симуляции Ваттерсона, заданной в [1], в которой комплексный процесс замирания на каждом отводе получен путем добавления двух независимых сдвинутых по частоте комплексных Гауссовских случайных процессов (с доплеровскими спектрами Гауссова), соответствующих двум магнитоионным компонентам. Эта модель симуляции приводит к комплексному процессу затухания, огибающая которого в целом не распределена Релея. Следовательно, чтобы быть верными модели симуляции, мы не можем просто сгенерировать канал Релея с bi-Гауссовым Допплеровским спектром. Вместо этого мы генерируем два независимых канала Релея, каждый со сдвинутым по частоте Гауссовым Допплеровским спектром, масштабируем их по усилению и добавляем их вместе, чтобы получить модель канала Ваттерсона с би-Гауссовым Допплеровским спектром. Для простоты моделируем канал Ваттерсона только с одним контактом.

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

Первый магнитоионный компонент имеет Гауссов доплеровский спектр со стандартным отклонением sGauss1, сдвиг частоты fGauss1, и степень gGauss1. Bi-Гауссова доплеровская структура dopplerComp1 построена таким образом, что вторая Гауссова функция имеет нулевой коэффициент степени (ее стандартное отклонение и центральная частота, следовательно, нерелевантны и принимают значения по умолчанию), в то время как первая Гауссова функция имеет нормализованное стандартное отклонение sGauss1/fd и нормированный сдвиг частоты fGauss1/fd, где коэффициент нормализации fd является максимальным доплеровским сдвигом соответствующего канала. В этом примере, поскольку коэффициент усиления второй Гауссовой функции равен нулю, значение, присвоенное усилению первой Гауссовой функции, нерелевантно (оставляем это значение по умолчанию 0,5), потому что связанный системный объект Системы канала, созданный позже, нормализует спектр Доплера, чтобы иметь общую степень 1.

Для получения дополнительной информации о том, как создать bi-Гауссову допплеровскую структуру, смотрите doppler.

fd = 10; % Chosen maximum Doppler shift for simulation
sGauss1 = 2.0;
fGauss1 = -5.0;
dopplerComp1 = doppler('BiGaussian', ...
    'NormalizedStandardDeviations', [sGauss1/fd 1/sqrt(2)], ...
    'NormalizedCenterFrequencies',  [fGauss1/fd 0], ...
    'PowerGains',                   [0.5        0])
dopplerComp1 = struct with fields:
                    SpectrumType: 'BiGaussian'
    NormalizedStandardDeviations: [0.2000 0.7071]
     NormalizedCenterFrequencies: [-0.5000 0]
                      PowerGains: [0.5000 0]

Чтобы симулировать первый магнитоионный компонент, мы создадим однопутевой Системный объект канала Релея chanComp1 со сдвинутым с частотой Гауссовым Допплеровским спектром, заданным Доплеровской структурой dopplerComp1. Средний коэффициент пути степени усиления канала равен 1 (0 дБ).

chanComp1 = comm.RayleighChannel( ...
    'SampleRate',          Rs, ...
    'MaximumDopplerShift', fd, ...
    'DopplerSpectrum',     dopplerComp1, ...
    'RandomStream',        'mt19937ar with seed', ...
    'Seed',                99, ...
    'PathGainsOutputPort', true)
chanComp1 = 
  comm.RayleighChannel with properties:

             SampleRate: 9600
             PathDelays: 0
       AveragePathGains: 0
     NormalizePathGains: true
    MaximumDopplerShift: 10
        DopplerSpectrum: [1x1 struct]

  Show all properties

Точно так же второй магнитоионный компонент имеет Гауссов доплеровский спектр со стандартным отклонением sGauss2, сдвиг частоты fGauss2, и степень gGauss2. Bi-Гауссова доплеровская структура dopplerComp2 построена таким образом, что вторая Гауссова функция имеет нулевой коэффициент степени (ее стандартное отклонение и центральная частота, следовательно, нерелевантны и принимают значения по умолчанию), в то время как первая Гауссова функция имеет нормализованное стандартное отклонение sGauss2/fd и нормированный сдвиг частоты fGauss2/fd (снова его усиление степени нерелевантно).

sGauss2 = 1.0;
fGauss2 = 4.0;
dopplerComp2 = doppler('BiGaussian', ...
    'NormalizedStandardDeviations', [sGauss2/fd 1/sqrt(2)], ...
    'NormalizedCenterFrequencies',  [fGauss2/fd 0], ...
    'PowerGains',                   [0.5        0])
dopplerComp2 = struct with fields:
                    SpectrumType: 'BiGaussian'
    NormalizedStandardDeviations: [0.1000 0.7071]
     NormalizedCenterFrequencies: [0.4000 0]
                      PowerGains: [0.5000 0]

Чтобы симулировать вторую магнитоионную составляющую, создадим однопутный Системный объект Релейского канала chanComp2 со сдвинутым с частотой Гауссовым Допплеровским спектром, заданным Доплеровской структурой dopplerComp2.

chanComp2 = comm.RayleighChannel( ...
    'SampleRate',          Rs, ...
    'MaximumDopplerShift', fd, ...
    'DopplerSpectrum',     dopplerComp2, ...
    'RandomStream',        'mt19937ar with seed', ...
    'Seed',                999, ...
    'PathGainsOutputPort', true)
chanComp2 = 
  comm.RayleighChannel with properties:

             SampleRate: 9600
             PathDelays: 0
       AveragePathGains: 0
     NormalizePathGains: true
    MaximumDopplerShift: 10
        DopplerSpectrum: [1x1 struct]

  Show all properties

Мы вычисляем в цикле ниже выхода в канал Ваттерсона в ответ на входной сигнал и храним его в y. При получении y, вызов функции на chanComp1 эмулирует эффект первого магнитоионного компонента, в то время как функция вызывает chanComp2 эмулирует эффект второго компонента.

Чтобы получить желаемое усиление степени, gGauss1 и gGauss2, из каждого магнитоионного компонента нам нужно масштабировать выходной сигнал для каждого магнитоионного компонента на соответствующие им амплитудные усиления sqrt(gGauss1) и sqrt(gGauss2).

Из-за низких доплеровских сдвигов, обнаруженных в окружениях HF, и того факта, что bi-Гауссов доплеровский спектр объединяется из двух объектов, получение измерений для спектра Doppler с помощью встроенной визуализации системных объектов не подходит. Вместо этого мы храним комплексные усиления пути канала и позже вычисляем Допплеровский спектр для каждого пути в командной строке. В приведенном ниже цикле комплексные усиления пути канала получаются путем суммирования (после масштабирования соответствующими усилениями амплитуды) комплексных усилений пути, сопоставленных с каждым магнитоионным компонентом, и затем сохраняются в g.

gGauss1 = 1.2;       % Power gain of first component
gGauss2 = 0.25;      % Power gain of second component

Ns     = 2e6;        % Total number of channel samples
frmLen = 1e3;        % Number of samples per frame
numFrm = Ns/frmLen;  % Number of frames

[y, g] = deal(zeros(Ns, 1));
for frmIdx = 1:numFrm
    x = qpskMod(randi([0 M-1], frmLen, 1));
    [y1, g1] = chanComp1(x);
    [y2, g2] = chanComp2(x);
    y(frmLen*(frmIdx-1)+(1:frmLen)) = sqrt(gGauss1) * y1 ...
        + sqrt(gGauss2) * y2;
    g(frmLen*(frmIdx-1)+(1:frmLen)) = sqrt(gGauss1) * g1 ...
        + sqrt(gGauss2) * g2;
end

Доплеровский спектр оценивают по усилениям комплексного пути и строят график.

hFig = figure;
pwelch(g, hamming(Ns/100), [], [], Rs, 'centered');
axis([-0.1 0.1 -80 0]);
legend('Simulation');

Figure contains an axes. The axes with title Power Spectral Density contains an object of type line. This object represents Simulation.

Теоретический bi-Гауссов Допплеровский спектр наложен на предполагаемый Допплеровский спектр. Мы наблюдаем хорошую подгонку между обоими.

f = -(Rs/2):0.1:(Rs/2);
Sd = gGauss1 * 1/sqrt(2*pi*sGauss1^2) * exp(-(f-fGauss1).^2/(2*sGauss1^2)) ...
    + gGauss2 * 1/sqrt(2*pi*sGauss2^2) * exp(-(f-fGauss2).^2/(2*sGauss2^2));

hold on;
plot(f(Sd>0)/1e3, 10*log10(Sd(Sd>0)), 'k--');
legend('Simulation', 'Theory');

Figure contains an axes. The axes with title Power Spectral Density contains 2 objects of type line. These objects represent Simulation, Theory.

ITU-R F.1487 низкие широты, модели канала с умеренными условиями (LM)

Рекомендация ITU-R F.1487 задает упрощенные модели канала, используемые в количественной проверке HF-модемов. Эти модели состоят из двух независимо замирающих путей с равной степенью. На каждом пути два магнитоионных компонента приняты с нулевым сдвигом частоты и равным отклонением: следовательно, bi-Гауссов Допплеровский спектр на каждом отводе уменьшается до одного Гауссова Допплеровского спектра, и огибающая комплексного процесса затухания распределена Релеем.

Ниже мы создадим объект канала в соответствии с моделью канала Low Latitudes, Moderate Conditions (LM), указанной в Приложении 3 F.1487 ITU-R, используя stdchan функция. Задержки пути составляют 0 и 2 мс. Частотный разброс, заданный как удвоенное стандартное отклонение доплеровского спектра Гауссова, составляет 1,5 Гц. Структура доплеровского спектра Гауссова, следовательно, построена с нормализованным стандартным отклонением (1,5/2 )/ fd, где fd 1 Гц (тип help doppler для получения дополнительной информации. При использовании stdchan для построения моделей HF-канала ITU-R, максимальный доплеровский сдвиг должен быть установлен равным 1 Гц: это гарантирует, что Гауссов Допплеровский спектр построенного канала имеет правильное стандартное отклонение.

close(hFig);

fd = 1;
chanLM = stdchan('iturHFLM', Rs, fd);
chanLM.RandomStream = 'mt19937ar with seed';
chanLM.Seed = 9999;
chanLM.PathGainsOutputPort = true;
chanLM.Visualization = 'Impulse response'
chanLM = 
  comm.RayleighChannel with properties:

             SampleRate: 9600
             PathDelays: [0 0.0020]
       AveragePathGains: [0 0]
     NormalizePathGains: true
    MaximumDopplerShift: 1
        DopplerSpectrum: [1x1 struct]

  Show all properties

Мы включили визуализацию импульсной характеристики в Системный объект канала Релея. Приведенный ниже код моделирует канал LM и визуализирует его полосно-ограниченную импульсную характеристику. По умолчанию отклики канала для одной из четырех выборок визуализируются для более быстрой симуляции. Другими словами, для системы координат длиной 1000 показаны ответы для 1-й, 5-й, 9-й,..., 997-й выборки. Чтобы наблюдать реакцию для каждой выборки, установите SamplesToDisplay свойство chanLM на '100%'.

numFrm = 10;       % Number of frames
for frmIdx = 1:numFrm
    x = qpskMod(randi([0 M-1], frmLen, 1));
    chanLM(x);
end

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.

Теперь мы включаем визуализацию Допплеровского спектра для объекта канала, чтобы наблюдать теоретические и эмпирические Доплеровские спектры Гауссова для первого дискретного пути. Из-за очень низкого доплеровского сдвига может потребоваться некоторое время, чтобы эмпирический спектр сходился к теоретическому спектру.

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

frmLen = 2e6;      % Number of samples per frame
numFrm = 80;       % Number of frames
for frmIdx = 1:numFrm
    x = qpskMod(randi([0 M-1], frmLen, 1));
    chanLM(x);
end

Figure Doppler Spectrum contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 3 objects of type line, text. These objects represent Theoretical, Empirical.

Избранная библиография

1 - Рекомендация F.1487 ITU-R «Тестирование HF-модемов с пропускной способностью до около 12 кГц с использованием имитаторов ионосферных каналов», 2000.

2 - C. C. Watterson, J. R. Juroshek, and W. D. Бенсема, «Экспериментальное подтверждение модели HF-канала», IEEE ® Trans. Commun. Технол., т. COM-18, № 6, декабрь 1970.