Документация Engee

EngeePhased.MFSKWaveform

Генератор непрерывного сигнала с многопозиционной частотной модуляцией.

Библиотека

EngeePhased

Блок

Многопозиционная ЧМ

Описание

Непрерывный сигнал с многопозиционной частотной модуляцией (ЧМ) используется в автомобильных радиолокаторах для улучшения одновременного импульсного и допплеровского определения расстояния до нескольких целей. Системный объект EngeePhased.MFSKWaveform генерирует непрерывный сигнал с многопозиционной ЧМ. Сигнал с многопозиционной ЧМ состоит из двух чередующихся последовательностей возрастающих частот, как описано в разделе Алгоритмы.

Чтобы сгенерировать непрерывный сигнал с многопозиционной ЧМ, выполните следующие действия:

  1. Создайте объект EngeePhased.MFSKWaveform и установите его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

  • waveform = EngeePhased.MFSKWaveform() — создает системный объект waveform генератора сигнала с многопозиционной ЧМ.

  • waveform = EngeePhased.MFSKWaveform(Name=Value) — создает системный объект waveform генератора сигнала с многопозиционной ЧМ с указанным свойством "Name", установленным на указанное значение Value. Вы можете указать дополнительные свойства в виде пар имя-значение в любом порядке (Name1=Value1,…​,NameN=ValueN).

Использование

Y = waveform() — возвращает сигнал Y с многопозиционной ЧМ.

Аргументы

Выходные аргументы

Y — сигнал с многопозиционной ЧМ
комплексный вектор

Details

Выходной сигнал с многопозиционной ЧМ, возвращаемый в виде комплексного вектора размером . Когда метод step! достигает конца сигнала, выходные отсчеты зацикливаются с начала сигнала, образуя периодический сигнал.

Типы данных

Float64

Поддержка комплексных чисел

да

Свойства

# StepTime — длительность шага частоты
Вещественное число

Details

Длительность каждого шага частоты в секундах, заданная в виде положительного скаляра.

Значение по умолчанию — 1e−4.

# StepsPerSweep — общее число шагов по девиации частоты
Вещественное число

Details

Общее число шагов по девиации частоты, заданное в виде четного положительного целого числа.

Значение по умолчанию — 64.

# SampleRate — частота дискретизации выходного сигнала
Вещественное число

Details

Частота дискретизации сигнала в виде положительного скаляра. Единицы измерения — Гц.

Значение по умолчанию — 1e6.

# NumSteps — число шагов частоты в сигнале
Вещественное число

Details

Число шагов частоты в выходном сигнале, заданное в виде целого положительного числа.

Значение по умолчанию — 1.

# NumSamples — число отсчетов в сигнале
Вещественное число

Details

Число отсчетов в выходном сигнале, заданное в виде целого положительного числа.

Значение по умолчанию — 1.

# OutputFormat — формат выходного сигнала
Строка

Details

Формат выходного сигнала:

  • "Steps" (по умолчанию) — выходной сигнал состоит из всех отсчетов, содержащихся в целом числе частотных шагов NumSteps.

  • "Samples" — выходной сигнал состоит из целого числа отсчетов NumSamples.

  • "Sweeps" — выходной сигнал состоит из всех отсчетов, содержащихся в целом числе шагов по девиации частоты NumSweeps.

Значения OutputFormat не влияют на свойства сигнала.

# NumSweeps — число шагов по девиации частоты в сигнале
Вещественное число

Details

Число шагов по девиации частоты в выходном сигнале, заданное в виде целого положительного числа.

Значение по умолчанию — 1.

# FrequencyOffset — смещение частоты
Вещественное число

Details

Смещение частоты, заданное в виде вещественного скаляра. Смещение частоты определяет частотный сдвиг между двумя последовательностями. Единицы измерения — Гц.

Значение по умолчанию — 1000.

# SweepBandwidth — девиация частоты
Вещественное число

Details

Девиация частоты в выходном сигнале, заданная в виде положительного скаляра. Единицы измерения — Гц.

Девиация частоты сигнала — это разность между самой высокой и самой низкой частотами любой из последовательностей.

Значение по умолчанию — 1e5.

Методы

Общие для всех системных объектов

step!

Запустить алгоритм работы системного объекта

release!

Разрешить изменение значения свойства системного объекта

reset!

Сброс внутренних состояний системного объекта

Специальные для системных объектов генераторов сигнала

bandwidth

Ширина полосы пропускания сигнала

getMatchedFilter

Коэффициенты согласованного фильтра, полученные из сигнала

plot

Построение графика импульсного сигнала

Примеры

Формирование сигналов с многопозиционной частотной модуляцией

Details

Сформируем сигнал с многопозиционной частотной модуляцией с частотой дискретизации 10 МГц, длительностью ступени 5 мкс, количеством ступеней 6, смещением по частоте 400 кГц и полосой сигнала 4 МГц.

Выполним инициализацию параметров.

fs = 10e6                # Частота дискретизации (Гц)
tstep = 5e-6             # Длительность одного шага (с)
stepsPerSweep = 6        # Общее число ступеней перестройки частоты
freqOffset = 400e3       # Смещение частоты (Гц)
sweepBW = 4e6            # Полоса перестройки (Гц)

# Дополнительные параметры
PRF = 1 / (stepsPerSweep * tstep);   # Частота повторения
sweeps2plot = 1;

Воспользуемся EngeePhased.MFSKWaveform для создания системного объекта зондирующего сигнала mfsk_wav.

mfsk_wav = EngeePhased.MFSKWaveform(
    SampleRate = fs,
    StepTime = tstep,
    StepsPerSweep = stepsPerSweep,
    SweepBandwidth = sweepBW,
    FrequencyOffset = freqOffset,
    OutputFormat = "Sweeps",
    NumSweeps = sweeps2plot
);

Выполним вызов системного объекта EngeePhased.MFSKWaveform c помощью переменной mfsk_wav.

mfsk_signal = mfsk_wav();

С помощью функции plot построим осциллограмму в виде IQ-компонент, модуль и фазу сигнала.

# построение IQ-компонент
t_grid = range(start = 0,step = 1/fs,length = length(mfsk_signal)) * 1e6 # сетка времени, мкс
fig1 = plot(t_grid,real.(mfsk_signal),title = "синфазная составляющая",lab="",ylab="Амплитуда")
fig2 = plot(t_grid,imag.(mfsk_signal),title = "квадратурная составляющая",lab="",xlab = "Время, мкс",ylab="Амплитуда");

plot(fig1,fig2,layout = (2,1))

object phased mfsk waveform 2 ru

# построение модуля и фазы сигнала
fig3 = plot(t_grid,abs.(mfsk_signal),title = "Модуль комплексного сигнала",lab="",ylab="Амплитуда");
fig4 = plot(t_grid,angle.(mfsk_signal)*180/pi,title = "Аргумент комплексного сигнала",lab="",xlab = "Время, мкс",ylab="Фаза, град.");

plot(fig3,fig4,layout = (2,1))

object phased mfsk waveform 3 ru

Основной характеристикой сигнала является частотный спектр и спектрограмма. Воспользуемся встроенной функцией periodogram.

# расчет спектра сигнала
spec_MFSK,f = EngeePhased.Functions.periodogram(
    mfsk_signal, # исходный сигнал
    ones(size(mfsk_signal)...),
    8192; # длина частоты дискретизации
    out = :data, # тип выхода
    fs = fs, # частота дискретизации
    spectrumtype = "power" # тип спектра
);

Визуализируем результат с помощью функции plot.

plot(
    f * 1e-6,
    EngeePhased.Functions.mag2db.(spec_MFSK),
    lab="", xlab = "Частота, МГц",
    ylab = "Мощность, дБВт",
    title = "Спектр сигнала",
    ylim = (-70,-20)
)

object phased mfsk waveform 4 ru

Для вычисления спектрограммы воспользуемся встроенной функцией spectrogram.

# расчет спектрограммы
spectgm_cfm,f1,t1 = EngeeDSP.Functions.spectrogram(
    real.(mfsk_signal);
    nfft = 512, # длина БПФ
    window = round(Int,length(mfsk_signal)/stepsPerSweep),
    noverlap = 0, # перекрытие окна
    spectrumtype = "power", # тип спектра — по мощности
    freqrange = "onesided", # диапазон спектра — односторонний
    out = :data, # тип выхода — массив данных
    fs = fs # частота дискретизации
);

Визуализируем результат расчета спектрограммы с помощью функции heatmap.

# построение спектрограммы
heatmap(
    t1[:]*1e6,
    f1[:]*1e-6,
    abs.(spectgm_cfm),color = :jet,
    xlab = "Время, мкс",
    ylab = "Частота Доплера, МГц"
)

object phased mfsk waveform 5 ru

Алгоритмы

Сигнал с многопозиционной частотной модуляцией формируется путем переключения несущей частоты в соответствии с заданным многоуровневым цифровым кодом:

где

  •  — длительность одного символа;

  •  — значение информационного символа из многопозиционного алфавита;

  •  — частотный разнос между позициями.

Для генерации сигнала со ступенчатой частотной модуляцией необходимо задать следующие параметры:

  • частота дискретизации фильтра ;

  • длительность импульса ;

  • частота следования импульсов ;

  • количество импульсов ;

  • количество частотных ступеней ;

  • начальная частота сигнала ;

  • частотный разнос между позициями ;

  • конечная частота сигнала ;

  • девиация частоты .

so mfsk waveform 1 ru

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

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

Параметр сигнала Свойство

SweepBandwidth

StepTime

StepsPerSweep

FrequencyOffset

Литература

  1. Meinecke, Marc-Michael, and Hermann Rohling, Combination of LFMCW and FSK Modulation Principles for Automotive Radar Systems. German Radar Symposium GRS2000. 2000.

  2. Rohling, Hermann, and Marc-Michael Meinecke. Waveform Design Principles for Automotive Radar Systems. CIE International Conference on Radar. 2001.