Задание 12: Комплексное задание — Канал с шумом. BER. Simulink.

Раздел: 2. Периодические и дискретные сигналы
Тема: 2.2 Модулированные сигналы
Тип: MATLAB Script + Simulink Model
Срок выполнения: 4 ч СРС
Максимальный балл: 2.5 (+ 0.5 бонус за Simulink)


Цель работы

Смоделировать цифровой канал связи с BPSK модуляцией и AWGN-шумом. Вычислить и сравнить измеренный BER с теоретической кривой. Воспроизвести результат в Simulink.


Теоретическая справка

BPSK модуляция

BPSK (Binary Phase-Shift Keying) — двоичная фазовая манипуляция:

  • Бит 1 → фаза 0°: $s_1(t) = A_c \cos(2\pi f_c t)$
  • Бит 0 → фаза 180°: $s_0(t) = -A_c \cos(2\pi f_c t)$

Биполярный NRZ сигнал: +1 для “1”, −1 для “0”.

AWGN канал

AWGN (Additive White Gaussian Noise) — аддитивный белый гауссовский шум.
Параметр качества: Eb/N0 — отношение энергии бита к спектральной плотности шума (дБ).

BER — вероятность ошибки бита

Теоретический BER для BPSK:

\[\text{BER}_{BPSK} = \frac{1}{2} \cdot \text{erfc}\left(\sqrt{E_b/N_0}\right)\]

При Eb/N0 = 10 дБ → BER < 10⁻⁵ (практически безошибочная передача).


Задание

Параметры (не изменять!)

rng(2025)       — генератор случайных чисел
N_bits  = 1000  — длина сообщения
Rb      = 1000  — битовая скорость (бит/с)
fs_sim  = 10000 — частота дискретизации
fc      = 2000  — несущая частота (Гц)
A_c12   = 1     — амплитуда несущей

MATLAB часть (task12_template.m)

Шаг 1. Сгенерировать bits = randi([0,1], 1, N_bits)

Шаг 2. Сформировать NRZ сигнал (биполярный): +1/-1, растянутый spb = 10 раз

Шаг 3. BPSK: x_bpsk = A_c12 * x_nrz .* cos(2*pi*fc*t_full)

Шаг 4. Для 6 значений Eb/N0 = [0, 2, 4, 6, 8, 10] дБ:

  • Добавить шум через awgn()
  • Демодулировать (умножить на несущую + ФНЧ)
  • Принять решение: >0 → 1, <0 → 0
  • Посчитать: BER_measured(i) = sum(bits ~= bits_rx) / N_bits
  • Теоретически: BER_theory(i) = erfc(sqrt(10^(EbN0/10))) / 2

Шаг 5. Построить кривые BER(Eb/N0) на semilogy графике.


Собрать простую модель в Simulink:

[Random Integer] → [BPSK Modulator] → [AWGN Channel] → [BPSK Demodulator] → [BER Display]
  1. Установить Eb/N0 = 6 дБ в блоке AWGN Channel
  2. Запустить симуляцию
  3. Записать: BER_simulink = <значение из блока BER Display>
  4. Сравнить с теоретическим BER_theory при 6 дБ ≈ 2.4×10⁻³

Файлы задания

Файл Назначение
task12_template.m MATLAB шаблон — заполнить ???
task12_grader.m Автопроверка (+ проверка BER_simulink если есть)

Ожидаемые результаты

Переменная Ожидание
bits Бинарный вектор длиной 1000
x_bpsk Вещественный вектор, мощность ≈ 0.5
BER_measured Монотонно убывающий вектор [0, 2, 4, 6, 8, 10 дБ]
BER_theory Вычислена через erfc()
BER_simulink ≈ BER_theory(Eb/N0=6 дБ) ± 50% (бонус)

Контрольные вопросы

  1. Почему BER убывает при увеличении Eb/N0?
  2. Что означает «теоретический» BER — при каких условиях он достигается?
  3. Почему измеренный BER при N_bits=1000 может отличаться от теоретического?
  4. Чем BPSK отличается от QPSK? Как меняется BER?

Критерии оценки

Балл Критерий
2.0 bits, x_bpsk, BER_measured, BER_theory верны; grader ≥ 8/10
1.5 BER_measured убывает, BER_theory верна
1.0 x_bpsk сформирован правильно
+0.5 (бонус) BER_simulink совпадает с теорией в пределах 50%

This site uses Just the Docs, a documentation theme for Jekyll.