【电子基础知识】Ethernet、USB驱动中Controller、MAC、PHY都是啥?
做嵌入式开发,尤其是嵌入式Ethernet、USB、DDR、HDMI底层驱动开发中,经常会遇到Controller、MAC、PHY这些专业名词,这些名词是什么,之间又有什么关系?
一、基础概念和功能
Controller:控制器的统称,数字逻辑实现,主要包括控制寄存器组、FIFO,接口协议等。 MAC: Media Access Control,媒体访问控制器,属于控制器还是数字逻辑的实现。 PHY: Physical物理层,顾名思义实现通信中物理世界的光电等电气层面的信息,也就是实现数字信号转模拟信号,模拟信号转数字信号。
二、USB Controller +PHY
要实现USB通信大致需要两部分:Controller和PHY两部分。
Controller主要按照USB协议进行数据的打包和分解,并按照PIPE(USB3.0)或者UTMI(2.0)的总线的数据格式发送给PHY(2.0或者3.0)。
PHY通常为模拟逻辑实现(实现并转串的功能,把UTMI或者PIPE口的并行数据转换成串行数据,再通过差分数据线输出到芯片外部),USB PHY主要实现如下物理功能: 1.usb FS/HS 或者LS 模式选择2.usb 数据 NRZI 编码 和 Bit Stuffer3.将otg 并行数据 转为 差分串行D-/D+ 数据4. 速度枚举,J/K 信号产生。大致的通信方式如下图所示: 图中看到UTMI和PIPE,这是PHY和controller通信的接口,USB2.0PHY主要使用ULPI和UTMI,USB3.0主要使用PIPE。
有的芯片内部集成了Controller和PHY,有的芯片则只有Controller,需要在芯片外挂一个PHY芯片。 一句话总结: usb phy 将usb 控制器的数据,按字usb 标准协议编码,然后转成串行差分数据,并通过D+/D- 发送出去。反之,对于从host 产生的数据,经过usb phy 解码,然后到usb 控制器,最后到我们ddr 或者sram可以访问的应用数据
三、Ethernet MAC +PHY
网卡主要包括OSI的最下面的两层,物理层和数据链路层
物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY
数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。数据链路层的芯片称之为MAC控制器 从硬件的角度来分析,以太网的电路接口一般由CPU、MAC(Media Access Control)控制器和物理层接口(physical Layer PHY)组成,如下图所示: 对于上述三部分,并不一定都是独立的芯片,主要有以下几种情况 ·CPU内部集成了MAC和PHY,难度较高 ·CPU内部集成MAC,PHY采用独立芯片(主流方案) ·CPU不集成MAC和PHY,MAC和PHY采用独立芯片或者集成芯片(高端采用) PHY整合了大量模拟硬件,而MAC是典型的全数字器件,芯片面积及模拟/数字混合架构是为什么先将MAC集成进微控制器而将PHY留在片外的原因。更灵活、密度更高的芯片技术已经可以实现MAC和PHY的单芯片整合
以常用的CPU内部集成MAC,PHY采用独立的芯片方案,虚线内表示CPU和MAC集成在一起,PHY芯片通过MII接口与CPU上的MAC互联。
MAC(Media Access Control),即媒体访问控制子层协议,该部分有两个概念:MAC可以是一个硬件控制器以及MAC通讯协议。该协议位于OSI七层协议中数据链路层的下半部分,主要是负责控制与连接物理层的物理介质。
PHY物理层位于OSI最底层,物理层协议定义电气信号、线的状态、时钟要求、数据编码和数据传输用的连接器。物理层的器件称为PHY。
PHY是物理接口收发器,它实现OSI模型的物理层。IEEE-802.3标准定义了以太网PHY包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。 总结一下:
MAC 就是以太网控制器,属于OSI的数字链路层。PHY 属于OSI的物理层(Physical layer),所以叫PHY。
MAC主要处理的数字信号: PHY负责把MAC的数字信号进行编码,串行化等操作后,转化为模拟信号进行发送。PHY在数据接受时, 进行如上所述的逆操作,将模拟信号转化为数字信号,解码,并行化后,传给MAC。
基础以太网物理层非常简单:它是一种物理层收发器(发射器和接收器),能将一个设备物理地连接到另一个设备。这种物理连接可以是铜线(例如CAT5电缆——一种家庭使用的蓝色插线电缆)或光纤电缆。
最后,无论是USB还是以太网,只有Controller、MAC、PHY都正常工作,USB、以太网才能正常工作,那么对应到驱动层面就需要开发、调试Controller、MAC、PHY这几部分的驱动。 |