管理接口状态机分析(二)


该模块的具体执行步骤:

1. (STARTUP)启动状态机,配置MIDO时钟,对核操作

输入的复位信号“s_axi_resetn”是低电平复位,在本模块首先做了取反操作。

image.png 

在复位结束后延时21个时钟周期启动状态机,并对配置MDIO寄存器(0x500)写入0x58对核支持的MIDO进行配置。配置为2M。

image.png 

2. (UPDATE_SPEED)配置以太网速率,对核操作

对寄存器地址“17'h410”写入“{speed, 30'h0}”,

3. (MDIO_RD)读MDIO,对PHY操作

读寄存器地址1的内容,具体内容可见88E111数据手册的131页介绍。

4. (MDIO_POLL_CHECK)对读PHY数据进行检查

a) 如果均是1,则认为没有管理接口,直接开始对MAC进行复位操作

b) 否则认为有MIDO管理接口,进行对相应配置

我们这里认为是有管理接口的

5. (MDIO_1G)写MIDO寄存器,对PHY的管理接口操作

写MDIO地址9的地址空间,具体内容可见88E111数据手册的155页介绍,是对1000M全半双工的配置。

其中,bit9 = 1表示1000M全双工

6. (MDIO_10_100)写MIDO寄存器,对PHY的管理接口操作

由于PHY芯片的MIDO管理接口的寄存器堆网口速率的配置是在不同地址,对于FPGA用一个2bit的speed即可配置三种速率(00=10Mb/s,01=100Mb/s,10 =1Gb/s)。但对于MIDO则需要写两个地址的寄存器。

又由于事先并不知“speed”的值,或者说不对该值进行判断。故还需要对配置10M或100M的寄存器写值,当然写入的值是与写入1000M的内容是互斥的,并不会混淆。

写MDIO的PAGE0的地址4的地址空间,具体内容可见88E111数据手册的137页介绍,是对10M、100M全半双工的配置。

7. (MDIO_PAGE2)换页,写MIDO寄存器,对PHY的管理接口操作

8. (MDIO_DELAY_RD)换页,读MIDO寄存器,对PHY的管理接口操作

写MDIO地址15的地址空间,具体内容可见88E111数据手册的158页介绍,

9. (MDIO_DELAY_RD)换页,读MIDO寄存器,对PHY的管理接口操作

10. (MDIO_DELAY_RD_POLL)

锁存读出的数据,为下一周期的写做准备。

11. (MDIO_DELAY)

没看懂

12. (MDIO_RESTART)写MIDO寄存器,对PHY的管理接口操作

这个模块可以选择回环模式,通过“phy_loopback”来设置,目前先不考虑

对MIDO的地址0写数据,数据内容跳过

13. (MDIO_STATS)读MIDO寄存器,对PHY的管理接口操作

读寄存器地址1的内容,用来得到自动协商完成的信号

14. (MDIO_STATS_POLL_CHECK)读MIDO寄存器,对PHY的管理接口操作

如果自动协商操作完成则进入下一个状态,否则等待

image.png






快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~

有建议、有需求、有疑问、联系我

<