FPGA принимает 19 пакетов Lepton заранее, а затем подтверждает или откатывает FIFO
FLIR Lepton 3.5 передаёт кадр 160×120 по VoSPI: в сегменте 60 пакетов по 164 байта, а кадр состоит из четырёх сегментов. Неудобство протокола в том, что номер сегмента появляется только в двадцатом пакете. До этого приёмник не знает, продолжает ли он правильную последовательность, хотя остановить поток и подождать метаданные нельзя.
Приёмник на Efinix Trion T8 решает это механизмом mark, commit и rollback. В начале предполагаемого сегмента FPGA сохраняет указатель записи FIFO и складывает первые 19 пакетов как будто они верны. Когда приходит номер, правильная последовательность подтверждается; ошибочная отменяется возвратом указателя. Данные физически успевают пройти, но ещё не становятся видимыми читателю.
Пиксели дополнительно упаковываются из 14 в 12 бит: два младших разряда сочтены преимущественно шумовыми, и размер сегмента уменьшается с 9600 до 7200 байт. Для количественной радиометрии это допущение придётся проверять отдельно. Дальше FPGA передаёт поток RP2354 по UART на 8,333 Мбод, а микроконтроллер выводит его в USB.
Показанный тракт даёт девять полных кадров в секунду с нулевыми счётчиками ошибок в конкретном тесте. Логика занимает 798 из 7384 LE, зато FIFO съедает 21 из 24 блоков памяти. Сам приём особенно переносим: поздняя метка может появляться и в потоках АЦП, сетевых пакетах или SDR, а откатываемый указатель позволяет не терять пропускную способность из-за ожидания.