Перейти к содержанию

Лабораторная 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 ____ дБ.