嵌入式网络接口之MAC芯片与PHY芯片

目录

0. 参考文档

1.嵌入式网络接口简介

2.嵌入式网络硬件架构方案

2.1 SOC内未集成MAC芯片

2.2 SOC内集成MAC芯片

2.3 主流方案总结

2.3 参照实际网卡的说明

3.MII/RMII及MDIO接口

3.1 MII

3.2 RMII

3.3 MDIO


 

0. 参考文档

网卡构造:MAC与PHY的关系,GMAC介绍_学海无涯_come on的博客-CSDN博客对于上述三部分,并不一定都是独立的芯片,主要有以下几种情况CPU内部集成了MAC和PHY (难度较高)CPU内部集成MAC,PHY采用独立芯片 (主流方案)CPU不集成MAC和PHY,MAC和PHY采用独立芯片或者集成芯片 (高端采用)在软件上对网口的操作通常分为下面几步:为数据收发分配内存;初始化MAC寄存器;初始化PHY寄存器(通过MIIM);启动收发;_gmachttps://blog.csdn.net/chenhuanqiangnihao/article/details/128287341

【genius_platform软件平台开发】第九十八讲:嵌入式网络接口(MAC、PHY)_隨意的風的博客-CSDN博客15这16个寄存器的功能,16~31这16个寄存器由厂商自行实现。也就是说不管你用的哪个厂家的PHY芯片,其中0~15这16个寄存器是一模一样的。仅靠这16个寄存器是完全可以驱动起PHY芯片的,至少能保证基本的网络数据通信,因此Linux内核有通用PHY驱动,按道理来讲,不管你使用的哪个厂家的PHY芯片,都可以使用Linux的这个通用PHY驱动来验证网络工作是否正常。事实上在实际开发中可能会遇到一些其他的问题导致Linux内核的通用PHY驱动工作不正常,这个时候就需要驱动开发人员去调试了。https://blog.csdn.net/Windgs_YF/article/details/131262026

PHY芯片快速深度理解(持续更新中……)_daisy.skye的博客-CSDN博客物理层芯片称为PHY、数据链路层芯片称为MAC。可以看到PHY的数据是RJ45网络接口(网线口)穿过了的差分信号,而PHY作用就是将差分信号转为数字信号,这块内容不用深究,制造商都设计好了。那我们干什么呢?(主要是对phy芯片进行模式选择,比如工作速率,工作模式)为什么要熟悉RJ45网口上面说到针对phy芯片我们只要进行模式选择(下文会介绍使用mdio接口,通过寄存器控制)那模式选择后,如何查看是否有效呢?最简单直接的就是通过RJ45网口的指示灯查看。_phy芯片https://blog.csdn.net/qq_40715266/article/details/124095801

1.嵌入式网络接口简介

提起网络,我们一般想到的是“以太网卡”。网卡硬件分为两部分:1)数据链路层的MAC芯片;2)物理层的PHY芯片。

MAC位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。MAC在发送数据的时候,事先判断是否可以发送数据,如果可以,给数据加上一些控制信息,再将数据以及控制信息以规定的格式封装成帧发送到物理层;在接收数据的时候,MAC只接收发送至本网卡的单播帧、组播帧和广播帧,其余的丢弃,再将帧重新组合成数据,并判断输入的数据是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC层。

PHY位于OSI七层协议中的物理层。PHY在发送数据的时候,收到MAC过来的数据,然后把并行数据转化为串行流数据,按照物理层的编码规则把数据编码,再变为模拟信号送出去,收数据时的流程反之。

2.嵌入式网络硬件架构方案

大家都是通过看数据手册来判断一款SOC是否支持网络,如果一款芯片数据手册说自己支持网络,一般都是说的这款SOC内置MAC,MAC类似I2C控制器、SPI控制器一样的外设。

但是光有MAC还不能直接驱动网络,还需要另外一个芯片:PHY,因此对于内置MAC的SOC,其外部必须搭配一个PHY芯片。内部没有MAC的SOC芯片,就需要使用外置的MAC+PHY一体芯片了,这里就要牵扯出常见的两个嵌入式网络硬件方案了。

2.1 SOC内未集成MAC芯片

对于内部没有MAC的SOC芯片,可以使用外置 MAC+PHY一体的网络芯片来实现网络功能。比如三星linux开发板里面用的最多的DM9000,DM9000对SOC提供了一个SRAM接口,SOC会以SRAM的方式操作DM9000。

有些外置的网络芯片更强大,内部甚至集成了硬件TCP/IP协议栈,对外提供一个SPI接口,比如W5500。SOC通过SPI接口与W5500进行通信,由于W5500内置了硬件TCP/IP协议栈,因此SOC就不需要移植软件协议栈,直接通过SPI来操作W5500,简化了单片机联网方案。

这种方案的优点就是让不支持网络的SOC能够另辟蹊径,实现网络功能,但是缺点就是网络效率不高,因为一般芯片内置的MAC会有网络加速引擎,比如网络专用DMA,网络处理效率会很高。而且此类外置芯片网速都不快,基本就是10/100M。另外,相比PHY芯片而言,此类芯片的成本也比较高,可选择比较少。

SOC与外部MAC+PHY芯片的连接如下图所示:

d0f94c5612b34e7290e45cc64cf1354e.png

2.2 SOC内集成MAC芯片

我们一般说某个SOC支持网络,说的就是他内部集成网络MAC外设,此时我们还需要外接一个网络PHY芯片。目前几乎所有支持网络的SOC都是内置MAC外设,比如STM32F4/F7/H7系列、NXP的I.MX系列,内部集成网络MAC的优点如下:

1)内部MAC外设会有专用的加速模块,比如专用的DMA,加速网速数据的处理。

2)网速快,可以支持10/100/1000M网速。

3)外接PHY可选择性多,成本低。

内部的MAC外设会通过MII或者RMII接口来连接外部的PHY芯片,MII/RMII接口用来传输网络数据。另外主控需要配置或读取PHY芯片,也就是读写PHY的内部寄存器,所以还需要一个控制接口,叫做MDIO(也叫作SMI),MDIO很类似IIC,也是两根线,一根数据线叫做MDIO,一根时钟线叫做MDC。SOC内部MAC外设与外部PHY芯片的连接如下图所示:

24011a7599c54d548f7a6f10358ec1f3.png

2.3 主流方案总结

由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,将MAC集成进SOC,PHY留在片外,这种结构是最常见的。

0df90fab3e4d426187e21b1d68d28e13.png

其中,MAC与PHY之间有两个重要的接口:1)MII总线接口,主要完成数据收发相关业务;2)MDIO总线接口(也叫作SMI),主要完成SOC对PHY芯片各寄存器的配置。

当PHY芯片发送数据时,接受MAC芯片从MII接口发送过来的数字信号,然后转换成模拟信号,通过MDI接口传输出去。

网络设备是通过网线连接起来的,插入网线的地方叫做RJ45座(见下图上),RJ45座要与PHY芯片连接在一起,但是中间还需要一个网络变压器(见下图下),其主要作用是1)增强信号。网线传输的距离很长,有时候需要送到100米甚至更远的地址,那么就会导致信号的流失,需要提前增强信号;2)隔离外部设备,增强芯片抗干扰能力。网线与内部芯片直接相连的话,电磁感应和静电也很容易导致芯片的损坏。所以就要使用网络变压器连接RJ45座。

0a7a208ff65d4729bd52042e44eb15f7.png

a7ef70d7786343e697f1afc89b08195c.png

同时,PHY芯片会引出两个引脚,连接到RJ45座的LED灯上,对LED灯进行控制,用来指示当前网络通信状态。RJ45 座子上一般有两个灯,一个橙色,一个绿色,绿色亮表示网络连接正常,黄色闪烁说明当前正在进行网络通信黄灯闪动频率越快表示网速越好。

2.3 参照实际网卡的说明

MAC和PHY分开的以太网卡 :

cc2e4fe5ce764939ba817215767d2ad7.png

MAC和PHY集成在一个芯片的网卡:

aee6b550002146bc89d8f9fa9d442b5f.png

 

上图中各部件为:①RJ-45接口、②Transformer(隔离变压器)、③PHY芯片、④MAC芯片、⑤EEPROM、⑥BOOTROM插槽、⑦WOL接头、⑧晶振、⑨电压转换芯片、⑩LED指示灯。

3.MII/RMII及MDIO接口

MAC与PHY接口支持四种类型:MII、RMII、GMII、RGMII。这四种类型都是从MII(Media Independent Interface)衍生出来的,RMII(Reduced MII)是精简版的MII,GMII(Gigabit MII)是支持千兆传输速率的MII,RGMII(Reduced GMII)是精简版的GMII。下面主要介绍MII和RMII。

3.1 MII

MII全称是Media Independent Interface,直译过来就是介质独立接口,它是IEEE-802.3定义的以太网标准接口,MII接口用于以太网MAC连接PHY芯片,连接示意图如下图所示:

b27ab95daf4d4e34a98a3d12f8d36be4.png

MII接口一共有16根信号线,含义如下:

  • TX_CLK:发送时钟,如果网速为100M的话时钟频率为25MHz,10M网速的话时钟频率为2.5MHz,此时钟由PHY产生并发送给MAC。
  • TX_EN:发送使能信号。
  • TX_ER:发送错误信号,高电平有效,表示TX_ER有效期内传输的数据无效。10Mpbs网速下TX_ER不起作用。
  • TXD[3:0]:发送数据信号线,一共4根。
  • RXD[3:0]:接收数据信号线,一共4根。
  • RX_CLK:接收时钟信号,如果网速为100M的话时钟频率为25MHz,10M网速的话时钟频率为2.5MHz,RX_CLK也是由PHY产生的。
  • RX_ER:接收错误信号,高电平有效,表示RX_ER有效期内传输的数据无效。10Mpbs网速下RX_ER不起作用。
  • RX_DV:接收数据有效,作用类似TX_EN。
  • CRS:载波侦听信号。
  • COL:冲突检测信号。

MII接口的缺点就是所需信号线太多,这还没有算MDIO和MDC这两根管理接口的数据线,因此MII接口使用已经越来越少了。

3.2 RMII

RMII全称是Reduced Media Independent Interface,翻译过来就是精简的介质独立接口,也就是MII接口的精简版本。RMII接口只需要7根数据线,相比MII直接减少了9根,极大的方便了板子布线,RMII接口连接PHY芯片的示意图如下图所示:

8ccad8e020014b88a0a3734561a59921.png

  • TX_EN:发送使能信号。
  • TXD[1:0]:发送数据信号线,一共2根。
  • RXD[1:0]:接收数据信号线,一共2根。
  • CRS_DV:相当于MII接口中的RX_DV和CRS这两个信号的混合。
  • REF_CLK:参考时钟,由外部时钟源提供, 频率为50MHz。这里与MII不同,MII的接收和发送时钟是独立分开的,而且都是由PHY芯片提供的。

3.3 MDIO

MDIO接口(也叫作SMI接口),全称是Management Data Input/Output,直译过来就是管理数据输入输出接口,是一个简单的两线串行接口,包括一根MDIO数据线和一根MDC时钟线。驱动程序可以通过MDIO和MDC这两根线访问任意PHY芯片的任意一个寄存器,总线框图如下图所示。

ed81ea3974e246f886997b91dd6f0fc5.png

MDIO的读写时序如下图所示,其含义是读/写某一PHY芯片(由PHYAD字段指定)中的某一寄存器(由REGAD字段指定):

afa2dfddf4be4a5780e5d7ae0d63045b.png

从上表可知,MDIO可读写的PHY地址(即图中的PHYAD字段)为5位,所以一个SOC最多管理2^5=32个PHY芯片(与MDIO总线框图相呼应)。MDIO可访问该PHY芯片(由PHYAD指定)中的寄存器地址(即图中的REGAD字段)也为5位,所以一个PHY芯片中最多有32个寄存器,其中寄存器0-15这16个寄存器各个公司都是一样的,后面16个寄存器则由不同厂家各自定义。

IEEE802.3协议英文原版中的 “22.2.4 Management functions”章节对PHY的前16个寄存器功能进行了规定,如下图所示:

ceb34bbbd90542fea915f4f0272256a4.png

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/139494.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【李沐深度学习笔记】矩阵计算(5)

课程地址和说明 线性代数实现p4 本系列文章是我学习李沐老师深度学习系列课程的学习笔记,可能会对李沐老师上课没讲到的进行补充。 本节是第五篇,由于CSDN限制,只能被迫拆分 矩阵计算 多元函数的等高线 此处参考视频:熟肉)多元…

上PICO,沉浸式观看亚运直播,参与跨国界游戏竞技

备受瞩目的杭州第19届亚运会,将于9月23日正式开幕。据悉,这也是有史以来项目最多的一届亚运会,除部分传统奥运项目外,还包含武术、藤球、板球、克柔术、柔术等亚洲特色项目,以及霹雳舞、电子竞技等深受年轻人喜爱的新兴…

LeetCode算法动态规划—斐波那契数列

目录 剑指 Offer 10- I. 斐波那契数列 - 力扣(LeetCode) 题解: 代码: 运行结果: 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N)&#…

Labelme分割标注软件

Labelme分割标注软件 1、环境配置与安装1.1 创建conda虚拟环境(建议)1.2 安装Labelme 2、简单使用2.1 创建label标签文件2.2 启动labelme2.3 打开文件/文件夹2.4 设置保存结果路径2.5 标注目标2.6 保存json文件格式 3 格式转换3.1 转换语义分割标签3.2 转换实例分割标签 相关重…

中通快递一键查询,轻松掌握物流信息

在如今的快速发展的电商时代,快递已成为人们生活中不可或缺的一部分。随着快递业务的繁荣,快递公司也纷纷推出了各种查询方式,方便顾客随时掌握自己包裹的物流信息。在这其中,中通快递无疑是许多人选择的首选。下面,我…

【00】FISCO BCOS区块链简介

官方文档:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/introduction.html FISCO BCOS是由国内企业主导研发、对外开源、安全可控的企业级金融联盟链底层平台,由金链盟开源工作组协作打造,并于2017年正式对外开源。 F…

❤Uniapp报npx update-browserslist-db@latest

❤ Uniapp报npx update-browserslist-dblatest 按照提示先更新一下 npx update-browserslist-dblatest然后打开一下端口

MATLAB实现相关性分析

目录 一.基本理论 二.两类相关系数的对比 三.相关系数的假设检验 四.MATLAB的相关操作 五.其他有关的一些列技巧 六.案例展示 七.实战操作 一.基本理论 所谓相关系数,本质上是来衡量两组数据的关系大小——对应呈现函数关心的两种变量,那么我们可以…

MySQL数据库 -- 入门篇

1. MySQL概述 1.1 数据库相关概念 三个概念:数据库、数据库管理系统、SQL。 目前主流的关系型数据库管理系统的市场占有率排名如下: Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。MySQL:开源免费…

DA5 网站用户没有补全的信息

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔): Nowcoder_ID:用户ID …

【MySQL】 MySQL的增删改查(进阶)--贰

文章目录 🛫新增🛬查询🌴聚合查询🚩聚合函数🎈GROUP BY子句📌HAVING 🎋联合查询⚾内连接⚽外连接🧭自连接🏀子查询🎡合并查询 🎨MySQL的增删改查(…

【面试必刷TOP101】 删除有序链表中重复的元素-I 删除有序链表中重复的元素-II

目录 题目:删除有序链表中重复的元素-I_牛客题霸_牛客网 (nowcoder.com) 题目的接口: 解题思路: 代码: 过啦!!! 题目:删除有序链表中重复的元素-II_牛客题霸_牛客网 (nowcoder…

AUTOSAR词典:CAN驱动Mailbox配置技术要点全解析

AUTOSAR词典:CAN驱动Mailbox配置技术要点全解析 前言 首先,请问大家几个小小问题,你清楚: AUTOSAR框架下的CAN驱动关键词定义吗?是不是有些总是傻傻分不清楚呢?CAN驱动Mailbox配置过程中有哪些关键配置参…

C语言-扫雷游戏的实现

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

CMD脚本实战教程

要在 Windows 11 上编写一个自定义关机的 CMD 脚本文件,你可以创建一个扩展名为 .bat 或 .cmd 的文本文件,并在其中编写脚本。 一、常用语法 rem:注释 pause:暂停正在执行的批处理文件,并提示用户按键之后继续执行 r…

ps丢失d3dcompiler_47.dll怎么办,这四个方法都能解决

在当今的信息化社会,电脑已经成为我们生活和工作中不可或缺的一部分。然而,随着软件技术的不断发展,电脑在使用过程中也难免会遇到各种问题。其中,缺失d3dcompiler_47.dll文件是一个常见的问题。本文将为大家介绍如何修复电脑出现…

git:二、git的本地配置+工作区域和文件状态+git add/commit/log +git reset回退版本

git的使用方式 命令行(最常用)图形化界面IDE插件/拓展(次常用) git的本地/系统配置 之前的文章提到过git的全局配置。如下: git config --global user.name "ss" git config --global user.email "…

计算机毕业设计 基于SSM+Vue的物资存储系统(以消防物资为例)的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

please choose a certificate and try again.(-5)报错怎么解决

the server you want to connect to requests identification,please choose a certificate and try again.(-5)

Centos7部署单机版MongoDB

目录 Centos7部署单机版MongoDBMongoDB介绍数据模型索引分布式高可用性查询语言驱动和社区用途缺点 下载并解压安装包创建相关文件夹和文件编辑mongod.conf文件启动mongodb创建管理员用户终止MongoDB服务配置自启动服务关闭SELinux编辑自启动服务文件mongodb服务命令 Centos7部…