分享好友 最新动态首页 最新动态分类 切换频道
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窗口

最新文章
Python爬虫教程——7个爬虫小案例(附源码)_爬虫实例
本文介绍了7个Python爬虫小案例,包括爬取豆瓣电影Top250、猫眼电影Top100、全国高校名单、中国天气网、当当网图书、糗事百科段子和新浪微博信息,帮助读者理解并实践Python爬虫基础知识。包含编程资料、学习路线图、源代码、
运动会活动策划书
~  时间一溜烟儿的走了,工作已经告一段落了,前方等待着我们的是新工作目标和挑战,想必现在的你有必要写一写策划书了。是不是无从下笔、没有头绪?下面是我收集整理的运动会活动策划书,仅供参考,欢迎大家阅读。    一、活动前言:
比漫熊漫画,比漫熊漫画安卓最新版,比漫熊漫画下载
比漫熊漫画是一款非常好用的小说漫画软件,比漫熊漫画功能丰富,确实在多个方面为漫画爱好者们提供了优质的阅读体验,用户可以根据类型地区作者等多种方式进行筛选,比漫熊漫画允许用户根据自己的需求切换各种漫画资源源,轻松找到自己喜欢
跨境电商独立站建站平台解析,独立站如何运营?独立站优势
越来越多的人涌入跨境电商这行业,无论是大平台还是独立站,蜂拥而至的小白,新手,各种开车,各种上路,但是大家真的了解独立站这个行业麽?或者说,怎么找到未来自己的第一块根据地呢?那么咱就说说,你只要干独立站,就怎么都绕不开的这
虚拟微博热搜生成器
虚拟微博热搜生成器是一款可以让用户随时登上热门排行榜的APP,当然这是虚假的,微博是不少用户喜欢使用的一款软件,这款APP的界面与微博非常的相似,可以说一模一样,将自己喜欢的内容填充进去就可以打造一个热门排行榜,恶搞一下好友是非
问道加盟
  【市场优势】  1、媒体,网络等多方面的品牌宣传;  2、全国各地设置分支机构及战略合作伙伴,统一的品牌及企业文化导入;  3、全国各地定期举办线下交流会;  4、成为福建游龙网络科技有限公司的战略合作伙伴,共享旗下产品资
这款AI论文写作在线工具助你一臂之力!论文生成不再难
​​创新性强:开启学术研究的新思路时间对于研究者来说无比珍贵,千笔AI论文深知这一点。它通过高效的选题建议生成机制,大大缩短了研究者在选题阶段的时间投入。只需输入关键词、研究领域或基本要求,千笔AI论文就能在短时间内提供多个精
雨人Ghost Win7x86 SP1无精简纯净版
雨人Ghost Win7x86 SP1无精简纯净版_C8.32***************************GHOST版的迅捷 安装版的品质 百分百完整 真正的纯净雨人Ghost Win7x86 SP1无精简纯净版_C8.32 ------智能识别品牌机兼容机,自动激活……****************************
鹤岗网站排名优化,策略与实践,鹤岗seo
鹤岗网站排名优化策略与实践,包括关键词研究、内容优化、链接建设等。通过深入了解用户需求和搜索习惯,选取合适的关键词,提高网站在搜索引擎中的排名。注重网站内容的质量和原创性,定期更新有价值的内容,吸引用户访问和分享。积极寻求
超逼真美女写真生成全攻略,教你用AI轻松制作完美作品!
在社交媒体蓬勃发展的时代,我们似乎每天都被美丽的图片和视频包围。然而,这些令人心动的写真到底是如何生成的呢?是否有一种工具可以帮助我们轻松制作出逼真而富有魅力的美女写真?答案是肯定的!通过画画、拍照、修图,我们可以用AI技术
相关文章
推荐文章
发表评论
0评