Добавил:
t.me Фулл всегда есть! А если нет, то Вы плохо его ищите! ИиКГ, СКДИКТ, ОКИТПЭС и тд https://t.me/whitedevil752rnТак же веду разработку КД (конструкторской документации) согласно ГОСТ. Имеется опыт работы при производстве на одном из ведущих в области радиэлектроники предприятии. Пишите) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР2. РТС(а может это и лр3)

.docx
Скачиваний:
0
Добавлен:
27.10.2025
Размер:
555.9 Кб
Скачать

Лабораторная работа №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)