per-point switching: hardware bring-up, profiles, protocol doc
Verified on the bench that the modified master bitstream excites in every stage and the RF switch routes: 16 traces per sweep, 62 dB between the two switch positions of one master port, 9.9k measurements/s. Adds the built master image, two run profiles, a verification script and librevna_protocol.md, and drops the stale prototype driver copy that the firmware tree still carried.
This commit is contained in:
@@ -4,9 +4,13 @@
|
||||
Проект лежит целиком — не патч, а полное дерево с уже внесёнными доработками.
|
||||
|
||||
> **Исходники опережают бинарники.** В дерево внесено переключение стимула
|
||||
> внутри частотной точки (см. [`../../per_point_switching.md`](../../per_point_switching.md)),
|
||||
> а лежащие рядом `.vnafw`, `extracted/` и `build*/` — это ПРЕДЫДУЩАЯ прошивка,
|
||||
> собранная до этой доработки и сейчас залитая в приборы. Поэтому:
|
||||
> внутри частотной точки (см. [`../../per_point_switching.md`](../../per_point_switching.md)).
|
||||
> Битстрим и готовый образ с доработкой уже собраны:
|
||||
> `FPGA/VNA/top_master_per_point_switching.bin` и
|
||||
> `../combined_per_point_switching.vnafw`. **На железе они ещё не проверены.**
|
||||
> А `combined.vnafw`, `extracted/` и `build/` — это ПРЕДЫДУЩАЯ прошивка,
|
||||
> собранная до доработки и сейчас залитая в приборы, то есть путь отката.
|
||||
> Поэтому:
|
||||
>
|
||||
> * `./build.sh` без аргументов по-прежнему даёт побайтовое совпадение — он
|
||||
> только переупаковывает готовые `.bin`, не трогая исходники;
|
||||
@@ -87,9 +91,18 @@ tail -c +341737 combined.vnafw | head -c 85004 > VNA_embedded.bin # STM32
|
||||
|
||||
Аппаратный триггер и external-LO slave — 13 файлов (не 12: в списке не значился
|
||||
`PC_Application/LibreVNA-GUI/Traces/trace.cpp`, правка в GUI, к прошивкам
|
||||
отношения не имеющая). Переключение стимула внутри точки добавило ещё 5
|
||||
изменённых файлов и один новый. Всё остальное дерево совпадает с апстримом байт
|
||||
в байт.
|
||||
отношения не имеющая). Переключение стимула внутри точки добавило ещё **7
|
||||
изменённых файлов и 2 новых** (`git diff --stat d2338ff HEAD -- reproduce/LibreVNA/`):
|
||||
`FPGA/VNA/{Sweep,SPIConfig,top}.vhd`, `FPGA/VNA/VNA.xise`,
|
||||
`Application/Drivers/FPGA/FPGA.{hpp,cpp}`, `Application/VNA.cpp`; новые —
|
||||
`FPGA/VNA/Test_Sweep.vhd` и `FPGA/VNA/top_master_per_point_switching.bin`.
|
||||
|
||||
Ещё из дерева удалён каталог `Python/` — прототип драйвера multi-device, который
|
||||
переехал в `python_app/hardware_full/librevna_multi_device_driver/`. К сборке
|
||||
прошивок он отношения не имел; разбор протокола из него сохранён как
|
||||
[`../../librevna_protocol.md`](../../librevna_protocol.md).
|
||||
|
||||
Всё остальное дерево совпадает с апстримом байт в байт.
|
||||
|
||||
### STM32 — поддержка аппаратного триггера (это и есть съём без USB)
|
||||
|
||||
@@ -138,8 +151,28 @@ tail -c +341737 combined.vnafw | head -c 85004 > VNA_embedded.bin # STM32
|
||||
|
||||
### Переключение стимула внутри частотной точки
|
||||
|
||||
Внесено позже остального, бинарников рядом ещё нет (см. блок в начале файла).
|
||||
Полное описание — [`../../per_point_switching.md`](../../per_point_switching.md).
|
||||
Внесено позже остального. В репозитории лежит и битстрим
|
||||
(`FPGA/VNA/top_master_per_point_switching.bin`), и готовый образ
|
||||
`../combined_per_point_switching.vnafw` — оба с хешами в `SHA256SUMS`.
|
||||
|
||||
Образ собран **локально на Linux тулчейном `arm-none-eabi-gcc 14.2.1`**, а не
|
||||
CubeIDE 1.17.0 / gcc 12.3.1, которым собран текущий рабочий `combined.vnafw`.
|
||||
Логика та же (исходники те же), но байты MCU-секции отличаются: 88 660 против
|
||||
85 044. Пересобрать этим же способом:
|
||||
|
||||
```sh
|
||||
cd LibreVNA/Software/VNA_embedded && make BUILD_DIR=build_per_point_switching
|
||||
cd .. && python3 AssembleFirmware.py \
|
||||
--bitstream FPGA/VNA/top_master_per_point_switching.bin \
|
||||
--mcu Software/VNA_embedded/build_per_point_switching/VNA_embedded.bin \
|
||||
--output ../combined_per_point_switching.vnafw
|
||||
```
|
||||
|
||||
`BUILD_DIR` обязательно отдельный: в `build/` лежит эталонный
|
||||
`VNA_embedded.bin`, извлечённый из рабочей прошивки, его перезаписывать нельзя.
|
||||
|
||||
Полное описание — [`../../per_point_switching.md`](../../per_point_switching.md),
|
||||
базовый протокол — [`../../librevna_protocol.md`](../../librevna_protocol.md).
|
||||
|
||||
**`FPGA/VNA/Sweep.vhd`** — порт излучает не в одной стадии, а в БЛОКЕ подряд
|
||||
идущих: младшие `SUBSTAGE_BITS` бит счётчика стадий стали положением выходного
|
||||
@@ -158,6 +191,13 @@ tail -c +341737 combined.vnafw | head -c 85004 > VNA_embedded.bin # STM32
|
||||
железа нет порта 3, поле свободно, и его переиспользование не меняет формат
|
||||
пакета.
|
||||
|
||||
**`FPGA/VNA/VNA.xise`** — одна строка: `Starting Placer Cost Table (1-100) Map
|
||||
spartan6` переведена с `1` на `2`. **Не сбрасывать.** Ограничение
|
||||
`MCU_MOSI OFFSET hold` маргинально уже в стоке (запас +0.458 нс), поэтому любое
|
||||
изменение нетлиста может его опрокинуть; с cost table 2 получается Timing Score 0
|
||||
и запас +0.642 нс, то есть больше стокового. Подробности и цифры ресурсов — в
|
||||
[`../../per_point_switching.md`](../../per_point_switching.md).
|
||||
|
||||
**При `SUBSTAGE_BITS = 0` логика бит в бит совпадает с апстримом** — это
|
||||
проверено симуляцией.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user