临沂网站建设公司/搜索引擎成功案例分析
在学习车载互联网时,看到了一句话,Processor通过DMA直接存储访问与MAC之间进行数据的交互,MAC通过MII介质无关接口与PHY之间进行数据的交互。常见的以太网硬件结构是,将MAC集成进Processor芯片,将PHY留在Processor片外,做成单独的收发器芯片。但是他并没有讲解MII使用的具体流程。本篇博客将聚焦MII与MIIM讲述PYH与MAC以及MAC与Processor是如何进行信息传递的。
在开始之前我们先简单介绍一下这些是什么。Processor也就是处理器,也就是MCU微控制器,SOC/CPU,域控制前。他是执行数据处理和协议栈的软件/硬件模块。其主要作用是:1.协议处理2.应用逻辑处理3.通信协调。PHY也就是我们常说的OSI七层模型中的物理层,在OBD连接,也就是车身诊断系统中,他与外部通过100BaseTX(2对非屏蔽双绞线)连接,而内部通常采用100BaseT1(1对非屏蔽双绞线))或者1000BaseT1相连接。通常CAN/LIN走的就是这些线路。在发送数据时,PHY接收从MAC过来的数据,将并行的数据转化为串行流数据,按照物理层的编码规则把数据编码,再变为模拟信号把数据发出去。接收数据时的流程则相反。那么PHY是如何接收MAC传递来的数据呢?
MAC是物理链路层的一部分,负责以太网帧的生成/解析与差错校验。MAC通过MII接口与PYH层进行数据交互,通过MIIM对PHY进行管理。PHY通过MDI接口发送模拟信号。
MII(Media Independent Interfaces)是MAC与PHY之间的标准接口,支持数据的收发和接受。
MIIM(Management Data I/O Interface)也称为MDIO/MDC。MDC(Management Data Clock)和 MDIO(Management Data Input/Output)是两个独立的信号线,它们共同组成 MDIO 接口(MIIM,Management Interface)。MDC是 MDIO 管理接口的时钟信号,由 MAC 端主动产生,用于控制 MDIO(Management Data Input/Output) 数据的传输时序。MDIO管理数据线,用于 MAC 读写 PHY 寄存器.他们共同负责对PHY芯片寄存器进行读写,管理配置,设置工作模式,监控PHY等操作。
MDI: MII 是 MAC 层和 PHY 层之间的接口,主要用于 逻辑信号的交互,以并行数字信号形式传输数据。而 MDI 是 PHY 层与物理介质(如双绞线或光纤)之间的接口,主要用于 模拟信号的传输。由于讨论的重点是 从 MAC 到 PHY 的信号转换和编码 ,MDI 只在最终物理信号传输时使用。
解析 MDIO/MDC 接口管理帧格式
MDIO 传输数据的格式由多个字段组成,每个字段有特定的作用:
-
PRE(预同步字段):
- 由多个连续的
1
组成(通常是 32 个1
)。 - 主要用于同步时钟信号,确保 MDIO 和 PHY 设备可以正确通信。
- 由多个连续的
-
ST(起始字段,Start of Frame):
- 固定值
01
,用于标志帧的开始,告诉 PHY 一次新的传输即将开始。
- 固定值
-
OP(操作码,Operation Code):
- 用于区分本次传输是 读取(READ,
10
) 还是 写入(WRITE,01
)。
- 用于区分本次传输是 读取(READ,
-
PHYAD(PHY 地址,5 位):
- 该字段用于指定要访问的 PHY 设备地址,支持最多 32 个不同的 PHY(0~31)。
-
REGAD(寄存器地址,5 位):
- 指定 PHY 内部的寄存器地址,最多支持 32 个寄存器。
-
TA(转接字段,Turnaround):
- 数据方向切换字段,用于协调主机(MAC)和从机(PHY)之间的数据传输:
- 写操作时,由主机(MAC)驱动,总是
10
。 - 读操作时,由从机(PHY)驱动,值是
Z0
(其中Z
表示高阻态,PHY 释放总线)。
- 写操作时,由主机(MAC)驱动,总是
- 数据方向切换字段,用于协调主机(MAC)和从机(PHY)之间的数据传输:
-
DATA(数据字段,16 位):
- 主要用于存储数据:
- 写操作:主机发送的数据,写入 PHY 指定寄存器。
- 读操作:从 PHY 读取的数据。
- 主要用于存储数据:
-
IDLE(空闲字段):
- 当总线空闲时,MDIO 线进入 高阻态(Z),表示当前无数据传输。
MDIO 接口的读写操作流程如下:读取操作(READ,操作码 10
) 由主机发送帧的前半部分(包括 PHY 地址和寄存器地址),然后 PHY 在 TA 阶段接管总线并返回 16 位数据,主机读取数据完成操作。写入操作(WRITE,操作码 01
) 由主机发送完整帧(包括 PHY 地址、寄存器地址和 16 位数据),PHY 在接收到数据后将其写入指定寄存器。
MII 的具体使用流程
MII 主要用于 数据发送 和 数据接收 两个过程,每个过程都由多个信号线协同工作。
1. MII 发送流程(MAC → PHY)
当 MAC 层有数据需要通过 PHY 发送出去时,它会按照以下流程操作:
-
MAC 准备数据
- MAC 层按照以太网帧格式组织数据,并将其拆分为 4 位宽度(TXD[3:0])的数据块(10/100Mbps 以太网使用 MII,千兆以太网使用 GMII/SGMII)。
-
发送数据和控制信号
- MAC 层通过 MII 接口的
TXD[3:0]
数据总线逐个发送数据块。 TX_EN
(Transmit Enable):当有有效数据时,MAC 层拉高该信号,指示 PHY 接收数据。TX_ER
(Transmit Error):用于标记传输错误。TX_CLK
(Transmit Clock):PHY 生成的时钟信号,MAC 层在时钟的上升沿发送数据。
- MAC 层通过 MII 接口的
-
PHY 编码数据并发送
- PHY 层接收
TXD[3:0]
传输的数据,并将其转换为物理层的信号(如 MLT-3 编码、NRZ 编码)。 - 最终 PHY 将数据发送到 MDI 端口(Medium Dependent Interface),再传输到物理网络介质(如双绞线)。
- PHY 层接收
2. MII 接收流程(PHY → MAC)
当 PHY 接收到来自网络的以太网数据时,它会按照以下流程传递给 MAC 层:
-
PHY 解析物理信号
- PHY 层从 MDI 接口接收模拟信号,并解码成数字信号(例如 Manchester 编码 → 二进制数据)。
-
发送数据到 MAC
- PHY 层通过
RXD[3:0]
数据总线逐步将数据发送给 MAC 层。 RX_DV
(Receive Data Valid):当 PHY 发送有效数据时,拉高此信号。RX_ER
(Receive Error):如果 PHY 检测到错误(如 CRC 校验失败),则拉高该信号。RX_CLK
(Receive Clock):PHY 生成的接收时钟信号,MAC 在时钟的上升沿采样数据。
- PHY 层通过
-
MAC 处理数据
- MAC 层从
RXD[3:0]
获取数据,并将其重新拼接成完整的以太网帧进行处理。
- MAC 层从
TXD[3:0] 是 MII(Media Independent Interface) 中的 发送数据总线,用于在 MAC 层和 PHY 层之间传输数据。
同时我们也注意到MAC与Processor通过DMA进行信息传递。那么
什么是 DMA?
DMA(Direct Memory Access,直接内存访问) 是一种计算机系统中的数据传输机制,允许 外设(如网卡、硬盘、显卡等)直接与内存交换数据,而不需要 CPU 进行数据搬运。这大大提高了数据传输效率,减少了 CPU 的负担,使其可以专注于计算任务。
DMA 的工作原理
通常,数据传输可以分为以下几种方式:
-
程序控制方式(CPU 控制)
- CPU 负责从内存读取数据,然后再写入外设,或者从外设读取数据再写入内存。
- 缺点:CPU 需要全程参与数据搬运,占用大量计算资源,影响系统性能。
-
中断驱动方式
- 设备通过中断请求 CPU 进行数据传输,CPU 响应后执行数据搬运操作。
- 缺点:虽然减少了一些 CPU 轮询的开销,但 CPU 仍然需要执行数据搬运,影响效率。
-
DMA(直接内存访问)方式(最优方式)
- DMA 控制器(DMAC)接管数据传输,允许数据 直接 在 内存和外设(如 MAC 网卡) 之间传输,而不经过 CPU。
- CPU 仅需要发起 DMA 传输请求,剩下的传输过程由 DMA 控制器完成。
- 优点:
- 释放 CPU 资源,让 CPU 可以处理其他任务。
- 提高数据传输效率,尤其是大块数据传输时效果明显。
相关文章:

PYH与MAC的桥梁MII/MIIM
在学习车载互联网时,看到了一句话,Processor通过DMA直接存储访问与MAC之间进行数据的交互,MAC通过MII介质无关接口与PHY之间进行数据的交互。常见的以太网硬件结构是,将MAC集成进Processor芯片,将PHY留在Processor片外…...

国内flutter环境部署(记录篇)
设置系统环境变量 export PUB_HOSTED_URLhttps://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn使用以下命令下载flutter镜像 git clone -b stable https://mirror.ghproxy.com/https://github.com/<github仓库地址>#例如flutter仓…...

选择排序_75. 颜色分类
75. 颜色分类 - 力扣(LeetCode) 题目不追求稳定 可以选择选择排序 这是我没看教程代码之前写的 有点复杂了 我还把元素后移了 class Solution { public:void sortColors(vector<int>& nums) {int min_num_index -1;int min_num 3;for(int i…...

C++ Primer 标准库vector
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

C# 数组和列表的基本知识及 LINQ 查询
数组和列表的基本知识及 LINQ 查询 一、基本知识二、引用命名空间声明三、数组3.1、一维数组3.2、二维数组3.3、不规则数组 Jagged Array 四、列表 List4.1、一维列表4.2、二维列表 五、数组和列表使用 LINQ的操作和运算5.1、一维 LIST 删除所有含 double.NaN 的行5.2、一维 LI…...

大厂面试题备份20250201
20250201 面试策略 如果三面往后遇到传说中让人忍受不了的业余面试官,就舔着苟过去,入职大概率见不着他,但一二面遇到,反问环节就主动说不够match,让释放流程。 机器/深度学习 百面机器学习 5.4 通用CS 计算机网…...

w191教师工作量管理系统的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

Git 版本控制:基础介绍与常用操作
目录 Git 的基本概念 Git 安装与配置 Git 常用命令与操作 1. 初始化本地仓库 2. 版本控制工作流程 3. 分支管理 4. 解决冲突 5. 回退和撤销 6. 查看提交日志 前言 在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理&am…...

讲清逻辑回归算法,剖析其作为广义线性模型的原因
1、逻辑回归算法介绍 逻辑回归(Logistic Regression)是一种广义线性回归分析模型。虽然名字里带有“回归”两字,但其实是分类模型,常用于二分类。既然逻辑回归模型是分类模型,为什么名字里会含有“回归”二字呢?这是因为其算法原…...

数据结构(1)——算法时间复杂度与空间复杂度
目录 前言 一、算法 1.1算法是什么? 1.2算法的特性 1.有穷性 2.确定性 3.可行性 4.输入 5.输出 二、算法效率 2.1衡量算法效率 1、事后统计方法 2、事前分析估计方法 2.2算法的复杂度 2.3时间复杂度 2.3.1定义 2.3.2大O渐进表示法 2.3.3常见时间复…...

K8s运维管理平台 - xkube体验:功能较多
目录 简介Lic安装1、需要手动安装MySQL,**建库**2、启动命令3、[ERROR] GetNodeMetric Fail:the server is currently unable to handle the request (get nodes.metrics.k8s.io qfusion-1) 使用总结优点优化 补充1:layui、layuimini和beego的详细介绍1.…...

spring源码阅读系列文章目录
对于spring认识首先要了解 spring相关概念术语,然后是如下的几句话牢记并反射出来: Bean怎么来的,通过BeanDefinitionBeanDefinition有Spring框架内置的,有手动定义或者自动配置扫描出来的(写个Demo工程)B…...

快速提升网站收录:利用网站新闻发布功能
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/63.html 利用网站新闻发布功能快速提升网站收录是一个有效的策略。以下是一些具体的建议,帮助你更好地利用这一功能: 一、保持新闻更新频率 搜索引擎尤其重视网站的…...

【14】WLC3504 HA配置实例
1.概述 本文档使用 Cisco WLC 3504 实现无线控制器的高可用性。这里所指的HA是指WLC设备box-to-box的冗余。换句话说,即1:1的设备冗余,其中一个 WLC 将处于Active活动状态,而第二个 WLC 将处于Standby-hot热待机状态,通过RP冗余端口持续监控活动 WLC 的运行状况。两个 WLC…...

什么是LPU?会打破全球算力市场格局吗?
在生成式AI向垂直领域纵深发展的关键节点,一场静默的芯片革命正在改写算力规则。Groq研发的LPU(Language Processing Unit)凭借其颠覆性架构,不仅突破了传统GPU的性能天花板,更通过与DeepSeek等国产大模型的深度协同&a…...

智慧物业管理系统实现社区管理智能化提升居民生活体验与满意度
内容概要 智慧物业管理系统,顾名思义,是一种将智能化技术融入社区管理的系统,它通过高效的手段帮助物业公司和居民更好地互动与沟通。首先,这个系统整合了在线收费、停车管理等功能,让居民能够方便快捷地完成日常支付…...

Vue3 表单:全面解析与最佳实践
Vue3 表单:全面解析与最佳实践 引言 随着前端技术的发展,Vue.js 已经成为最受欢迎的前端框架之一。Vue3 作为 Vue.js 的最新版本,带来了许多改进和新的特性。其中,表单处理是 Vue 应用中不可或缺的一部分。本文将全面解析 Vue3 …...

MySQl的日期时间加
MySQL日期相关_mysql 日期加减-CSDN博客MySQL日期相关_mysql 日期加减-CSDN博客 raise notice 查询目标 site:% model:% date:% target:%,t_shipment_date.site,t_shipment_date.model,t_shipment_date.plant_date,v_date_shipment_qty_target;...

实战:如何利用网站日志诊断并解决收录问题?
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/50.html 利用网站日志诊断并解决收录问题是一种非常有效的方法。以下是一个实战指南,帮助你如何利用网站日志来诊断并解决网站的收录问题: 一、获取并分析网站日志 …...

每日一题——有效括号序列
有效括号序列 题目描述数据范围:复杂度要求: 示例题解代码实现代码解析1. 定义栈和栈操作2. 栈的基本操作3. 主函数 isValid4. 返回值 时间和空间复杂度分析 题目描述 给出一个仅包含字符 (, ), {, }, [, ] 的字符串,判断该字符串是否是一个…...

PyTorch数据建模
回归分析 import torch import numpy as np import pandas as pd from torch.utils.data import DataLoader,TensorDataset import time strat = time.perf_counter()...

OpenAI 实战进阶教程 - 第二节:生成与解析结构化数据:从文本到表格
目标 学习如何使用 OpenAI API 生成结构化数据(如 JSON、CSV 格式)。掌握解析数据并导出表格文件的技巧,以便适用于不同实际场景。 场景背景 假设你是一名开发人员,需要快速生成一批产品信息列表(如名称、价格、描述…...

二叉树--链式存储
1我们之前学了二叉树的顺序存储(这种顺序存储的二叉树被称为堆),我们今天来学习一下二叉树的链式存储: 我们使用链表来表示一颗二叉树: ⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。通常的⽅法是…...

Windows 中的 WSL:开启你的 Linux 之旅
今天在安装windows上安装Docker Desktop的时候,遇到了WSL。下面咱们就学习下。 欢迎来到涛涛聊AI 一、什么是 WSL? WSL,全称为 Windows Subsystem for Linux,是微软为 Windows 系统开发的一个兼容层,它允许用户在 Win…...

2.3学习总结
今天做了下上次测试没做出来的题目,作业中做了一题,看了下二叉树(一脸懵B) P2240:部分背包问题 先求每堆金币的性价比(价值除以重量),将这些金币由性价比从高到低排序。 对于排好…...

前端力扣刷题 | 6:hot100之 矩阵
73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 法一: var setZeroes function(matrix) {let setX new Set(); // 用于存储需要置零的行索引let setY new Set(); //…...

docker gitlab arm64 版本安装部署
前言: 使用RK3588 部署gitlab 平台作为个人或小型团队办公代码版本使用 1. docker 安装 sudo apt install docker* 2. 获取arm版本的gitlab GitHub - zengxs/gitlab-arm64: GitLab docker image (CE & EE) for arm64 git clone https://github.com/zengxs…...

路径规划之启发式算法之二十九:鸽群算法(Pigeon-inspired Optimization, PIO)
鸽群算法(Pigeon-inspired Optimization, PIO)是一种基于自然界中鸽子群体行为的智能优化算法,由Duan等人于2014年提出。该算法模拟了鸽子在飞行过程中利用地标、太阳和磁场等导航机制的行为,具有简单、高效和易于实现的特点,适用于解决连续优化问题。 更多的仿生群体算法…...

【AudioClassificationModelZoo-Pytorch】基于Pytorch的声音事件检测分类系统
源码:https://github.com/Shybert-AI/AudioClassificationModelZoo-Pytorch 模型测试表 模型网络结构batch_sizeFLOPs(G)Params(M)特征提取方式数据集类别数量模型验证集性能EcapaTdnn1280.486.1melUrbanSound8K10accuracy0.974, precision0.972 recall0.967, F1-s…...

一文讲解Java中的ArrayList和LinkedList
ArrayList和LinkedList有什么区别? ArrayList 是基于数组实现的,LinkedList 是基于链表实现的。 二者用途有什么不同? 多数情况下,ArrayList更利于查找,LinkedList更利于增删 由于 ArrayList 是基于数组实现的&#…...