当前位置:   article > 正文

FPGA MDIO接口代码设计分析_88e1111的mdio需要配置吗

88e1111的mdio需要配置吗

目录

1.设计思路:

1 .模块外部接口资源梳理:

2.状态分析

3.W_MDIO     写状态

4.时钟得产生:

 总结:


本方案基于米联科7030开发板,进行MII接口得代码设计与分析。

本文主要通过FPGA设计控制逻辑,通过MDIO接口实现对PHY芯片得配置工作,通过手动设计,进一步熟悉以太网得相关协议过程。其中MDIO接口时第一步。

1.设计思路:

1.基本定义介绍

      该总线由IEEE通过以太网标准IEEE 802.3的若干条款加以定义。MDIO是一种简单的双线串行接口,将管理器件(如MAC控制器、微处理器)与具备管理功能的收发器(如多端口吉比特以太网收发器或 10GbE XAUI收发器)相连接,从而控制收发器并从收发器收集状态信息。可收集的信息包括链接状态、传输速度与选择、断电、低功率休眠状态、TX/RX模式选择、自动协商控制、环回模式控制等。除了拥有 IEEE 要求的功能之外,收发器厂商还可添加更多的信息收集功能。 [1] 

      88E1111是一个phy,它具备符合IEEE802.3u标准22款所规定的标准管理接口,它包含2个管脚:MDC和MDIO。MDC是管理数据的时钟输入,最高速率可达8.3MHz。MDIO是管理数据的输入输出双向接口,数据是与MDC时钟同步的。MDIO的工作流程为:

     MDIO接口在没有传输数据的空闲状态(IDLE)数据线MDIO处于高阻态。 MDIO出现一个2bit的开始标识码(01)一个读/写操作开始。 MDIO出现一个2bit数据来标识是读操作(10)还是写操作(01)。 MDIO出现一个5bit数据标识PHY的地址。 MDIO出现一个5bitPHY寄存器地址。 MDIO需要2个时钟的访问时间。 MDIO串行读出/写入16bit的寄存器数据。 MDIO恢复成IDLE状态,同时MDIO进入高阻状态。   

2.模块外部接口资源梳理:

配置接口:MII接口(MDC,与MDIO)

主机接口:读请求,写请求,写数据,phy地址,寄存器地址

其他:复位,时钟

  1. input  mdc;
  2. inout mdio;
  3. input  clk;
  4. input write_req;
  5. input read_req;
  6. input phy_addr;
  7. input reg_addr;

3.状态分析

先查看芯片手册,分析协议传输过程

 

 大致可以分为以下状态:

空闲(IDLE),写状态。读状态,TA。

  1. localparm IDLE =3'd0;
  2. localparm W_MDIO=3'd1;
  3. localparm R_MDIO =3'd2;
  4. localparm R_IA=3'd3;
  5. localparm R_DATA=3'd4;
  6. localparm W_END=3'd5;
  7. localparm  R-END=3'd6;

总共分为以上6个状态进行工作。状态机设计主要围绕这上面去开展。状态之间跳转,须解决芯片时序图,

  1. assgin mdio=mdio_en?mdio_out:1'bz;
  2. alway@(*)
  3. begin
  4. case(state)
  5. IDLE
  6. begin
  7. mdio _en<=1'b1;(在非读状态及TA状态,MDIO由FPGA控制,也就是MDIO_out)
  8. if(write_req)    由IDLE状态向读写状态的跳转的条件
  9. next_state<=W_MDIO;
  10. else if (read_req)
  11. next_state<=R_MDIO;
  12. else
  13. next<=IDLE;

4.W_MDIO     写状态

,以及写状态结束的条件

  1. begin
  2. mdio_en<=1'b1;
  3. if(write_cnt==6'd33)
  4. next_state<=W_END;
  5. else
  6. next<=W_MDIO

后面的状态机设计,依次类推,就不在赘述了。

5.时钟得产生:


根据系统时钟与MDC得对应关系,计数产生MDC时钟。

由于MDIO在不同的驱动下,时钟采样不一样,在FPGA(MAC)驱动时,有上升沿驱动,在PHY驱动时,由下降沿驱动,因此须产生时钟上升和下降沿信号。

  1. begin
  2. mdc_d<=mdc;
  3. mdc_posedge<=mdc&~mdc_d;
  4. mdc_negedge<=mdc_d&~mdc;

l另外还需产生写计数,读计数;

最终数据读出,依然使用case语句

 总结:

本文根据以太网PHY的手册,手动编写了分析了MII接口的时序逻辑。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/941570
推荐阅读
相关标签
  

闽ICP备14008679号