Лабораторная 4.4 — BPSK-цепочка в Simulink и идеальная кривая BER от SNR¶
Цель¶
Добавить к маршруту BPSK настоящий этап Simulink и убедиться, что MATLAB/Simulink строит идеальную кривую BER от SNR для эталонного случая AWGN.
Эта работа закрывает часть маршрута, относящуюся к Simulink:
handoff-файлы Блока 11 -> fixed-point цепочка Simulink -> идеальная базовая кривая BER/SNR -> этап HDL
Зачем это нужно¶
Любому числу BER, которое вы позже измерите на плате, нужна мерка. «BER = 1e-3» ничего не значит, пока вы не знаете, чего добился бы лучший из возможных приёмник при том же отношении сигнал/шум. У когерентного BPSK в AWGN есть замкнутый ответ, а Simulink позволяет проверить, что ваша fixed-point цепочка, отсчёт за отсчётом, его достигает. Если ваша смоделированная кривая лежит далеко правее теории, реализация где-то теряет децибелы (тайминг, квантование, рассогласование фильтров); если аппаратное измерение лежит далеко правее этой кривой, потеря в RF-тракте или синхронизации, а не в математике модема.
Исполняемые MATLAB-файлы¶
| Файл | Роль |
|---|---|
blocks/block_04_simulink_and_fixed_point/matlab/lab_4_4_prepare_bpsk_simulink_workspace.m |
загружает handoff-файлы Блока 11 в рабочее пространство MATLAB/Simulink |
blocks/block_04_simulink_and_fixed_point/matlab/lab_4_4_generate_bpsk_simulink_models.m |
программно создаёт модели .slx |
blocks/block_04_simulink_and_fixed_point/matlab/lab_4_4_run_bpsk_simulink_models.m |
запускает обе модели и сохраняет графики для отчёта |
Сгенерированные модели Simulink¶
| Модель | Путь | Назначение |
|---|---|---|
| Fixed-point цепочка | blocks/block_04_simulink_and_fixed_point/simulink/lab_4_4_bpsk_fixed_point_chain.slx |
импортирует handoff-файлы BPSK Блока 11 и запускает фильтры RRC TX/RX в Simulink |
| Идеальная модель BER | blocks/block_04_simulink_and_fixed_point/simulink/lab_4_4_bpsk_ideal_ber_awgn.slx |
идеальный BPSK в AWGN для проверки BER от SNR |
Как запустить¶
Из корня репозитория:
matlab -batch "lab_4_4_run_bpsk_simulink_models"
Сгенерированные артефакты¶
docs/assets/lab44_bpsk_simulink_tx_overlay_matlab.png
docs/assets/lab44_bpsk_simulink_rx_overlay_matlab.png
docs/assets/lab44_bpsk_ideal_ber_vs_snr_matlab.png
docs/assets/lab44_bpsk_simulink_metrics.json
Инженерный смысл¶
Работа намеренно разделяет две проверки:
- Fixed-point цепочка Simulink использует ровно те же handoff-файлы BPSK из Блока 11.
- Идеальная модель BER задаёт кривую лучшего возможного приёмника для когерентного BPSK в AWGN.
Это важно, потому что будущие аппаратные результаты BER нужно сравнивать не только с прежним программным кодом, но и с идеальным теоретическим пределом.
Соглашение по оси BER от SNR¶
Идеальная кривая строится относительно SNR / E_b/N_0, дБ.
Для идеальной модели BPSK с одним отсчётом на символ, использованной здесь, это удобная опорная ось теоретической кривой:
BER_theory = 0.5 * erfc(sqrt(10^(Eb/N0_dB / 10)))
Развёртка Simulink накладывает точки Монте-Карло на эту теоретическую кривую.
Опорные точки теоретической кривой для проверки вашего графика:
| Eb/N0 | идеальный BER BPSK |
|---|---|
| 0 дБ | 7,86e-02 |
| 2 дБ | 3,75e-02 |
| 4 дБ | 1,25e-02 |
| 6 дБ | 2,39e-03 |
| 8 дБ | 1,91e-04 |
| 9,6 дБ | 9,74e-06 |
Кривая становится круче с ростом SNR: 2 дБ дают выигрыш примерно в 2 раза по BER между 0 и 2 дБ, но примерно в 12 раз между 6 и 8 дБ. Прогон из N бит разрешает BER лишь до порядка 1/N: чтобы увидеть 1e-5, нужно заметно больше 100 000 бит на точку, иначе точки Монте-Карло при высоком SNR будут читаться как ноль.
Эта работа требует MATLAB/Simulink, которых нет в автоматическом CI. Опорные значения выше получены по замкнутой формуле, а не из прогона Simulink.
Чего ожидать¶
docs/assets/lab44_bpsk_simulink_metrics.json содержит результат прогона MATLAB/Simulink, закоммиченный 2026-06-25. Для этой страницы он не перезапускался (MATLAB не входит в CI):
| Eb/N0 | 0 дБ | 2 дБ | 4 дБ | 6 дБ | 8 дБ | 9 дБ | 10 дБ |
|---|---|---|---|---|---|---|---|
| BER Simulink | 7,69e-2 | 3,80e-2 | 1,24e-2 | 2,46e-3 | 1,9e-4 | 3,0e-5 | 5e-6 |
| теория | 7,86e-2 | 3,75e-2 | 1,25e-2 | 2,39e-3 | 1,91e-4 | 3,36e-5 | 3,9e-6 |
- Цепочка с фиксированной точкой воспроизводит сигналы Блока 11 с TX RMSE 0 и RX RMSE 6,1e-5 (около 2 LSB Q1.15).
- Наибольшее отличие BER от теории: 1,7e-3 при 0 дБ, где сам BER равен 7,9e-2.
- Все смоделированные значения кратны 5e-6, что соответствует 200 000 бит на точку. Тогда точка 10 дБ это одна битовая ошибка, а точка 9 дБ это шесть: у этих двух точек почти нет статистического веса.
Без MATLAB тот же эталон доступен на Python: Лабораторная 8.8 моделирует QPSK с кодом Грея, чей BER на бит это та же кривая, а Лабораторная 4.3 прогоняет BPSK-цепочку с фиксированной точкой на тех же файлах передачи из Блока 11.
Упражнения¶
- Вычислите 95-процентный интервал для точки 10 дБ (1 ошибка на 200 000 бит) и для точки 8 дБ (38 ошибок). Противоречит ли какая-нибудь из них теории?
- Сколько бит на точку нужно, чтобы в точке 10 дБ было не меньше 100 ошибок? Сколько времени это заняло бы при 240 кСимв/с кадра на железе?
- RX RMSE равен 6,1e-5, а TX RMSE: ровно 0. Какие блоки стоят между двумя точками измерения и какой из них округляет?
Ответы (проверены запуском скрипта лабораторной)
- Точные (Клоппер–Пирсон) 95 % интервалы на 200 000 битах: 1 ошибка даёт от 1,3·10⁻⁷ до 2,8·10⁻⁵, что содержит теоретическое 3,9·10⁻⁶; 38 ошибок дают от 1,34·10⁻⁴ до 2,61·10⁻⁴, что содержит 1,91·10⁻⁴. Ни одна точка не противоречит теории; точка 10 дБ просто почти ничего не говорит.
- При BER 3,9·10⁻⁶ для 100 ошибок нужно около
100 / 3,9·10⁻⁶ ≈ 2,6·10⁷бит. При 240 кСимв/с и одном бите на символ BPSK это около 107 с непрерывных кадров, больше с учётом заголовков и пауз между пакетами. - Волна TX это сам пакет передачи из блока 11, поэтому сравнение TX точное. Между двумя точками измерения стоит согласованный RRC-фильтр RX: 65 квантованных коэффициентов и длинная сумма, округлённая обратно в Q1.15. Одно выходное округление дало бы около 0,3 МЗР СКО; наблюдаемые 2 МЗР (6,1·10⁻⁵) говорят, что доминирует квантование коэффициентов согласованного фильтра. Страница не перезапускалась (MATLAB нет в CI), поэтому это разбиение: ожидаемое объяснение, а не измерение.
Чек-лист отчёта¶
- Показано наложение TX Simulink на эталон MATLAB.
- Показано наложение выхода согласованного фильтра RX Simulink на эталон MATLAB.
- Приложен график BER от SNR с теоретической кривой и кривой Simulink.
- Указаны диапазон SNR и число бит на точку симуляции.
- Объяснено, что эта кривая: идеальная базовая линия AWGN для будущих измерений на Zynq.
Шаблон инженерного вывода¶
Fixed-point цепочка Simulink воспроизвела эталонные сигналы с RMSE TX/RX = ____ / ____.
Идеальная кривая BER от SNR BPSK построена для SNR от ____ до ____ дБ и совпала с теорией в пределах ____.
Эта модель теперь служит чистой базовой линией Simulink перед HDL и запуском на железе.