Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_rab_28 / Лаб_раб_28_2.doc
Скачиваний:
26
Добавлен:
27.04.2015
Размер:
102.4 Кб
Скачать

3. Описание лабораторной работы и текста программы имитатора

3.1. Некоторые указания и методические рекомендации

В работе моделируется тракт передачи сигналов КАМ, включающий источник цифровых двоичных сообщений, цифровую часть модулятора КАМ, имитатор радиоканала с аддитивным белым Гауссовым шумом и цифровую часть демодулятора. Программа содержит также анализатор ошибок передачи, определяющий среднее число ошибок. Она выдает также теоретическую асимптотическую оценку вероятности ошибки на бит.

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

Программа использует несколько специально разработанных М–файлов, тексты которых также представлены ниже.

Алгоритм, реализуемый файлом Grey.m, может быть изучен по работе [2] списка литературы.

Для понимания программы необходимо изучить алгоритмы, реализуемые некоторыми стандартными командами MatLab, но сравнительно редко используемыми. Описание этих алгоритмов также приведено в приложении.

3.2. Текст программы ImitatorRQAM

%===================================================================

% Имитатор радиолинии с КАМ

% Имjam файла описаниja: ImitatorRQAM

%===================================================================

disp(‘ 1. Ввод значений основных параметров радиолинии ‘)

disp(' Введите число точек в сигнальном созвездии КАМ - четнаjaстепень 2: ')

M=input('M= ');

M1=M^0.5; k=log2(M); k1=k/2;

disp(' Введите длительность элементарной посылки (канального символа), с ')

Tc=input(' Tc = '); B=1/Tc;

disp(' Вы успешно ввели значения всех необходимых параметров радиолинии.’)

disp(‘ Теперь можете переходить к следующему этапу исследований’)

pause

%---------------------------------------------------------------------------------------------------------------

%---------------------------------------------------------------------------------------------------------------

disp(‘ 2. Моделирование реализаций квадратурных компонент в основной полосе’)

disp(' Введите число элементарных посылок в моделируемом отрезке сигнала')

disp(' основной полосы: ’ )

n=input(' n = ');

disp(' Введите число цифровых отсчетов на длительности элементарной посылки')

Nsample=input(' Nsample = ');

q=Tc/Nsample; Fs=1/q;

t=[0:q:(Tc*n-q)];

disp(' Число бит, транслируемых моделируемым отрезком сигнала')

K=k*n

disp(' Моделирование (генерирование) передаваемого двоичного сообщения’)

disp(‘ – последовательности бит, транслируемых моделируемым отрезком сигнала' )

X=randint(K,1,2);

disp(' Разбиение последовательности бит на два потока и на блоки по k1 бит)

for u=(1:n)

for p=(1:k1)

xI(u,p)=X((2*(u-1)*k1+p));

xQ(u,p)=X(((2*u-1)*k1+p));

end

end

disp(' Цифровые представления квадратурных компонент сигнала ')

disp(' основной полосы при манипуляционном коде Грея')

disp(' Построение таблицы кода Грея')

A=Grey(k1);

disp(' Определение номеров значений квадратурных компонент для всех ')

disp(' элементарных символов моделируемого отрезка сигнала ')

for m=(1:n)

c=1;

while sum((rem((A(c,:)+xI(m,:)),2)),2)>0

c=c+1;

end

bI(m)=c;

end

for m1=(1:n)

c=1;

while sum((rem((A(c,:)+xQ(m1,:)),2)),2)>0

c=c+1;

end

bQ(m1)=c;

end

dI=bI-1;

dQ=bQ-1;

yI = modmap(dI, B, Fs, 'ask', M1);

yQ=modmap(dQ, B, Fs, 'ask', M1);

if n<35

figure(1)

subplot(2,1,1); plot(t, yI); xlabel('t[s]'); ylabel('I'); title(['Inphase for M=',...

num2str(M)]); grid; pause;

subplot(2,1,2); plot(t, yQ); xlabel('t[s]'); ylabel('Q'); title(['Quadrature for M=',...

num2str(M)]); grid;

disp( ‘ Имитатор закончил формирование реализаций квадратурных ’)

disp(‘ компонент КАМ сигнала для выбранного Вами числа ’)

disp( ‘ элементарных посылок в рассматриваемом отрезке сигнала')

end

disp(' Теперь Вы можете переходить к следующему этапу исследований’)

pause;

%--------------------------------------------------------------------------------------------------------------

%--------------------------------------------------------------------------------------------------------------

disp(‘ 3. Добавление шума канала связи к квадратурным компонентам сигнала’)

disp(' Определение мощности радиосигнала при возможных значениях’)

disp(‘ квадратурных компонент сигнала основной полосы')

g=2/(M1-1)

r=(1:M1/2)

disp(' Вектор распределения мощности по уровням квадратур')

Pr=(g^2)*((r-0.5).^2)

disp(' Cредняя мощность одной квадратуры')

Pks=mean(Pr)

disp(' Cредняя мощность радиосигнала')

Ps=Pks

disp(' Энергия сигнала, расходуемая на бит')

Eb=Ps*Tc/log2(M)

disp(' Вычисление требуемого значения мощности шума')

hb=input(' Введите значение нормированного отношения сигнал/шум hb = ')

disp(' Спектральная плотность мощности (СПМ) БГШ в радиоканале')

No=Eb/(hb^2)

disp(' СПМ в квадратурных каналах ПРМ сигнала основной полосы')

Nok=2*No

disp(' Ср. кв. значение шума в отсчетах значений квадратур ПРМ сигнала')

Dk=(0.5*Fs*Nok)^0.5

sI=Dk*randn(1,(Nsample*n));

sQ=Dk*randn(1,(Nsample*n));

zI=yI+sI;

zQ=yQ+sQ;

if n<35

figure(2)

subplot(2,1,1); plot(t,zI); xlabel('t[s]'); ylabel('zI'); title(['Output…

inphase channel. M=', num2str(M)]); grid; pause;

subplot(2,1,2); plot(t,zQ); xlabel('t[s]'); ylabel('zQ'); title(['Output…

quadrature channel. M=', num2str(M)]); grid; pause;

disp( ‘ Имитатор закончил формирование реализаций квадратурных ’)

disp(‘ компонент суммы КАМ сигнала и шума для выбранного Вами’)

disp( ‘ числа посылок в рассматриваемом отрезке радиосигнала')

end

disp(‘ Теперь можно начать процедуру демодуляции сформированных реализаций’ )

disp(‘ суммы квадратурных компонент сигнала и шума’)

pause

%--------------------------------------------------------------------------------------------------------------

%--------------------------------------------------------------------------------------------------------------

disp(‘ 4. Демодуляция сформированных реализаций суммы квадратурных’)

disp(‘ компонент сигнала и шума’)

disp(' Интегрирование уровней квадратур на интервалах посылок')

inI = msam(Nsample, n, zI)/Nsample;

inQ=msam(Nsample, n, zQ)/Nsample;

disp(' Определение уровней демодулированных квадратур')

uI=demodmap(inI, B, B, 'ask', M1);

uQ=demodmap(inQ, B, B, 'ask', M1);

disp(‘ Демодуляция завершена’)

disp(‘ Теперь можно начинать процедуру сигнального декодирования’ )

disp(‘ суммы квадратурных компонент сигнала и шума’)

pause

%---------------------------------------------------------------------------------------------------------

%---------------------------------------------------------------------------------------------------------

disp(‘ 5. Сигнальное декодирование

disp(' Преобразование уровней квадратурных статистик’)

disp(‘ в двоичные последовательности в соответствии с кодом Грея')

YI=A((uI+1),:);

YQ=A((uQ+1),:);

disp(' Объединение в общее принятое двоичное сообщение – принятую’)

disp(‘ последовательность бит')

YS=[YI,YQ]';

XD=YS(:);

disp(' Последовательность переданных бит’)

X'

disp(' Последовательность принятых бит’)

XD'

disp(‘ Процедура сигнального декодирования завершена ')

disp(‘ Теперь можно перейти к вычислению оценки вероятности ошибки на бит’)

pause

%------------------------------------------------------------------------------------------------------------

%-------------------------------------------------------------------------------------------------------------

disp(‘ 6. Оценка вероятности ошибки на бит’)

disp(' Вектор ошибок в принятой последовательности двоичных символов')

Er=abs(X-XD);

disp(' Экспериментальная оценка вероятности ошибки на бит ')

Per=mean(Er)

% figure(3)

% bar(Er)

% title('Ошибки в передаче сообщений')

disp('Теоретическая оценка снизу вероятности ошибки')

Pert=Fer(g*((Tc/(4*No))^0.5))

disp(‘ Вы успешно завершили пробный эксперимент по изучению основных’)

disp(‘ этапов функционирования имитатора. Теперь Вы можете провести’)

disp(‘ статистический эксперимент с целью экспериментальной оценки’)

disp(‘ помехоустойчивости исследуемой Вами радио линии’)

pause

%-------------------------------------------------------------------------------------------------------------

%--------------------------------------------------------------------------------------------------------------

disp(‘ 7. Экспериментальное исследование помехоустойчивости радиолинии’)

disp(‘ Введите число графиков помехоустойчивости, которое Вы хотите получить’)

Nfig=input(' Nfig = ');

disp(‘ Введите число точек на одном графике помехоустойчивости’)

Npoint=input(' Npoint = ');

disp(' Введите число элементарных посылок в моделируемом отрезке сигнала')

disp(' основной полосы: ’ )

n=input(' n = '); K=k*n;

% Моделирование реализаций квадратурных компонент

X=randint(K,1,2);

for u=(1:n)

for p=(1:k1)

xI(u,p)=X((2*(u-1)*k1+p));

xQ(u,p)=X(((2*u-1)*k1+p));

end

end

A=Grey(k1);

for m=(1:n)

c=1;

while sum((rem((A(c,:)+xI(m,:)),2)),2)>0

c=c+1;

end

bI(m)=c;

end

for m1=(1:n)

c=1;

while sum((rem((A(c,:)+xQ(m1,:)),2)),2)>0

c=c+1;

end

bQ(m1)=c;

end

dI=bI-1;

dQ=bQ-1;

%

for kfig=1:Nfig

disp(' Введите число цифровых отсчетов на длительности элементарной посылки')

Nsample=input(' Nsample = ');

q=Tc/Nsample; Fs=1/q; t=[0:q:(Tc*n-q)];

yI = modmap(dI, B, Fs, 'ask', M1);

yQ=modmap(dQ, B, Fs, 'ask', M1);

for kpoint=1:Npoint

hb=input(' Введите значение нормированного отношения сигнал/шум hb = ')

No=Eb/(hb^2); Nok=2*No; Dk=(0.5*Fs*Nok)^0.5;

sI=Dk*randn(1,(Nsample*n)); sQ=Dk*randn(1,(Nsample*n));

zI=yI+sI; zQ=yQ+sQ;

% Демодуляция сформированных реализаций суммы квадратурных

inI = msam(Nsample, n, zI)/Nsample;

inQ=msam(Nsample, n, zQ)/Nsample;

uI=demodmap(inI, B, B, 'ask', M1);

uQ=demodmap(inQ, B, B, 'ask', M1);

% Сигнальное декодирование

YI=A((uI+1),:);YQ=A((uQ+1),:);

YS=[YI,YQ]'; XD=YS(:);

% Оценка вероятности ошибки на бит

Er=abs(X-XD);

disp(‘Экспериментальная оценка вероятности ошибки’)

Per=mean(Er)

disp(‘Теоретическая оценка вероятности ошибки’)

Pert=Fer(g*((Tc/(4*No))^0.5))

disp(‘ Вы успешно завершили одно испытание’)

disp(‘ Запишите полученные результаты и переходите к следующему шагу’)

end

disp(‘ Вы получили все точки одного графика.’)

pause

end

disp(‘ Вы успешно завершили экспериментальное исследование помехоустойчивости радиолинии')

4. Вопросы и задания.

4.1. Пояснить на конкретном примере процедуру формирования квадратурных компонент КАМ сигнала в основной полосе по поступающему на вход сообщению.

4.2. Пояснить используемый в работе код Грея и способ его формирования.

4.3. Поясните назначение используемой в имитаторе функции y=modmap(x, B, Fs, ’ask’, M). Рассмотрите конкретные примеры в средеMatLab.

4.4. Поясните назначение используемой в имитаторе функции y=demodmap(x,B,B,’ask’,M).Рассмотрите конкретные примеры в средеMatLab.

4.5. Доказать, что используемый в работе алгоритм демодуляции КАМ сигналов, заключающийся в последовательном выполнении процедур интегрирования амплитуд квадратур радиосигнала и их равномерном квантовании, реализует идеальный когерентный прием.

4.6. Объяснить способ получения использованной в работе асимптотической оценки потенциальной помехоустойчивости приема КАМ радиосигналов.

Литература

  1. Волков Л. Н., Немировский М. С., Шинаков Ю.С. Системы цифровой радиосвязи: базовые методы и характеристики. М. Экотрендз. 2005 г

  2. Немировский М. С. Цифровая передача информации в радиосвязи. М. «Связь» 1980 г.(Материал на стр 85).

  3. Дьяконов В.П. Справочник по применению системы PC MatLAB. - М.: Наука, 1993.

  4. Потемкин В.Г. Система MATLAB 5 для студентов. - М.: ДИАЛОГ - МИФИ, 1998 -314 с.

Приложение 1

Соседние файлы в папке Lab_rab_28