Este proyecto crea un módulo que puede usarse para interactuar con un Ethernet PHY para transmitir paquetes UDP. Solo se admite la transmisión, y no hay receptor implementado en el FPGA.
El módulo está construido específicamente para transmitir datos de ancho fijo del FPGA. Por ejemplo, el módulo funciona bien para transmitir datos muestreados en un ADC o datos generados por algún proceso. Aunque el módulo puede manejar algo de tamaño variable, no se admite directamente. Para enviar datos de tamaño variable, cada punto de datos debe estar acolchado al tamaño del punto de datos más grande que se enviará. El tamaño de los puntos de datos debe declararse por adelantado y el módulo garantiza que un solo punto de datos nunca se fragmentará con múltiples paquetes.
Este proyecto fue construido y probado específicamente en el Digilent Arty A7, que utiliza un Xilinx Artix-7 XC7A100T FPGA y tiene un controlador Ethernet Phy de Texas Instruments DP83848J. Sin embargo, el estándar MII funcionará con cualquier PHY.
Debe usar este módulo si
No debe usar este módulo si
Para usar este módulo en un proyecto, hay dos archivos que deben incluirse
src/hdl/eth_udp.svsrc/ip/eth_udp_fifo_async/eth_udp_fifo_async.xci El módulo ethernet_udp_transmit debe ser instanciado, y usa internamente la IP eth_udp_fifo_async .
Si la IP Xilinx está bloqueada, entonces es probable que la IP esté configurada para una parte diferente. Verifique esto ejecutando report_ip_status en la consola TCL, y la solución es ejecutar upgrade_ip [get_ips *] .
Abra Xilinx Vivado y seleccione Tools > Run Tcl Script... , luego seleccione el script generate_project.tcl en el Exporador de archivos. El script se ejecutará y producirá el proyecto Vivado en un nuevo proj/ directorio importando todas las fuentes del proyecto. Si el proyecto no se crea, es muy probable que ya exista el proj/ Directorio.
El proyecto se puede probar utilizando el programa ether_tester . El probador genera una secuencia pseudo-aleatoria de bytes en el FPGA para enviar UDP, y el programa de prueba verifica que la secuencia que recibe es correcta.
Para usar el programa de prueba, asegúrese de que la carga esté instalada para compilar programas de óxido, luego navegue al directorio ether_tester y ejecute
cargo buildpara descargar dependencias y construir el proyecto. Para ver la información de ayuda del programa, ejecute
cargo run -- -hUna invocación de muestra del programa es
cargo run --
-b256
--serial-port=/dev/ttyUSB1:115200
--src=8.8.8.8:4096,aa:bb:cc:dd:ee:ff
--dest=1.2.3.4:4096,00:11:22:33:44:55
-r1000En orden, los argumentos significan lo siguiente.