当前位置: 首页 > news >正文

以太网PHY_RGMII通信(基于RTL8211)--FPGA学习笔记22

一、以太网基础知识

FPGA千兆网口数据传输MDIO接口——FPGA学习笔记3_yt8531sh原理图-CSDN博客

二、通信协议

1、MDIO协议格式

(1)Pre:前导码32bit全是1,同步通信                         32bit

(2)ST:开始字段 01 表示开始通信                              2bit  

(3)OP:操作码,表示读写    10:读     01:写           2bit     

(4)PHYAD:PHY地址,取决于电路设计                     5bit   

(5)REGAD:寄存器地址                                              5bit  

(6)TA:转向,   Z0:读取     10:写入                        2bit

(7)DATA:数据,写入或读出的数据                            16bit           

(8)IDLE:空闲                                                              1bit   

2、MDIO协议时序

3、需要操作的寄存器

(1)BMSR (Basic Mode Status Register, Address 0x01)

1)读出link状态:BMSR (Basic Mode Status Register, Address 0x01)

1:网线接入

0:网线未接入

(2)BMCR (Basic Mode Control Register, Address 0x00)

1)设置自协商:BMCR (Basic Mode Control Register, Address 0x00)

11:reserved

10:1000Mb/s

01:100Mb/s

00:10Mb/s

2)开启自协商功能:BMCR (Basic Mode Control Register, Address 0x00)

3)开启全双工模式:

4)软复位:

(3)PHYSR (PHY Specific Status Register, Address 0x11)

1)获取以太网连接速度

三、整体框图

前导码(Preamble) : 为了实现底层数据的正确阐述,物理层使用 7 个字节同步码(0 和 1 交替
(55-55-55-55-55-55-55))实现数据的同步。
帧起始界定符(SFD, Start Frame Delimiter):使用 1 个字节的 SFD(固定值为 0xd5)来表示一帧的开始,即后面紧跟着传输的就是以太网的帧头。
目的 MAC 地址: 即接收端物理 MAC 地址,占用 6 个字节。 MAC 地址从应用上可分为单播地址、组播地址和广播地址。单播地址:第一个字节的最低位为 0,比如 00-00-00-11-11-11,一般用于标志唯一的设备;组播地址:第一个字节的最低位为 1,比如 01-00-00-11-11-11,一般用于标志同属一组的多个设备;广播地址:所有 48bit 全为 1,即 FF-FF-FF-FF-FF-FF,它用于标志同一网段中的所有设备。
源 MAC 地址:即发送端物理 MAC 地址,占用 6 个字节。
长度/类型: 上图中的长度/类型具有两个意义,当这两个字节的值小于 1536(十六进制为 0x0600)时,代表该以太网中数据段的长度;如果这两个字节的值大于 1536,则表示该以太网中的数据属于哪个上层协议,例如 0x0800 代表 IP 协议(网际协议) 、 0x0806 代表 ARP 协议(地址解析协议)等。
数据:以太网中的数据段长度最小 46 个字节, 最大 1500 个字节。最大值 1500 称为以太网的最大传输单元(MTU, Maximum Transmission Unit),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差,这就像一个十字路口的红绿灯,你可以让绿灯持续亮一小时,但是等红灯的人一定不愿意的。另外还要考虑网络 I/O控制器缓存区资源以及网络最大的承载能力等因素, 因此最大传输单元是由各种综合因素决定的。为了避免增加额外的配置, 通常以太网的有效数据字段小于 1500 个字节。
帧检验序列(FCS, Frame Check Sequence) : 为了确保数据的正确传输, 在数据的尾部加入了 4 个字节的循环冗余校验码(CRC 校验) 来检测数据是否传输错误。 CRC 数据校验从以太网帧头开始即不包含前导码和帧起始界定符。 通用的 CRC 标准有 CRC-8、 CRC-16、 CRC-32、 CRC-CCIT,其中在网络通信系统中应用最广泛的是 CRC-32 标准。
 

四、模块设计

1、mdio_dri模块

`timescale 1ns / 1ps
//
// Company: 
// Engineer: LiSH
// 
// Create Date: 2024/12/02 15:16:47
// Design Name: 
http://www.lryc.cn/news/500314.html

相关文章:

  • PowerShell 脚本实战:解决 GitLab 仓库文件批量重命名难题
  • 数据分析及应用:滴滴出行打车日志数据分析
  • Odoo :一款免费且开源的食品生鲜领域ERP管理系统
  • 请求路径中缺少必需的路径变量[xxxId]
  • 【在Linux世界中追寻伟大的One Piece】HTTP cookie
  • COLA学习之DDD各种术语分析(一)
  • Pygments:高效的语法高亮工具
  • 算法-字符串-43.字符串相乘
  • linux的vdagent框架设计
  • CV工程师专用键盘开源项目硬件分析
  • qtcanpool 知 08:Docking
  • Milvus向量数据库01-基础概念
  • mysql备份数据库
  • NLP与LLM的工程化实践与学习思考 - 写在开头
  • LeetCode322. 零钱兑换(2024冬季每日一题 28)
  • Unix、GNU、BSD 风格中 ps 参数的区别
  • 单片机读写内部flash实现断电数据存储
  • 注意力机制介绍
  • 爬虫运行后数据如何存储?
  • C# 自动自定义截图的内容
  • Java的Stream流:文件处理、排序与串并行流的全面指南
  • [Maven]下载安装、使用与简介
  • 056 WXML+ WXSS+PHP+LW+校园配送商城微信小程序开发与设计 源码 文档 全套资料
  • Python 在同一/或不同PPT文档之间复制幻灯片
  • C#生成CSR(CertificateSigningRequest)和密钥
  • Docker 安装 Oracle创建表空间并导入数据库
  • elementui table子级tree懒加载bug
  • AI与低代码技术融合:如何加速企业智能化应用开发?
  • 【C#】新建窗体文件,Form、UserControl
  • ansible学习笔记之02command模块与shell模块