Широкополосная передача с использованием псевдослучайных последовательностей. В цифровых системах связи расширение полосы достигается, как правило, путём дополнительной модуляции сигнала. В частности применяется модуляция несущей цифровой кодовой последовательностью с частотой следования символов, во много раз превосходящей ширину полосы информационного сигнала. Такие системы называют системами с одночастотными псевдослучайными сигналами (direct sequence spreading systems). Простейший и наиболее полно исследованный класс псевдослучайных последовательностей образуют М – последовательности. Последовательностью максимальной длины (М - последовательностью) называется последовательность, порожденная сдвиговым регистром с обратными связями, задаваемыми коэффициентами примитивного полинома. Пусть h( x) h0 x n h1 x n 1 ... hn 1 x hn (1) произвольный двоичный полином степени n. Говорят, что последовательность 𝑎 порождается полиномом h(x), если при всех i n n 1 j 0 j 0 hi ai j 0 или ain h j ai j . В случае двоичного полинома h0 hn 1 всегда, а hi , i 0, n принимают значения 0 или 1. Генератор последовательности, порожденной полиномом (1), показан на рис. 1. -h1 -h2 + + -hn-1 … + Рис. 1 Порождаемая таким генератором последовательность будет, очевидно, периодической, причем величина периода совпадает с числом различных состояний сдвигового регистра. Ясно, что число возможных состояний (исключая нулевое) сдвигового регистра есть 2 n 1 , однако, если обратные связи заданы произвольным полиномом, то число различных реализующих состояний, а значит и период последовательности, может оказаться меньше 2 n 1 . Если же обратные связи заданы примитивным полиномом, то последовательность состояний сдвигового регистра пробегает все возможные 2 n 1 состояний, и порождаемая последовательность будет иметь максимально возможный период 2 n 1 (отсюда и название «последовательность максимальной длины»). Последовательность максимальной длины обладает следующими свойствами: - - - М – последовательность может быть получена с помощью регистра сдвига длины с обратными связями, задаваемыми примитивным полиномом, где n – порядок примитивного полинома; период последовательности равен N = 2 n 1 ; число единиц в последовательности на одну больше, чем нулей; на выходе регистра могут быть получены все сдвиги M – последовательности, т.е. существует в точности N различных последовательностей, порождаемых полиномом h(x). Все они являются N различными сдвигами M – последовательности; сложение по модулю два любой последовательности максимальной длины с последовательностью, полученной путем любого циклического сдвига этой же последовательности на некоторое число позиций, приводит к новой последовательности, - - которая представляет собой циклический сдвиг той же самой последовательности на другое число позиций; каждое возможное состояние или n – разрядная комбинация данного n – разрядного генератора за время формирования полного периода кода возникает в некоторый момент времени только 1 раз. Исключением является комбинация из одних нулей, в нормальном режиме работы она не возникает и не должна возникать; двоичные М – последовательности обладают двухуровневой автокорреляционной функцией , т.е. N, l = Nk, k = 0,1,2,… -1, l Nk Вид автокорреляционной функции показан на рис. 3 2n-1 -1 1 0 -1 Рис. 3 Взаимнокорреляционные функции М – последовательностей, как и других псевдослучайных последовательностей, обычно характеризуют набором значений корреляции и их весов (число значений аргумента l, при котором она принимает данное значение С) или взаимно-корреляционным спектром пары последовательностей xn , y n . Можно показать, что взаимнокорреляционная функция последовательностей xn , y n , порождаемых различными примитивными полиномами, принимает, как минимум, три различных значения. Взаимно корреляционные функции, принимающие три значения, называются предпочтительными, а соответствующие пары М – последовательностей – предпочтительными парами. Множество М – последовательностей называется связным, если любая входящая в него пара предпочтительна. Связное множество максимальной мощности будем называть максимальным связным множеством. В табл. 1 приведены мощности М множеств, содержащих все М – последовательности данного периода и определенные для них пиковые значения С взаимнокорреляционных функций, а также мощности Мn максимальных связных множеств и пиковые значения Сn предпочтительных взаимно-корреляционных функций. n 3 4 5 7 10 15 N= 2 1 7 15 31 127 1023 32767 n M 2 2 6 18 60 1800 C 5 9 11 41 383 2047 Мn 2 0 3 6 3 2 Таблица 1 Сn 5 9 9 17 65 257 Максимальные связные множества М-последовательностей используются в тех случаях, когда требуется небольшое количество последовательностей с очень хорошими взаимнокорреляционными свойствами. В большинстве приложений, например, широкополосные системы связи с многостанционным доступом, требуются значительно большие множества последовательностей. Применять в них большие множества последовательностей максимальной длины нецелесообразно, поскольку взаимно-корреляционные функции больших множеств Мпоследовательностей периода 127, обладает пиковым значением взаимнокорреляционой функции Сn = 17. В то же время, произвольное множество из 7 и более последовательностей этого периода характеризуются сравнительно большим значением взаимной корреляции C = 41. Рассмотрим прием и передачу сообщений M-последовательностями периода 63. Их спектр, представленный на рис. 4, очень похож на спектр шума, используя это свойство Мпоследовательностей можно, например, обеспечивать скрытую передачу. При моделировании передачи по каналу с периодической помехой, спектры которой показаны на рис. 5 зеленым цветом, на приемной стороне производится быстрое преобразование Фурье, значение амплитуды, соответствующее пику спектра помехи, обнуляется, и решение принимается по минимуму расстояния между принятым сигналом и известной Мпоследовательностью. Алгоритм приема: 1. Быстрое прямое преобразование Фурье принятого сигнала. 2. Нахождение позиций со значениями большими максимального значения спектра Мпоследовательности и определении их как искаженных. 3. Обнуление значений спектра, принятого сигнала, на искаженных позициях. 4. Быстрое обратное преобразование Фурье. 5. Принятие решения о принятом сообщении по минимуму расстояния между преобразованным принятым сигналом и возможными вариантами Мпоследовательностей. В результате моделирования при различных периодических помехах решение о передаваемом символе в приемнике оказывалось верным. Результаты работы алгоритма при передаче сообщения 1 для различных помех: 1. 𝑑1 = 11, 𝑑0 = 125.4 2. 𝑑1 = 11, 𝑑0 = 123.6 3. 𝑑1 = 26.2, 𝑑0 = 115.6 где 𝑑1 , 𝑑0 − расстояния до М-последовательностей, использующихся соответственно для передачи сообщений 1 и 0. Рис. 4 Рис. 5 Приложение 1. Функция генерации M-последовательности function M = generate_mseq( poly ) n = size(poly, 2) - 1; reg = [1, zeros(1, n - 1)]; new_reg = zeros(1,n); for i = 1:(2^n - 1) M(i) = reg(n); new_reg(1) = reg(n); new_reg(2:n) = mod(reg(1:n-1) + poly(2:n).*reg(n), 2); reg = new_reg; end end 2. Функция симуляции передачи M-последовательности в канале с различными помехами %% clear; clc; % to generate M-sequence M = generate_mseq([1, 0, 0, 0, 0, 1, 1]); len = size(M,2) + 1; % physical representation M-seq in channel % logical 0 Din_0 = zeros(1,len); for i = 1:len-1 Din_0(i) = (-1)^M(i); end % logical 1 Din_1 = (-1).*Din_0; % to generate -1 1 -1 1 .. -1 1 G = zeros(1,len); for i = 1:len-1 G(i) = (-1)^i; end % to compute spectrum spec_D = fft(Din_0); spec_G = fft(G); figure(1); plot(1:len, abs(spec_D(1:len)).^2,1:len, abs(spec_G(1:len)).^2); title('Spectrum'); legend('M sequence', '-1 1 -1 1 ...'); % summary in channel spec = spec_D + spec_G; spec(33) = 0; Dout = ifft(spec); % to calculate distance diff1 = sum(abs(Dout - Din_0)); diff2 = sum(abs(Dout - Din_1)); disp(diff1); disp(diff2); %% % to generate -1 -1 -1 1 -1 -1 -1 1 .. -1 -1 1 G1 = ones(1,len).*(-1); for i = 4:4:len-1 G1(i) = 1; end % to compute spectrum spec_G1 = fft(G1); figure(2); plot(1:64, abs(spec_D(1:len)).^2,1:len, abs(spec_G1(1:len)).^2); title('Spectrum'); legend('M sequence', '-1 -1 -1 1 -1 -1 -1 1 ...'); % summary in channel spec = spec_D + spec_G1; spec(find(abs(spec(1:len)).^2 > max(abs(spec_D(1:len)).^2))) = 0; Dout = ifft(spec); % to calculate distance diff1 = sum(abs(Dout - Din_0)); diff2 = sum(abs(Dout - Din_1)); disp(diff1); disp(diff2); %% % to generate 1 1 -1 -1 1 1 -1 -1 .. 1 1 -1 -1 G2 = ones(1,len).*(-1); for i = 1:4:len-1 G2(i) = 1; G2(i+1) = 1; end % to compute spectrum spec_G2 = fft(G2); figure(3); plot(1:len, abs(spec_D(1:len)).^2,1:len, abs(spec_G2(1:len)).^2); title('Spectrum'); legend('M sequence', '1 1 -1 -1 1 1 -1 -1 ...'); % summary in channel spec = spec_D + spec_G2; spec(find(abs(spec(1:len)).^2 > max(abs(spec_D(1:len)).^2))) = 0; Dout = ifft(spec); % to calculate distance diff1 = sum(abs(Dout - Din_0)); diff2 = sum(abs(Dout - Din_1)); disp(diff1); disp(diff2);