MDIO读写控制实验

news2024/11/20 14:29:28

简介:

以太网:

以太网(Ethernet)是当今现有局域网采用的最通用的通信协议标准, 该标准定义了在局域网中采用的电缆类型和信号处理方法。以太网的分类有标准以太网(10Mbit/s)、 快速以太网(100Mbit/s)和千兆以太网( 1000Mbit/s) 。随着以太网技术的飞速发展, 市场上也出现了万兆以太网(10Gbit/s)。在实际应用中, 千兆以太网理论上最高通信速率为 1000Mbit/s,可以胜任大部分的使用场景。

MDC/MDIO,英文全称Management Data Clock和Management Data Input/Output,是以太网标准IEEE802.3中专门用于MAC和PYH之间管理的串行接口总线,其中MDC是总线时钟信号,MDIO为数据线。

RJ45接口:

以太网通信离不开连接端口的支持, 网络数据连接的端口就是以太网接口。 以太网接口类型有 RJ45 接口(水晶头)、 RJ11 接口(电话线接口)、 SC 光纤接口等。

不同速度下,RJ45接口有不同的定义:

(1)10M/100M 通信速率下的定义

 (2)1000M 的通信速率下, RJ45 插座的 8 根线都有用到,且都是双向引脚。

PHY与MDIO:

PHY:

PHY个人理解它应该是辅助以太网通信的数据转换芯片。

从硬件的角度来说,以太网接口电路主要由 MAC(Media Access Control)控制器物理层接口 PHY(Physical Layer, PHY)两大部分构成。 MAC 指媒体访问控制子层协议,它和 PHY 接口既可以整合到单颗芯片内,也可以独立分开,对于本次设计来说, MAC 控制器由 FPGA 实现, PHY 芯片指开发板板载的以太网芯片。
PHY 在发送数据的时候,接收 MAC 发过来的数据(对 PHY 来说,没有帧的概念,都是数据而不管什么地址,数据还是 CRC),把并行数据转化为串行流数据,按照物理层的编码规则把数据编码转换为模拟信号发送出去,接收数据时的流程反之。

如图:

PHY 还提供了和对端设备连接的重要功能,并通过 LED 灯显示出自己目前的连接状态和工作状态。当我们给网卡接入网线的时候, PHY 芯片不断发出脉冲信号来检测对端是否有设备,它们通过标准的“语言”交流,互相协商并确定连接速度、双工模式、是否采用流控等。通常情况下,协商的结果是两个设备中能同时支持的最大速度和最好的双工模式。这个技术被称为AutoNegotiation,即自协商。

补充以太网芯片PHY的介绍:

地址:

YT8531 芯片的 PHY 地址由 PHYAD0、 PHYAD1 和 PHYAD2 引脚决定,如下图所示: PHY 地址一共有3 位,我们可以通过硬件电路设置 PHYAD[2:0]引脚为上拉或者下拉,即分配为高低电平, 0 或 1,从而表示不同的地址。

所以地址为:0000_0100 == 0x04

复位:

YT8531 芯片复位后, PHY 内部寄存器的数据会恢复默认的状态,并且重新开始和 MAC 进行自协商。YT8531 支持两种复位方式,一种是硬件复位,另外一种是软件复位。硬件复位时通过 PHY_RST_N 引脚实现对 PHY 芯片的复位,当 ETH_RST_N 引脚持续 10ms 的低电平时,即可实现对 PHY 芯片的复位。软件复位通过向寄存器地址 0x00 的 Bit[15]写入 1 进行复位,并且在完成复位后,该位会自动清零。

寄存器:

YT8531 共有 22 位寄存器,这里我们仅介绍本实验用到的三个寄存器,控制寄存器、状态寄存器以及PHY 芯片具体状态寄存器。

 

 

可以知道的是这三个寄存器,每个都是16bit。哈哈。

MDIO 接口:

MAC 和 PHY 芯片有一个配置接口,即 MDIO 接口,可以配置 PHY 芯片的工作模式以及获取 PHY 芯片的若干状态信息。 PHY 芯片内部包含一系列寄存器,用户通过这些寄存器来配置 PHY 芯片的工作模式以及获取 PHY 芯片的若干状态信息,如连接速率、双工模式、自协商状态等。 FPGA 通过 MDIO 接口对 PHY芯片内部的寄存器进行配置。通常情况下, PHY 芯片在默认状态下也可以正常工作,在做以太网通信实验时,对 MDIO 接口的配置不是必须的,本章旨在向大家介绍 MDIO 接口以及如何对 MDIO 接口进行读写操作。 MAC 和 PHY 连接示意图如下图所示:

MDIO 接口也称为 SMI 接口(Serial Management Interface,串行管理接口),包括 ETH_MDC(数据管理时钟)和 ETH_MDIO(数据管理输入输出)两条信号线。 ETH_MDC 为 ETH_MDIO 提供时钟, ETH_MDC的最大时钟不能超过 12.5Mhz。 ETH_MDIO 为双向数据引脚,既用于发送数据,也用于接收数据。
 MDIO 接口的读写通信帧格式如下图所示:

读命令:先是MAC控制(MDIO),在TA状态,MAC第一位先释放(MDIO),然后PHY拉低(MDIO),然后PHY控制(MDIO),MAC去根据MDC时钟信号,去采集数据(接收/读,PHY发送的数据)。

读时序:

 分析:

经过观察,MDIO数据线,数据变化的时间点是在MDC的下降沿,MAC或者PHY对MDIO数据线采样的时间点是在MDC的上升沿。

也就是说在MDC上升沿附近,MDIO数据要保持稳定。下降沿,MDIO可以改变数据。

读时序中,先由MAC控制MDIO发送“32bit前导码”,然后发送“2bit帧开始信号01”,然后发送“2bit操作码10(读op)”,然后发送“5bitPHY的地址”,然后发送“5bit寄存器地址”,然后MAC“释放MDIO,产生ibit的高阻态,下一位由PHY去拉低MDIO,PHY接管数据线MDIO”.

然后PHY,发送16bit数据。

发送完,MDIO处于空闲状态,PHY与MAC都不驱动MDIO,一般由上拉电阻拉高MDIO。

以下是”原子哥“的分析:

写时序

 分析:

看图,写时序中,MDIO全程由MAC控制,(后面发送完MDIO无驱动)。

写时序中,先由MAC控制MDIO发送“32bit前导码”,然后发送“2bit帧开始信号01”,然后发送“2bit擦操作码01”,然后发送“5bitPHY地址”,然后发送“5bit寄存器地址”,然后发送“2bit转向码10,(无转向)”,然后发送“16bit的数据,写入PHY的内部寄存器中”。然后MAC释放MDIO,MDIO被上拉电阻拉高或者为高阻态。

以下是“原子哥”的分析:

硬件电路:

 以太网的数据传输离不开以太网 PHY(物理层)芯片的支持, 物理层定义了数据发送与接收所需要的电信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。的领航者开发板上使用的 PHY 芯片为裕太车通公司的 YT8531 或 YT8511(原理图上两款芯片设计稍有差异,但网口驱动部分的例程是完全兼容的),其原理图如下图所示:

实验任务:

本节实验任务是使用领航者 ZYNQ 开发板上的以太网接口,完成 MDIO 接口的读写测试实验。板载的触摸按键(TPAD)控制 MDIO 接口进行软复位,并通过两个 LED 灯实时指示当前网口的连接速度。当 LED0 灯亮的时候,表示当前的网口速率为 10Mbps;当 LED1 亮的时候,表示当前网口的速率为100Mbps;当两个 LED 都亮的时候,表示当前网口的速率为 1000Mbps;当两个 LED 灯都熄灭时,说明当前网络自协商失败,硬件或者网络存在异常。


程序设计:

总体模块设计:

各个模块设计:

代码:

仿真:

上板验证:


 

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

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

相关文章

计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密数据恢复

网络技术的不断发展,也为网络安全带来了威胁,近期云天数据恢复中心的工程师陆续接到很多企业的求助,在本月,很多企业的计算机服务器遭到了mkp勒索病毒攻击,导致企业计算机系统瘫痪,无法正常工作&#xff0c…

苹果 macOS 14.1.2 正式发布 更新了哪些内容?

苹果今日向 Mac 电脑用户推送了 macOS 14.1.2 更新(内部版本号:23B92 | 23B2091),本次更新距离上次发布隔了 28 天。 需要注意的是,因苹果各区域节点服务器配置缓存问题,可能有些地方探测到升级更新的时间略…

配置Smart Link主备备份示例

1、Smart Link和Monitor Link简介。 Smart Link,又叫做备份链路。一个Smart Link由两个接口组成,其中一个接口作为另一个的备份。Smart Link常用于双上行组网,提供可靠高效的备份和快速的切换机制。 Monitor Link是一种接口联动方案&#xff…

Navicat 技术指引 | 适用于 GaussDB 分布式的模型功能

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

104.进程创建

目录 进程创建相关的函数 获取当前进程的进程ID(PID) 获取当前进程的父进程ID(PPID) 创建一个新的进程 fork()剖析 调用格式 创建子进程 子进程与父进程 父子进程执行流 代码演示 进程创建相关的函数 Linux中进程ID为pi…

【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇4(附项目源码,完结)

免责声明:因为文章附带源码,所以我上锁了,整理不易,但是推荐大家自己手动跟敲代码理解更加深入 本节最终效果 文章目录 本节最终效果前言动画拿出枪 静止 检视枪动画切换行走奔跑动画换子弹动画和音效限制跑步和换弹期间不可以射击,换弹期间也不可以检视枪开火动画瞄准动画…

linux文件查找_which_find_locate

7.1 文件查找 7.1.1 简介 which:命令查找 ​ find:文件查找,针对文件名 ​ locate:文件查找,依赖数据库7.1.2 which which命令用于查找文件。 ​ which指令会在环境变量$PATH设置的目录里查找符合条件的文件。 whi…

Appium获取toast方法封装

一、前置说明 toast消失的很快,并且通过uiautomatorviewer也不能获取到它的定位信息,如下图: 二、操作步骤 toast的class name值为android.widget.Toast,虽然toast消失的很快,但是它终究是在Dom结构中出现过&…

在工作中灵活运用CHATGPT

问CHAT:基于微课技术的小学创新课堂教学模式开题,重要变更,侧重说明对照课题申请书、根据评议专家意见所作的研究计划调整 CHAT回复:在本研究项目的开题阶段,我们设想通过利用微课技术来提高小学创新课堂的教学质量。 …

2021年第十届数学建模国际赛小美赛C题读这篇文章有多难解题全过程文档及程序

2021年第十届数学建模国际赛小美赛 C题 读这篇文章有多难 原题再现: 有些英语文本更容易阅读,比如低年级英语考试中出现的阅读材料。然而,有些文本很难阅读,需要读者接受一定程度的教育才能理解。让我们研究一下如何衡量英语文本…

香港高防服务器的选择及几个常见疑问解答

​  互联网的迅猛发展,不仅带来的是机遇,同样也有挑战,比如恶意攻击的频发泛滥,让一些正规企业网站、游戏网站、购物网站等成为了 DDoS 攻击的目标点,所以我们在使用香港服务器时,也不得不为它加一层“护…

【keil备忘录】2. stm32 keil仿真时的时间测量功能

配置仿真器Trace内核时钟为单片机实际的内核时钟,需要勾选Enable设置,设置完成后Enable取消勾选也可以,经测试时钟频率配置仍然生效,此处设置为48MHZ: 时间测量时必须打开register窗口,否则可能不会计数 右下角有计…

智能优化算法应用:基于鹈鹕算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于鹈鹕算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于鹈鹕算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.鹈鹕算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Java 使用oshi获取当前服务器状态cpu、内存、存储等核心信息

文章目录 简介相关资料maven依赖oshi-官方示例获取CUP信息代码获取内存信息获取磁盘信息 简介 OSHI 是基于 JNA 的(本地)操作系统和硬件信息库。它不需要安装任何其他额外的本地库,旨在提供一种跨平台的实现来检索系统信息,例如操…

Clean 架构下的现代 Android 架构指南

Clean 架构下的现代 Android 架构指南 Clean 架构是 Uncle Bob 提出的一种软件架构,Bob 大叔同时也是 SOLID 原则的命名者。 Clean 架构图如下: 这张图描述的是整个软件系统的架构,而不是单体软件,其中至少包括服务端以及客户端…

探秘 JAVA 诞生之路,引领编程人生的宏伟著作

目录 一. 前言 二. Java 发展史 2.1. 1990年年末 2.2. 1991年 2.3. 1992年夏天 2.4. 1994年 2.5. 1995年 2.6. 1996年(JDK1.0) 2.7. 1997年(JDK1.1) 2.8. 1998年(JDK1.2) 2.9. 1999年&#xff0…

第十四章 : Spring Boot 整合spring-session,使用redis共享

第十四章 : Spring Boot 整合spring-session,使用redis共享 前沿 本文重点讲述:spring boot工程中使用spring-session机制进行安全认证,并且通过redis存储session,满足集群部署、分布式系统的session共享。 基于SPringBoot 2.3.2…

hive数据库查看参数/hive查看当前环境配置

文章目录 一、hive查看当前环境配置命令 在一次hive数据库执行命令 set ngmr.exec.modecluster时,想看一下 ngmr.exec.mode参数原先的值是什么,所以写一下本篇博文,讲一下怎么查看hive中的参数。 一、hive查看当前环境配置命令 set &#…

hadoop安装与配置-shell脚本一键安装配置(集群版)

文章目录 前言一、安装准备1. 搭建集群 二、使用shell脚本一键安装1. 复制脚本2. 增加执行权限3. 分发脚本4. 执行脚本5. 加载用户环境变量 三、启动与停止1. 启动/停止hadoop集群(1) 复制hadoop集群启动脚本(2) 增加执行权限(3) 启动hadoop集群(4) 停止hadoop集群(5) 重启hado…

算法:合并两个有序数组(双指针)

/*** param {number[]} nums1* param {number} m* param {number[]} nums2* param {number} n* return {void} Do not return anything, modify nums1 in-place instead.*/ var merge function(nums1,m,nums2,n) {let p1 m-1 let p2 n-1let p mn-1// 逆遍历while(p1 > 0…