将
PS
ENET1
的
GMII
接口和
MDIO
接口
通过
EMIO
方
式引出。在
PL
端将引出的
GMII
接口和
MDIO
接口与
IP
核
1G/2.5G Ethernet PCS/PMA or SGMII
连接,
1G/2.5G Ethernet PCS/PMA or SGMII 通过高速串行收发器
GTX
与
MIZ7035/7100
开发板的
SFP
接口连接。在
PS
端通过
SDK
自带的 lwip echo server
例程实现与电脑的
TCP
通信。
PL
部分设计
ZYNQ PS
设置
要实现本例程的功能,在原有基础上
PS
需要添加
2
个设置。首先,将
ENET1
及其
MDIO
接口以
EMIO 方式引出,如下图所示。
设置
PS
输出
1
路
200MHz
的时钟,用于给
1G/2.5G Ethernet PCS/PMA or SGMII IP
核提供参考时钟。 例如,使用 FCLK_CLK0
输出
200M
时钟,如下图所示。
1G/2.5G Ethernet PCS/PMA or SGMII
IP
核设置
将
IP
核设置为
PS
的以太网控制器。
选择
1000BASEX
模式,如下图。
使用
GTX
收发器作为
SFP
的接口,输入
IP
核内部的
MMCM
的时钟源选择为
GTX
收发器输出
的时钟
TXOUTCLK
,该
MMCM
将产生我们所需要的用户接口时钟。
MDIO
接口默认启用。使能自协商。如 下图。
当设计中只包含
1
个此
IP
核时,应当将可共享的逻辑资源和硬件模块包含在
IP
核内部,这样会减少
所生成的模块数量,简化设计。如下图所示。
当设计中需要同时使用若干个此
IP
核,且所使用的
GTX
均位于同一个
GTX BANK
中。此时,只需其中
1 个 IP
核内部的共享资源(
MMCM
、
GTP PLL
、
GTX
参考时钟等)便可以满足所有
IP
核的需求,即选择将共享 资源包含在 IP
核内部。其余
IP
核将这些共享资源从其内部剔除即可,即选择将共享资源包含在
example
中。
IP
核结构
时钟网络
IP
核内部时钟网络结构如下图所示。
用户接口
这里对一些重要的用户接口进行说明,其他接口可参考
IP
核手册。
GMII
接口
GMII
接口的同步时钟为
IP
核的输出时钟
userclk2
。
GMII
接口发送时序如下图所示。
GMII
接口接收时序如下图所示。
independent_clock_bufg
independent_clock_bufg
是频率为
200MHz
的输入时钟。在
IP
核的
example design
中,
GMII
接口连接了 IDELAYE2,并作为
IO
与芯片引脚连接。
independent_clock_bufg
输入的
200MHz
时钟便作为
IDELAYCTRL
的 参考时钟。在本例程中,GMII
作为内部信号,不用作
IO
口,所以不需要使用
IDELAYCTRL
。 除此之外,independent_clock_bufg
还供
IP
核内部的其他逻辑使用。因此,无论是否需要使用
IDELAYCTRL,independent_clock_bufg 都必须输入 200MHz 的时钟。后缀 bufg 表示该 200MHz 时钟进入 independent_clock_bufg端口前就已经通过 BUFG 进入了全局时钟网络。在例程中,这个 200MHz 时钟直接由 PS 输出的 FCLK_CLK0 提供。
signal_detect
要使
IP
核正常工作,需要将
signal_detect
置
1
。例程中,通过
IP
核
Constant
将
signal_detect
置
1
。
Constant 设置如下图所示。
Configuration_Vector
Configuration_Vector
用于配置
IP
核的基本工作模式,可替代
MDIO
接口的功能。其具体含义如下图所示。
由于例程中启用了
MDIO
接口,因此
Configuration_Vector
无实际使用。例程中,通过
IP
核
Constant
将输入 的 Configuration_valid
置为
0
,则使
Configuration_Vector
无效。
Constant
设置如下图所示。
an_adv_config_vector
an_adv_config_vector
用于配置
IP
核的自协商功能,其具体含义如下图所示。对于
1000BASEX 模式,只需要关注 bit5,bit8~7,bit13~12。IP 核的自协商功能可以通过 MDIO 接口进行配置,由于例程中启用了 MDIO 接口,因此 an_adv_config_vector 无实际作用。例程中,通过 IP 核 Constant 将输入的 an_adv_config_val 置为 0,则使输入 an_adv_config_vector 无效。
Status_Vector
Status_Vector
反应了
IP
核工作状态,其具体含义如下图所示。
phyaddr
例程中启用了
MDIO
接口,由于
MDIO
接口时基于地址进行访问的,因此需要为
IP
核设置
1
个
phy address
。 在例程中,通过 IP
核
Constant
将
phy address
设置为
6
。
将
PS ENET1
与
1G/2.5G Ethernet PCS/PMA or SGMII
连接