FPGA мастера: порт излучает не в одной стадии, а в блоке подряд идущих — младшие SUBSTAGE_BITS бит счётчика стадий стали положением выходного ключа, старшие выбирают порт. Вынесено в функцию port_excites в Sweep.vhd, новое поле приезжает из свободных битов 8:6 регистра SweepSetup через SPIConfig и top.vhd. Совместимость со стоком строгая: при SUBSTAGE_BITS=0 сдвиг нулевой, а добавленная проверка "порт-стадия выше последней" ничего не меняет, потому что счётчик стадий и так пробегает только 0..STAGES. Ручной режим и анализатор спектра, где STAGES=0, ведут себя ровно как раньше. MCU: у SetupSweep добавлен параметр substage_bits со значением по умолчанию 0, поэтому вызовы из Manual.cpp и SpectrumAnalyzer.cpp не тронуты. VNA.cpp берёт ширину под-стадии из port3Stage — порта 3 у этого железа нет, поле свободно, и формат пакета не меняется. Проверено: GHDL анализирует все три VHDL-файла чисто; новый самопроверяющийся Test_Sweep.vhd прогоняет четыре сценария (сток, два положения, приёмник без излучения, четыре положения) и проверен мутацией — с возвращённым стоковым сравнением сценарии с под-стадиями падают. Обе сборки MCU собираются без ошибок. Битовые позиции сверены сквозь всю цепочку: хост шлёт port3Stage=1 в слове 0x243, MCU пишет регистр 0x7041, FPGA читает SUBSTAGE_BITS=1. Слейвы перепрошивать не нужно: им шлётся порт-стадия 7, которая со счётчиком 0..3 не совпадает и в стоковом сравнении. Исходники теперь опережают лежащие рядом бинарники — предупреждение добавлено в начало reproduce/README.md, хеш README в SHA256SUMS обновлён. Порядок ввода в строй расписан в per_point_switching.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
20 lines
1.5 KiB
Plaintext
20 lines
1.5 KiB
Plaintext
# Эталонные хеши комплекта. Проверка: cd device_firmware/reproduce && sha256sum -c SHA256SUMS
|
|
#
|
|
# готовые прошивки
|
|
00431d534c2b2ccb05069399158b7a7f58f70d6955f3885ae322191683fc86d4 *../combined.vnafw
|
|
adf7b7c7bbc0f85af94876eef4ef6c774e434862977f716099df9c71599f14e6 *../combined_external_lo_slave.vnafw
|
|
# секции, извлечённые из них
|
|
c0e69bbcadd9fac20de10acbe1875ceba39cc7ce35a7c64ed54f44150560ef75 *extracted/master_fpga.bin
|
|
ba729999be7849187704cf4ccbc4ae4a8877b0860eee1b44225c0585537bb091 *extracted/master_stm32.bin
|
|
71f12345b1bed31f6a8b78e2eaa30503f26556cedcbff4615cd5a998953210d5 *extracted/slave_fpga.bin
|
|
56654a0344556d24ecca10f119e0226b8297a2bb89d1aa4217280854e9ffa7bd *extracted/slave_stm32.bin
|
|
# битстримы и прошивки MCU в дереве проекта
|
|
c0e69bbcadd9fac20de10acbe1875ceba39cc7ce35a7c64ed54f44150560ef75 *LibreVNA/FPGA/VNA/top_master.bin
|
|
71f12345b1bed31f6a8b78e2eaa30503f26556cedcbff4615cd5a998953210d5 *LibreVNA/FPGA/VNA/top_external_lo_slave.bin
|
|
9e063008fabc872c8d534793851116373e6730cfbeaec17de18c1ba8bf7e9ca2 *LibreVNA/FPGA/VNA/top.bin
|
|
ba729999be7849187704cf4ccbc4ae4a8877b0860eee1b44225c0585537bb091 *LibreVNA/Software/VNA_embedded/build/VNA_embedded.bin
|
|
56654a0344556d24ecca10f119e0226b8297a2bb89d1aa4217280854e9ffa7bd *LibreVNA/Software/VNA_embedded/build_external_lo_slave/VNA_embedded.bin
|
|
# комплект
|
|
a3c88be8abbff988650d7fe20f4a93745d46c347c9d0936aa5b43a1ff29dc70b *README.md
|
|
be686c2000094acb7703727a3eb9249f7ae8a3517dc7d8630fe97f394aadb849 *build.sh
|