demo综述
1、本demo基于xc7a35tfgg484芯片,pcie部分使用axi memory mapped to pci express,外挂vivado自带的axi dma,网卡mac模块移植开源的eth,实现一个千兆带宽的pcie网卡。
2、工程结构如下
3、demo整体框图
┌────────────────────────────────────────────────────────────────┐ │ Host (Linux x86) │ │ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ pcie_axienet.ko │ │ │ │ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ TX 路径 │ │ RX 路径 │ │ ISR/NAPI │ │ │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ └────────┼──────────────┼──────────────┼────────────────────┘ │ │ │ │ │ │ │ ┌────────▼──────────────▼──────────────▼────────────────────┐ │ │ │ Linux 网络协议栈 (netdev/NAPI) │ │ │ └──────────────────────────────────────────────────────────┘ │ └───────────┬──────────────┬──────────────┬───────────────────────┘ │ │ │ │ PCIe Bus (Gen2/Gen3 x4) │ │ │ │ ┌───────────▼──────────────▼──────────────▼───────────────────────┐ │ FPGA │ │ │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ PCIe AXI Bridge (10EE:7022) │ │ │ │ ┌────────────┐ ┌────────────────┐ │ │ │ │ │ BAR0 → │ │ MSI Vector 0 │────────────────┐ │ │ │ │ │ AXI-Lite │ │ MSI Vector 1 │──────────────┐ │ │ │ │ │ └──────┬─────┘ └────────────────┘ │ │ │ │ │ └─────────┼───────────────────────────────────────────┼─┼──────┘ │ │ │ │ │ ┌─────────▼────────────────────────────────────┐ │ │ │ │ AXI DMA (32-bit, no css) │ │ │ │ │ ┌────────────┐ ┌────────────┐ │ │ │ │ │ │ MM2S │ │ S2MM │ │ │ │ │ │ └─────┬──────┘ └─────▲──────┘ │ │ │ │ │ │ mm2s_introut │ s2mm_introut│ │ │ │ └────────┼────────────────────────┼────────────┼──────┼─┘ │ │ │ │ │ │ AXIS │ (TX) AXIS │ (RX) │ │ │ ▼ │ ▼ │ │ ┌─────────────────────────────────┴─────────────────┐ │ │ │ 自定义 MAC (无寄存器配置) │ │ │ │ ┌──────────┐ ┌──────────┐ │ │ │ │ │ TX MAC │ │ RX MAC │ │ │ │ │ └────┬─────┘ └────▲─────┘ │ │ │ └───────┼────────────────────────────────┼─────────┘ │ │ ▼ │ │ │ GT/GPHY ────── Ethernet ────── PHY/对端 │ │ │ └────────────────────────────────────────────────────────┘4、pcie+DMA模块如下
5、最终抓了一些ila资源消耗刚好够用。
6、驱动安装自动创建网卡并分配IP地址
7、测试可以正常上网能够ping通www.baidu.com
8、使用iperf3进行带宽测试基本可以跑满千兆带宽