分类: 网络与安全
2013-03-27 16:33:07
转载原文:http://winkuo.blog.163.com/blog/static/259600652011621111257913/
一.有关MAC的硬件知识
MAC: Media Access Control
全双工或者半双工模式,依赖于物理层的支持。
功能:
1. 封装上一层数据,下发
2. 帧的接收、发送
3. 解出下一层的数据,上传。接收时会进行校验和的检查。
不需要知道物理设备是什么,也不关心物理设备的速度。
半双工模式:
共享介质访问,早期的HUB联网,在一个时刻只能有一个站点发包,以太网工作在CSMA/CD式(带冲突检测的载波侦听多路访问)。
全双工模式:
交换机,独享带宽。每个端口都有一个MAC,既可以工作在半双工模式、也可以工作在全双工模式。
二.有关PHY的硬件知识
PHY位于物理层,
PHY层完成的功能
自协商
线路编码,4B/5B编码,曼彻斯特编码
载波检测、冲突检测、错码检测
串并转换
时钟同步
字节对齐
以太网常见接口:MAC-PHY
MII / SMII / S3MII / RMII
GMII / RGMII / TBI (SERDES )/ RTBI
MII接口-媒体独立接口
工作速率100M/10M
数据位宽4Bit
收发时钟独立
收发时钟频率:25M/2.5M(100M/10M模式)
信号线数量:16
时钟类型:随路
优点:时钟速率低,随路时钟,布线简单
缺点:信号数量多
RMII-紧凑的MII
工作速度:10M/100M
数据位宽:2bit
收发时钟共用
时钟频率50M
信号数量:8(时钟共用)
时钟类型:共用
优点:比MII信号少
缺点:比MII设计难度增大了
SMII接口
工作速率:10M/100M
数据位宽:1bit
收发时钟共用
时钟频率:125M
信号数量:4根(多个通道时,时钟和同步信号可以共用)
时钟类型:共用
优点:信号数量少,多通道时优势明显
缺点:时钟频率高,且不随路,布线难度大
SS-SMII-源同步SMII
工作速率:10M/100M
数据位宽:1bit
收发时钟独立
时钟频率:125M
信号数量:6(发送时钟和发送同步可共用)
时钟类型:随路
优点:时钟随路,布线较容易
缺点:信号数量比SMII多
GMII-千兆MII
工作速率:10M/100M/1000M
数据位宽:8bit/4bit
收发时钟独立
时钟频率:2.5M/25/125M
信号数量:23
时钟类型:随路
优点:兼容性好,设计简单
缺点:使用Giga模式时,PHY芯片比较贵
TBI-十bit(千兆)接口
工作速率:1000M
数据位宽:10bit
收发时钟独立
时钟频率125M
信号线数量:24
时钟类型:随路
优点:可以选用廉价的PHY器件
缺点:只用于1000M工作模式
5690采用的是下面两个接口
1)SGMII (SERIAL GMII) INTERFACE
1.25 G带宽,输出管脚SGOUT± pin,输入管脚SGIN± pin,时钟625MHz管脚SCLK± pin。在时钟的上升沿和下降沿输出数据。可以从输入的数据里获得时钟,所以可不接时钟信号。
2)SERDES INTERFACE
用于连接SerDes fiber modules,也可以通过SerDes接口连接MAC,管脚与SGMII兼容,不使用SCLK± pin。
在BigHammer6000的产品上,有三种phys芯片,BCM5464、BCM 5434、BCM5228。BCM5464和BCM 5434是兼容产品,BCM 5434带Serial/SGMII接口,BCM5464 带GMII, RGMII, RTBI, SGMII, and SerDes 接口。 BCM5434用在老的6GTX2GBIC48FE的板子,连接5690。现在新板子已经不使用BCM5434,改为BCM5464。BCM5228 支持SMII / S3MII / RMII,用于连接5616。
在这里有必要介绍一下GBIC的概念,GBIC(Gigabit Interface Converter)是千兆位接口转换器的缩写,GBIC是一种数据通信模块,在系统处于工作状态时可以进行热插拔而不会损坏主机系统及其本身。GBIC被广泛应用于铜线或光纤电缆连接的数据通信和网络设备上,但通常人们偏爱使用光纤传输,因为它可以传到更远的距离并提高数据的准确性。安捷伦科技公司的GBIC模块利用嵌入式EEPROM来提供容量、标准接口和制造商的信息。在我们产品上GBIC口既可以插光口,也可以插电口。
5690通过BCM5464/5434接GE电口,直接接GBIC口。在新的板子24GE-SFP的板子上,SFP器件内部自带了phys,也是直接接的5690。 5616通过BCM5228接GE电口。
5690自带了Gigabit MAC和SGMII/SerDes PHY。当5690外接了PHY,例如接GE电口的时候,SGMII/SerDes PHY工作于SGMII模式,在这种情况下,自协商是由外部的PHY来决定的;当5690直接接GBIC口,SGMII/SerDes PHY工作于SerDes模式,自协商是由内部的PHY来决定(注意GBIC光口是没有PHY的,GBIC电口自带了PHY)。5690带三个SerDes core,每个SerDes core可以接4个GE口。
三.PHY的读写
8245通过5690/5616上的CMIC_MIIM_PARAM和CMIC_MIIM_READ_DATA这两个寄存器来读写PHY,这两个寄存器是直接映射寄存器,8245通过PCI总线可以直接访问。5690/5616再通过访问MII接口来访问PHY.在程序里调用接口soc_miim_inter_read()、soc_miim_inter_write()即可读写PHY。 源程序在miim.c里。
以下是5690的CMIC_MIIM_PARAM和CMIC_MIIM_READ_DATA寄存器。PHY寄存器的地址是16位,范围00-15h,PHY寄存器的数据也是16位的,INTER NAL_SEL用于指明是读写外部的PHY还是内部的PHY:INTER NAL_SEL为0时,读写外部的PHY;INTER NAL_SEL为1时,读写内部的PHY。5616上没有内部的PHY,因此5616的<%