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

最新文章
白酒电商营销策划方案
电商已经成为了消费者购物的主要方式之一。白酒作为中国文化的重要组成部分,在电商平台上也有着巨大的市场需求。因此,白酒品牌需要制定一套有效的电商营销策划方案,以提升品牌知名度、销售量和用户满意度。白酒品牌需要重视电商平台的品
百度地图关怀版 v1.1.5 官网最新版下载 老年人导航地图app
2021年,工信部启动“互联网应用适老化及无障碍改造专项行动”。很多大大小小的APP,都进行了适老化改造,也就是俗称的老年版。如今,备受期待的改造基本已经完成,而这结果,貌似依旧不太理想。部分开发者特别鸡贼,改来改去,就只是加了
荣科科技涨1.25%,目前股价靠近压力位22.00,谨防压力位处回调,若突破压力位则可能会开启一波上涨行情
12月16日,涨1.25%,成交额9.30亿元,换手率6.53%,总市值139.46亿元。根据AI大模型测算荣科科技后市走势。短期趋势看,该股当前无连续增减仓现象,主力趋势不明显。主力没有控盘。中期趋势方面,上方有一定套牢筹码积压。近期该股有吸筹现
谈谈如何让一个SEO新手“快速成长”
现在SEO技术应用越来越广泛了,不用说,学习seo技术的人也越来越多。对于一个新手要学习要掌握的东西很多,那么如何才能更快的学好呢?其实没有更快学好这样的秘诀,我只能教你如何摆好心态,认真学习,这样你肯定比其他人要学的好学的快。
温州螺丝计算机视觉方案设计实时反馈全+境+到+达
  温州螺丝计算机视觉方案设计实时反馈全+境+到+达——苏州希佑科技有限公司!  提供:  计算机视觉|人工智能检测|人工智能视觉检测|CCD 视觉检测|视觉应用|视觉深度学习|AI人工智能检测|AI人工智能图像处理|AI图像处理|视觉检测|不
谷歌优化实操技巧
在海外市场竞争日趋激烈的今天,特别在的影响下,不少外贸企业的老客户也受到了影响。因此通过线上外贸开发海外客户成了企业的重点。而外贸是诸多推广渠道中效果较好且投入较低的一种方式,那么在网站优化时有哪些技巧呢?下面云程网络为大
绘画与影像的美学共生
  作者:陆颖(浙江师范大学艺术学院讲师)   在电影发展历程中,作为传统视觉艺术形式的绘画与之产生了彼此纠缠的关系,二者如同两条蜿蜒前行的轴线,时而交错、时而并进,在形式创新与内容互动等方面,逐渐消弭了门类艺术的边界,催
苹果手机里的APK格式文件肿么转换成APP
手机下载的文件怎么弄成app  手机下载的文件怎么弄成app,经常玩手机的人对于各项的应用都是需要熟练掌握的,手机上的文件非常多,我们可以随意的进行操作,下面为大家分享手机下载的文件怎么弄成app。  手机下载的文件怎么弄成app1 
谁最“牛”?四款牛津电子词典终极评测
现在的词典机太多了,消费者一般难以选择,但里面如果有牛津或剑桥的词典,会好卖很多。一位售货员告诉记者。情况也确实如此,在小编走访中关村各大卖场商铺时,发现权威辞典成为最有杀伤力的武器。 小编认为,这种情况的出现,与电子词典
阿里巴巴1688开店成本多少?怎么做起来的?
不管在哪个平台上开店,都要事先准备好,尤其是资金方面,毕竟店铺开起来之后,需要用资金的地方还很多,那1688批发网开店要交多少钱?下面来我们就来给大家讲解一下这方面的内容。一、1688批发网开店要交多少钱?阿里诚信通年费为6688元一年
相关文章
推荐文章
发表评论
0评