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

Лабораторная 11.15 — Свидетель runtime bridge_rx_only по стоковому TX и счётчикам RX gpreg

Цель

Определить, может ли runtime-тракт RX внутри overlay PL курса наблюдать какие-либо отсчёты, когда в качестве источника сигнала используется стоковый тракт TX AD9361 хоста.

Работа разделяет два возможных режима отказа, выглядящих одинаково в прежних журналах:

  1. bitstream overlay загружен корректно, axi_gpreg отвечает, но цепочка PL RX никогда не увеличивает rx_valid_count, что бы ни управляло TX;
  2. цепочка PL RX увеличивает rx_valid_count, когда линию питает заведомо исправный TX хоста, но раньше была лишена данных, потому что PL TX курса тоже был сломан.

Использование стокового TX хоста как свидетеля устраняет вторую неоднозначность.

Вспомогательные термины

  • bridge_rx_only: вариант overlay bridge_txrx_mux, в котором TX привязан к константе, а в цепочку PL BPSK подключён только тракт данных RX от AD9361, что убирает PL TX как переменную.
  • host TX: стоковый тракт DMA TX AD9361, управляемый напрямую с хоста Linux по сетевому IIO, тот же циклический пакет BPSK, что и в Lab 11.14.
  • счётчики RX gpreg: rx_valid_count и received_bits внутри axi_gpreg по адресу 0x79040000; ненулевое значение означает, что PL-фреймер действительно обработал символы.
  • rx_common re-init: необязательная запись в регистр общего управления RX AD9361 для повторного запуска тракта DMA перед захватом; управляется --rx-common-reinit.

Файлы

Путь Назначение
blocks/block_11_integrated_sdr_project/python/lab_11_15_runtime_bridge_rx_host_tx_probe.py загрузить overlay bridge_rx_only, запустить стоковый TX хоста, опрашивать счётчики RX gpreg
blocks/block_11_integrated_sdr_project/python/runtime_rx_common.py общий помощник принудительной повторной инициализации регистра общего управления RX

Запуск

python blocks/block_11_integrated_sdr_project/python/lab_11_15_runtime_bridge_rx_host_tx_probe.py \
  --bit-bin tmp/bridge_rx_only.wordswap.bit.bin \
  --run-tag live_witness

Скрипт:

  1. загружает и устанавливает bridge_rx_only.wordswap.bit.bin через Linux fpga_manager;
  2. опрашивает ID/сигнатуру axi_gpreg, чтобы подтвердить, что overlay жив;
  3. настраивает стоковый тракт RX AD9361 на 915 МГц / 3,84 МС/с;
  4. при наличии --rx-common-reinit принудительно повторно инициализирует rx_common;
  5. запускает циклический пакет BPSK из тракта TX хоста;
  6. опрашивает rx_valid_count и received_bits до --poll-limit раз;
  7. останавливает TX, восстанавливает состояние AD9361, при необходимости перезагружает;
  8. сохраняет JSON-файл доказательств со всеми снимками счётчиков и таймингом.

Безопасные первые настройки (значения по умолчанию в репозитории)

Параметр По умолчанию
Центральная частота 915 МГц
Частота дискретизации 3,84 МС/с
RF-полоса 2 МГц
Ослабление TX -50 дБ
Усиление RX 35 дБ
Лимит опросов 128
Задержка опроса 20 мс
start_offset 62

Как интерпретировать результат

rx_valid_count после TX Смысл
остаётся 0 цепочка PL RX не получает отсчётов: проблема overlay или DMAC
растёт цепочка PL RX жива; прежний отказ был вызван нехваткой данных PL TX

Если rx_valid_count остаётся нулевым даже при подтверждённом пакете TX хоста, блокировщик находится внутри тракта данных RX bridge_rx_only или интерфейса AD9361→PL, а не в логике TX модема BPSK.

Доказательства, собранные 2026-06-23

Прогон-свидетель bridge_rx_only показал rx_valid_count = 0 и после простой перезагрузки overlay, и после попытки повторной инициализации rx_common, тогда как TX хоста в стоковом режиме был подтверждённо передающим циклический пакет BPSK. Это доказало, что сам тракт PL RX не получает отсчётов от AD9361 под runtime-overlay: независимо от того, что порождает RF-сигнал.

Следующий шаг: выяснить, корректно ли шина отсчётов AD9361 → PL (LVDS или параллельная) заново запускается после горячей перезагрузки fpga_manager.

Чек-лист отчёта

  • Записано значение ID axi_gpreg (подтвердить 0x4250534B).
  • Записаны tx_valid_count, rx_valid_count, received_bits после каждого опроса.
  • Отмечено, изменила ли повторная инициализация rx_common траекторию счётчиков.
  • Приложен хвост dmesg.
  • Подтверждено, что TX хоста передавал (BER = 0 по самопроверке стокового shell).

Шаблон инженерного вывода

Overlay runtime bridge_rx_only загружен, ID axi_gpreg = 0x____.
После ____ циклов опроса при активном стоковом TX хоста на ____ МГц
rx_valid_count = ____ и received_bits = ____.
Повторная инициализация RX common выполнялась / не выполнялась; результат она изменила / не изменила.
Вывод: тракт PL RX получает / не получает отсчёты AD9361 под runtime-overlay, потому что ______.