【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置

本文详细介绍了如何在ZYNQ7035开发板上通过EMIO扩展ENET1为GMII接口,然后利用GMIItoRGMIIIP核转换为RGMII接口,以增加设计的灵活性。涉及的步骤包括ZYNQIP和GMIItoRGMIIIP的配置,时钟设置,接口约束以及LWIP库的修改,最终在SDK中进行进一步设计。
摘要由CSDN通过智能技术生成

目前,在 ZYNQ 中进行以太网开发的方案,大部分都是基于通过 PS 的 MIO 以 RGMII 接口连接外部 PHY 芯片的方式。但是,由于使用 PS 的 MIO 只能以 RGMII 接口连接外部 PHY 芯片,这就限制了支持其他接口 PHY 芯片的使用,如 GMII、SGMII、MII 等等。因此,若将 PS 内部的以太网控制器 ENET0/ENET1 通过 EMIO 的方式扩展至 PL,便可通过 PL 连接更多种类的接口,从而增加了设计的灵活性。

硬件平台:黑金 ZYNQ7035 板卡

芯片型号:XC7Z035-2FFG676

本设计基于黑金 ZYNQ7035 开发板,将 PS 的 ENET0 连接网口 1,将 ENET1 通过 EMIO 引出为 GMII 接口,将其与 GMII to RGMII IP 核连接后转换成 RGMII 接口,然后与网口 2 连接。

ZYNQ IP 配置

  • 配置 ETH0 和 ETH1,将 ETH1 及其 MDIO 通过 EMIO 引出,如图所示。

在这里插入图片描述

  • 将 FCLK_CLK0 设置为 200M,作为 GMII to RGMII IP 核内部 IDELAYCTRL 的参考时钟。

在这里插入图片描述

GMII to RGMII IP 配置

  • 添加 GMII to RGMII IP 核。

在这里插入图片描述

  • 在 HR BANK 中,IP 核中 RGMII 接口的接收数据信号和控制信号需要通过 IDELAYE2 来调整信号输入延时,使其时序满足建立和保持时间约束。因此需要在 IP 核包含与 IDELAYE2 相关的 IDELAYCTRL,用来校准 IDELAYE2 每个延时 tap 的延时值。

  • 将本 IP 核的 PHY address 设置为 8(该值可任意设置,但不能与现有的 PHY address 相同,否则将产生冲突使 IP 核工作异常)。

在这里插入图片描述

  • 选择 shared logic 包含在 IP 核内部。

在这里插入图片描述

Utility Vector Logic 添加

  • 配置 Utility Vector Logic 为非门,将 FCLK_RESET0_N 通过后作为 GMII to RGMII IP 核的复位信号。

在这里插入图片描述

IP 连接图

在这里插入图片描述

添加约束

set_property PACKAGE_PIN C13 [get_ports MDIO_PHY_mdc]
set_property PACKAGE_PIN D13 [get_ports MDIO_PHY_mdio_io]
set_property PACKAGE_PIN A14 [get_ports phy_rst_n]
set_property PACKAGE_PIN G14 [get_ports EMIO_RGMII_rxc]
set_property PACKAGE_PIN F14 [get_ports EMIO_RGMII_rx_ctl]
set_property PACKAGE_PIN A13 [get_ports {EMIO_RGMII_rd[0]}]
set_property PACKAGE_PIN A12 [get_ports {EMIO_RGMII_rd[1]}]
set_property PACKAGE_PIN B12 [get_ports {EMIO_RGMII_rd[2]}]
set_property PACKAGE_PIN C12 [get_ports {EMIO_RGMII_rd[3]}]
set_property PACKAGE_PIN C11 [get_ports EMIO_RGMII_txc]
set_property PACKAGE_PIN B11 [get_ports EMIO_RGMII_tx_ctl]
set_property PACKAGE_PIN E10 [get_ports {EMIO_RGMII_td[0]}]
set_property PACKAGE_PIN D10 [get_ports {EMIO_RGMII_td[1]}]
set_property PACKAGE_PIN F13 [get_ports {EMIO_RGMII_td[2]}]
set_property PACKAGE_PIN E13 [get_ports {EMIO_RGMII_td[3]}]

set_property IOSTANDARD LVCMOS18 [get_ports MDIO_PHY_mdc]
set_property IOSTANDARD LVCMOS18 [get_ports MDIO_PHY_mdio_io]
set_property IOSTANDARD LVCMOS18 [get_ports phy_rst_n]
set_property IOSTANDARD LVCMOS18 [get_ports EMIO_RGMII_rxc]
set_property IOSTANDARD LVCMOS18 [get_ports EMIO_RGMII_rx_ctl]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_RGMII_rd[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_RGMII_rd[1]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_RGMII_rd[2]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_RGMII_rd[3]}]
set_property IOSTANDARD LVCMOS18 [get_ports EMIO_RGMII_txc]
set_property IOSTANDARD LVCMOS18 [get_ports EMIO_RGMII_tx_ctl]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_RGMII_td[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_RGMII_td[1]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_RGMII_td[2]}]
set_property IOSTANDARD LVCMOS18 [get_ports {EMIO_RGMII_td[3]}]

set_property SLEW FAST [get_ports EMIO_RGMII_txc]
set_property SLEW FAST [get_ports EMIO_RGMII_tx_ctl]
set_property SLEW FAST [get_ports {EMIO_RGMII_td[*}]

create_clock -period 8.000 -name rgmii_rx_clk [get_ports EMIO_RGMII_rxc]
set_input_delay -clock [get_clocks rgmii_rx_clk] -max 2.800 [get_ports {{EMIO_RGMII_rd[*]} EMIO_RGMII_rx_ctl}]
set_input_delay -clock [get_clocks rgmii_rx_clk] -min 1.200 [get_ports {{EMIO_RGMII_rd[*]} EMIO_RGMII_rx_ctl}]
set_input_delay -clock [get_clocks rgmii_rx_clk] -clock_fall -max -add_delay 2.800 [get_ports {{EMIO_RGMII_rd[*]} EMIO_RGMII_rx_ctl}]
set_input_delay -clock [get_clocks rgmii_rx_clk] -clock_fall -min -add_delay 1.200 [get_ports {{EMIO_RGMII_rd[*]} EMIO_RGMII_rx_ctl}]

编译生成比特流,点击 Vivado 菜单栏 File -> Export -> Export Hardware…,弹出对话框中勾选 include bitstream 点击 OK ,导出硬件描述文件,并通过 File -> Launch SDK 启动 SDK。

LWIP 库修改

关于 LWIP 库的修改可以参考 【ZYNQ】裸机 PS + PL 双网口实现之 lwip 库文件修改

SDK 设计

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello阿尔法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值