1. 开篇:为什么ZCU106的以太网开发值得你投入时间?
如果你手头有一块ZCU106评估板,想用它做点网络相关的项目,比如搭建一个高速数据采集服务器、做一个自定义的网络交换机,或者仅仅是学习FPGA上的高速通信,那么以太网功能绝对是你要啃下的第一块硬骨头。我刚开始接触这块板子的时候,也被它丰富的网络接口选项搞得有点晕:板子上明明有一个RJ45网口,为什么还要折腾SFP光模块?PS端和PL端的以太网到底有什么区别?今天,我就以一个过来人的身份,结合我实际踩过的坑和成功的经验,带你从最基础的板载RJ45接口开始,一路打通到高性能的SFP光模块,把ZCU106上的以太网开发彻底讲透。
ZCU106作为Xilinx Zynq UltraScale+ MPSoC的旗舰级评估板,其网络能力非常强大,但同时也意味着配置路径多样,稍有不慎就容易走弯路。简单来说,它的以太网实现主要有三条路:PS端通过MIO直接使用板载RJ45、PS端通过EMIO借用PL资源扩展网口,以及完全在PL端利用高速收发器实现光口通信。每一条路适合不同的场景,从简单的设备联网到需要极低延迟、极高带宽的定制网络设备,你都能在ZCU106上找到解决方案。接下来的内容,我会把这三种方式的硬件连接、软件配置、时钟设置、引脚约束等所有实操细节掰开揉碎,让你不仅能看懂,更能亲手做出来。
2. 最直接的入门:使用PS端MIO连接板载千兆RJ45
这是上手最快、最省事的方式,适合初学者快速验证板子的基本网络功能,或者用于项目初期的原型验证。ZCU106板载的那个RJ45接口,其实直接连接到了MPSoC处理系统(PS)内部的千兆以太网控制器(GEM)上。具体来说,它通常连接到GEM3。你不需要在可编程逻辑(PL)部分设计任何东西,只需要在Vitis或Petalinux中正确配置驱动和协议栈即可。
2.1 硬件连接与原理:为什么是GEM3?
Zynq UltraScale+ MPSoC的PS部分通常集成了多个GEM(Gigabit Ethernet MAC)控制器。这些控制器需要通过MIO(Multiplexed I/O)引脚连接到物理层芯片(PHY)。ZCU106的设计者已经帮我们做好了这部分硬件连接,将GEM3通过MIO引脚路由到了板载的Marvell 88E1512 PHY芯片,再连接到RJ45接口。所以,从我们的视角看,这就是一个“现成”的网口。在Vivado中创建Block Design时,你只需要确保Zynq UltraScale+ MPSoC IP核中的GEM3被使能,并且其MIO配置与板子设计一致(通常使用默认配置即可),硬件部分就基本完成了。
这里有个小细节需要注意:GEM控制器需要正确的时钟。PS端的以太网时钟通常由PS-PL接口提供或由外部晶振产生,在ZCU106上,这部分时钟电路已经设计完善。你可以在Zynq IP配置的“Clock Configuration”中查看“GEM3”相关的参考时钟设置,确保它被正确使能并指向合适的时钟源(例如,PS端内的PLL)。如果这一步配置错误,后续软件层面可能会遇到网卡无法识别或链接不稳定的问题。
2.2 软件栈搭建:用lwIP实现网络通信
硬件配置好后,重点就转移到了软件。Xilinx提供了完善的驱动和中间件支持。最经典的玩法是使用lwIP(lightweight IP)协议栈。这是一个为嵌入式系统优化的开源TCP/IP协议栈,占用资源少,非常适合在ZCU106的ARM Cortex-A53核心上运行。
在Vitis中,创建一个基于板载BSP(Board Support Package)的裸机(Standalone)或FreeRTOS工程。在


377

被折叠的 条评论
为什么被折叠?



