本文档说明了
XMOS以太网库的用法。 该库允许多个客户端访问以太网硬件。 本应用笔记使用标准的以太网MAC,它使用了两个逻辑
内核。 以太网库还提供了使用更多内核的实时MAC,但提供了高性能的流数据,准确的数据包时间戳,优先级排队和802.1Qav流量整形.MII在以太网PHY(物理层设备或
收发器)和 xCORE设备。 MII层接收数据包,然后由以太网MAC层将其路由到xCORE上运行的多个进程。 SMI提供了PHY与xCORE设备之间的管理接口。
应用程序方框图
该应用程序与以太网MAC通信,该MAC驱动MII数据接口与PHY。 单独的PHY
驱动程序通过SMI串行接口配置PHY。
100Mbit以太网库演示:
1.生成文件
本说明中的演示使用XMOS以太网库,并显示了一个与以太网库通信的简单程序。要开始使用以太网库,需要将lib_ethernet添加到
MAKEfile中:
USED_MODULES = .. lib_ethernet ...
该演示还从xCORE OTP rom中获取了MAC地址,并且用于sliceKIT。 因此,Makefile还包含OTP读取库(lib_otpinfo)和sliceKIT支持库
(lib_slicekit_
support):USED_MODULES = .. lib_otpinfo lib_slicekit_support
2.分配硬件资源
以太网库需要多个
端口才能与以太网PHY通信。 这些端口在主程序文件(main.xc)中声明。 在此演示中,为连接到sliceKIT的CIRCLE插槽的以太网Slice设置了端口:
// Here are the port definitions required by ethernet. This port assignment
// is for the L16 sliceKIT with the ethernet slice plugged into the
// CIRCLE slot.
port p_eth_rxclk = on tile[1]: XS1_PORT_1J;
port p_eth_rxd = on tile[1]: XS1_PORT_4E;
port p_eth_txd = on tile[1]: XS1_PORT_4F;
port p_eth_rxdv = on tile[1]: XS1_PORT_1K;
port p_eth_txen = on tile[1]: XS1_PORT_1L;
port p_eth_txclk = on tile[1]: XS1_PORT_1I;
port p_eth_rxerr = on tile[1]: XS1_PORT_1P;
port p_eth_dummy = on tile[1]: XS1_PORT_8C;
clock eth_rxclk = on tile[1]: XS1_CLKBLK_1;
clock eth_txclk = on tile[1]: XS1_CLKBLK_2;
请注意,端口p_eth_dummy不需要连接到外部硬件-以太网库仅在内部使用它。MDIO串行管理接口(SMI)用于在MAC和PHY之间传输管理信息。 该接口由连接到两个端口的两个
信号组成:port p_smi_mdio = on tile[1]: XS1_PORT_1M;
port p_smi_mdc = on tile[1]: XS1_PORT_1N;
应用程序中使用的最终端口是用于访问xCORE上的内部OTP存储器的端口。这些端口是固定的,可以使用lib_otpinfo OTP读取库提供的OTP_PORTS_INITIALIZER宏进行初始化。
// These ports are for
accessing the OTP
memory
otp_ports_t otp_ports = on tile[0]: OTP_PORTS_INITIALIZER;
更多详细内容请下载附件查看