ЛР2. РТС(а может это и лр3)
.docxЛабораторная работа №2
Исследование характеристик улучшения цифровых сигналов в цифровых системах передачи
Цель работы:
Изучить методы улучшения цифровых сигналов в цифровых системах передачи: скремблирование и регенерация цифровых сигналов. Изучить модель скремблирования/дескремблирования и регенерации цифровых сигналов, описанную в среде MATLAB. Определить функции использования скремблирования и регенерации. Определить зависимость коэффициента ошибок (BER) от вероятности передачи единицы.
1. Исследование скремблирования.
1.1. Сформировать импульсы (п. 3 и п. 6) из переданных информационных битов при значении порога 0,5 и ОСШ 0, 3, 5, 10, 20 дБ. Записать получившееся значение BER.
ОСШ = 0
BER = 0.1032
ОСШ = 3
BER = 0.0422
ОСШ = 5
BER = 0.0198
ОСШ = 10
BER = 1.5000e-04
ОСШ = 20
BER = 0
1.2. Сформировать импульсы (п. 3 и п. 6) из переданных скремблированных битов при значении порога 0,5 и ОСШ 0, 3, 5, 10, 20 дБ. Записать получившееся значение BER. Для описания скремблера использовать полином:
Записать первые 20 битов на входе скремблера (input_bits), выходе скремблера (scrambled_bits), на входе дескремблера после регенерации цифровых импульсов (RU_bits) и на выходе дескремблера (output_bits), и значение BER.
SNR =
0
input_bits = 0 0 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 0 ...
scrambled_bits = 0 0 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 0 ...
RU_bits = 0 0 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 ...
output_bits = 0 0 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 ...
BER =
0.1034
SNR =
3
input_bits = 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 ...
scrambled_bits = 1 1 1 1 1 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 ...
RU_bits = 1 1 1 1 1 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 ...
output_bits = 1 1 1 1 1 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 ...
BER =
0.0448
SNR =
5
input_bits = 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 ...
scrambled_bits = 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 ...
RU_bits = 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 ...
output_bits = 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 ...
BER =
0.0193
SNR =
10
input_bits = 0 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 ...
scrambled_bits = 0 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 ...
RU_bits = 0 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 ...
output_bits = 0 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 ...
BER =
5.5000e-04
SNR =
20
input_bits = 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 ...
scrambled_bits = 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 ...
RU_bits = 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 ...
output_bits = 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 ...
BER =
0
Построить графики зависимости BER от ОСШ при использовании скремблера и его отсутствии.
1.3. Исследовать зависимость значения BER от степени полинома. Значение порога выбрать 0,5, ОСШ 10 дБ. Выбрать два полинома с тем же количеством слагаемых, но отличающихся высшей степенью полинома на 2 больше/меньше чем в п. 1.2. Записать первые 20 битов на входе скремблера (input_bits), выходе скремблера (scrambled_bits), на входе дескремблера после регенерации цифровых импульсов (RU_bits) и на выходе дескремблера (output_bits), и значение BER.
При poly = [1 0 1 0 1 1 0 1]:
input_bits = 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 ...
scrambled_bits = 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0 1 0 1 ...
RU_bits = 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0 1 0 1 ...
output_bits = 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 ...
BER = 2.5000e-04
При poly = [1 0 1 0 1 1 0 0 0 1]:
scrambled_bits = 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 ...
RU_bits = 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 ...
output_bits = 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 ...
BER = 3.0000e-04
При poly = [1 0 1 0 1 1];
scrambled_bits = 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 ...
RU_bits = 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 ...
output_bits = 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 0 ...
BER = 1.2000e-04
2. Исследование регенерации цифровых сигналов.
2.1. Задать
скремблер и дескремблер с помощью
полинома
.
Изменить вероятность передачи единицы
0,1:0,2:0,9 при фиксированном значении порога
= 0,5. Записать значение
BER.
При p1=0.1: BER =4.0000e-04
При р1=0.2: BER =4.0000e-04
При р1=0.9: BER =3.0000e-04
2.2. При значениях вероятности передачи единицы аналогичным в п 2.1. выбрать оптимальное значение порога. Записать значение BER при оптимальных значениях порога. Сделать вывод о выборе порога.
При p1=0.9: level=0.4
При p1=0.2: level=0.43
При p1=0.1: level=0.45
2.3. При значениях вероятности передачи единицы = 0,5 и значении порога = 0,5 изменить значение ОСШ 0, 5, 10, 20 дБ вывести графики, представленные на рис. 1-2 в коде MATLAB.
При ОСШ=0
При ОСШ=5
При ОСШ=10
При ОСШ=20
Скрипт
close all
clear all
clc
variant = 7; % номер варианта
%% Входные данные
N = 1e5; %объём выборки
p0 = variant/10; %вероятность передачи 0 (отрицательный импульс)
p1 = 1 - p0; %вероятность передачи 1 (положительный импульс)
SNR = 10;
level = 0.5;
%% 1.Генерация случайной последовательности бит
input_bits = rand(N,1); %генерация случайной последовательности
for n = 1:N
if (input_bits(n,1) > p1) %с заданной вероятностью
input_bits(n,1) = 1;
else
input_bits(n,1) = 0;
end
end
disp(['input_bits = ' num2str(input_bits(1:20).') ' ...'])
%% 2. Скремблирование
base = 2; % основание (2 для двоичных чисел)
poly = [1 0 1 1 0 1 0 1]; % двоичный полином
cond = [0 0 0 0 0 0 0]; % ННУ
scrambler = comm.Scrambler(base,poly,cond);
scr_bits = scrambler(input_bits); % биты после скремблирования
disp(['scrambled_bits = ' num2str(scr_bits(1:20).') ' ...'])
%% 3. Преобразование битов в импульсы 1/-1
for n = 1:N
if(scr_bits(n,1) == 0)
bit_impulses(n,1) = -1;
else
bit_impulses(n,1) = 1;
end
end
t = 0:.05:N;
tt = 1:1:(N+1)*20;
for i = 1:N
for j = i:.1:i+1
input_impulses(tt(i*20:(i+1)*20),1) = bit_impulses(i,1);
end
end
input_impulses = input_impulses(20:end);
%% 4. Канал связи
output_impulses = smooth(input_impulses,15);
output_impulses = awgn(output_impulses,SNR,'measured');
figure(1)
subplot(2,1,1)
plot(t(1:400),input_impulses(1:400))
title('Переданные импульсы');
xlabel('отсчёты')
ylim([-1.5 1.5])
grid on
subplot(2,1,2)
plot(t(1:400),output_impulses(1:400))
title('Принятые импульсы');
xlabel('отсчёты')
ylim([-1.5 1.5])
grid on
%% 5. Регенерация сигнала
% 5.1. Входное устройство
filtered_impulses = 1.5*smooth(output_impulses,7);
% 5.2. Корректирующее устройство
corrected_impulses = filtered_impulses;
for n = 1:length(filtered_impulses)
if(filtered_impulses(n)>1)
corrected_impulses(n) = 1;
end
end
% 5.3. Пороговое устройство
PU_impulses =corrected_impulses;
for n = 1:length(corrected_impulses)
if(corrected_impulses(n)<level)
PU_impulses(n) = 0;
end
end
% 5.4. Решающее устройство
for n = 1:length(PU_impulses)/20
if(sum(PU_impulses(((n-1)*20+1):(n*20)))/20>0.5)
RU_bits(n,1) = 1;
else
RU_bits(n,1) = 0;
end
end
figure(2)
subplot(3,1,1)
plot(t(1:400),filtered_impulses(1:400))
title('На выходе ВУ');
xlabel('отсчёты')
ylim([-2 2])
grid on
subplot(3,1,2)
plot(t(1:400),corrected_impulses(1:400))
title('На выходе КУ');
xlabel('отсчёты')
ylim([-2 2])
grid on
subplot(3,1,3)
plot(t(1:400),PU_impulses(1:400))
title('На выходе ПУ');
xlabel('отсчёты')
ylim([-0.5 1.5])
grid on
disp(['RU_bits = ' num2str(RU_bits(1:20).') ' ...'])
%% 6. Дескремблирование
descrambler = comm.Descrambler(base,poly,cond);
output_bits = descrambler(RU_bits); % биты после скремблирования
disp(['output_bits = ' num2str(RU_bits(1:20).') ' ...'])
errs = sum(abs(output_bits - input_bits));
BER = errs/length(input_bits)
