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

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

3天内不再提示

处理以太网帧以及IP,UDP和ARP的模块

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-06-30 09:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


基本介绍:

千兆位和10G数据包处理(8位和64位数据路径)的以太网相关组件的集合。包括用于处理以太网帧以及IP,UDP和ARP的模块,以及用于构建完整UDP/IP堆栈的组件。包括用于千兆位和10G的MAC模块,一个10G PCS/ PMA PHY模块以及一个10G组合MAC/PCS/PMA模块。还包括带有智能总线协同仿真端点的完整MyHDL测试平台。

仅对于IP和ARP支持,请使用ip_complete(1G)或ip_complete_64(10G)。

对于UDP,IP和ARP支持,请使用udp_complete(1G)或udp_complete_64(10G)。

顶层千兆和10G MAC模块是eth_mac_ *,具有各种接口,并且带有/不带有FIFO。顶层10G PCS/PMA PHY模块为eth_phy_10g。顶层10G MAC/ PCS/PMA组合模块为eth_mac_phy_10g。

通用信号:

    tdata   : Data (width generally DATA_WIDTH)
    tkeep   : Data word valid (width generally KEEP_WIDTH, present on _64 modules)
    tvalid  : Data valid
    tready  : Sink ready
    tlast   : End-of-frame

tuser : Bad frame (valid with tlast & tvalid)

文件如下:

    rtl/arp.v                       : ARP handling logic
    rtl/arp_64.v                    : ARP handling logic (64 bit)
    rtl/arp_cache.v                 : ARP LRU cache
    rtl/arp_eth_rx.v                : ARP frame receiver
    rtl/arp_eth_rx_64.v             : ARP frame receiver (64 bit)
    rtl/arp_eth_tx.v                : ARP frame transmitter
    rtl/arp_eth_tx_64.v             : ARP frame transmitter (64 bit)
    rtl/eth_arb_mux.py              : Ethernet frame arbitrated multiplexer generator
    rtl/axis_eth_fcs.v              : Ethernet FCS calculator
    rtl/axis_eth_fcs_64.v           : Ethernet FCS calculator (64 bit)
    rtl/axis_eth_fcs_insert.v       : Ethernet FCS inserter
    rtl/axis_eth_fcs_check.v        : Ethernet FCS checker
    rtl/axis_gmii_rx.v              : AXI stream GMII/MII receiver
    rtl/axis_gmii_tx.v              : AXI stream GMII/MII transmitter
    rtl/axis_xgmii_rx_32.v          : AXI stream XGMII receiver (32 bit)
    rtl/axis_xgmii_rx_64.v          : AXI stream XGMII receiver (64 bit)
    rtl/axis_xgmii_tx_32.v          : AXI stream XGMII transmitter (32 bit)
    rtl/axis_xgmii_tx_64.v          : AXI stream XGMII transmitter (64 bit)
    rtl/eth_arb_mux.v               : Ethernet frame arbitrated multiplexer
    rtl/eth_axis_rx.v               : Ethernet frame receiver
    rtl/eth_axis_rx_64.v            : Ethernet frame receiver (64 bit)
    rtl/eth_axis_tx.v               : Ethernet frame transmitter
    rtl/eth_axis_tx_64.v            : Ethernet frame transmitter (64 bit)
    rtl/eth_demux.v                 : Ethernet frame demultiplexer
    rtl/eth_mac_1g.v                : Gigabit Ethernet GMII MAC
    rtl/eth_mac_1g_fifo.v           : Gigabit Ethernet GMII MAC with FIFO
    rtl/eth_mac_1g_gmii.v           : Tri-mode Ethernet GMII/MII MAC
    rtl/eth_mac_1g_gmii_fifo.v      : Tri-mode Ethernet GMII/MII MAC with FIFO
    rtl/eth_mac_1g_rgmii.v          : Tri-mode Ethernet RGMII MAC
    rtl/eth_mac_1g_rgmii_fifo.v     : Tri-mode Ethernet RGMII MAC with FIFO
    rtl/eth_mac_10g.v               : 10G Ethernet XGMII MAC
    rtl/eth_mac_10g_fifo.v          : 10G Ethernet XGMII MAC with FIFO
    rtl/eth_mac_mii.v               : Ethernet MII MAC
    rtl/eth_mac_mii_fifo.v          : Ethernet MII MAC with FIFO
    rtl/eth_mac_phy_10g.v           : 10G Ethernet XGMII MAC/PHY
    rtl/eth_mac_phy_10g_fifo.v      : 10G Ethernet XGMII MAC/PHY with FIFO
    rtl/eth_mac_phy_10g_rx.v        : 10G Ethernet XGMII MAC/PHY RX with FIFO
    rtl/eth_mac_phy_10g_tx.v        : 10G Ethernet XGMII MAC/PHY TX with FIFO
    rtl/eth_mux.v                   : Ethernet frame multiplexer
    rtl/gmii_phy_if.v               : GMII PHY interface
    rtl/iddr.v                      : Generic DDR input register
    rtl/ip.v                        : IPv4 block
    rtl/ip_64.v                     : IPv4 block (64 bit)
    rtl/ip_arb_mux.v                : IP frame arbitrated multiplexer
    rtl/ip_complete.v               : IPv4 stack (IP-ARP integration)
    rtl/ip_complete_64.v            : IPv4 stack (IP-ARP integration) (64 bit)
    rtl/ip_demux.v                  : IP frame demultiplexer
    rtl/ip_eth_rx.v                 : IPv4 frame receiver
    rtl/ip_eth_rx_64.v              : IPv4 frame receiver (64 bit)
    rtl/ip_eth_tx.v                 : IPv4 frame transmitter
    rtl/ip_eth_tx_64.v              : IPv4 frame transmitter (64 bit)
    rtl/ip_mux.v                    : IP frame multiplexer
    rtl/lfsr.v                      : Generic LFSR/CRC module
    rtl/oddr.v                      : Generic DDR output register
    rtl/mii_phy_if.v                : MII PHY interface
    rtl/rgmii_phy_if.v              : RGMII PHY interface
    rtl/ssio_ddr_in.v               : Generic source synchronous IO DDR input module
    rtl/ssio_ddr_in_diff.v          : Generic source synchronous IO DDR differential input module
    rtl/ssio_ddr_out.v              : Generic source synchronous IO DDR output module
    rtl/ssio_ddr_out_diff.v         : Generic source synchronous IO DDR differential output module
    rtl/ssio_sdr_in.v               : Generic source synchronous IO SDR input module
    rtl/ssio_sdr_in_diff.v          : Generic source synchronous IO SDR differential input module
    rtl/ssio_sdr_out.v              : Generic source synchronous IO SDR output module
    rtl/ssio_sdr_out_diff.v         : Generic source synchronous IO SDR differential output module
    rtl/udp.v                       : UDP block
    rtl/udp_64.v                    : UDP block (64 bit)
    rtl/udp_arb_mux.v               : UDP frame arbitrated multiplexer
    rtl/udp_checksum_gen.v          : UDP checksum generator
    rtl/udp_checksum_gen_64.v       : UDP checksum generator (64 bit)
    rtl/udp_complete.v              : UDP stack (IP-ARP-UDP)
    rtl/udp_complete_64.v           : UDP stack (IP-ARP-UDP) (64 bit)
    rtl/udp_demux.v                 : UDP frame demultiplexer
    rtl/udp_ip_rx.v                 : UDP frame receiver
    rtl/udp_ip_rx_64.v              : UDP frame receiver (64 bit)
    rtl/udp_ip_tx.v                 : UDP frame transmitter
    rtl/udp_ip_tx_64.v              : UDP frame transmitter (64 bit)
    rtl/udp_mux.v                   : UDP frame multiplexer
    rtl/xgmii_baser_dec_64.v        : XGMII 10GBASE-R decoder
    rtl/xgmii_baser_enc_64.v        : XGMII 10GBASE-R encoder
    rtl/xgmii_deinterleave.v        : XGMII data/control de-interleaver
    rtl/xgmii_interleave.v          : XGMII data/control interleaver

AXI Stream 接口示例:

与标头数据一起传输

                  __    __    __    __    __    __    __
    clk        __/  \__/  \__/  \__/  \__/  \__/  \__/  \__
               ______________                   ___________
    hdr_ready                \_________________/
                        _____ 
    hdr_valid  ________/     \_____________________________
                        _____
    hdr_data   XXXXXXXXX_HDR_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                        ___________ _____ _____
    tdata      XXXXXXXXX_A0________X_A1__X_A2__XXXXXXXXXXXX
                        ___________ _____ _____
    tkeep      XXXXXXXXX_K0________X_K1__X_K2__XXXXXXXXXXXX
                        _______________________
    tvalid     ________/                       \___________
                              _________________
    tready     ______________/                 \___________
                                          _____
    tlast      __________________________/     \___________

    tuser      ____________________________________________

两个字节的传输,每个字节后都有接收器暂停

              __    __    __    __    __    __    __    __    __
    clk    __/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__
                    _____ _________________
    tdata  XXXXXXXXX_D0__X_D1______________XXXXXXXXXXXXXXXXXXXXXXXX
                    _____ _________________
    tkeep  XXXXXXXXX_K0__X_K1______________XXXXXXXXXXXXXXXXXXXXXXXX
                    _______________________
    tvalid ________/                       \_______________________
           ______________             _____             ___________
    tready               \___________/     \___________/
                          _________________
    tlast  ______________/                 \_______________________

    tuser  ________________________________________________________

两个背对背数据包,无暂停

              __    __    __    __    __    __    __    __    __
    clk    __/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__
                    _____ _____ _____ _____ _____ _____
    tdata  XXXXXXXXX_A0__X_A1__X_A2__X_B0__X_B1__X_B2__XXXXXXXXXXXX
                    _____ _____ _____ _____ _____ _____
    tkeep  XXXXXXXXX_K0__X_K1__X_K2__X_K0__X_K1__X_K2__XXXXXXXXXXXX
                    ___________________________________
    tvalid ________/                                   \___________
           ________________________________________________________
    tready
                                _____             _____
    tlast  ____________________/     \___________/     \___________

    tuser  ________________________________________________________

测试文件:

    tb/arp_ep.py         : MyHDL ARP frame endpoints
    tb/axis_ep.py        : MyHDL AXI Stream endpoints
    tb/baser_serdes.py   : MyHDL 10GBASE-R SERDES endpoints
    tb/eth_ep.py         : MyHDL Ethernet frame endpoints
    tb/gmii_ep.py        : MyHDL GMII endpoints
    tb/ip_ep.py          : MyHDL IP frame endpoints
    tb/mii_ep.py         : MyHDL MII endpoints
    tb/rgmii_ep.py       : MyHDL RGMII endpoints
    tb/udp_ep.py         : MyHDL UDP frame endpoints
    tb/xgmii_ep.py       : MyHDL XGMII endpoints

测试:

运行包含的测试平台需要使用cocotb,cocotbext-axi,cocotbext-eth和Icarus Verilog。可以直接使用pytest(需要cocotb-test),通过tox或通过cocotb makefile进行pytest来运行测试平台。

审核编辑 :李倩


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

    关注

    41

    文章

    5923

    浏览量

    179506
  • Verilog
    +关注

    关注

    30

    文章

    1370

    浏览量

    114123
  • 数据包
    +关注

    关注

    0

    文章

    269

    浏览量

    25422

原文标题:以太网IP核代码(verilog)

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RDMA设计6:IP架构2

    中传输层、网络层及网络接口层功能。首先,该模块接收来自融合以太网协议栈的网络包,并为其逐层添加UDPIP 及 ETH 头部,使其成为完整的网络包后发送至 CMAC 集成块。其次,该
    发表于 11-26 10:24

    以太网通讯在FPGA上的实现

    协议的载体,IP协议规定了数据传输时的基本单元和格式。其位于以太网MAC格式的数据段,IP协议内容由IP首部和数据字段组成。所有的TCP、
    发表于 10-30 07:45

    通信模块(4G / 以太网)断联除了模块坏还有哪些原因?

    通信模块(4G / 以太网)断联是典型的 “多环节故障”,除模块硬件损坏外,问题可能出在 物理连接、供电、信号环境、配置参数、协议兼容、外部干扰、系统软件 等多个链路,需按 “从底层到上层、从局部到
    的头像 发表于 09-23 11:15 1737次阅读
    通信<b class='flag-5'>模块</b>(4G / <b class='flag-5'>以太网</b>)断联除了<b class='flag-5'>模块</b>坏还有哪些原因?

    以太网模块被忽视的角落 #电磁兼容EMC #电子工程师 #电子元器件 #磁珠 #滤波电容 #以太网

    以太网
    深圳市韬略科技有限公司
    发布于 :2025年07月25日 17:35:35

    【RK3568+PG2L50H开发板实验例程】FPGA部分 | 以太网传输实验例程

    /100/1000 以太网端口。使用时需要用到光电转换模块,通过网线连接电脑的口和光电转换模块的电口即可完成通信。 2.2. 以太网协议简
    发表于 07-10 10:57

    以太网入门:从零开始,掌握以太网基础知识!

    以太网作为现代通信技术的基石,其重要性不言而喻。无论是日常网络应用,还是AI对高速大带宽网络的需求,以太网都扮演着不可或缺的角色。本文将从零开始,带您了解以太网的基础知识,帮助您快速入门。什么是
    的头像 发表于 06-09 14:00 4117次阅读
    <b class='flag-5'>以太网</b>入门:从零开始,掌握<b class='flag-5'>以太网</b>基础知识!

    双通道CAN转以太网#CAN转以太网#三格电子

    以太网
    三格电子科技
    发布于 :2025年05月12日 13:17:05

    串口转以太网芯片选型指南:2025十大以太网模块品牌盘点与应用方案解析

    ,不同品牌的以太网模块在性能、稳定性、功能支持等方面存在差异,如何选择合适的芯片成为了众多研发工程师关注的重点。 本文基于权威数据平台的分析,盘点了2025年十大主流以太网模块品牌,并
    的头像 发表于 04-09 15:30 1645次阅读

    生成的以太网不是IEEE802.1CB (FRER)中的UDP/0x800,为什么?

    IND_REC_TIMEOUT = 0 GENSEQNUM = 0 我已经配置了这个 但通常,当我不配置它时,我将传输一条 CAN 消息,该消息将被转换为 UDP 以太网数据包,而在另一个交换机中
    发表于 03-26 08:01

    为什么无法通过demo_feature_L2_bridge_vlan上的PFE转发VLAN标记的以太网数据包?

    SerDes/SJ 交换机配置的 BSP 默认配置是否正确 - 尝试在 PC 之间发送数据包:ping 或 UDP 数据包(带有硬编码的 MAC/IP 地址) - 验证发送到 S23G 板的以太网数据包是否带有 VLAN 标记
    发表于 03-25 08:05

    广成科技CAN转以太网模块的作用和应用

    CAN转以太网模块是一类能够将CAN总线数据转换为以太网数据的设备,通常用于实现CAN总线与以太网总线之间的互联互通。在智能锁柜和智能文件交换箱中,CAN转
    的头像 发表于 03-20 13:58 1010次阅读
    广成科技CAN转<b class='flag-5'>以太网</b><b class='flag-5'>模块</b>的作用和应用

    工业与IT网络中的以太网数据:格式与用途全解析

    以太网数据是计算机网络通信的基本单位,在不同的应用场景中,它的格式有所不同。从互联网和工业自动化常见的以太网 II ,到 VLAN 组网中广泛使用的 IEEE 802.1Q
    的头像 发表于 03-14 17:35 1271次阅读
    工业与IT网络中的<b class='flag-5'>以太网</b>数据<b class='flag-5'>帧</b>:格式与用途全解析

    广成科技CAN FD转以太网模块的应用场景

    CAN FD转以太网模块在多个领域和项目中都有广泛应用,主要用于实现CAN FD总线与以太网之间的数据转换和通信。
    的头像 发表于 02-17 10:38 865次阅读

    ALINX发布100G以太网UDP/IP协议栈IP

    ALINX近日宣布,基于AMD 100G以太网MAC IP,成功开发出全新的100G以太网UDP/IP协议栈
    的头像 发表于 01-07 11:25 1176次阅读

    新思科技推出超以太网与UALink IP解决方案

    近日,全球领先的电子设计自动化(EDA)和半导体IP供应商新思科技(Synopsys, Inc.)宣布了一项重大技术创新——推出业界首款超以太网IP和UALink IP解决方案。这一创
    的头像 发表于 12-25 11:12 1069次阅读