FPGA上的开源 10/100 Mbps 以太网 MAC IP verilog 源码-FPGA开源项目论坛-FPGA CPLD-ChipDebug

FPGA上的开源 10/100 Mbps 以太网 MAC IP verilog 源码

该帖子部分内容已隐藏
付费阅读
已售 1
6积分
此内容为付费阅读,请付费后查看

该组件是一个非常基本的 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>;
    };
参考

代码下载链接:

请登录后发表评论