P25 измерения спектра с помощью синтезированных и захваченных данных

Этот пример показывает, как использовать циклостационарное обнаружение функций для различения сигналов с различными схемами модуляции, включая 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 модуляция по существу является pi/4 дифференциальной квадратурной фазовой манипуляции (pi/4 DQPSK), где кодирование является симметричным, с использованием значений изменения фазы -135 степеней-45 степеней, + 45 степени и + 135 степени, как показано на следующем рисунке.

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

Циклостационарное обнаружение функций

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

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

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

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

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

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

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

Запустите функцию построения графика commP25plot.m. Этот шаг иллюстрирует спектральную автокорреляционную функцию, которая является трехмерным рисунком. Его ось X представляет циклическую частоту (альфа) от -1 до 1. Его ось y представляет спектральную частоту (f) от -0,5 до 0,5, а его ось z (Sx) представляет соответствующую величину спектральной автокорреляционной функции для каждой (альфа, f) пары. Циклическое разрешение dalpha = 1/T, где T - время наблюдения данных. Спектральное разрешение df = 1/Tw, где 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 также вызывает фильтр обратной синусоидальности после фильтра приподнятого косинуса, чтобы компенсировать синусоидальную характеристику интегрируемого и демпфирующего фильтра приемника 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 модулятор состоит из In Фазы и Квадратурной (I и Q) частей. Входные биты обрабатываются интерполяционной таблицей [8], чтобы получить 5-уровневый сигнал I/Q. Поскольку спецификация интерполяционной таблицы эквивалентна pi/4 DQPSK, пример использует object™ системы модулятора DQPSK для реализации этой интерполяционной таблицы. Сигналы 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 циклостационарного детектора и определяет, является ли он P25 сигналом.

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

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);

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

[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.

Заключение

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

Приложение

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

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

  1. P25 Technology Interest Group: http://www.project25.org/

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

  3. Е. С. Лайк, «Несотрудническое признание модуляции посредством использования циклической статистики». МС Диссертация. 2007

  4. Е. С. Лайк, В. Д. Чакраварти, П. Ратацци и З. Ву, «Классификация сигналов в каналах с замираниями с использованием циклических Спектральных анализов», Журнал EURASIP по беспроводным коммуникациям и сетям, Volume 2009, 2009.

  5. W. A. Гарднер, А. Наполитано и Л. Паура, «Циклостационарность: полвека исследований», Обработка сигналов, Том 86, № 4, стр. 639-697, 2006.

  6. Е. Л. Да Коста, «Обнаружение и идентификация циклостационарных сигналов». МС Диссертация. 1996.

  7. Антонио Ф. Лима-младший, «Анализ низкой вероятности точки пересечения (LPI) радиосигналов с использованием циклостационарной обработки». МС Диссертация. 2002.

  8. TIA Standard Project 25: < https ://www.tiaonline.org/what-we-do/standards/>

Для просмотра документации необходимо авторизоваться на сайте