2Goga
.docx
Национальный технический университет Украины
«Киевский политехнический институт»
Институт телекоммуникационных систем
Дисциплина «Программные средства в телекоммуникационных системах2»
Лабораторная работа №2
Моделирование цифровых каналов передачи информации в Matlab. Помехоустойчивое кодирование с прямой коррекцией ошибок.
Выполнил: студент группы TС-11
Георгин Дмитрий
(ФИО)
Проверил: ст.преподаватель
_______________ Кайденко Н.Н.
«_____»_______________2013г.
Киев 2013
Лабораторная работа 2
Моделирование цифровых каналов передачи информации в Matlab. Помехоустойчивое кодирование с прямой коррекцией ошибок.
1 Цель работы
Целью работы является приобретение навыков построения моделей цифровых каналов передачи информации в среде MatLab.
2 Состав рабочего места
2.1 Оборудование: IBM-совместимый персональный компьютер (ПК).
2.2 Программное обеспечение: операционная система WindowsХРи выше, система MatLab версии R2006a и выше.
3 Краткие теоретические сведения
В лабораторной работе моделируется канал передачи информации в составе источника информации, получателя информации, модулятора, демодулятора, кодера и декодера канала с функцией помехоустойчивого кодирования, канала с белым гауссовским шумом. Моделируются сверточное кодирование и блочное кодирование с использованием кода Рида-Соломона.
Теоретические сведения по используемым функциям в данной лабораторной работе приведены в лекции 3.
4 Порядок выполнения работы
4.1 В модели канала передачи информации используются созданные в лабораторной работе №1 скрипт-файлы и файл-функции.
4.2 Создать файл-функции, реализующие кодер сверточного кода и декодер сверточного кода, работающий по алгоритму Витерби. Возможно создание одной файл-функции.
4.3 Добавить в модель канала передачи информации функции помехоустойчивого кодирования (перед модулятором и после демодулятора). Параметры кода: сверточный код - перфорированный на основе порождающего многочлена [171 133], начальная задержка кодера - 7, количество путей декодера Витерби (traceback) – 5, векторы пунктурирования [1 0 1 1] для скорости 2/3; [1 0 1 1 1 0 ] для скорости ¾. Остальные параметры согласно варианта задания из таблицы 1. Тип декодера для всех вариантов с «жесткими решениями».
4.4 Провести моделирование канала передачи информации в диапазоне значений отношения сигнал/шум, получить характеристику помехоустойчивости в диапазоне значенийBER 10-2-10-5. Сравнить полученную характеристику с теоретической и с характеристикой для канала без помехоустойчивого кодирования.
4.5 Создать файл-функции, реализующие кодер Рида-Соломона и декодер Рида-Соломона.
4.6 Модернизировать скрипт-файл модели канала для работы с пакетами данных. Длина пакета определяется параметрами кода Рида-Соломона.
4.7 Добавить в модель канала передачи информации функции помехоустойчивого кодирования кодом Рида-Соломона, (перед кодером сверточного кода и после декодера Витерби). Параметры кода: Рида-Соломона перфорированный на основе систематического кода (255,239,16), остальные параметры согласно таблице 1.
4.8 Провести моделирование канала передачи информации для фиксированного отношения сигнал/шум, результатом моделирования должен быть коэффициент битовых ошибок (BER). Сравнить полученную характеристику с полученными ранее характеристиками помехоустойчивости.
Таблица 1 – Варианты заданий.
№ |
Тип модуляции |
Отобра-жение |
Рекомендуемые Функции Матлаб, класс modem |
Скорость СК |
Код РС |
5 |
8-PSK |
binary |
pskmod, pskdemod |
2/3 |
(128,112,16) |
clear all
M=8;
InputRandData = randint(10000,1,M); %Матриця- рядок випадкових чисел довжиною 10000 біт %
punc23=[1 0 1 1 ]; % Вектор пунктування 2/3 (1101)%
msg = randint(300000,1,2); %випадкові дані %
msg=InputRandData;
L_c=length(msg)
% модулювання завадостійкості %
N_bit=1e3;
% Для профіля 3 згідно стандарта IEEE 802.16-2009 %
L_block=112; % Кількість кодованих байт %
T_block=16; % Кількість байт провірочних символів %
L_block_b=L_block*8;
N_block=fix(N_bit/(L_block_b));
Data_in=randint(N_bit,1);
tic
% Формування матриці вхідних даних , розбитих на блоки %
for i=1:N_block
Data_block(i,:)=Data_in((i-1)*L_block_b+1:i*L_block_b);
end
% Перетворення із бітового формата в байтовий %
n=1;
while n<=N_block
for i=1:L_block
Data_blockB(n,i)=bi2de(Data_block(n,(8*(i-1)+1):8*i),'left-msb');
end
n=n+1;
end
% Кодуванняе кодом Ріда-Соломона
% Систематичний код RS (255,239,8) у відповідності з IEEE 802.16-2009 %
RS_enc_obj = fec.rsenc(255,239); % Систематичний код РС %
RS_enc_Short = copy(RS_enc_obj);
RS_enc_Short.ShortenedLength=239-L_block; % Укорочення кода
RS_enc_Short.PuncturePattern(T_block+1:end)=0; % Перфоріровання по масці %
RS_enc_SP=encode(RS_enc_Short,Data_blockB'); % Кодування %
%переиворення із байтів в біти %
RS_enc_SP_b=de2bi(RS_enc_SP);
%%%Модуляція %%%
M_PSK=functmod(M,RS_enc_SP_b);
% Адитивный білий гаусовий шум %
EbNo=3;%відношення сигнал/шум
k=log2(M);
PSK_sh=awgn(M_PSK,EbNo+10*log10(k)-10*log10(1));
%Демодуляцsія
DEM_PSK=functdemod(M,PSK_sh);
DEM_PSK_B=bi2de(DEM_PSK);
% Декодування з використанням обєктів Matlab R.2008a
RS_dec_obj = fec.rsdec(RS_enc_Short); % Обєкт декодер
[RS_dec_SP,cnumerr] = decode(RS_dec_obj,DEM_PSK_B); % Декодування %
ck_d = isequal(RS_dec_SP,Data_blockB') % Првірка правильності декодування %
disp=(ck_d)
%%% Підрахунок коефіцієнта помилок %%%
[number,ratio]=biterr(Data_blockB',RS_dec_SP)
%%%%%Теоретичний Bit Error Rate
Ber_t=berawgn(EbNo,'psk',M,'nondif');
результат:
L_c =
10000
ck_d =
0
disp =
0
number =
26
ratio =
0.0290
clear all
M=8;
InputRandData = randint(10000,1,M); %Матриця- рядок випадкових чисел довжиною 10000 біт %
punc23=[1 0 1 1 ]; % Вектор пунктування 2/3 (1101)%
msg = randint(300000,1,2); %випадкові дані %
L_c=length(msg)
%Кодер%
tr_st = poly2trellis(7, [171 133]); %визначення треліс структури, затримка-7
code = convenc(msg,tr_st);
coded_word=convenc(msg,tr_st,punc23);
L_cp=length(coded_word)
C_Rate=L_c/L_cp
%Модуляция%
M_PSK=functmod(M,coded_word);
scatterplot(M_PSK);grid % Побудова графіка модуляції %
% Аддитивнийбілий гаусовий шум %
EbNo=6;%Отношение сигнал/шум
k=log2(M);
PSK_sh=awgn(M_PSK,EbNo+10*log10(k)-10*log10(1));
scatterplot(PSK_sh);grid
%Демодуляция%
DEM_PSK=functdemod(M,PSK_sh);
scatterplot(DEM_PSK);grid % Побудова графіка демодуляції %
%Декодер%
tblen = 5; % traceback
decoded_word =vitdec(coded_word,tr_st, tblen, 'trunc','hard',punc23);
[N_err, ber] =biterr(decoded_word,msg)
%Підрахунок коефіцієнта помилок%
%[number,ratio]=biterr(InputRandData,decoded_word);
disp([N_err, ber])
%Теоретичний Bit Error Rate%
Ber_t=berawgn(EbNo,'psk',M,'nondif');
%bertool%
disp('Получено Отпротправленно')
disp([msg,decoded_word])
результат:
Получено Отпротправленно
…
0 0
0 0
1 1
0 0
1 1
1 1
1 1
0 0
1 1
0 0
1 1
0 0
0 0
0 0
0 0
0 0
1 1
0 0
1 1
0 0
0 0
1 1
0 0
0 0
0 0
1 1
1 1
1 1
0 0
0 0
0 0
1 1
1 1
0 0
0 0
1 1
0 0
1 1
0 0
1 1
0 0
1 1
0 0
1 1
0 0
1 1
1 1
1 1
0 0
0 0
0 0
0 0
1 1
1 1
1 1
1 1
0 0
1 1
0 0
1 1
…
Вывод
В лабораторной работе моделируется канал передачи информации в составе источника информации, получателя информации, модулятора, демодулятора, кодера и декодера канала с функцией помехоустойчивого кодирования, канала с белым гауссовским шумом. Моделируются сверточное кодирование и блочное кодирование с использованием кода Рида-Соломона.