Задание 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 часть (бонус, +0.5 балла)
Собрать простую модель в Simulink:
[Random Integer] → [BPSK Modulator] → [AWGN Channel] → [BPSK Demodulator] → [BER Display]
- Установить Eb/N0 = 6 дБ в блоке AWGN Channel
- Запустить симуляцию
- Записать:
BER_simulink = <значение из блока BER Display> - Сравнить с теоретическим 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% (бонус) |
Контрольные вопросы
- Почему BER убывает при увеличении Eb/N0?
- Что означает «теоретический» BER — при каких условиях он достигается?
- Почему измеренный BER при N_bits=1000 может отличаться от теоретического?
- Чем 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% |