
最近做了个SDR(软件定义无线电)的接收板,用R820T做前端,AD9255做ADC,ZYNQ7010作为数据处理,最后用RTL8211F-CG这个PHY作为以太网接口上传至PC上位机。当然,现在只完成了硬件,软件?在写了在写了.jpg
硬件部分的调试还是比较顺利的,正当我以为一切顺利的时候,以太网部分给我来了一巴掌。下面就来说说我在以太网硬件上犯的几个错误。
这个就很经典,熬夜画原理图,看花眼把两个名字相似的线连错了,Layout过程中和和投板前也没检查出来。

(图里是错误接法)
解决方法:还好整个板子是4层板,信号线都在外层,把线割断后直接飞线。由于两根线靠的很近,飞线不大会对时序产生影响(原先的信号线已经全部等长)
个人认为这个地方是RTL8211F-CG芯片在画原理图时最容易犯错的地方,手册里也说的不明不白。
根据手册介绍,RTL8211F-CG的RGMII接口驱动电压有两种提供方式。第一种是使用内置LDO。第二种就是使用DVDD_RG引脚提供外部驱动电压。两者都是通过LED0~LED2引脚的上下拉配置。
为了简化电路,我选择使用内置LDO来生成与FPGA通信所需的1.8V IO电压。现在引出了个问题:DVDD_RG引脚应该接啥?手册里没写,所以我接到了3.3V电源轨上,这一接就出事了。
在测试中,发现FPGA能收到信号,但是丢包严重。对PHY发出来的信号测量,发现电平竟然是2.5V(这里也有错误三的锅,但主要是引脚接错)。
长话短说,在使用内置LDO时,DVDD_RG作为退耦引脚,需要对地接入一个去耦电容。

(图里是正确接法,用内置LDO时记得外接去耦电容)
修复方案:割线,飞了个电容上去。再测量IO电压,恢复正常
RTL8211F-CG为了简化引脚,对部分引脚进行了复用,然后在上电时判断上下拉状态进行相应配置。结果手册又没说清楚,对不同引脚进行上拉时需要的电压是不同的。
当对RGMII引脚进行上拉时,如果使用了内置LDO,则可以从DVDD_RG引脚取电来进行上拉。上拉电压和RGMII电压一致
而对其他非RGMII引脚上拉时,务必使用3.3V电压(例如LED0~LED2),否则电路不会识别到对应的上拉状态。

(图里面是错误的,对非RGMII引脚进行上拉配置应该使用3.3V电压)
修复方法:用一条线将正确的电压飞到对应引脚上。
我使用的以太网接口型号为HR911130A,其中P1和P10是内部变压器的抽头。在搭配RTL8211F-CG时,正确接法应该是P1悬空,P10接地(注意,需要根据PHY的类型进行调整,不能乱搞,不然信号质量会大幅度下降)
然鹅我给这两个玩意都接地了。
解决方法:刮板割线


虽然没跑满千兆,但考虑到这板子飞了好几根线,我也就原谅他了
另外怀疑没跑满是软件配置的锅,还需要进一步调查
1.如果PHY的三个供电(3.3总电源,1.0核心,DVDD_RG)都使用外接供电,就需要注意上电时序,否则可能会烧PHY!个人还是推荐用芯片自己的供电电路,这样就不用管时序了
2. 当使用RTL8211F-CG的DCDC电路提供核心1.0V时,需要注意滤波,否则可能会导致纹波超标,产生奇怪问题
3.搭配ZYNQ7000使用时,需要上拉PHY的对应引脚,开启TX Delay和RX Delay,ZYNQ7000的内部貌似并没有相应延迟电路,所以需要在PHY开启