docs: add readme to ethernet-udp
This commit is contained in:
54
rtl/ethernet-udp/README.md
Normal file
54
rtl/ethernet-udp/README.md
Normal file
@ -0,0 +1,54 @@
|
||||
# Ethernet UDP Stack
|
||||
|
||||
Полный стек для Ethernet. Имеется поддержка ARP, ICMP (ping), и UDP.
|
||||
- Рассчитан на скорость 1 ГБит/с
|
||||
- IP адреса устанавливаются заранее в axis_mac.sv
|
||||
- ARP и ICMP работают автоматически после инициализации модуля
|
||||
- Получаемые пейлоады по UDP выводятся через AXIS Master, когда получатель будет ready
|
||||
- Для отправки пейлоада по UDP используется сигнал-импульс send_req, который можно подать, когда модуль req_ready, после этого по готовности AXIS Slave можно начинать передавать данные пакета. Отправка следующего пакета будет доступна, когда данные предыдущего начнут отправляться (тоже сигнал req_ready).
|
||||
- Для прием имеется небольшая память на 2Кб. Пакет сначала помещается в нее и может быть отправлен по AXIS как только получатель готов. Если получатель не успевает принять полученный UDP пакет, то он может быть перезатерт новым.
|
||||
- Для отправки есть FIFO глубиной 2Кб. После запроса на отправку (send_req), при наполнении этого FIFO считается checksum пакета. Когда все data_length байт записаны - начинается отправка пакетов. Когда первые байты ушли - можно начинать передачу байт следующего пакета.
|
||||
## Структура src
|
||||
```
|
||||
├── eth - исходный код ethernet модуля
|
||||
│ ├── arbi - арбитер RGMII <-> GMII
|
||||
│ │ ├── gmii_arbi.v
|
||||
│ │ ├── gmii_rx_buffer.v
|
||||
│ │ └── gmii_tx_buffer.v
|
||||
│ ├── axis_mac.sv - обертка для AXIS
|
||||
│ ├── mac - основные файлы MAC части
|
||||
│ │ ├── arp_cache.v
|
||||
│ │ ├── crc.v
|
||||
│ │ ├── icmp_reply.v
|
||||
│ │ ├── mac_test.v
|
||||
│ │ ├── mac_top.v
|
||||
│ │ ├── rx - прием
|
||||
│ │ │ ├── arp_rx.v
|
||||
│ │ │ ├── ip_rx.v
|
||||
│ │ │ ├── mac_rx_top.v
|
||||
│ │ │ ├── mac_rx.v
|
||||
│ │ │ └── udp_rx.v
|
||||
│ │ └── tx - отправка
|
||||
│ │ ├── arp_tx.v
|
||||
│ │ ├── ip_tx_mode.v
|
||||
│ │ ├── ip_tx.v
|
||||
│ │ ├── mac_tx_mode.v
|
||||
│ │ ├── mac_tx_top.v
|
||||
│ │ ├── mac_tx.v
|
||||
│ │ └── udp_tx.v
|
||||
│ ├── reset.v
|
||||
│ └── util_gmii_to_rgmii.v
|
||||
└── ip: XCI файлы ip блоков
|
||||
```
|
||||
|
||||
## Тесты
|
||||
В tests есть Testbench, эмулирующий прием и отправку пакетов (test_axis_mac_rx.sv), а также имеются следующие тестовые проекты для отладки на ПЛИС AX7A035B:
|
||||
- Симуляция запускается в eth_axis через ```make sim```
|
||||
- eth_minimal - минимальный проект для теста PHY части. По умолчанию просто отправляет UDP пакет с фиксированным содержимым Hello ALINX на заданный IP. Если отправить UDP - то начнется трансляция пейлоада из принятого пакета.
|
||||
- eth_axis - проект с axis_mac и своеобразным echo-loopback. Начинает с ARP запроса, если получает ответ - то готов к работе. Можно отправлять UDP и получать эхо в ответ.
|
||||
|
||||
## Сборка
|
||||
- Для сборки используется make
|
||||
- Собрать все вплоть до битстрима: ```make all```
|
||||
- Создать (если нету) и открыть вивадовский проект: ```make vivado```
|
||||
- По умолчанию в проектах используются IP 192.168.0.2 для платы и 192.168.0.3 для хоста, порт 8080 и на отправку, и на получение
|
||||
Reference in New Issue
Block a user