Lab046C: validate full 1400 MHz RF object transport

This commit is contained in:
LittleSam129
2026-09-02 16:18:40 +03:00
parent d985030f04
commit 52197a4d85
2 changed files with 151 additions and 20 deletions

View File

@@ -8,33 +8,91 @@
**ПРОГРАММНАЯ ПРОВЕРКА НЕПРЕРЫВНОГО СЫРОГО IQ-ПОТОКА = PASS.**
**LAB046C HARDWARE RESULT = C.**
**LAB046C HARDWARE RESULT = A (FULL 1400 MHZ RF OBJECT TRANSPORT).**
**RF TX COUNT = 1.**
**FULL RF OBJECT TRANSPORT = PASS.**
**PREAMBLE CANDIDATES = 0. VALID FRAMES = 0. CRC PASS = 0.**
**RF TX PROCESS COUNT FOR THIS RESULT = 1.**
**OBJECT COMPLETE = NO.**
**VALID FRAMES = 68/68. CRC PASS = 68. CRC FAIL = 0.**
**POST-RUN TX-REFERENCE DIAGNOSTIC = 68/68 WAVEFORM TRACES DETECTED.**
**PRE-FEC CODED BIT ERRORS = 787. POST-FEC PROTOCOL BIT ERRORS = 0.**
**OFFICIAL RESULT CHANGED BY POST-RUN DIAGNOSTICS = NO.**
**OBJECT COMPLETE = YES. OBJECT SIZE = 16384 BYTES.**
**OFFLINE DETECTOR STUDY = COMPLETE.**
**SHA MATCH = YES. OBJECT BYTE ERRORS = 0. OBJECT BIT ERRORS = 0.**
**OFFLINE REPROCESSING OF ORIGINAL RX CAPTURE = FAIL.**
**HISTORICAL FIRST LAB046C AT 1080 MHZ = RESULT C.**
**OFFLINE VALID FRAMES = 0. OFFLINE OBJECT COMPLETE = NO.**
**THE HISTORICAL 1080 MHZ RESULT WAS NOT RECLASSIFIED.**
**ORIGINAL HARDWARE RESULT CHANGED = NO.**
**INDEPENDENT 1400 MHZ THRESHOLD = 0.033527640625834465.**
**CURRENT SOFTWARE GATE = PASS: quick_gate 506, pytest 506 passed,
**CURRENT SOFTWARE GATE = PASS: quick_gate 512, pytest 512 passed,
git diff --check clean.**
Lab046A/B остаются только программными лабами. Для Lab046C выполнен ровно один
заранее разрешённый непрерывный RF-сеанс без повтора. Ни JPEG, ни видео, ни
Lab046A/B остаются только программными лабами. В истории Lab046C отдельно
сохранены первый полный аппаратный результат C на 1080 МГц и новый полный
аппаратный результат A на 1400 МГц. В новом опыте выполнен ровно один заранее
разрешённый непрерывный процесс передачи без повтора. Ни JPEG, ни видео, ни
QPSK не запускались.
## Lab046C: полный аппаратный результат 1400 МГц, RESULT A
2 сентября 2026 года через два HackRF передан новый криптографически случайный
объект размером 16384 байта. Он был разбит существующей архитектурой Lab046 на
68 фрагментов и передан 68 последовательными защищёнными BPSK-кадрами одним
непрерывным процессом. Частота равна 1400 МГц, частота дискретизации 8 МГц,
символьная скорость 20 ксимв/с, цифровое смещение несущей +50 кГц. Усиления не
менялись: TX VGA 10 дБ, RX LNA/VGA 24/24 дБ, RF amplifier и Bias-Tee выключены.
Общий опорный генератор прошёл аварийно-безопасную проверку: MASTER reg29
`0x26`, SLAVE CLKIN `DETECTED`, SLAVE reg29 `0x26`. Приём начался на
`0.7525116 с` раньше передачи и закончился на `3.6341200 с` позже неё. Файл
передачи содержит 156 835 200 комплексных отсчётов, 313 670 400 байт и
19,6044 с сигнала; процесс передачи занял 19,6408497 с. Приём содержит
192 000 000 комплексных отсчётов, 384 000 000 байт и 24,0 с сигнала; процесс
приёма занял 24,0274813 с. Переполнения приёмника, опустошения передатчика,
ограничение АЦП и приближение к пределу отсутствуют.
До полного декодирования по фону до передачи зафиксировано правило первого
каскада `Q99.9 локальных максимумов + 4 * MAD`: Q99.9
`0.023181289434432983`, MAD `0.0025865877978503704`, порог
`0.033527640625834465`. После начала декодирования порог не менялся. На
независимом фоне после передачи максимум равен `0.030997175723314285`,
кандидатов выше порога нет. Исторический строгий порог
`IQ_PREAMBLE_THRESHOLD = 0.65`, Lab045, PHY и FEC не менялись.
Независимый приёмник обработал весь 24-секундный файл. Он не использовал
смещения и период кадров передатчика, ожидаемое число 68, пакеты, кодированные
биты или исходный объект. Первый каскад получил 295469 локальных максимумов и
35009 кандидатов. Строгий каскад обработал 95 неперекрывающихся гипотез:
PHY-заголовок PASS/FAIL `68/27`, FEC attempts/PASS/FAIL `68/68/0`, CRC
PASS/FAIL `68/0`, действительных кадров `68`. Поиск завершился по концу записи
и списка кандидатов, а не по достижении известного количества кадров.
`ObjectAssembler` принял 68 уникальных фрагментов. Дубликатов, конфликтующих
дубликатов и пропусков нет. Независимый вердикт: `OBJECT COMPLETE = YES`.
Восстановленный объект размером 16384 байта был записан до открытия опорных
данных передатчика. Только после этого выполнено сравнение: все 68 кадров
совпали с 68 переданными, пропущенных кадров и ложных CRC PASS нет. Ошибки до
FEC составили 787 кодированных бит, после FEC 0 протокольных бит. Ошибки
объекта равны 0 байт и 0 бит. SHA-256 исходного и восстановленного объектов:
`b5a27caaa3f03dfc468e71a857a06f18cf0259ca6ea21d3c42ccfde7168d1dfe`.
Для 68 принятых кадров SNR min/median/max равен
`8.302870/8.909278/9.837726 дБ`, ошибки преамбулы `0/3/9` из 1280, CFO
`-0.214661/0.016493/0.281551 Гц`. Медианный SNR по третям сеанса плавно
снижался `9.29 -> 8.86 -> 8.57 дБ`, но все кадры прошли FEC и CRC. Ошибки
начала кадра находились в пределах от -4 до +3 отсчётов.
Фактические внешние артефакты сохранены в
`C:\Users\user\Documents\SDR_Rover_Lab046_raw\20260902_151819_1400MHz_full`.
Большие `tx_stream.cs8`, `rx_stream.cs8`, `tx_object.bin` и
`recovered_object.bin` в Git не добавляются. После результата оба CLKOUT
выключены, процессов `hackrf_transfer` нет. Независимая проверка сохранённых
JSON, размеров, SHA-256, временного покрытия и счётчиков расхождений не нашла.
## Lab046C: подготовка аппаратного непрерывного объекта
Добавлен `experiments/lab046c_hackrf_bpsk_object.py`, который не меняет
@@ -76,7 +134,7 @@ MASTER reg29 `0x26`, SLAVE CLKIN `DETECTED` после 141,51 мс, SLAVE reg29
`0x26`; после проверки оба CLKOUT выключены, процессов `hackrf_transfer` нет,
`RF TX = 0` на этапе подготовки.
## Lab046C: первый аппаратный результат
## Lab046C: первый аппаратный результат 1080 МГц, исторический RESULT C
Выполнен ровно один непрерывный RF TX всего `tx_stream.cs8`; автоматического
или ручного повтора не было. MASTER/TX
@@ -469,9 +527,9 @@ Goodput 6,69 кбит/с — это честная baseline при 20 ксимв
## Ограничения и следующий шаг
Для Lab046A/B RF TX = 0; первый аппаратный Lab046C завершён с RESULT C и одним
RF TX без повтора. Erasure-код 12+3 GF(256) не задействован. Порог PRBS7,
gain, PHY, FEC и detector после результата не менялись. Следующий этап
определяется отдельной постановкой. Offline weak-signal прогон с заранее
зафиксированным правилом уже завершён как FAIL и не повторяется с другим
порогом. Новый RF-сеанс автоматически не разрешён.
Для Lab046A/B RF TX = 0. Первый полный аппаратный Lab046C на 1080 МГц сохранён
как исторический RESULT C. Новый полный аппаратный Lab046C на 1400 МГц
завершён как RESULT A: 68/68 кадров, объект 16384 байта восстановлен без
ошибок. Erasure-код 12+3 GF(256) не задействован, Lab045, PHY и FEC не
менялись. Следующий этап определяется отдельной постановкой. Новый RF-сеанс,
JPEG, видео, QPSK и переход к другой FEC автоматически не разрешены.