分享好友 最新动态首页 最新动态分类 切换频道
FPGA实现以太网(二)、初始化和配置PHY芯片
2024-12-27 03:08

FPGA实现以太网(一)、以太网基础知识


  在前一文FPGA实现以太网(一)、以太网基础知识我们知道,以太网通信中的物理层链路基本上是由 PHY 芯片建立。PHY 芯片有一个配置接口,即 MDIO接口,可以配置 PHY 芯片的工作模式以及获取 PHY 芯片的若干状态信息。PHY芯片里面有很多寄存器,里面存放着PHY芯片的工作模式以及工作状态,比如链接情况、链接速率等等。MAC侧和PHY芯片的链接示意图如下

  整个芯片的内部结构图如下所示

  MDIO协议是一个标准的、广泛使用的协议,因此帧格式都是一致的。以我开发板上的RTL8211芯片手册为例,其帧格式如下

  1. Preamble :32位的前导码;由MAC端发送32个连续的1用于同步PHY芯片。
  2. ST:2位的帧开始信号;由01表示新的一帧信号的到来。
  3. OP:2位的操作码;10表示读,01表示写。
  4. PHYAD :5位的PHY 地址;用于表示与哪个 PHY 芯片通信,因为一个 MAC 上可以连接多个 PHY 芯片。
  5. REGAD:5位的PHY芯片里面的寄存器地址;用于表示操作PHY芯片里的哪一个寄存器。
  6. TA:2位的转向信号;主要是这是寄存器地址和帧的数据字段之间的2位时间间隔,以避免在读事务期间争用。在读命令中,MDIO 在此时由 MAC 驱动改为 PHY 驱动,在第一个 TA位,MDIO 引脚为高阻状态,第二个 TA 位,PHY 将 MDIO 引脚拉低,准备发送数据;在写命令中,不需要 MDIO 方向发生变化,MAC 固定输出 2’b10,随后开始写入数据。
  7. DATA:16 位数据,在读命令中,PHY 芯片将对应的 PHYAD 的 REGAD 寄存器的数据写到 DATA中;在写命令中,PHY 芯片将接收到的 DATA 写入 REGAD 寄存器中。在 DATA 传输的过程中,高位在前,低位在后。
  8. IDLE:1位空闲态;此时 MDIO 为无源驱动,处于高阻状态,但一般用上拉电阻使其上拉至高电平。

  MDIO写时序如下所示

  1. MAC在MDC下降沿发送32位的1。
  2. 然后MAC在MDC下降沿发送01,此时PHY芯片会在时钟上升沿采集,如上图的竖线位置。
  3. 因为是写操作,所以MAC接着发送了操作码01,表示当前为写操作。
  4. 接着MAC发送了5位的PHY地址,例子中的PHY地址为5’b00001。
  5. 然后MAC发送了5位需要操作的PHY芯片里面的寄存器地址,这里是5‘b00000。
  6. 因为是MAC侧写数据,因此发送了2位10的转向码,依然是MAC控制着MDIO总线。
  7. 最后MAC侧发送16位的数据。
  8. 最后MAC将MDIO拉成高阻态。
  1. MAC在MDC下降沿发送32位的1。
  2. 然后MAC在MDC下降沿发送01,此时PHY芯片会在时钟上升沿采集,如上图的竖线位置。
  3. 因为是读操作,所以MAC接着发送了操作码10,表示当前为读操作。
  4. 接着MAC发送了5位的PHY地址,例子中的PHY地址为5’b00001。
  5. 然后MAC发送了5位需要操作的PHY芯片里面的寄存器地址,这里是5‘b00000。
  6. 因为是MAC侧读数据,因此MAC拉高MDIO为高阻态Z,在第二个操作位的0是由PHY拉低的表示响应成功;如果第二个操作位是1,表示操作失败。
  7. 最后PHY侧发送16位的数据,MAC侧在MDC上升沿采集数据。
  8. 最后MAC将MDIO拉成高阻态。

  一个PHY芯片里有很多寄存器,每个寄存器的作用都是不一样的,我们这里只介绍我们用到的寄存器功能。

bit位名称类型 默认描述15 复位 RW,SC01:PHY芯片软复位;0:正常模式(ps:复位后自动返回默认值)14 回环 RW01:开启PHY芯片回环模式;0:关闭PHY芯片回环模式(ps:回环使RGMII从发送端路由到RGMII接收端)13 Speed[0] RW0选择链接速度的低位;speed[1],speed[0]=11:保留;speed[1],speed[0]=10:1000Mbps ;speed[1],speed[0]=01:100Mbps ;speed[1],speed[0]=00:10Mbps 12 自协商启用使能 RW11:开启自协商;0:关闭自协商 11断电 RW01:断电;0:正常工作 10信号隔离 RW01: RGMII接口被隔离;串口管理接口(MDC、MDIO)仍处于活动状态。1:RTL8211忽略TXD[3:0]和TXCTL输入,并在TXC, RXC, RXCTL, RXD[3:0]上呈现高阻抗。0:正常 9重启自协商 RW,SC01:重启自动协商功能; 0:正常(ps:拉高后自动返回到默认值) 8双工模式 RW11:全双工;0:半双工该位仅在强制模式下有效,即NWay未启用。 7碰撞测试 RW01:开启碰撞测试;0:正常 6Speed[1] RW1选择链接速度的最高位(ps:只有自动协商使能不开启的情况下有效) 5单向使能RW01:不考虑链路状态,允许报文发送;0:链路建立时允许报文发送 4,3,2,1,0保留00000
bit位名称类型 默认描述15 100Base-T4 RO0RTL8211不支持100Base-T4,所以这位一直为014 100Base-TX (full) RO11:表示设备在全双工模式下能够执行100Base-TX。0:表示设备在全双工模式下无法执行100Base-TX13 100Base-TX (half)RO11:设备在半双工模式下能够执行100Base-TX。0:设备在半双工模式下无法执行100Base-TX12 10Base-T (full) RO11:设备支持10Base-T全双工模式;0:设备不能在全双工模式下进行10Base-T 1110Base-T (half) RO11:设备在半双工模式下能够执行10Base-T;0:设备在半双工模式下不能执行10Base-T 1010Base-T2 (full) RO0RTL8211不支持100Base-T2,所以这位一直为0 910Base-T2 (half) RO0RTL8211不支持100Base-T2,所以这位一直为0 81000Base-T Extended Status RO11:表示设备支持扩展状态寄存器0x0F(15;0:表示设备不支持扩展状态寄存器0x0F。该寄存器是只读的,总是设为1。 7单向的能力 RO11:表示没有链路连接的PHY不能从RGMII发送。0:表示没有链路连接的PHY不能从RGMII发送 6序言抑制RO1RTL8211总是接受前导被抑制的事务。一直为1 5自动协商完成RO01:自协商进程完成,寄存器5、6、8、10的内容有效。0:自协商进程未完成 4远程故障RC, LH01:检测到远程故障状态(读取清除或复位)。0:未检测到远程故障情况 3自动协商能力RO11:表示设备能进行自协商。0:表示设备不能进行自协商 2链接状态RO01:已链接;0:未链接 1Jabber检测RC, LH01:检测到Jabber条件;0:没有Jabber 0扩展能力RO11:扩展寄存器功能,总是1

  这个寄存器我们只看协商后的速度即可,其它的以后用到了再看

bit位名称类型 默认描述5 链接速度高位 RO011:保留;10:1000Mbps ;01:100Mbps;00:10Mbps 4 链接速度低位 RO011:保留;10:1000Mbps ;01:100Mbps;00:10Mbps

  PHY芯片的复位管脚为PHYRSTB,低电平有效;复位必须持续10ms。

  我们先实现读取PHY的状态,看连接速度、是否链接成功,后续再增加其它的操作,系统框图如下

  驱动代码如下

 
 

5.3.1 写操作仿真

   我们先试一下写操作,假如需要在寄存器(0x00)里面写入数据(0x1234),仿真代码如下

 
 
 
 
 

5.3.2读操作仿真

   接下来我们仿真读操作,仿真代码就改一下读写指令,其它的都不用改,仿真代码如下

 
 
 
 
 

5.4.1 Verilog代码

   控制模块代码如下

 

5.4.2 仿真验证

   我们先把两个模块用顶层连上,然后给模块输入时钟即可,仿真代码如下

 

  打开仿真波形,我们先来看PHY芯片的复位引脚

   我们仿真完后,添加一些信号的ILA进行debug,然后用网线连接开发板,下载程序后打开波形窗口

   下板后我们打开网络适配器看当前已经链接上了,速率为1000Mbps;我们debug读出的0x01寄存器的数据是0x796d对应的2进制是{0111_1001_0110_1101},读取0x00寄存器的数据是0x1140对应的2进制是{0001_0001_0100_0000};我们打开前面的寄存器描述来看

  前面我们已经验证了MDIO的操作时序正确,这次我们添加外部按键来控制整个PHY芯片来实现速率可调,复位可调等操作。

  我们使用外部4个按键,按下可以设置速率10M,100M,1000M以及复位操作;通过四个LED灯来显示,第一个LED亮表示当前速率是10M,第二个LED亮表示当前速率是100M,第三个LED亮表示当前速率是1000M,第四个LED亮表示当前链接成功(ps:如果没有link成功,所有灯都不会亮,系统框图如下

  因为前面MDIO读写操作已经验证成功,所以我们这里直接下板,debug看关键信号就可以了,下板打开debug窗口

最新文章
百度智能云领跑中国“AI+工业互联网”,市场地位与发展能力双维度第一
10月29日,国内权威咨询机构赛迪顾问发布《AI+工业互联网报告简报》显示:百度智能云在2020年中国AI+工业互联网市场竞争格局中位居领导者象限,并在市场地位和发展能力双维度上均列第一。赛迪报告分别从市场地位和发展能力两个维度对中国AI+工
小程序开发一个多少钱?可以更新迭代商城小程序费用参考!
商城类的小程序,整体上费用在1000~9000元不等。商城类小程序,当然也存在9.9元~300元左右报价,甚至在一些社交媒体平台上有人“热心肠”免费帮忙制作、全年免费帮忙维护和搭建,背后实则暗藏欺诈和套路。在2024年制作一个小程序,开源节流
主营产品:VOCs在线监测、环境在线监测系统、TSP在线检测仪、VOCs超标报警仪
  成都环境在线监测系统PM2.5臭氧浓度实时检测根据国家环境部门发布的《环境信息zui网络建设规范》(HJ460-2009)、《环境保护应用软件开发管理技术规范》(HJ622-2011)、《污染源在线自动监控监测系统数据传输标准2122005》、《环境污
百度蜘蛛池租用:最新百度蜘蛛池收录策略解析,提升网站流量与排名的秘诀
百度蜘蛛池租用解析:掌握最新收录策略,优化网站流量与排名。本内容深度剖析蜘蛛池租用技巧,助您高效提升网站在百度搜索中的表现。本文目录导读:了解百度蜘蛛池最新百度蜘蛛池收录策略监测与调整随着互联网的飞速发展,搜索引擎优化(SE
华为MateXs2什么时候上市?华为MateXs2上市时间及价格介绍
华为MateXs2新款折叠屏手机即将上市,那么它的价格是多少呢,上市时间是什么时候呢?现在让小编来给大家详细的介绍一下吧,感兴趣的朋友可以来看看哦,希望能够帮助到大家!华为matexs2这款手机的最低价格将会在16999元起售,符合华为一贯
首先文献管理我给大家推荐三个软件,也是我自己一直在用的,尤其是Zotero和小绿鲸真的用起来超级方便。
大家好!我是le。前面我发了推文研究生最常用的工具推荐,受到了大家的好评,研究生最常用的科研工具推荐,但是也有好多同学留言说是不是很齐全,所以本期我推出最全版本。包含了在科研过程中可能用到的各种工具,希望对大家的学术研究工作
t3特惠车主 2.15.0 更新:2024-12-12备案号:苏ICP备19021948号-3A
t3特惠车主,一般又称T3车主app,t3特选车主app。T3出行是一汽、东风、长安三大国企联合腾讯、阿里等多方知名企业联合投资打造的智慧出行生态平台。我们以“成为值得信赖的出行服务企业”为愿景,以“科技引领 愉快出行”为使命,为网约车司
值得一试的8个最佳AI写代码工具
生成式人工智能为许多新的创新和AI工具打开了闸门。从人工智能图像生成到人工智能编码助手,有太多的东西需要解读,而且我们每天都在学习新的应用。在本文中,我们将专门讨论可以帮助您进行软件开发的人工智能编码工具。您可以使用下面列出
用AI绘画生成超逼真美女写真,跟我一起体验科技之美!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 是否曾幻想过,只需轻轻一点,就能得到一张美丽的女友写真?今天,家人们,我要和大家聊聊如
销售心理学读后感
销售心理学读后感(通用10篇)  细细品味一本名著后,相信大家都有很多值得分享的东西,是时候写一篇读后感好好记录一下了。那么你真的会写读后感吗?以下是小编精心整理的销售心理学读后感,欢迎大家借鉴与参考,希望对大家有所帮助。 
相关文章
推荐文章
发表评论
0评