一、前言

网络通信中的PHY芯片接口种类有很多,之前接触过GMII接口的PHY芯片RTL8211EG。但GMII接口数量较多,本文使用RGMII接口的88E1512搭建网络通信系统。这类接口总线位宽小,可以降低电路成本,在实际项目中应用更广泛。

二、从GMII过度到RGMII

先看看GMII和RGMII主要的接口。

GMII:

发送gmii_tx_clkgmii_tx_d[7:0]gmii_tx_engmii_tx_er

接收gmii_rx_clkgmii_rx_d[7:0]gmii_rx_dvgmii_rx_er

RGMII:

发送tx_clktx_d[3:0]tx_ctrl

接收rx_clkrx_d[3:0]rx_ctrl

为什么接口变少了?首先数据总线从时钟单边沿采样8bit转变为了双边沿采样4bit,从88E1512Datasheet中时序图可以直观看出这一点。

RGMII中上升沿发送一字节数据的低四位,下降沿发送剩余的高四位数据。接收端时钟双边沿采样,因此125MHZ*8bit=125MHZ*4bit*2=1000Mbit/s。至于GMII中的数据有效和数据错误指示信号被ctrl信号复用:tx_ctrl在时钟tx_clk上升沿发送是tx_en,在下降沿发送是tx_en^tx_er。rx_ctrl在时钟rx_clk上升沿接收是rx_dv,在下降沿接收是rx_en^rx_er。综上,RGMII接口引脚数从25个降低到14个。

三、addclockskew

从上边的时序图分析,数据在时钟的边沿变化。因此如果不做额外处理,接收端无法稳定采样。为了解决这一问题,常见的做法是为时钟信号添加延时,使其边沿对准数据总线的稳定区间。可以在控制器端、PCB走线以及PHY芯片内部添加时钟偏移,本文使用最后一种方式实现。

在第三阶段中添加延迟。数据发送方向,FPGA侧的TX_CLK信号不需要额外处理,也就是说FPGA发送与数据边沿对齐的时钟信号。TXD和TX_CLK信号波形如图。

PHY内部会调整TX_CLK,使之能够稳定采样TXD。数据接收方向,由于RX_CLK由PHY提供,PHY芯片直接产生与数据中心对齐的时钟信号。RXD和RX_CLK信号波形如图。

可见,使PHY芯片工作在延迟模式下时,FPGA单不需要添加额外的逻辑来保证稳定采样。发送方向直接将数据驱动时钟作为TX_CLK信号发送,接收方向直接利用RX_CLK对RXD信号采样。

四、系统设计方案

本文使用ZYNQ内部的MAC控制器实现数据链路层功能。但由于其接口为GMII,需要用到GMII_to_RGMIIIPCore转换接口逻辑。上层网络协议则通过LWIP开源协议栈完成。首先配置ZYNQIP,使能ENET1并以EMIO方式引出。

系统硬件结构如图:

在较高速设计场合下,输入输出接口部分很容易出现数据采样不稳定的现象。这时候就要通过Inputdelay,outputdelay约束以及STA来分析设计是否满足稳定采样需求。input/outputdelay是指数据相对于时钟的延迟,只有设置好上述两个数值,综合工具才会往正确的方向优化并给出合理的时序报告。

FPGA与RGMII接口的PHY芯片之间的时序关系按照数据接口同步和数据采样方式属于源同步DDR采样。inputdelay约束对应接收方向,时序关系是中心对齐。outputdelay约束对应发送方向,时序关系是边沿对齐。前者由于很多时候不知道上游器件Tcko信息,会使用示波器测量有效数据窗口来计算。而后者因为是边沿对齐,通过示波器测量抖动窗口并使用skewbasedmethod计算。这部分笔者还没有亲身实践过,若有误欢迎指出。

参考文献

1千兆以太网芯片88E1111RGMII模式的驱动-我心狂野-博客园

2RGMII布线指导RGMIILayoutGuide|无线时代

3RGMII_PHY测试笔记1基于开发板MiS603-X25-whilebreak-电子技术应用-AET-北大中文核心期刊-最丰富的电子设计资源平台

5RGMIIInterfacemingConsideraTIons|EthernetFMC

6ALTERAAN477:DesigningRGMIIInterfaceswithFPGAsandHardCopyASICs

7米联客ESFP1512以太网SFP光电卡教程

本文为csdn博主“FPGA技术江湖”原创文章,在此特别鸣谢。

原文链接:https://blog.csdn.net/qq_40310273/arTIcle/details/106355201

Linux下rgmii接口与fpga相连,FPGA控制RGMII接口PHY芯片88E1512网络通信相关推荐

  1. bios设置识别linux硬盘,linux下如何查看硬盘插在主板那个SATA接口上?梅捷主板SY-A77M3+ bios设置 咋设置啊...

    在上一篇文章中,小编为您详细介绍了关于<联想的主板是哪的?修改技嘉主板bios安装联想win7 64位>相关知识.本篇中小编将再为您讲解标题linux下如何查看硬盘插在主板那个SATA接口 ...

  2. Linux下CGroup进行CPU内存等资源控制

    留存 from: http://www.cnblogs.com/kevingrace/p/5685433.html  and  http://www.cnblogs.com/wang_yb/p/394 ...

  3. Linux下QT软件使用C++语言调用百度AI接口实现人脸库人脸搜索

    参考文档Qt+百度AI实现人脸识别之人脸检测_画茧自缚-CSDN博客 本文档对于以上文档进行精简,参考以上文档实现百度AI人脸库管理-人脸搜索:百度AI接口一通具通,可以以此方法扩展. .h部分 #i ...

  4. PHY芯片88E1512之FPGA

    使用DSP或zynq等配置88E1512只要搞清楚88E1512的寄存器配置,通过调用底层的MDIO驱动函数进行配置即可,而使用FPGA连接88E1512时,需要不仅需要搞清楚88E1512的寄存器配 ...

  5. Linux下使用hiredis库与libevent实现异步接口的I/O复用

    1 前言 之前的一篇文章<Linux下使用hiredis库实现优先级队列>,用的同步的接口实践: 后来遇到一个场景,同时需要处理Redis订阅的消息,又需要处理其他网络socket操作.定 ...

  6. linux 进程 读写锁,linux 下实现高性能读写锁(read/write lock)

    前一篇文章分析了Windows slim read/write lock的工作原理.我们知道它的设计相当精妙,于是我们可以借鉴它的思路来设计linux下的读写锁. 在这个读写锁的设计上,需要注意的是l ...

  7. Linux下抓包工具tcpdump详解

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  8. Linux下简单socket编程

    Linux下简单socket编程 socket的英文翻译是接口.插座的意思,很形象,就相当于将两个台电脑用一根线连起来,线的两头分别是插头,插在两台电脑上,借此实现通信. 两台电脑通信,实际上是这两台 ...

  9. Linux下grep显示前后几行信息

    标准unix/linux下的grep通过下面參数控制上下文 grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行 grep -B 5 foo file 显示foo及前 ...

最新文章

  1. 将数据库服务器的文件D 改名为,MySQL如何更改数据库数据存储目录详解
  2. php设计模式八-----装饰器模式
  3. php 使用table方式导出excel文件
  4. Eclipse+Maven配置
  5. 三星p7510 android 8.0,7510更新到安卓8.0了。。。
  6. intellij idea 忽略文件不提交
  7. php分城市的源码,userlist.php 源代码在线查看 - 城市分类信息,门户网站,我做为地方信息网 资源下载 虫虫电子下载站...
  8. ruby rails
  9. excel快捷键大全常用分享
  10. Fluent 全流程求解多孔介质算例
  11. 【MODIS数据处理#10】例五:用NDVI估算植被覆盖度
  12. 对称数 一个整数,它的各位数字如果是左右对称的,则称这个数是对称数。例如:1234321、123321等。
  13. 如何使用QQ邮箱账号发送加密邮件
  14. python保存表情包_用Python一键保存半佛仙人所有的骚气表情包
  15. 吉林银行2021年上半年经营成果丰硕 支持实体经济能力显著增强
  16. 企业微信认证上网推广的好处
  17. ajax跨域请求(CORS实现)
  18. linux 学习笔记(二)下载中文语言包
  19. 菜鸟站长之家SEO工具大礼包多达上百个小工具
  20. 红米3s进不了recovery_红米3s卡刷教程_红米3s用recovery刷第三方系统包

热门文章

  1. Android 使用ViewPager实现导航页面
  2. mpvue 微信小程序 Image 图片实现宽度100%,高度自适应
  3. mac mongodb 安装
  4. 软件质量的理解 摘录
  5. php20个字,北京人会说不会写的20个字,第一个我就跪了
  6. IDEA全文搜索排除无用的文件夹
  7. android icu4c 7.1编译报错,android4.0编译系统时候遇到的错误集
  8. 四、Dynamic-programming algorithm Dynamic--LCS
  9. owncloud nginx php,nginx配置owncloud记录。
  10. iis5.0+php5.0+mysql5.0配置完全手册_IIS5.0+PHP5.0+MySQL5.0配置完全手册