该组件是一个非常基本的 10/100Mbps 以太网 MAC。
此以太网 NIC 作为内存映射外围设备运行。
它没有 DMA 接口,因此使用起来性能/CPU 密集度低,但它非常小且简单。
寄存器接口恰好具有与赛灵思 EmacLite 内核相似的编程模型,因此可以利用现有的 Linux 内核驱动程序 (xilinx_emaclite.c)。
特征
- 支持全双工 10/100Mbps 以太网。
- Wishbone B4 流水线接口。
- 用于接收过滤的可编程 MAC 地址。
- 2 个 Tx Ping Pong 缓冲区(总共 4KB)。
- 2 个 Rx Ping Pong 缓冲区(总共 4KB)。
- MII 以太网 PHY 接口(4 位模式)。
- 中断输出(在 Tx 空间/Rx 就绪)。
限制
- 未实现半双工模式(当前未实现良好的半双工模式所需的 CSMA/CD)。
- MDIO 需要 GPIO(在 Linux 内核中使用 SW MDIO GPIO)。
尺寸
对于 Xilinx 7 系列器件;
- Slice LUTs: 534
- Slice Registers: 543
- BlockRAM: 4
测试
在仿真下验证,然后在 FPGA 上使用 Linux 5.14.3 和 ping、iperf、wget、tftp 进行测试。
配置
- 顶级模块:enet.v
- 参数 PROMISCUOUS – 如果设置为 0,则使用 MAC 地址过滤(广播或本地地址)。
- 参数 DEFAULT_MAC_ADDR_L – 默认 MAC 地址的字节 0 – 3
- 参数 DEFAULT_MAC_ADDR_H – 默认 MAC 地址的字节 4 – 5
DTS
以下 Linux DTS 条目应该适用于该内核(根据需要更改基地址和中断配置);
enet: ethernet@95000000 {
compatible = "xlnx,xps-ethernetlite-3.00.a";
device_type = "network";
interrupts = <4>;
local-mac-address = [00 00 BE AF FE AD];
reg = <0x95000000 0x10000>;
xlnx,duplex = <0x1>;
xlnx,rx-ping-pong = <0x1>;
xlnx,tx-ping-pong = <0x1>;
};
参考
代码下载链接: