Спектр P25, распознающийся с синтезируемыми и собранными данными

В этом примере показано, как использовать cyclostationary выявление признаков, чтобы отличить сигналы с различными схемами модуляции, включая сигналы P25 [1]. Это задает четыре случая сигналов: шум только, C4FM, CQPSK и один произвольный тип. Пример применяет алгоритм обнаружения для сигналов с различными значениями ОСШ, и для полученного реального сигнала P25, и затем классифицирует сигналы как один из четырех типов. Графические результаты показывают, что алгоритм обнаружения преуспевает во всех случаях.

Проект 25 (P25)

Проект 25 (P25 или APCO-25) является набором стандартов для коммуникаций цифрового радио для использования федеральным, состоянием, областью и локальными службами общественной безопасности в Северной Америке. Когда чрезвычайные ситуации возникают, этот набор протоколов включает коммуникацию среди правительственных учреждений и взаимных команд реагирования помощи. В этом отношении P25 исполняет ту же роль как европейское Наземное Соединенное магистралью Радио (TETRA) [2] протокол, несмотря на то, что эти два стандарта не совместимы друг с другом. В Северной Америке P25 широко используется в общественной безопасности, безопасности, государственной службе и коммерческом применении [1].

Проект 25 развертывается в двух фазах. В Фазе 1, P25 использует C4FM, акроним для совместимых 4 частотных модуляций уровня. В его самой простой форме это - специальный тип 4FSK модуляция, которая использует четыре различных частоты, чтобы представлять символы. Фаза 1 использует эту схему модуляции передать цифровую информацию более чем канал на 12,5 кГц.

Фаза 2 передает цифровую информацию более чем канал на 6,25 кГц с помощью формата модуляции совместимого квадратурного манипулирования сдвига фазы (CQPSK). Модуляция CQPSK является по существу квадратурным манипулированием сдвига фазы дифференциала пи/4 (пи/4 DQPSK), где кодирование симметрично, с помощью значений фазового перехода-135 градусов,-45 градусов, +45 градусов и +135 градусов, как показано в следующем рисунке.

В этом рисунке следующее состояние красных точек может только быть зелеными точками, и наоборот. Несмотря на то, что скорость передачи данных и биты на символ идентичны, основное различие между двумя схемами модуляции - то, что C4FM использует сдвиг частоты, чтобы изобразить символ, который обеспечивает фиксированный амплитудный сигнал. В отличие от этого CQPSK, использует сдвиг фазы, чтобы изобразить символ, который передает амплитудный компонент сигналу.

Выявление признаков Cyclostationary

Распознавание модуляции и классификация сигнала были предметом значительного исследования больше двух десятилетий. Системы классификации могут обычно разделяться на одну из двух широких категорий: подходы основанного на вероятности (LB) и подходы основанного на функции (FB) [3]. Выявление признаков Cyclostationary является методом FB на основе того, что коммуникационные сигналы точно не описаны столь же стационарные, а скорее более соответственно смоделированы как cyclostationary [4].

cyclostationary процесс является сигналом, имеющим статистические свойства, которые варьируются циклически со временем [5]. Эти периодичности происходят для сигналов четко определенными способами из-за процессов, таких как выборка, сканирование, модуляция, мультиплексирование и кодирование. Эта получившаяся периодическая природа сигналов может быть использована, чтобы определить схему модуляции неизвестного сигнала [4].

Выявление признаков Cyclostationary является устойчивым методом обнаружения спектра, потому что модулируемой информацией является cyclostationary процесс, в то время как шум не. В результате циклические детекторы могут успешно действовать даже в низких средах ОСШ.

Случай только для шума

Для случая только для шума сгенерируйте (4*N)-by-1 вектор из белого Гауссова шума со степенью 1 dBW. 1 / (4*N) циклическое разрешение, используемое, чтобы вычислить спектральную автокорреляционную функцию (SAF) в commP25ssca.m.

N = 4096;
input = wgn(4*N,1,1);

Используйте область времени спектральная автокорреляционная функция, чтобы анализировать cyclostationary функции сигнала x (t). Запустите спектральную автокорреляционную функцию commP25ssca.m на входном сигнале. Эта функция оценивает идеальную спектральную автокорреляционную функцию с помощью алгоритма корреляции спектра полосы (SSCA) [3] временный метод сглаживания. Это - основанный на БПФ алгоритм сглаживания времени. Обратитесь к [6] для получения дополнительной информации о реализации этого алгоритма.

Запустите функцию построения графика commP25plot.m. Этот шаг иллюстрирует спектральную автокорреляционную функцию, которая является 3D фигурой. Его ось X представляет циклическую частоту (альфа) от-1 до 1. Его ось Y представляет спектральную частоту (f) от-0.5 до 0,5, и его ось z (Sx) представляет соответствующую величину спектральной автокорреляционной функции для каждого (альфа, f) пара. Циклическое разрешение dalpha = 1/T, где T является временем наблюдения данных. Спектральное разрешение df = 1/ТВт, где Tw является временем окна, чтобы вычислить комплекс, демодулирует [7]. С тех пор T> Tw, dalpha <df. Обратите внимание на то, что, когда альфа не равняется нулю, значения SAF являются приблизительно нулем.

% 64 represents the window time Tw, 4*N represents the observation time T
[Sx,alphao,fo] = commP25ssca(input,1,1/64,1/(4*N));
fig1 = figure('Position',figposition([5 40 40 40]));
commP25plot(Sx,alphao,fo);

commP25decision_noise.m определяет, содержит ли входной сигнал только шум. commP25decision_c4fm.m определяет, является ли входной сигнал сигналом C4FM. И commP25decision_cqpsk.m определяет, является ли входной сигнал сигналом CQPSK. Эти решения основаны на местоположении peaks в SAF. В этом примере код правильно приходит к заключению, что существует существующий сигнал № P25.

[c,d] = size(Sx);
[Ades,Index] = sort(Sx(:),'descend');   % sort Sx by its element and store in Ades
[Ridx,Cidx]  = ind2sub(size(Sx),Index); % corresponding row index and column index
leng = length(Ades);

noise_decision = commP25decision_noise(Ades,Ridx,Cidx,leng,c,d);
if noise_decision == 0
    c4fm_decision = commP25decision_c4fm(Ades,Ridx,leng,c);
    if c4fm_decision == 0
        commP25decision_cqpsk(Ades,Ridx,Cidx,leng,c,d);
    end
end
There is no P25 signal.

Случай C4FM с синтезируемыми данными

Согласно [8], следующая структура модуляции генерирует выходной сигнал C4FM.

Нормальный фильтр приподнятого косинуса, который удовлетворяет импульсу Найквиста формирование критерия, минимизирует интерференцию межсимвола. Параметры фильтра приподнятого косинуса выбраны на технические требования фильтра в [8]. А именно, этот фильтр приподнятого косинуса имеет фактор повышающей дискретизации 4 и фактор спада 0,2. Стандарт C4FM также призывает к инверсии sinc фильтр после того, как фильтр приподнятого косинуса, чтобы компенсировать sinc ответ приемника P25 интегрируют и выведут фильтр. Модулятор FM имеет отклонение 600 Гц.

Чтобы наблюдать эффекты шума на проектных решениях, запустите обнаружение в значениях С/Ш -3 дБ, 3 дБ и дБ бесконечности.

% The length of input bits is N. The length of the output bits must also be
% N
x = randi([0,3],N,1);
sym = 2*x-3;                    % integer input

% Raised Cosine Filter
sampsPerSym = 4;                % Upsampling factor
% Design raised cosine filter with given order in symbols. Apply gain to
% the unit energy filter to obtain max amplitude of 1.
rctFilt = comm.RaisedCosineTransmitFilter(...
    'Shape', 'Normal', ...
    'RolloffFactor', 0.2, ...
    'OutputSamplesPerSymbol', sampsPerSym, ...
    'FilterSpanInSymbols', 60, ...
    'Gain', 1.9493);
c4fm_init = rctFilt(sym);

shape2 = 'Inverse-sinc Lowpass';
d2 = fdesign.interpolator(2, shape2);
intrpltr = design(d2, 'SystemObject', true);
c4fm_init = intrpltr(c4fm_init);

% Baseband Frequency Modulator
Fs = 4800;
freqdev = 600;
int_x = cumsum(c4fm_init)/Fs;
c4fm_output = exp(1i*2*pi*freqdev*int_x);
y = c4fm_output(1:N); % Ideal case, SNR = infinity
y1 = awgn(y,3);       % SNR = 3 dB
y2 = awgn(y,-3);      % SNR = -3 dB

Соответствующие спектральные автокорреляционные функции вычислены и построены. Обратите внимание на то, что peaks SAF становится более неясным, когда отношение сигнал/шум уменьшается.

[Sx0,alphao0,fo0] = commP25ssca(y,1,1/64,1/(4*N));
[Sx1,alphao1,fo1] = commP25ssca(y1,1,1/64,1/(4*N));
[Sx2,alphao2,fo2] = commP25ssca(y2,1,1/64,1/(4*N));
fig2 = figure('Position',figposition([5 40 80 40]));
subplot(131);
commP25plot(Sx0,alphao0,fo0);
title('Ideal case');
subplot(132);
commP25plot(Sx1,alphao1,fo1);
title('SNR = 3 dB');
subplot(133);
commP25plot(Sx2,alphao2,fo2);
title('SNR = -3 dB');

Этот раздел выполняет те же процедуры как в предыдущей и получает результаты классификации для каждого значения ОСШ. Функция commP25decision.m выполняет классификацию обнаружений спектра для всех возможных типов входного сигнала.

commP25decision(Sx0); % Ideal case
There is signal present. Checking for presence of C4FM.
This is C4FM.
commP25decision(Sx1); % SNR = 3 dB
There is signal present. Checking for presence of C4FM.
This is C4FM.
commP25decision(Sx2); % SNR = -3 dB
There is signal present. Checking for presence of C4FM.
This is C4FM.

Случай CQPSK с синтезируемыми данными

Согласно [8], следующая структура модуляции генерирует выходной сигнал CQPSK.

Модулятор CQPSK состоит из В Фазе и Квадратуре (я и Q) части. Входные биты обрабатываются интерполяционной таблицей [8], чтобы дать к 5-уровневому сигналу I/Q. Поскольку спецификация интерполяционной таблицы эквивалентна пи/4 DQPSK, пример использует Систему модулятора DQPSK object™, чтобы реализовать эту интерполяционную таблицу. Сигналы I/Q затем отфильтрованы с фильтром приподнятого косинуса, описанным в предыдущем случае.

% The size of input bits is 2*N, the size of output is 4*N
x = randi([0,1],2*N,1);

% Create a DQPSK modulator System object(TM) with bits as inputs, phase
% rotation of pi/4 and Gray-coded constellation
dqpskMod = comm.DQPSKModulator(pi/4,'BitInput',true);
% Modulate and filter
modout = dqpskMod(x);
release(rctFilt);
cqpsk_output = rctFilt(modout);
y = cqpsk_output;   % Ideal case, SNR = infinity
y1 = awgn(y,3);     % SNR = 3 dB
y2 = awgn(y,-3);    % SNR = -3 dB

Вычислите и постройте соответствующие спектральные автокорреляционные функции.

[Sx0,alphao0,fo0] = commP25ssca(y,1,1/64,1/(4*N));
[Sx1,alphao1,fo1] = commP25ssca(y1,1,1/64,1/(4*N));
[Sx2,alphao2,fo2] = commP25ssca(y2,1,1/64,1/(4*N));
fig3 = figure('Position',figposition([5 40 80 40]));
subplot(131);
commP25plot(Sx0,alphao0,fo0);
title('Ideal case');
subplot(132);
commP25plot(Sx1,alphao1,fo1);
title('SNR = 3 dB');
subplot(133);
commP25plot(Sx2,alphao2,fo2);
title('SNR = -3 dB');

Код выходные параметры ниже показа результаты обнаружения CQPSK для трех различных значений ОСШ.

commP25decision(Sx0); % Ideal case
There is signal present. Checking for presence of C4FM.
This is NOT C4FM. Checking for presence of CQPSK.
This is CQPSK.
commP25decision(Sx1); % SNR = 3 dB
There is signal present. Checking for presence of C4FM.
This is NOT C4FM. Checking for presence of CQPSK.
This is CQPSK.
commP25decision(Sx2); % SNR = -3 dB
There is signal present. Checking for presence of C4FM.
This is NOT C4FM. Checking for presence of CQPSK.
This is CQPSK.

Случай сигнала Non-P25 с синтезируемыми данными

Этот случай задает один произвольный тип сигнала, обрабатывает его с детектором P25 cyclostationary и определяет, является ли это сигнал P25.

Спроектируйте КИХ equiripple фильтр lowpass и примените его к случайному входу. Не добавляйте шум в сигнал в этом случае. Попробуйте дополнительные типы сигнала и позвольте cyclostationary анализатору классифицировать их.

bcoeffs = firpm(200,[0 0.2 0.22 1],[1 1 0 0]); % Set N to achieve 40 dB rejection
input = randn(N,1);
y = filter(bcoeffs,1,input);

Затем мы вычисляем и строим спектральную автокорреляционную функцию. Обратите внимание на то, что различные характеристики модуляции каждого выражения сигнала существенно отличающийся SAFs.

[Sx,alphao,fo] = commP25ssca(y,1,1/64,1/(4*N));
fig4 = figure('Position',figposition([5 40 40 40]));
commP25plot(Sx,alphao,fo);

Выполните те же процедуры и получите результат классификации.

commP25decision(Sx);
There is signal present. Checking for presence of C4FM.
This is NOT C4FM. Checking for presence of CQPSK.
This is NOT CQPSK either, so it is not a P25 signal.

Случай C4FM с собранными данными

Этот случай применяет алгоритм обнаружения для полученного реального сигнала C4FM. Сигнал был передан радио P25 на уровне 446 МГц, полученных радио USRP™, и затем сохраненных MATLAB® в capturedc4fm.mat. Выполните те же процедуры и получите результат классификации.

load capturedc4fm.mat;
y = y(1:4*N);
agc = comm.AGC;
y = 0.1*agc(y);
[Sx,alphao,fo] = commP25ssca(y,1,1/64,1/(4*N));
fig5 = figure('Position',figposition([5 40 40 40]));
commP25plot(Sx,alphao,fo);
commP25decision(Sx);
There is signal present. Checking for presence of C4FM.
This is C4FM.

Заключение

В этом примере показано, как использовать cyclostationary выявление признаков, чтобы отличить сигналы различных схем модуляции. Алгоритм классифицирует сигналы на основе местоположения peaks в спектральной автокорреляционной функции. Выявление признаков Cyclostationary имеет преимущества перед некоторыми детекторами, как энергетический детектор, из-за его упругости к шуму.

Приложение

Этот пример использует следующие скрипты и функции помощника:

Выбранная библиография

  1. Технологическая Заинтересованная группа P25: http://www.project25.org/

  2. TETRA <https://en.wikipedia.org/wiki/Terrestrial_Trunked_Radio>

  3. E. C. Как, "Несовместное распознавание модуляции через эксплуатацию циклической статистики". Тезис MS. 2007

  4. E. C. Как, В. Д. Чакрэварти, П. Ратацци и З. Ву, "Классификация сигнала в исчезающих каналах Используя циклический спектральный анализ", журнал EURASIP на радиосвязях и организации сети, объеме 2009, 2009.

  5. В. А. Гарднер, А. Наполитано и Л. Пора, "Cyclostationarity: Полвека исследования", Обработка сигналов, Издание 86, № 4, стр 639-697, 2006.

  6. Э. Ль. Да Коста, "Обнаружение и идентификация сигналов Cyclostationary". Тезис MS. 1996.

  7. Антонио Ф. Лима младший, "Анализ Низкой Вероятности Точки пересечения (линия на дюйм) Радио-Сигналы с помощью Обработки Cyclostationary". Тезис MS. 2002.

  8. Проект 25 Стандарта ТИИ: <https://tiaonline.org/what-we-do/standards/>