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:
@@ -7,17 +7,26 @@ device_firmware/per_point_switching.md в репозитории.
|
||||
|
||||
ЧТО ЗДЕСЬ
|
||||
---------
|
||||
files\ 7 изменённых файлов дерева LibreVNA
|
||||
make_files.sh собирает files\ и SHA256_new.txt из дерева репозитория
|
||||
files\ 8 файлов дерева LibreVNA (НЕ в git, генерируется)
|
||||
install.cmd бэкап оригиналов + установка + сборка MCU
|
||||
build_mcu.cmd только сборка MCU (если правки уже стоят)
|
||||
backup_original\ появится после install.cmd — оригиналы для отката
|
||||
SHA256_new.txt хеши установленных файлов для проверки
|
||||
SHA256_new.txt хеши устанавливаемых файлов для проверки
|
||||
|
||||
Изменены: FPGA/VNA/{Sweep,SPIConfig,top}.vhd,
|
||||
FPGA/VNA/VNA.xise <- закреплён Starting Placer Cost Table = 2,
|
||||
без него сборка даёт нарушение тайминга
|
||||
Software/VNA_embedded/Application/VNA.cpp,
|
||||
Software/VNA_embedded/Application/Drivers/FPGA/FPGA.{cpp,hpp}
|
||||
Добавлен: FPGA/VNA/Test_Sweep.vhd (тестбенч, в проект ISE не входит)
|
||||
|
||||
ПЕРЕД ОТПРАВКОЙ НА WINDOWS запустить на машине с репозиторием:
|
||||
bash install_windows/make_files.sh
|
||||
Каталог files\ не версионируется намеренно: когда он лежал в git, после
|
||||
переделки Sweep.vhd и закрепления cost table комплект молча остался со старыми
|
||||
версиями. Генерация из дерева исключает это.
|
||||
|
||||
ВАЖНО: ПЕРЕПРОШИВАТЬ НАДО ТОЛЬКО МАСТЕР
|
||||
---------------------------------------
|
||||
Слейвы остаются как есть. Хост выставляет им обе порт-стадии в 7, а стоковое
|
||||
@@ -40,10 +49,14 @@ device_firmware/per_point_switching.md в репозитории.
|
||||
/home/ise/shared/LibreVNA/FPGA).
|
||||
2. В ISE открыть VNA.xise — проект МАСТЕРА. Не VNA_external_lo_slave.xise.
|
||||
3. Process -> Generate Programming File.
|
||||
4. Забрать top.bin СРАЗУ и переименовать в top_master.bin: оба проекта пишут в
|
||||
один и тот же файл, и следующая сборка его затрёт. Именно так был потерян
|
||||
исходный мастер-битстрим.
|
||||
5. Положить top_master.bin в ...\reproduce\LibreVNA\FPGA\VNA\
|
||||
4. Забрать top.bin СРАЗУ и переименовать в top_master_per_point_switching.bin:
|
||||
оба проекта пишут в один и тот же top.bin, и следующая сборка его затрёт.
|
||||
Именно так был потерян исходный мастер-битстрим.
|
||||
5. Положить его в ...\reproduce\LibreVNA\FPGA\VNA\
|
||||
|
||||
ВНИМАНИЕ: имя обязательно новое. Лежащий там top_master.bin — копия
|
||||
НЕВОСПРОИЗВОДИМОГО битстрима текущей рабочей прошивки, перезаписывать его
|
||||
нельзя ни при каких обстоятельствах.
|
||||
|
||||
Битстрим невоспроизводим побайтово (place & route недетерминирован плюс
|
||||
timestamp внутри), так что новый файл будет отличаться от старого при любом
|
||||
@@ -52,7 +65,7 @@ timestamp внутри), так что новый файл будет отлич
|
||||
ШАГ 3. Упаковка .vnafw
|
||||
----------------------
|
||||
cd %USERPROFILE%\Documents\radar_system\device_firmware\reproduce\LibreVNA
|
||||
python AssembleFirmware.py --bitstream FPGA\VNA\top_master.bin ^
|
||||
python AssembleFirmware.py --bitstream FPGA\VNA\top_master_per_point_switching.bin ^
|
||||
--mcu Software\VNA_embedded\build\VNA_embedded.bin ^
|
||||
--output ..\combined_per_point_switching.vnafw
|
||||
|
||||
@@ -67,7 +80,8 @@ LibreVNA-GUI: Device -> Firmware Update, скормить .vnafw целиком.
|
||||
---------------
|
||||
1. Сначала СТАРЫЙ режим (stimulus_switch_positions: 1) — должен работать ровно
|
||||
как раньше. Только потом включать переключение.
|
||||
2. Осциллографом на контроллере ключа: PB2 — положение ключа, PB5 — импульс на
|
||||
2. Осциллографом на контроллере ключа: PB2 и PB6 — положение ключей (порт 1 и
|
||||
порт 2, меняются одновременно), PB5 — импульс на
|
||||
каждое исправление чётности (в норме молчит). На одной частоте должно быть
|
||||
четыре стадии и два периода A B A B.
|
||||
3. По USB CDC контроллера, остановив развёртку: parity corrections : 0 и
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
3cf838aeda126e38397eb97ab10519cc50c725f8c05090890f05837d759c63f2 ./FPGA/VNA/Sweep.vhd
|
||||
7b59127f46dc16d3a22de4cff02a8499b51465ba29bd5f0be491149022828a8a ./FPGA/VNA/SPIConfig.vhd
|
||||
624a5324ae13fd87285e59edea301ffb5e7eab8f2fed99418759fca52401b3b0 ./FPGA/VNA/Sweep.vhd
|
||||
02cc0cf7fe2e253a253843578ab6195f1300702afb00c4ca43b3dbc8df118183 ./FPGA/VNA/Test_Sweep.vhd
|
||||
e70da2b4216862a44b12e4cbde951442ccf1a4b919103fcdd4010613b43cfe46 ./FPGA/VNA/top.vhd
|
||||
a7cc99e473ab2ec704c55405e3f1cbcd75315fe14f65ee1dfc7b8dce11eb4ca4 ./FPGA/VNA/VNA.xise
|
||||
5f8b7eeeb495b6c74e9b5137a6e8bd7dc0200fd084a7f0eaf67f2ee0a7c6b5a3 ./FPGA/VNA/Test_Sweep.vhd
|
||||
fb116ff5aaf4161052e77837ac78a6824833e87372a6ce5dd142e0240fc17379 ./Software/VNA_embedded/Application/VNA.cpp
|
||||
e12a9be4eee75d8b39b4b21fa7788f310d87ec22ae068ae7e82de9df91555db4 ./Software/VNA_embedded/Application/Drivers/FPGA/FPGA.cpp
|
||||
db3ad784c1b1e912c7986f98616585b4fe5d2e0c995d9c66268f756ec4d176ad ./Software/VNA_embedded/Application/Drivers/FPGA/FPGA.hpp
|
||||
fb116ff5aaf4161052e77837ac78a6824833e87372a6ce5dd142e0240fc17379 ./Software/VNA_embedded/Application/VNA.cpp
|
||||
|
||||
@@ -23,14 +23,22 @@ if not exist "%APPDIR%" mkdir "%APPDIR%"
|
||||
copy /y "%ROOT%\FPGA\VNA\Sweep.vhd" "%FPGADIR%\" >nul || exit /b 1
|
||||
copy /y "%ROOT%\FPGA\VNA\SPIConfig.vhd" "%FPGADIR%\" >nul || exit /b 1
|
||||
copy /y "%ROOT%\FPGA\VNA\top.vhd" "%FPGADIR%\" >nul || exit /b 1
|
||||
rem VNA.xise тоже правится: в нём закреплён Starting Placer Cost Table = 2,
|
||||
rem без которого сборка даёт нарушение тайминга по MCU_MOSI hold.
|
||||
copy /y "%ROOT%\FPGA\VNA\VNA.xise" "%FPGADIR%\" >nul || exit /b 1
|
||||
copy /y "%ROOT%\Software\VNA_embedded\Application\Drivers\FPGA\FPGA.cpp" "%DRVDIR%\" >nul || exit /b 1
|
||||
copy /y "%ROOT%\Software\VNA_embedded\Application\Drivers\FPGA\FPGA.hpp" "%DRVDIR%\" >nul || exit /b 1
|
||||
copy /y "%ROOT%\Software\VNA_embedded\Application\VNA.cpp" "%APPDIR%\" >nul || exit /b 1
|
||||
echo 6 файлов сохранено в backup_original\
|
||||
echo 7 файлов сохранено в backup_original\
|
||||
|
||||
echo === Установка новых файлов ===
|
||||
if not exist "%STAGE%" (
|
||||
echo ОШИБКА: нет каталога files\ — соберите его из дерева репозитория:
|
||||
echo bash install_windows/make_files.sh
|
||||
exit /b 1
|
||||
)
|
||||
xcopy /s /y "%STAGE%\*" "%ROOT%\" >nul || exit /b 1
|
||||
echo 7 файлов установлено (6 изменённых + Test_Sweep.vhd)
|
||||
echo 8 файлов установлено (7 изменённых + Test_Sweep.vhd)
|
||||
|
||||
echo === Сборка прошивки MCU мастера ===
|
||||
call "%~dp0build_mcu.cmd"
|
||||
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
# Собирает payload install_windows/files/ из дерева LibreVNA этого репозитория
|
||||
# и переписывает SHA256_new.txt.
|
||||
#
|
||||
# Зачем скрипт, а не файлы в git: раньше files/ и SHA256_new.txt заполнялись
|
||||
# руками, и после переделки Sweep.vhd (маска вместо сдвига) и закрепления cost
|
||||
# table в VNA.xise комплект молча остался со СТАРЫМИ версиями. Установка таким
|
||||
# комплектом вернула бы битстрим с нарушением тайминга. Генерация из дерева
|
||||
# делает этот класс расхождений невозможным.
|
||||
#
|
||||
# files/ в .gitignore: это копия того, что и так лежит в дереве.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
KIT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
TREE="$(cd "$KIT_DIR/../LibreVNA" && pwd)"
|
||||
STAGE="$KIT_DIR/files"
|
||||
|
||||
# Пути относительно корня дерева LibreVNA. Порядок — как в README.txt.
|
||||
FILES=(
|
||||
FPGA/VNA/Sweep.vhd
|
||||
FPGA/VNA/SPIConfig.vhd
|
||||
FPGA/VNA/top.vhd
|
||||
FPGA/VNA/VNA.xise
|
||||
FPGA/VNA/Test_Sweep.vhd
|
||||
Software/VNA_embedded/Application/VNA.cpp
|
||||
Software/VNA_embedded/Application/Drivers/FPGA/FPGA.cpp
|
||||
Software/VNA_embedded/Application/Drivers/FPGA/FPGA.hpp
|
||||
)
|
||||
|
||||
rm -rf "$STAGE"
|
||||
for relative_path in "${FILES[@]}"; do
|
||||
source_file="$TREE/$relative_path"
|
||||
[[ -f "$source_file" ]] || { echo "нет файла: $source_file" >&2; exit 1; }
|
||||
mkdir -p "$STAGE/$(dirname "$relative_path")"
|
||||
cp "$source_file" "$STAGE/$relative_path"
|
||||
done
|
||||
|
||||
( cd "$STAGE" && sha256sum $(printf './%s\n' "${FILES[@]}") ) > "$KIT_DIR/SHA256_new.txt"
|
||||
|
||||
echo "files/: ${#FILES[@]} файл(ов), SHA256_new.txt обновлён"
|
||||
echo "Проверка на Windows: certutil -hashfile <файл> SHA256"
|
||||
Reference in New Issue
Block a user