楼主最近在看以太网,之前一段时间粗略的看过,要做的东西没做出来,后来也没管,所以以太网很多东西都是一知半解。前几天又重新看,有一些疑问希望各位帮忙解答一哈,我会尽力把问题说清楚。
首先用到了rtl8201的以太网芯片,支持10/100M,利用FPGA写MAC层,MII接口,形成一个系统。最终把两个的系统(都是rtl8201+FPGA)相连,然后再自定义一些协议。
以太网芯片开启了自动协商,通过硬件设置默认工作在100M全双工的模式下。也就是10M/100M连接10M/100M,默认都是100M(SPEED拉高)。
我写了一个最简单的发送,tx_en一直拉高,txd[3...0]每个时钟转换一次电平。我以为这样算是一直在发送,时钟也应该一直是25M,可是实际用示波器测的时候,发现tx_clk在25M和2.5M之间来回切换。看了一下芯片手册,觉得可能是和自动协商有关,我没有开省电的模式,软件都是默认状态,还没用MDIO配置rtl8201的寄存器,看了自动协商的原理,还是不清楚为什么时钟一直在切换。
所以第一个疑问就是:为什么在100M自动协商工作模式下,保持发送的时候时钟会一直切换,而且2.5M的时钟和25M时钟持续时间差不多,这样的话实际带宽不久少了很多了吗。
第二个是MDC/MDIO的时钟,MDC是需要外部提供的吗? |