Files
reflectometer_fpga_project/rtl/ethernet-udp/README.md
2026-04-14 12:36:05 +03:00

55 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 и на отправку, и на получение