原创 MII和RMII

2012-10-18 14:50 6520 21 23 分类: MCU/ 嵌入式

项目名称:基于FPGA的以太网MII数据和RMII数据的协议转换 

关键词:以太网 MII RMII 协议转换

 

项目信息:

 

应用领域:网络与通信

设计摘要:

IEEE802.3 百兆以太网标准中,存在25MHz时钟的MII接口和50MHz时钟的RMII 接口,
它们各自有自己的传输协议。在网络设备硬件设计时,特别是在存在多个以太网接口或具
有交换路由功能的网络设备设计时,根据芯片管脚的多少和系统功耗的要求,有时需将两
种接口相互转换。本项目基于以太网传输协议,提出利用FPGA作为转接芯片,根据两个接
口的特点编写程序,实现他们之间的数据传输协议相互转换,并通过实际的硬件电路检验
其正确性。

系统原理和技术特点:

  

   1. MII接口与RMII接口介绍

  

   1). MII接口

MII(Medium Independent Interface)是IEEE802.3规定的连接以太网MAC子层和物理层的标准接口,是一种介质无关接口,实现MAC层和物理层的数据通信。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。数据接口包括分别用于发送器和接收器的两条独立信道,每条信道都有自己的数据、时钟和控制信号;管理接口用于网络状态监测,包括载波监听(CRS)和冲突检测(COL)。MII数据接口总共需要16个信号。

 

 

   2). RMII接口

RMII(Reduced Medium Independent Interface)即简化的MII接口。较MII的16管脚,RMII的管脚数量缩减为7个或者6个。减少了10个管脚之多,这样就大幅度降低了功耗。

 

     2. 项目实施方案

       MII 接口和RMII的数据传输都各自有自己的协议,当相互转换时,存在25MHz时钟和50MHz时钟的时序处理   问题,存在着数据4位并行和2位并行的转换的问题,存在着数据有效位的处理问题。利用FPGA芯片可有效实现上述逻辑和时序的处理问题。

 

    1).   方案的基本功能框图和管脚描述

 

 

                 

 

Ø         MII接口管脚:

TX_CLK:发送时钟,由PHY提供一个参考时钟。

TX_EN:发送使能信号。

TXD[3:0]:发送数据线。

TX_ER:发送错误信号。

RX_CLK:接收时钟,由PHY提供一个参考时钟。

RX_CLK:接收使能信号。

RXD[3:0]:接收数据线。

RX_ER:接收错误信号。

CRS:载波侦听。

COL:冲突检测。

 

Ø         RMII接口管脚:

REF_CLK:发送和接收同步时钟信号,是由外部的时钟源提供。

TX_EN:发送使能信号。

TXD[1:0]:发送数据线。

CRS_DV:载波侦听/接收数据有效信号。

RXD[1:0]:接收数据线。

RX_ER:接收错误信号。

 

Ø         SRAM的接口管脚

WE:写使能信号。

OE:读使能信号。

AD:地址总线。

DA:数据总线。

 

 

项目的初期开发首先要实现数据的传输转换,可以在FPGA内部构建两个FIFO模块,分别实现从MII到RMII的转换和从RMII到MII的数据转换,此时的缓存数据很小,仅使用FPGA内部的RAM;针对其各自的时钟,写数据有效和读数据有效分别对应时钟的上升沿和下降沿;针对有效位的不同,特别是RMII有效位失效时的震荡,采用有效位震荡计数的方式实现。项目后期的功能拓展,可基于以太网协议,针对具体的网络应用,例如PON网络,实现以太网帧头检测、控制帧检测、校验纠错、路由选择等功能。缓存较大时,可采用外置SRAM存储数据,针对SRAM的读写操作,需要进一步的开发工作。

 

 

     2).   需要的开发平台

 

     本方案用于解决MII与RMII以太网数据传输协议之间的转换,基本功能并不复杂,但是要求硬件平台能对网络部分提供丰富的资源,因此我们选择 NETFPFA作为硬件平台,因为其上存在着四个网络接口,可以进行网络协议的进一步开发和拓展功能。

 

文章评论2条评论)

登录后参与讨论

用户377235 2014-7-12 13:59

common platform switch

用户377235 2012-12-8 22:22

CPSW什么意思?

相关推荐阅读
用户370614 2015-02-05 15:42
AD7794 AD7795 AD7793 AD7792 程序 驱动代码 驱动程序 单片机代码
本驱动代码适用于ADI公司的AD779X系列ADC芯片,所有与硬件平台相关的代码都最大化的提取了出来,达到了最优化的移植性,本文档及代码旨在分享个人的开发工作,减少工程师们的开发周期,提高大家的工...
用户370614 2012-10-29 11:33
linux proc/stat文件信息
proc/stat包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。 [work@builder ~]$ cat /proc/stat cpu 432661 132...
用户370614 2012-10-18 14:55
platform_get_resource函数实现细节
platform_get_resource函数源码如下: struct resource *platform_get_resource(struct platform_device ...
用户370614 2012-10-18 14:49
linux中断之中断注册
专业的linux驱动开发离不开中断处理,在处理中断,首先要注册中断,在linux下通过request_irq来注册中断的,不同内核版本,注册中断所需要的参数也不同,本文以linux-2.6....
用户370614 2012-10-18 14:47
linux下查看和添加PATH环境变量
$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。<?xml:namespace prefix =...
我要评论
2
21
关闭 站长推荐上一条 /2 下一条