热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ZYNQ网络通信的四种实现方案

一,ZYNQMIO以RGMII接口连接外部PHY芯片实现LWIP网络通信。二,ZYNQPS的ENET0ENET1通过EMIO的方式扩展至PL,在PL中通过RGMII接口连接扩展子卡

一,ZYNQ  MIO以RGMII 接口连接外部PHY芯片实现LWIP网络通信。


二,ZYNQ  PS 的 ENET0/ENET1 通过 EMIO 的方式扩展至 PL,在 PL 中通过 RGMII 接口连接扩展子卡实现 LWIP 网络通信。

将 PS 上 ENET0/ENET1 通过 EMIO 的方式扩展至 PL。在 PL 中分别通过 AXI 1G/2.5GEthernet Subsystem 和 AXI Direct Memory Access 两个 IP 核来实现 PS 中以太网外设GEMAC 和 DMA 的功能, PS 通过 AXI 总线控制两个 IP 核经扩展子卡实现 LWIP 网络通信。

在PL中搭建了1个AXI 1G/2.5G Ethernet Subsystem以及1个AXI Direct Memory Access IP 核。这两个 IP核均通过AXI 总线经S_AXI_HP0 口与PS 连接,PS 通过AXI 总线对其进行配置和控制。其中,AXI 1G/2.5GEthernet Subsystem IP 核通过 RGMII 接口与RTL8211 芯片连接。在PS 端通过SDK 自带的lwip echo server 与PC 机实现TCP 网络通信。每个DMA占四个中断,最多可扩展4个PL的LWIP网口。

由于默认的驱动不支持RTL8211 的寄存器配置,所以无法支持自动适应速度(通过自己修改库可以实现自动适应 但是工作量大,考虑到投入时间和产出比,这里就不修改了)。所以手动修改LWIP 库让RTL8211 工作于1000Mbps。

将千兆网线插入MZ7XB的LAN 接口,并与电脑连接,将电脑的 ip 地址设为 192.168.1.100,子网掩码为255.255.255.0。然后给开发板上电,通过 SDK 将程序下载入开发板后,观察SDK 串口打印信息,如下图示所示。表示千兆网络连接正常。

三,PL通过EMIO ETHE1外接PHY由GMII转RGMII

https://blog.csdn.net/wangjie36/article/details/107656663

四,将 PS 的ENET0/ENET1 通过 EMIO 的方式扩展至 PL。ENET0/ENET1 在 PL 部分通过 1G/2.5G Ethernet  PCS/PMA or SGMII IP 核与高速串行收发器 GTX 连接,从而可通过 SFP 接口实现 PS 的 LWIP 光/电网络通信。

1,将 ENET1 及其 MDIO 接口以 EMIO引出,设置 PS 输出 1 路 200MHz 的时钟,用于给 1G/2.5G Ethernet PCS/PMA or SGMII IP 核提供参考时钟。使用 FCLK_CLK0 输出 200M 时钟。

2,1G/2.5G Ethernet PCS/PMA or SGMII IP核设置:

     (1)把IP 核设置为 PS 的以太网控制器;选择 1000BASEX 模式;

(2)配置GTX 收发器作为 SFP 的接口,输入 IP 核内部的 MMCM 的时钟源选择为 GTX 收发器输出的时钟 TXOUTCLK,该 MMCM 将产生我们所需要的用户接口时钟。MDIO 接口默认启用,使能自协商。为了简化设计,当设计中只包含 1 个此 IP 核时,应当将可共享的逻辑资源和硬件模块包含在 IP 核内部,这样会减少所生成的模块数量。

3,vivado工程配置

由于 1G/2.5G Ethernet PCS/PMA or SGMII IP 核在 1000BASEX 模式下固定为千兆速率全双工,所以通过
EMIO 引出的 ENETI 的 GMII 引脚中的 COL 和 CRS 无需使用,全部通过 IP 核 Constant 置为 0 即可


推荐阅读
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了在 Windows 2000 系统中启用 TELNET 服务时需要注意的 NTLM 配置问题,帮助用户解决常见的身份验证失败错误。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 本主题面向IT专业人士,介绍了Windows Server 2012 R2和Windows Server 2012中的组托管服务账户(gMSA),涵盖了其应用场景、功能改进、硬件和软件要求以及相关资源。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • CentOS 6.5 上安装 MySQL 5.7.23 的详细步骤
    本文详细介绍如何在 CentOS 6.5 系统上成功安装 MySQL 5.7.23,包括卸载旧版本、下载安装包、配置文件修改及启动服务等关键步骤。 ... [详细]
  • 本文详细探讨了如何在Docker环境中实现单机部署Redis集群的方法,提供了详细的步骤和配置示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 给定行数 numRows,生成帕斯卡三角形的前 numRows 行。例如,当 numRows 为 5 时,返回的结果应为:[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
author-avatar
出典mosha
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有