Лабораторная 11.2 — Сквозной пакет симуляции¶
Цель¶
Создать воспроизводимый пакет симуляции, который соединяет модель сигнала, искажения, синхронизацию и метрики в один исполняемый поток.
Инженерный вопрос¶
Сможет ли другой инженер воспроизвести полную симуляцию и получить те же графики и метрики?
Зачем это нужно¶
Симуляция, которую может запустить только её автор это демонстрация, а не доказательство. Ценность пакета в том, что второй человек на другой машине получает те же графики и те же числа одной командой и может доказать это сравнением контрольной суммы. Именно это позже позволяет сравнивать аппаратный результат с моделью этап за этапом.
Структура пакета¶
simulation/
config.json
run.py
results/
figures/
metrics.json
summary.md
Необходимые этапы симуляции¶
| Этап | Результат |
|---|---|
| Генерация сигнала TX | символы или форма сигнала |
| Канал / искажения | зашумлённый и сдвинутый сигнал |
| Коррекция на RX | синхронизированный сигнал |
| Метрики | EVM/BER/SNR |
| Артефакты отчёта | графики и JSON |
Рекомендуемое переиспользование¶
Итоговый проект может переиспользовать существующие исполняемые работы:
- метрики loopback TX/RX Блока 7;
- сквозную цепочку синхронизации Блока 8;
- IQ-анализ Блока 9.
Текущий исполняемый эталон¶
Текущий рекомендуемый пакет для первого маршрута модема:
| Файл | Роль |
|---|---|
blocks/block_11_integrated_sdr_project/python/end_to_end_bpsk_reference.py |
детерминированный генератор пакета BPSK |
blocks/block_11_integrated_sdr_project/assets/end_to_end_bpsk_reference/ |
общий handoff для MATLAB, Simulink и HDL |
blocks/block_11_integrated_sdr_project/matlab/end_to_end_bpsk_reference.m |
зеркало пакета в MATLAB |
blocks/block_05_fpga_hdl_flow/rtl/bpsk_symbol_mapper.v |
первый RTL-якорь для того же потока бит |
Запуск из корня репозитория:
python blocks/block_11_integrated_sdr_project/python/end_to_end_bpsk_reference.py
Этот пакет уже экспортирует символы Q1.15 и коэффициенты RRC, поэтому его можно использовать как мост в Simulink fixed-point и первый блок на Verilog.
Чего ожидать¶
Эталонный генератор полностью детерминирован. Запуск печатает пути записанных файлов и сохраняет сводку в docs/assets/end_to_end_bpsk_reference_metrics.json, которая для закоммиченной конфигурации содержит:
| Величина | Значение |
|---|---|
| Кадр | 281 бит (25 преамбулы + 256 payload), 8 отсчётов на символ при 1 МС/с (125 кСимв/с) |
| Введённые искажения | сдвиг тайминга 2 отсчёта, частотный сдвиг 650 Гц, сдвиг фазы 0,31 рад |
| Фильтр RRC | 65 коэффициентов |
| BER payload / полный BER | 0 / 0 (0 ошибок) |
| EVM | 2,15 % |
| Пик / RMS | −1,6 дБFS / −7,3 дБFS |
| SHA-256 захвата | 8b2121ee3fc3946a0064cfd2cc5b5a70eb0813a36937ce82485f91a3f425f113 |
Две привычки, которые стоит вынести: сравнивайте SHA-256 вашего пересозданного захвата с приведённым (другой хеш при том же seed означает, что изменилась среда, а не наука), и обратите внимание, что пик всего на 1,6 дБ ниже полной шкалы, то есть этот эталон уже близок к пределу ограничения, который наложил бы настоящий АЦП.
Чек-лист отчёта¶
- Указана команда запуска.
- Приложен конфигурационный файл.
- Сохранены сгенерированные графики.
- Сохранён JSON с метриками.
- Объяснены все случайные seed.
- Указаны критерии «прошёл/не прошёл».
Шаблон инженерного вывода¶
Пакет симуляции воспроизводится командой ______. Он создаёт графики ______ и метрики ______.
Получен EVM ____ %, BER ____ и SNR ____ дБ.