Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OPISIS_LAB3

.pdf
Скачиваний:
30
Добавлен:
24.12.2021
Размер:
717.64 Кб
Скачать

Таблица 2: Полиномы для генерации предпочтительных пар m-

последовательностей

Длина

Период кода

Предпочтительные пары

Трехуровневая

 

РЛОС

Голда

 

 

взаимная корреляция

L

N 2L 1

полином 1

полином 2

(ненормализованная)

 

 

 

 

 

 

 

5

31

[2,3,4,5]

[2,5]

-9

-1

7

 

 

 

 

 

 

 

6

63

[1,2,5,6]

[1,6]

-17

-1

15

 

 

 

 

 

 

 

 

 

[1,2,3,7]

[3,7]

-17

-1

15

7

127

[1,3,7]

[1,7]

-17

-1

15

 

 

[1,2,3,4,5,7]

[1,2,3,7]

-17

-1

15

 

 

 

 

 

 

 

9

511

[3,4,6,9]

[4,9]

-33

-1

31

[1,4,8,9]

[3,4,6,9]

-33

-1

31

 

 

 

 

 

 

 

 

 

 

 

[1,4,6,7,9,10]

[3,4,5,6,7,8,9,10]

-65

-1

63

10

1023

[1,2,4,6,7,10]

[1,5,8,10]

-65

-1

63

 

 

[1,4,6,7,9,10]

[1,3,4,5,6,7,8,10]

-65

-1

63

 

 

 

 

 

 

 

111

2047

[2,5,8,11]

[2,11]

-65

-1

63

 

 

 

 

 

 

 

Алгебраические детали выбора полиномов РЛОС для генерации предпочтительной пары m-последовательностей подробно описаны в работе Голда. Это гарантирует необходимость поиска предпочтительных пар, вместо этого конфигурации, приведенные в таблице 2, могут использоваться для генерации кодов Голда, которые обеспечивают оптимальные свойства корреляции (трехзначная корреляция). При выборе длины РЛОС

(L) при генерации кода Голда необходимо учитывать следующие моменты.

Трехзначные значения взаимной корреляции возникают, когда L нечетно или когда mod L, 4 2 .

Пиковая величина взаимной корреляции достигает минимально возможного значения только тогда, когда L нечетно (L 5,7,9,11,... ) . Следовательно, выбор

нечетных значений для L - лучший выбор.

Когда mod L, 4 4 , полиномы, перечисленные в таблице, по-прежнему относятся

к предпочтительному типу (дает трехзначную взаимную корреляцию), но нижняя граница слабее по сравнению с нижней границей, когда L нечетно.

Пример реализации для генерации кода Голда с периодом N 127 с

использованием предпочтительных парных многочленов: [7,3,2,1] и [7,3] показан на

рисунке 7. В этой реализации каждый регистр в РЛОС реализован как D-триггер, все подключены каскадно и работают с заданным синхронным тактированием. Изменение начальных начальных значений для регистров сдвига дает другой набор кода Голда. Код для генерация кодов Голда приведена в программе 4.

Рисунок 7 – Генератор последовательности Голда для предпочтительной пары [1,2,3,7] и

[3,7]

Программа 4: gold_code_generator.m: Программная реализация генератора кода

Голда

function [y] = gold_code_generator( G1,G2,X1,X2) %Implementation of Gold code generator

%G1-preferred polynomial 1 for LFSR1 arranged as [g0 g1 g2 ... gL-1] %G2-preferred polynomial 2 for LFSR2 arranged as [g0 g1 g2 ... gL-1] %X1-initial seed for LFSR1 [x0 x1 x2 ... xL-1]

%X2-initial seed for LFSR2 [x0 x1 x2 ... xL-1] %y-Gold code

%The function outputs the m-sequence for a single period %Sample call:

%7th order preferred polynomials [1,2,3,7] and [3,7] (polynomials : 1+x+x^2+x^3+x^7 and 1+x^3+x^7)

%i.e, G1 = [1,1,1,1,0,0,0,1] and G2=[1,0,0,1,0,0,0,1]

%with intial states X1=[0,0,0,0,0,0,0,1], X2=[0,0,0,0,0,0,0,1]: %gold_code_generator(G1,G2,X1,X2)

g1=G1(:); x1=X1(:); %serialize G1 and X1 matrices g2=G2(:); x2=X2(:); %serialize G2 and X2 matrices

if length(g1)~=length(g2) && length(x1)~=length(x2), error('Length mismatch between G1 & G2 or X1 & X2'); end

%LFSR state-transistion matrix construction L = length(g1)-1; %order of polynomial

A0 = [zeros(1,L-1); eye(L-1)]; %A-matrix construction g1=g1(1:end-1);g2=g2(1:end-1);

A1 = [A0 g1]; % LFSR1 state-transistion matrix

A2 = [A0 g2]; % LFSR2 state-transistion matrix

 

 

 

N = 2^L-1; %period of maximal length sequence

 

 

 

y = zeros(1,length(N));%array to store output

 

 

 

for i=1:N, %repeate for each clock period

 

 

 

 

y(i)= mod(x1(end)+x2(end),2);%XOR of outputs of LFSR1 & LFSR2

 

 

x1 = mod(A1*x1,2); % LFSR equation

 

 

 

 

 

x2 = mod(A2*x2,2); % LFSR equation

 

 

 

 

 

end

 

 

 

 

 

 

 

 

На рисунке 8 показана периодическая взаимная корреляция двух m

последовательностей, которые не являются предпочтительной парой. Возьмем

предпочтительную пару из таблицы 2 для N = 31, имеющую полиномы обратной связи

[2,3,4,5] и [2,5]. Взаимная корреляция выбранной предпочтительной пары показана на

рисунке 8.

 

 

 

 

 

 

 

Программа 5: Gold_CCF_test Генерация кода Голда на основе двух

предпочтительных пар m-последовательностей и вычисление взаимной корреляции.

 

N=31;%period of Gold code

 

 

 

 

 

G1=[1 1 1 1 0 1]; G2=[1 0 0 1 0 1]; %feedback connections

 

 

X1=[ 0 0 0 0 1]; X2=[ 0 0 0 0 1]; %initial states of LFSRs

 

 

y1= LFSR(G1,X1); y2=LFSR(G2,X2); N=31; %m-sequence 1 and 2

 

 

Ry1y2= 1/N*sequence_correlation(y1,y2,0,N);%cross-correlation

 

 

plot(0:1:31,Ry1y2)%plot cross-correlation

 

 

 

 

0.3

 

 

 

 

 

 

 

0.2

 

 

 

 

 

 

 

0.1

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

-0.1

 

 

 

 

 

 

 

-0.2

 

 

 

 

 

 

 

-0.3

 

 

 

 

 

 

 

0

5

10

15

20

25

30

35

 

Рисунок 8 – Нормированная взаимная корреляция предпочтительных парных m-

 

 

последовательностей с использованием обратных связей [2,3,4,5] и [2,5]

 

Автокорреляция кодовой последовательности Голда, представленная на рисунке 9,

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

корреляции показывают, что кодовая последовательность Голда не обладает

превосходным свойством автокорреляции, как у отдельных m-последовательностей, но

обладает хорошими свойствами взаимной корреляции по сравнению с отдельными m-

последовательностями.

 

 

 

 

 

 

 

Программа 6: Gold_ACF_test Генерация кода Голда и вычисление автокорреляции

N=31;%period of Gold code

 

 

 

 

 

G1=[1 1 1 1 0 1]; G2=[1 0 0 1 0 1]; %feedback connections

 

 

X1=[ 0 0 0 0 1]; X2=[ 0 0 0 0 1]; %initial states of LFSRs

 

 

y=gold_code_generator(G1,G2,X1,X2);%Generate Gold code

 

 

 

Ryy= 1/N*sequence_correlation(y,y,0,N);%auto-correlation

 

 

plot(0:1:31,Ryy);%plot auto-correlation

 

 

 

 

1

 

 

 

 

 

 

 

0.8

 

 

 

 

 

 

 

0.6

 

 

 

 

 

 

 

0.4

 

 

 

 

 

 

 

0.2

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

-0.2

 

 

 

 

 

 

 

-0.4

 

 

 

 

 

 

 

0

5

10

15

20

25

30

35

 

Рисунок 9 – Нормированная автокорреляция кодовой последовательности Голда,

 

сгенерированной с использованием предпочтительных парных обратных связей [2,3,4,5] и

 

 

 

[2,5]

 

 

 

 

6. Расширение спектра методом прямой последовательности

Расширение спектра методом прямой последовательности (DSSS) — это один из

нескольких способов генерации сигнала с расширенным спектром. На рисунке 10

показана блок-схема передатчика DSSS. Двоичная входная последовательность d 0,1

преобразуется в сигнал длительностью Tb

в битах.

Скорость передачи данных на входе

Rb 1/ Tb .

Результирующий сигнал затем умножается на

сигнал

псевдослучайной

расширяющейся последовательности, имеющий скорость Rc

1/ Tc ,

которая

намного

превышает

скорость входных данных,

то есть

Rc Rb .

Длительность

в битах

расширяющей последовательности Tc

называется длительностью элементарного сигнала,

а Rc 1/ Tc называется скоростью

элементарного сигнала. Процесс умножения

последовательности входных данных с низкой скоростью на псевдослучайную последовательность с очень высокой скоростью приводит к формированию сигнала,

который занимает полосу пропускания, намного превышающую ширину полосы входных данных. Это соответствует определению сигнала с расширенным спектром, данному в начале этой лабораторной.

Для передачи сигнал после расширения затем модулируется с использованием модуляции BPSK. Спектральная плотность мощности результирующего сигнала s (t)

будет иметь главный лепесток с нулями, которые находятся на расстоянии 1/ Tc от несущей частоты. Следовательно, полоса пропускания сигнала DSSS от нуля до нуля равна 2 / Tc .

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

Результирующий сигнал с расширенным спектром основной полосы затем умножается на ту же форму волны расширяющейся последовательности.

Рисунок 10 – Передатчик с расширенным спектром прямой последовательности с использованием модуляции BPSK

p(t)

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

Рисунок 11 – Приемник с расширенным спектром прямой последовательности для несущей с модуляцией BPSK

Разработчик может выбрать форму импульса расширяющей

последовательности, но должен убедиться, что коррелятор либо согласованный фильтр в приемнике использует одну и ту же форму импульса p(t) в последовательных интервалах

Tb .

7. Моделирование системы DSSS: общие замечания

Эквивалентные по времени модели для передатчика и приемника DSSS полезны при программном моделировании всей системы DSSS. Этот раздел направлен на реализацию модели программного обеспечения для простого передатчика / приемника

DSSS. Как только модель будет реализована, модели передатчика и приемника будут подвергнуты тестированию путем оценки их производительности по каналу с АБГШ.

Если измерение производительности по каналу с АБГШ будет соответствовать ожидаемым теоретическим результатам, у нас будет хорошая индивидуальная рабочая модель для передатчика / приемника DSSS, которую можно расширить, чтобы включить другие аспекты полной системы с расширенным спектром.

Рисунок 11 – Модель с дискретным временным эквивалентом для моделирования передатчика DSSS

Способность генерировать псевдослучайные двочиные последовательности (или широкополосные сигналы, ШПС), такие как m-последовательность или последовательность кода Голда, является важной частью имитационной модели.

Следующая функция реализует общий генератор ШПС, который может генерировать либо m-последовательности, либо последовательности кода Голда. Эта функция используется в этом разделе, а также в следующем, где будет произведена имитация помех.

Программа 7: generatePRBS.m: Генерация последовательности ШПС

function [prbs] = generatePRBS(prbsType,G1,G2,X1,X2)

%Generate PRBS sequence - choose from either msequence or gold code %prbsType - type of PRBS generator - 'MSEQUENCE' or 'GOLD'

%If prbsType == 'MSEQUENCE' G1 is the generator poly for РЛОС

%and X1 its seed. G2 and X2 are not used

%If prbsType == 'GOLD' G1,G2 are the generator polynomials

%for LFSR 1/ LFSR 2 and X1,X2 are their initial seeds.

%G1,G2 - Generator polynomials for PRBS generation %X1,X2 - Initial states of LFSRs

%The LFSR generators results in 1 period PRBS, %need to repeat it to suit the data length

if strcmpi(prbsType,'MSEQUENCE'),

prbs= LFSR( G1, X1);%use only one poly and initial state vector elseif strcmpi(prbsType,'GOLD'), prbs=gold_code_generator(G1,G2,X1,X2);%full length Gold sequence

else %Gold codes as default

G1=[1 1 1 1 0 1]; G2 = [1 0 0 1 0 1]; %LFSR polynomials

X1 = [ 0 0 0 0 1]; X2=[ 0 0 0 0 1] ; %initial state of LFSR prbs = gold_code_generator(G1,G2,X1,X2);

end

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

чтобы соответствовать длине другой последовательности, скажем, последовательности

PRBS. Для этой цели используется функция repeatSequence.m.

Программа 8: repeatSequence.m: Повторение данную последовательность, чтобы она соответствовала другой последовательности произвольной длины.

function [y]= repeatSequence(x,N)

%Repeat a given sequence x of arbitrary length to match the given %length N. This function is useful to repeat any sequence

%(say PRBS) to match the length of another sequence x=x(:); %serialize

xLen = length(x); %length of sequence x

%truncate or extend sequence x to suite the given length N if xLen >= N, %Truncate x when sequencelength less than N y = x(1:N);

else

temp = repmat(x,fix(N/xLen),1); %repeat sequence integer times residue = mod(N,xLen); %reminder when dividing N by xLen %append reminder times

if residue ~=0, temp = [temp; x(1:residue)]; end y = temp; %repeating sequence matching length N end

Эквивалентная модель в дискретном времени для передатчика BPSK DSSS

приведена на рисунке 10, а соответствующая реализация в Matlab – ниже.

Пользовательская функция принимает поток двоичных входных данных (d), который необходимо расширить с помощью псевдослучайной двоичной последовательности

(PRBS).

Функция позволяет выбирать между двумя типами генераторов ШПС – msequence

или gold code, и ожидается, что пользователь предоставит правильные полиномы генератора и начальные начальные числа РЛОС для выбранного типа ШПС.

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

PRBS на основе трех факторов – длины входных данных, требуемой скорости Rb данных и требуемой скорости Rc элементарных посылок PRBS.

Затем, чтобы представить данные и ШПС в виде гладких сигналов, используется коэффициент передискретизации L. Коэффициент передискретизации определяется самой высокой частотой, используемой в передатчике, которая оказывается несущей частотой ( fc Rc Rb ). Для удобства мы хотим иметь целое количество циклов несущей внутри

одной одного чипа ШПС. Для моделирования fc выбирается равным удвоенной скорости

передачи чипов, а установка достаточна для представления двух периодов сигналов

несущей внутри одного чипа ШПС. Если пользователь желает дополнительно увеличить несущую частоту, то коэффициент передискретизации L необходимо соответственно увеличить для хорошего представления формы сигнала.

Если последовательность ШПС передискретизируется с коэффициентом L, тогда данные тоже должны быть передискретизирован на коэффициент L Rc / Rb . Это делается для согласования входных длин с логическим элементом XOR, который выполняет операцию расширения. Сигнал DSSS на видеочастоте, который является результатом операции расширения, наконец, умножается на несущую fc , и в эфир передается сигнал

DSSS, модулированный BPSK.

Программа 9: dsss_transmitter.m: функция, реализующая передатчик DSSS

function [s_t,carrier_ref,prbs_ref]=dsss_transmitter(d,prbsType,G1,...

G2,X1,X2,Rb,Rc,L)

%Direct Sequence Spread Spectrum (DSSS) transmitter - returns the DSSS

%waveform (s), reference carrier, the prbs reference waveform for use

%in synchronization in the receiver

%d - input binary data stream

%prbsType - type of PRBS generator - 'MSEQUENCE' or 'GOLD'

%If prbsType == 'MSEQUENCE' G1 is the generator poly for РЛОС

%and X1 its seed. G2 and X2 are not used

%If prbsType == 'GOLD' G1,G2 are the generator polynomials

%for РЛОС1/РЛОС2 and X1,X2 are their initial seeds.

%G1,G2 - Generator polynomials for PRBS generation %X1,X2 - Initial states of РЛОСs

%Rb - data rate (bps) for the data d

%Rc - chip-rate (Rc >> Rb AND Rc is integral multiple of Rb) %L - oversampling factor for waveform generation

prbs = generatePRBS(prbsType,G1,G2,X1,X2); prbs=prbs(:); d=d(:); %serialize

dataLen= length(d)*(Rc/Rb);%required PRBS length to cover the data prbs_ref= repeatSequence(prbs,dataLen);%repeat PRBS to match data

d_t = kron(d,ones(L*Rc/Rb,1)); %data waveform

prbs_t = kron(prbs_ref,ones(L,1)); %spreading sequence waveform sbb_t = 2*xor(d_t,prbs_t)-1; %XOR data and PRBS, convert to bipolar n=(0:1:length(sbb_t)-1).'; carrier_ref=cos(2*pi*2*n/L);

s_t = sbb_t.*carrier_ref; %modulation,2 cycles per chip

figure(1); %Plot waveforms

subplot(3,1,1); plot(d_t); title('data sequence'); hold on; subplot(3,1,2); plot(prbs_t); title('PRBS sequence'); subplot(3,1,3); plot(s_t); title('DS-SS signal (baseband)'); end

Следующий код Matlab дает представление о том, как использовать указанную

выше функцию. Реализованный передатчик DSSS тестируется со случайными данными и

генератором кода Голда. Результирующие формы сигналов на различных стадиях передатчика показаны на рисунке 12.

Программа 10: dsss_test.m Код для построения сигналов в передатчике DSSS

close all; clear all;

Rb=100; Rc=1000;L=32; %data rate, chip rate and oversampling factor prbsType='GOLD'; %PRBS type is set to Gold code

G1=[1 1 1 1 0 0 0 1]; G2 = [1 0 0 1 0 0 0 1];%LFSR polynomials

X1 = [0 0 0 0 0 0 1]; X2=[ 0 0 0 0 0 0 1] ; %initial state of LFSRs d = rand(1,2) >=0.5; %10 bits of random data

[s_t,carrier_ref,prbs_ref]=dsss_transmitter(d,prbsType,G1,G2,X1,X2,Rb,Rc,L);

Последовательность данных

2

1

0

0

100

200

300

400

500

600

700

Последовательность PRBS

1

0

 

 

 

 

 

 

 

0

100

200

300

400

500

600

700

1

 

 

Сигнал DS-SS (основная полоса)

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

-1

 

 

 

 

 

 

 

0

100

200

300

400

500

600

700

Рисунок 12 – Формы сигналов передатчика BPSK DSSS с использованием кода Голда в качестве кода расширения

На рисунке 13 показан дискретный временной эквивалент приемника BPSK DSSS.

Далее приводится приемник, реализованный как функция Matlab. Приемник состоит из когерентного детектора для демодуляции BPSK с последующей операцией сжатия. В

методе когерентного обнаружения приемник должен знать частоту и фазу несущей,

которая синхронизирована с таковой у передатчика. Обычно это делается с помощью схем восстановления несущей, таких как ФАПЧ или петля Костаса. Для простоты мы предполагаем, что восстановление фазы несущей было выполнено, и поэтому мы напрямую используем сгенерированную опорную частоту в приемнике.

Соседние файлы в предмете Основы построения инфокоммуникационных систем и сетей