赞
踩
目录
本方案基于米联科7030开发板,进行MII接口得代码设计与分析。
本文主要通过FPGA设计控制逻辑,通过MDIO接口实现对PHY芯片得配置工作,通过手动设计,进一步熟悉以太网得相关协议过程。其中MDIO接口时第一步。
该总线由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进入高阻状态。
配置接口:MII接口(MDC,与MDIO)
主机接口:读请求,写请求,写数据,phy地址,寄存器地址
其他:复位,时钟
- input mdc;
-
- inout mdio;
-
- input clk;
-
- input write_req;
-
- input read_req;
-
- input phy_addr;
-
- input reg_addr;
先查看芯片手册,分析协议传输过程
大致可以分为以下状态:
空闲(IDLE),写状态。读状态,TA。
- localparm IDLE =3'd0;
- localparm W_MDIO=3'd1;
-
- localparm R_MDIO =3'd2;
- localparm R_IA=3'd3;
-
- localparm R_DATA=3'd4;
- localparm W_END=3'd5;
-
- localparm R-END=3'd6;
总共分为以上6个状态进行工作。状态机设计主要围绕这上面去开展。状态之间跳转,须解决芯片时序图,
- assgin mdio=mdio_en?mdio_out:1'bz;
- alway@(*)
- begin
- case(state)
- IDLE
- begin
- mdio _en<=1'b1;(在非读状态及TA状态,MDIO由FPGA控制,也就是MDIO_out)
-
- if(write_req) 由IDLE状态向读写状态的跳转的条件
-
- next_state<=W_MDIO;
-
- else if (read_req)
-
- next_state<=R_MDIO;
-
- else
-
- next<=IDLE;
,以及写状态结束的条件
- begin
-
- mdio_en<=1'b1;
- if(write_cnt==6'd33)
-
- next_state<=W_END;
-
- else
-
- next<=W_MDIO
后面的状态机设计,依次类推,就不在赘述了。
根据系统时钟与MDC得对应关系,计数产生MDC时钟。
由于MDIO在不同的驱动下,时钟采样不一样,在FPGA(MAC)驱动时,有上升沿驱动,在PHY驱动时,由下降沿驱动,因此须产生时钟上升和下降沿信号。
- begin
-
- mdc_d<=mdc;
-
- mdc_posedge<=mdc&~mdc_d;
-
- mdc_negedge<=mdc_d&~mdc;
l另外还需产生写计数,读计数;
最终数据读出,依然使用case语句
本文根据以太网PHY的手册,手动编写了分析了MII接口的时序逻辑。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。