Обработка входящих пакетов
Version 1 (Dmitry Smekhov, 09/22/2011 09:00 am)
| 1 | 1 | h1. Обработка входящих пакетов |
|
|---|---|---|---|
| 2 | 1 | ||
| 3 | 1 | Входящие пакеты обрабатывает узел core64_rx_engine. В связи с различиями в реализации ядра Xilinx для различных ПЛИС существует несколько реализаций обработчика пакетов, они различаются способом подключения к компоненту Xilinx. |
|
| 4 | 1 | ||
| 5 | 1 | Список компонентов: |
|
| 6 | 1 | ||
| 7 | 1 | * core64_rx_engine - для Virtex 5 |
|
| 8 | 1 | * core64_rx_engine_m2 - для Virtex 6 |
|
| 9 | 1 | * core64_rx_engine_m4 - для Spartan 6 |
|
| 10 | 1 | ||
| 11 | 1 | Внутри обработчика существуют два FIFO: |
|
| 12 | 1 | * FIFO0 - для запросов чтения или записи |
|
| 13 | 1 | * FIFO1 - для ответов на запросы чтения |
|
| 14 | 1 | ||
| 15 | 1 | Процесс pr_fifo0_wr определяет тип пакета и разрешает передачу пакета в FIFO0. |
|
| 16 | 1 | В FIFO0 передаются пакеты следующих типов: |
|
| 17 | 1 | * MEMORY READ REQUEST 32 bit |
|
| 18 | 1 | * MEMORY READ REQUEST-LOCKED 32 bit |
|
| 19 | 1 | * MEMORY WRITE REQUEST 32 bit |
|
| 20 | 1 | * MEMORY WRITE REQUEST-LOCKED 32 bit |
|
| 21 | 1 | ||
| 22 | 1 | Процесс pr_fifo1_wr определяет тип пакета и разрешает передачу пакета в FIFO1. |
|
| 23 | 1 | В FIFO1 передаются пакеты следующих типов: |
|
| 24 | 1 | * COMPLETION WITH DATA |
|
| 25 | 1 | * COMPLETION LOCKED WITH DATA |
|
| 26 | 1 | ||
| 27 | 1 | Все остальные типы пакетов игнорируются. |
|
| 28 | 1 | ||
| 29 | 1 | В процессе pr_stp реализован автомат чтения данных из FIFO0. Автомат читает пакет, определяет его тип (чтение или запись) и формирует запрос к компоненту core64_reg_access. |
|
| 30 | 1 | ||
| 31 | 1 | В процессе pr_stf реализован автомат чтения данных из FIFO1. Автомат читает пакет и передаёт данные в компонент block_pe_fifo. |