이 프로젝트는 UDP 패킷을 전송하기 위해 이더넷 phy와 인터페이스하는 데 사용할 수있는 모듈을 만듭니다. 전송 만 지원되며 FPGA에는 구현 된 수신기가 없습니다.
이 모듈은 FPGA의 고정 너비 데이터를 스트리밍하기 위해 특별히 구축됩니다. 예를 들어, 모듈은 ADC에서 샘플링 된 스트리밍 데이터 또는 일부 프로세스에서 생성 된 데이터에 적합합니다. 모듈은 가변 크기의 데이터를 다소 처리 할 수 있지만 직접 지원되지는 않습니다. 가변 크기의 데이터를 보내려면 각 데이터 포인트는 전송 될 가장 큰 데이터 포인트의 크기로 패딩해야합니다. 데이터 포인트의 크기는 전면에 선언되어야하며 모듈은 단일 데이터 포인트가 여러 패킷을 단편화하지 않도록 보장합니다.
이 프로젝트는 Xilinx Artix-7 XC7A100T FPGA를 사용하고 Texas Instruments DP83848J Ethernet Phy Controller를 사용하는 Digilent Arty A7을 위해 구축되고 테스트되었습니다. 그러나 MII 표준은 모든 Phy와 함께 작동합니다.
이 모듈을 사용해야 합니다
이 모듈을 사용 하지 않아야합니다
프로젝트 에서이 모듈을 사용하려면 포함되어야하는 두 개의 파일이 있습니다.
src/hdl/eth_udp.svsrc/ip/eth_udp_fifo_async/eth_udp_fifo_async.xci ethernet_udp_transmit 모듈은 인스턴스화되어야하며 내부적으로 eth_udp_fifo_async ip를 사용합니다.
XilInx IP가 잠겨 있으면 IP가 다른 부분에 대해 구성되었을 가능성이 높습니다. tcl 콘솔에서 report_ip_status 실행하여 이것을 확인하십시오. 수정은 upgrade_ip [get_ips *] 실행하는 것입니다.
XilInx Vivado를 열고 Tools > Run Tcl Script... 다음 파일 exporer에서 generate_project.tcl 스크립트를 선택하십시오. 스크립트는 모든 프로젝트 소스를 가져와 새로운 proj/ 디렉토리로 실행하고 생성됩니다. 프로젝트가 생성되지 않으면 proj/ 디렉토리가 이미 존재할 가능성이 높습니다.
ether_tester 프로그램을 사용하여 프로젝트를 테스트 할 수 있습니다. 테스터는 FPGA에서 유사 랜덤 바이트 시퀀스를 생성하여 UDP를 통해 전송하고 테스트 프로그램은 수신 된 시퀀스가 정확하다는 것을 확인합니다.
테스트 프로그램을 사용하려면 Rust 프로그램을 컴파일하기 위해화물이 설치되어 있는지 확인한 다음 ether_tester 디렉토리로 이동하여 실행하십시오.
cargo build종속성을 다운로드하고 프로젝트를 구축합니다. 프로그램을 보려면 정보 정보를 보려면 실행하십시오
cargo run -- -h프로그램의 샘플 호출은 다음과 같습니다
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
-r1000순서대로 주장은 다음을 의미합니다.