Формирование пакетов для отправки

Version 1 (Dmitry Smekhov, 09/23/2011 08:43 pm)

1 1
h1. Формирование пакетов для отправки
2 1
3 1
Пакеты для передачи в ядро Xilinx формирует узел core64_tx_engine. Так же, как и для обработчика входящих пакетов существует несколько реализаций формирователя.
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 размером 64 слова по 67 разрядов в которое записывается пакет. Из этого FIFO пакет передаётся в ядро Xilin. Наличие FIFO позволяет отделить логику формирования пакетов, от передачи пакета в ядро. В частности это позволяет легко реализовать механизм приостановки выдачи пакета.
12 1
13 1
В процессе pr_state реализован автомат формирования пакетов. Формируются следующие типы пакетов:
14 1
15 1
* COMPLETION WITH DATA - ответ на команду чтения
16 1
* MEMORY READ REQUEST 32 bit
17 1
* MEMORY READ REQUEST 64 bit
18 1
* MEMORY WRITE REQUEST 32 bit
19 1
* MEMORY WRITE REQUEST 64 bit
20 1
21 1
Пакеты с 64-х разрядным адресом формируется если адрес больше 4 Гбайт.
22 1
23 1
Пакеты MEMORY WRITE формируются с PAYLOAD 128 или 256 байт. 
24 1
Пакеты MEMORY READ формируются с запросом чтения 128 байт.
25 1
26 1
Циклы чтения или записи формируются по запросу от блока EXT_FIFO. Для обмена с блоком используется пара сигналов:
27 1
* tx_ext_fifo_back - запрос от узла block_ext_fifo
28 1
* tx_ext_fifo - ответ 
29 1
30 1
В запросе указывается тип операции чтение или запись, для операции чтения указывается размер 512 байт или 4096 байт. Операция записи - всегда 4096 байт.
31 1
32 1
С началом операции чтения включается таймер. Если операция чтения не будет завершена в течении 1 ms, то будет сформирован сигнал completion_error. По этому сигналу block_ext_fifo будет повторять операцию чтения.