Может ли прерывание частичной реконфигурации FPGA привести к неопределенному состоянию?
Я работаю над контроллером реконфигурации для реконфигурируемого процессора. Одна из функций, которые я попытался реализовать, заключается в том, чтобы правильно обрабатывать ошибки CRC, а также разрешать прерывания во время реконфигурации. Я использую плату Virtex7 и, как описано в ug702.pdf (стр. 98), перезагрузка потока битов после ошибки CRC не является проблемой, также может выполняться ABORT, как показано в ug470_7Series_Config.pdf (стр. 48).
На первый взгляд кажется, что он работает так, как описано в документации, то есть при ошибке CRC мой контроллер реконфигурации уведомляет ЦП, а ЦП дает моему контроллеру новый поток битов. Кроме того, процессор может отправить моему контроллеру команду прерывания, а контроллер прервет ее, как описано в документации.
Однако, кажется, что он работает только время от времени, иногда вся система зависает, иногда я получаю бессмысленные исключения, а иногда безусловные скачки не выполняются, кажется.
Я не уверен, что я где-то напутал или этого следовало ожидать, так как контейнеры, куда идут частичные битовые потоки, связаны с конвейером и шиной. Я помню, что читал в некоторых файлах xilinx pdf, что поток битов не настроен окончательно, пока не встретится команда desynch в конце потока битов. Означает ли это, что на структуру не влияют, пока на нее не будет загружен полный частичный поток битов, без каких-либо ошибок, и, следовательно, он не сможет повлиять на остальную часть проекта. Или частично загруженный частичный поток битов фактически сконфигурирован на fpga и может запускать всевозможные странные сигналы на его выходе?