EngeePhased.MFSKWaveform
Генератор непрерывного сигнала с многопозиционной частотной модуляцией.
| Библиотека |
|
| Блок |
Описание
Непрерывный сигнал с многопозиционной частотной модуляцией (ЧМ) используется в автомобильных радиолокаторах для улучшения одновременного импульсного и допплеровского определения расстояния до нескольких целей. Системный объект EngeePhased.MFSKWaveform генерирует непрерывный сигнал с многопозиционной ЧМ. Сигнал с многопозиционной ЧМ состоит из двух чередующихся последовательностей возрастающих частот, как описано в разделе Алгоритмы.
Чтобы сгенерировать непрерывный сигнал с многопозиционной ЧМ, выполните следующие действия:
-
Создайте объект EngeePhased.MFSKWaveform и установите его свойства.
-
Вызовите объект с аргументами, как если бы это была функция.
Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.
Синтаксис
Создание
-
waveform = EngeePhased.MFSKWaveform()— создает системный объектwaveformгенератора сигнала с многопозиционной ЧМ. -
waveform = EngeePhased.MFSKWaveform(Name=Value)— создает системный объектwaveformгенератора сигнала с многопозиционной ЧМ с указанным свойством"Name", установленным на указанное значениеValue. Вы можете указать дополнительные свойства в виде пар имя-значение в любом порядке (Name1=Value1,…,NameN=ValueN).
Аргументы
Выходные аргументы
Y —
сигнал с многопозиционной ЧМ
комплексный вектор
Details
Выходной сигнал с многопозиционной ЧМ, возвращаемый в виде комплексного вектора размером . Когда метод step! достигает конца сигнала, выходные отсчеты зацикливаются с начала сигнала, образуя периодический сигнал.
| Типы данных |
|
| Поддержка комплексных чисел |
да |
Свойства
#
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.
Методы
Примеры
Формирование сигналов с многопозиционной частотной модуляцией
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))

# построение модуля и фазы сигнала
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))

Основной характеристикой сигнала является частотный спектр и спектрограмма. Воспользуемся встроенной функцией 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)
)

Для вычисления спектрограммы воспользуемся встроенной функцией 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 = "Частота Доплера, МГц"
)

Алгоритмы
Сигнал с многопозиционной частотной модуляцией формируется путем переключения несущей частоты в соответствии с заданным многоуровневым цифровым кодом:
где
-
— длительность одного символа;
-
— значение информационного символа из многопозиционного алфавита;
-
— частотный разнос между позициями.
Для генерации сигнала со ступенчатой частотной модуляцией необходимо задать следующие параметры:
-
частота дискретизации фильтра ;
-
длительность импульса ;
-
частота следования импульсов ;
-
количество импульсов ;
-
количество частотных ступеней ;
-
начальная частота сигнала ;
-
частотный разнос между позициями ;
-
конечная частота сигнала ;
-
девиация частоты .
Каждая последовательность представляет собой набор непрерывных сигналов, возрастающих по частоте. Смещение между двумя последовательностями постоянно и может быть положительным или отрицательным. Полный сигнал состоит из четного числа шагов одинаковой длительности . Тогда каждая последовательность состоит из шагов. Девиация частоты сигнала — это разность между самой высокой и самой низкой частотами любой из последовательностей. Значение всегда положительно, что указывает на увеличение частоты. Разность частот между последовательными шагами каждой последовательности определяется следующим образом:
Самая низкая частота первой последовательности всегда равна 0 Гц и соответствует несущей частоте полосового сигнала. Самая низкая частота второй последовательности может быть положительной или отрицательной и равна . Отрицательные частоты соответствуют частотам полосового сигнала, которые ниже несущей частоты. Длительность сигнала задается значением . Свойства системного объекта, соответствующие параметрам сигнала, приведены в таблице.
| Параметр сигнала | Свойство |
|---|---|
|
|
|
|
|
|
|
Литература
-
Meinecke, Marc-Michael, and Hermann Rohling, Combination of LFMCW and FSK Modulation Principles for Automotive Radar Systems. German Radar Symposium GRS2000. 2000.
-
Rohling, Hermann, and Marc-Michael Meinecke. Waveform Design Principles for Automotive Radar Systems. CIE International Conference on Radar. 2001.