Este projeto cria um módulo que pode ser usado para interagir com um Phy Ethernet para transmitir pacotes UDP. Somente a transmissão é suportada e não há receptor implementado no FPGA.
O módulo é construído especificamente para transmitir dados de largura fixa do FPGA. Por exemplo, o módulo funciona bem para transmitir dados amostrados em um ADC ou dados gerados por algum processo. Embora o módulo possa lidar um pouco com dados de tamanho variável, ele não é suportado diretamente. Para enviar dados de tamanho variável, cada ponto de dados deve ser acolchoado para o tamanho do maior ponto de dados a ser enviado. O tamanho dos pontos de dados deve ser declarado antecipadamente e o módulo garante que um único ponto de dados nunca seja fragmentado, acréscimo vários pacotes.
Este projeto foi criado especificamente e testado no Digilent ARTY A7, que usa um Xilinx Artix-7 XC7A100T FPGA e possui um controlador Phy Ethernet do Texas Instruments DP83848J. No entanto, o padrão MII funcionará com qualquer phy.
Você deve usar este módulo se
Você não deve usar este módulo se
Para usar este módulo em um projeto, existem dois arquivos que devem ser incluídos
src/hdl/eth_udp.svsrc/ip/eth_udp_fifo_async/eth_udp_fifo_async.xci O módulo ethernet_udp_transmit deve ser instanciado e usa internamente o IP eth_udp_fifo_async .
Se o Xilinx IP estiver bloqueado, é provável que o IP tenha sido configurado para uma peça diferente. Verifique isso executando report_ip_status no console TCL, e a correção é executar upgrade_ip [get_ips *] .
Abra o Xilinx Vivado e selecione Tools > Run Tcl Script... e selecione o script generate_project.tcl no exportador de arquivos. O script será executado e produzirá o projeto Vivado em um novo diretório proj/ importando todas as fontes do projeto. Se o projeto não for criado, é mais provável que o proj/ diretório já exista.
O projeto pode ser testado usando o programa ether_tester . O testador gera uma sequência pseudo-aleatória de bytes no FPGA para enviar UDP, e o programa de teste verifica se a sequência que recebe está correta.
Para usar o programa de teste, verifique se a carga está instalada para compilar os programas de ferrugem, depois navegue até o diretório ether_tester e execute
cargo buildPara baixar dependências e construir o projeto. Para visualizar as informações de ajuda do programa, execute
cargo run -- -hUma amostra de invocação do programa é
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
-r1000Para que os argumentos significam o seguinte.