Обработка входящих пакетов¶
Входящие пакеты обрабатывает узел core64_rx_engine. В связи с различиями в реализации ядра Xilinx для различных ПЛИС существует несколько реализаций обработчика пакетов, они различаются способом подключения к компоненту Xilinx.
Список компонентов:
- core64_rx_engine - для Virtex 5
- core64_rx_engine_m2 - для Virtex 6
- core64_rx_engine_m4 - для Spartan 6
- FIFO0 - для запросов чтения или записи
- FIFO1 - для ответов на запросы чтения
В FIFO0 передаются пакеты следующих типов:
- MEMORY READ REQUEST 32 bit
- MEMORY READ REQUEST-LOCKED 32 bit
- MEMORY WRITE REQUEST 32 bit
- MEMORY WRITE REQUEST-LOCKED 32 bit
В FIFO1 передаются пакеты следующих типов:
- COMPLETION WITH DATA
- COMPLETION LOCKED WITH DATA
Все остальные типы пакетов игнорируются.
В процессе pr_stp реализован автомат чтения данных из FIFO0. Автомат читает пакет, определяет его тип (чтение или запись) и формирует запрос к компоненту core64_reg_access.
В процессе pr_stf реализован автомат чтения данных из FIFO1. Автомат читает пакет и передаёт данные в компонент block_pe_fifo.