0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用FPGA实现千兆网TCP/IP协议栈调试记录

FPGA设计论坛 来源:FPGA设计论坛 2026-03-16 15:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

基础信息

FPGA芯片:xc7v690tffg1761-2L

vivado版本:vivado2018.3

测试板卡:优数科技 PCIe-404、som-404 信号处理模块

基本架构

e552c4bc-1ead-11f1-90a1-92fbcf53809c.png

说明

TCP/IP协议栈: 核心的TCP/IP代码,支持ICMP,UDP,TCP,ARP等以太网报文处理。

Tri_mode_eth:xilinx的千兆网IP_CORE,当前使用RGMII与以太网芯片交互。

Mdio_cfg:解决误码问题,在本模块进行RXDLY的微调设置,需要根据不同的板卡确定调整值。

实际测试

基础配置

FPGA_IP地址:192.168.1.30

FPGA_MAC地址:0x1234_5678_9abb

上位机IP地址:192.168.1.26

交互情况

上板测试后,发现FPGA与电脑之间存在报文交互,交互正常。

如下图,arp报文和TCP报文可以正常发送至上位机。

e5b31f42-1ead-11f1-90a1-92fbcf53809c.png

PING异常

在电脑端ping 192.168.1.30地址,发现ping不通,但wireshark抓包发现FPGA与电脑可正常收发包。

e60d11be-1ead-11f1-90a1-92fbcf53809c.png

如下图所示,用wireshark抓取ping报文,发现FPGA对ping是有回复的,但是回复的报文在异常,check_sum错误,回复数据也存在异常。本应该6768696a的数据,变为676a696a,分析是存在1位的错误。

e664909c-1ead-11f1-90a1-92fbcf53809c.pnge6bd4494-1ead-11f1-90a1-92fbcf53809c.png

在抓取了FPGA内部收到的ping报文后,发现从PHY芯片进入FPGA的报文就已经错了,因此怀疑硬件PCB走线问题。更换PCB板卡后,测试正常。在查阅pg051和以太网PHY芯片的数据手册后,决定尝试通过微调RXDLY的值解决问题。误码如何解决详情见MDIO配置RXDLY延迟章节。

通过修改RXDLY后,再次进行ping报文的操作,发现此时是可以ping通的。

e71b4a4e-1ead-11f1-90a1-92fbcf53809c.png

通过wireshark抓包,可以看到此时reply的数据是正常的。

e77c1b4e-1ead-11f1-90a1-92fbcf53809c.pnge7d7435c-1ead-11f1-90a1-92fbcf53809c.png

性能及资源

在解决了误码情况后进行性能测试。

性能

UDP性能测试

千兆网,UDP测试性能在970Mbp左右。

e83516e4-1ead-11f1-90a1-92fbcf53809c.png

TCP性能测试

TCP的4个port测试,性能在960Mbps左右

e88e5db2-1ead-11f1-90a1-92fbcf53809c.png

MDIO配置RXDLY延迟

目标是通过MDIO调节Rx_delay_sel的值解决误码问题,如下图所示,Rx_delay_sel位于EXE_0xA003寄存器的【13:10】bit.每步长为150ps.

e8e7d81a-1ead-11f1-90a1-92fbcf53809c.png

查阅YT8531SH数据手册发现,通过配置0x1E寄存器和0x1F寄存器来实现对扩展寄存器的访问。

e946efd0-1ead-11f1-90a1-92fbcf53809c.png

Pg051使用勘误

PHY地址的确定,xilnx手册中描述phy地址不能为0.但是实测发现当前只有1个phy时,仅当phy地址为0才能读取到正确的数据,其他的phy地址时,读取到的数据全部为0xffff。

e99e8240-1ead-11f1-90a1-92fbcf53809c.png

YT8531SH使用勘误

1.如下图,使用是需要配置0x1E寄存器配置为0xA003,图中显示仅【7:0】bit是可写的,【15:8】bit是仅读的,但实际测试发现,整个0x1E寄存器的16bit都是可读可写的,否则无法将0xA003写入。

e9f90c9c-1ead-11f1-90a1-92fbcf53809c.png

MDIO

寄存器说明

Xilinx通过axi_lite接口配置MDIO需要关注以下寄存器。

ea5113ec-1ead-11f1-90a1-92fbcf53809c.pngeaa9d5fe-1ead-11f1-90a1-92fbcf53809c.pngeb08cb72-1ead-11f1-90a1-92fbcf53809c.pngeb632734-1ead-11f1-90a1-92fbcf53809c.png

MDIO读取测试

进行初步的测试,观察当前使用读取phy芯片的0x0寄存器,回读的数据,为0x1140,与YT8531SH数据手册之中phy芯片的0x0寄存器默认值能对应的。

ebc10c0a-1ead-11f1-90a1-92fbcf53809c.pngec1cfeac-1ead-11f1-90a1-92fbcf53809c.pngec7651e6-1ead-11f1-90a1-92fbcf53809c.png

寄存器控制流程

开启MDIO传输

操作phy芯片的寄存器时必须先开启MDIO传输。

开启MDIO传输
w/r axi_awaddr axi_wdata description
w 0x500 0x58 [6]bit打开MDIO_ENABLE

写0x1E寄存器

给0x1E寄存器写入0xA003表示我们要操作的扩展寄存器是EXT_A003.

给0x1E寄存器写0xA003
w/r axi_awaddr axi_wdata description
w 0x508 0xA003 需要写的数据是0xA003
w 0x504 0x001E_4800 1.[11]bit开启传输
2.[15:14]bit是2'b01开启写流程
3.[20:16]bit TX_REGAD是0x1E
4.[28:24]bit phy地址是0x0

写0x1F寄存器

0x1E寄存器指代要操作的扩展寄存器,0x1F指代给给0x1E指定的扩展寄存器写的值。

给0x1F寄存器写入0x10F1表示,我们要给EXT_A003寄存器写0x10F1.

给0x1F寄存器写0x10F1
w/r axi_awaddr axi_wdata description
w 0x508 0x10F1 需要写的数据是0x10F1
w 0x504 0x001F_4800 1.[11]bit开启传输
2.[15:14]bit是2'b01开启写流程
3.[20:16]bit TX_REGAD是0x1F
4.[28:24]bit phy地址是0x0

通过以上开启MDIO传输,写0x1E和写0x1F寄存器,就可以修改RX_DELAY_SEL的值了。

读寄存器流程

写寄存器和读寄存器都要先开启MDIO的控制传输,此处不再赘叙。

以读0x1E地址的数据为例,说明下读寄存器的命令。

先发送axi写数据,给0x504寄存器写入0x001E_8800,表明要读取0x1E地址的数据。而后通过读取0x50C寄存器获取数据。

读取0x1E寄存器的值
w/r axi_addr axi_wdata description
w 0x504 0x001E_8800 1.[11]bit开启传输
2.[15:14]bit是2'b10开启读流程
3.[20:16]bit TX_REGAD是0x1E
4.[28:24]bit phy地址是0x0
r 0x50c 读取0x50c获取到TX_REGAD寄存器返回的值

参考文档

PG051-tri-mode-eth-mac-en-us-9.0

以太网收发器_YT8531SH

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1664

    文章

    22571

    浏览量

    640754
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1436

    浏览量

    83882
  • 上位机
    +关注

    关注

    28

    文章

    1050

    浏览量

    57427
  • 千兆网
    +关注

    关注

    0

    文章

    37

    浏览量

    10007

原文标题:FPGA(采用RGMII接口)逻辑实现千兆网TCP/IP协议栈调试记录

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    集成硬件TCP/IP协议口芯片

    本司专业提供嵌入式口芯片(MAC+PHY),且芯片集成硬件TCP/IP协议。在没有OS的系统很方便的扩展应用
    发表于 11-10 22:43

    剖析:WIZnet以太核心技术–全硬件TCP/IP协议

    软件协议实现)对比一下:下面是WIZnet以太方案(全硬件协议):从方案结构图就可以看出,
    发表于 04-09 09:44

    如何去简化Simplified TCP/IP协议

    Simplified TCP/IP协议的特点是什么?如何去简化Simplified TCP/IP
    发表于 05-26 07:23

    怎么实现的基于TCP/IP协议的简易服务器?

    本文以SPCE061A为主控制器,DM9000为以太MAC控制器,配合一定的外围电路而实现的基于TCPIP协议
    发表于 05-31 06:34

    基于ARM的TCP/IP协议LwlP是如何实现的?

    嵌入式网络通信系统的硬件平台由哪几个部分组成?基于ARM的TCP/IP协议LwlP是如何实现的?
    发表于 06-04 06:37

    怎么实现嵌入式TCP/IP协议的设计?

    本文阐述在一种异构网络互联——CAN总线与以太互联系统设计方案中嵌入式TCP/IP协议的设计与实现
    发表于 06-07 06:28

    FPGA实现嵌入式TCP/IP通信协议

    研究了嵌入式TCP/IP通信协议在Xilinx FPGA上的实现,介绍了其软硬件的系统组成和原
    发表于 11-17 17:05 9785次阅读
    在<b class='flag-5'>FPGA</b>中<b class='flag-5'>实现</b>嵌入式<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>通信<b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    Microchip TCP/IP协议

    的开发人员可以很容易找到许多Microchip产品的商业和非商业的TC P/IP实现方案。本应用笔记详细说明了Microchip公司自己免费提供的TC P/IP协议
    发表于 04-20 16:04 5次下载
     Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    基于FPGA和嵌入式以太W5500的TCP/IP协议实现设计

    ,基于TCP/IP协议的应用越来越多。FPGA等可编程逻辑器件的快速发展使得以太协议传输越来越
    发表于 07-30 09:36 9569次阅读
    基于<b class='flag-5'>FPGA</b>和嵌入式以太<b class='flag-5'>网</b>W5500的<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b><b class='flag-5'>实现</b>设计

    Microchip TCP/IP精简协议

    闪存 (仅 UDP)和集成 ≥ 16 KB 闪存(TCP/IP)的单片机提供更优化的(占用的闪存和 RAM空间较小)TCP/IP 协议
    发表于 04-01 15:36 19次下载
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>精简<b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    Microchip TCP/IP协议

    。感兴趣的开发人员可以很容易找到许多 Microchip 产品的商业和非商业的TCP/IP 实现方案。本应用笔记详细说明了 Microchip 公司自己免费提供的 TCP/
    发表于 04-02 14:28 23次下载
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    基于FPGATCP/IP协议实现

    基于FPGATCP/IP协议实现说明。
    发表于 04-28 11:19 54次下载

    基于PIC单片机的TCP/IP协议实现

    电子发烧友网站提供《基于PIC单片机的TCP/IP协议实现.ppt》资料免费下载
    发表于 10-20 10:03 2次下载
    基于PIC单片机的<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b><b class='flag-5'>实现</b>

    TCP/IP协议的设计与实现_中文

    电子发烧友网站提供《TCP/IP协议的设计与实现_中文.pdf》资料免费下载
    发表于 07-03 11:28 5次下载

    LwIP协议源码详解—TCP/IP协议实现

    电子发烧友网站提供《LwIP协议源码详解—TCP/IP协议实现.pdf》资料免费下载
    发表于 07-03 11:22 7次下载