RGMII接口案例:二个设备共享一个PHY

描述

最近项目中,FPGA通过多个RGMII接口与其他设备通信,在通信的过程中,有一个RGMII接口对端设备始终无法驱动,最后通过共享一个PHY,时分复用的形式来“解决”该问题

案例背景

FPGA一共有2个RGMII接口,其中A接口外接一个PHY后通过RJ45连接网线,B接口通过RGMII接口以MAC对MAC的形式直接和W模块相连,如下图所示:

接口

正常的业务场景下,FPGA有可能通过A接口用网线和外部连接的设备通信,也可能直接和W模块通信。

问题

由于W模块的问题,始终无法驱动RGMII接口,后来和供应商,以及W模块上芯片的原厂交流,都无法知道如何驱动该RGMII接口(***任道重远啊),FPGA和W模块的通路彻底断开。

分析及解决措施

(1)由于FPGA和W模块之间的性能需要500Mbps+,所以无法通过飞线产生一个通用IO口来解决该问题;

(2)W模块供应商其实也没有对RGMII接口做过充分测试,推荐我们使用的是该模块内置的PHY接口和外界通信;

(3)FPGA的AB接口的业务本来可以不同时存在,那是否可以时分复用FPGA外接的PHY了,即FPGA通过PHY和RJ45通信,也可以和W模块通信呢?于是构想了如下的方案:

接口

利用W模块内置的PHY,通过飞线的方式,连在PHY和RJ45之间,如图中红色线条所示。当RJ45插上网线时,FPGA和RJ45通信,否则FPGA就和W模块通信。但是这个方案有一个问题,当插上网线的时候,外部设备和W模块都通过FPGA的同一个PHY和FPGA通信,这必要会有冲突,那现在的问题就是这2种模式如何最小代价的切换。

(4)由FPGA控制W模块的上电来切换,当FPGA和RJ45通信的时候,通过配置FPGA寄存器的方式,将W模块下电,当FPGA要和W模块通信的时候,拔掉网线,同时通过配置FPGA寄存器的方式将W模块上电。

测试结果

这种方案行不行,上板测试是最好的检验方法。

(1)将W模块下电,插上网线,外部设备通过网线给FPGA发包,FPGA在内部MAC做环回,通过测试;

(2)将W模块上电,拔掉网线,通过W模块发包,FPGA在内部MAC做环回,通过测试;

(3)将W模块上电,且插上网线,我们通过W模块和外部设备发现,和FPGA的链路不稳定,一会能link up,一会又link down,即有冲突,和我们前期预想的一致。当拔掉网线,或者W模块下电后,对端都能和FPGA正常通信。

总结

当一个PHY同时和2个PHY对接的时候,只要我们做好2个PHY的切换,是可以实现“时分复用”的,但是不到万不得已,还是别这么干吧。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
小葫芦乌拉拉 2023-12-20
0 回复 举报
MAC对MAC这种我遇到过,费了大劲才驱动起来 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分