一,10G Ethernet Subsystem IP原理和硬件定义

uiudp_stack是一个“黑盒子”负责处理 ARP 以及 UDP IP 通信协议,上层协议是用户实际收发的有效数据部分,“10G Ethernet Subsystem IP"核负责处理以太网数据通过GTX高速串行接口传输。

SFP 屏蔽笼插入千兆 SFP 转 RJ45 电口或者光模块,SFP 信号定义如下图:

二,10G Ethernet Subsystem IP 配置

1,Ethernet Standard

2,MAC Options:将 AXI-Lite 配置接口时钟频率设置为 100MHz,当然用户也可以自由选择其他的频率。不使用参数统计和优先级流量控制功能。

3,PCS/[MA Options:将GTX动态重配置端口DRP的时钟设为 100MHz,Debug功能不作使用。

时钟频率设置也仅对单独综合有效,详见下面英文说明

4,IEEE1588 Options:1588 同步功能一般针对某些需要进行网络时间同步的场合,如音视频传输。仅用作数据传输时无需使用,因此这里不启用 1588 功能。

5,Shared Logic:

(1)当设计中只包含 1 个此 IP 核时,应当将可共享的逻辑资源和硬件模块包含在 IP 核内部。

(2)当设计中需要同时使用若干个此 IP 核,且所使用的 GTX 均位于同一个 GTX BANK 中。其中 1 个 IP 核内部的共享资源(MMCM、QUADPLL、GTX 参考时钟等)便可以满足所有 IP 核的需求,即选择将共享资源包含在 IP核内部。其余 IP 核将这些共享资源从其内部剔除,即选择将共享资源包含在 example 中。

6,多IP资源共享:在设计中同时使用 3 个 IP 核时,3 个 IP 核之间的共享资源信号连接

三,用户接口:

1,AXI-Stream 发送接口

用户通过AXI-Stream 接口,向 IP 核传输所需要发送的以太网数据包。其中,tx_ifg_delay 用于设置发送间隔,一般都默认采用最小间隔,将 tx_ifg_delay 置为 0 即可。

2,AXI-Stream 接收接口
用户通过AXI-Stream接口接收从IP核输出的以太网数据包。需要注意的是,接收接口没有使用 AXI-Stream 标准中的 tready 信号。这代表接收端需要具备持续接收数据的能力,防止出现数据来不及接收产生溢出。

3,IP 与光模块之间的连接信号及接法

4, 接收发送数据统计信号

5, AXI-Lite接口 :用于配置和读取 IP 核内部的寄存器。AXI-Lite 接口不仅可以配置 IP 核 MAC 部分的寄存器,还可以直接通过 MAC 部分的 MDIO 接口配置 PCS/PMA 部分的寄存器。

6,使用 AXI-Stream DATA FIFO 与 IP 核的 AXI-Stream 接口,作为数据的缓冲。

四,使用流程:

Packet mode 是指 FIFO 持续缓存 AXI-Stream 接口输入的数据直至输入端 tlast 信号拉高,即存满一个完整的数据包时,才开始在 AXI-Stream 输出端口向外输出数据。需要注意的是,启用 Packet mode 时,FIFO 必须工作于同步模式。对于发送路径,这样做是为了防止 FIFO 被 IP 核读空。对于接收路径,是由于米联的 UDP IP 协议栈要求 1 个数据包的 tvalid 信号在数据包持续期间必须恒为 1。

1,GTX 的输入时钟为核心板的 125M(udp 1Gbps 通信使用)和底板的可编程时钟(默认 156.25M udp 10Gbps 通信)。其余开发板都需要通过设置模式开关输出 125M 或者156.25M。

DMA中Enable Packet Mode选yes

2,例化

input               clk,
        input               gtrefclk0_p,
        input               gtrefclk0_n,    
        
        input                  sfp_rx_p,
        input                  sfp_rx_n,        
        output wire            sfp_tx_p,
        output wire         sfp_tx_n,        
        output wire         sfp_tx_disable,

wire           app_rx_data_valid;
wire [63:0]    app_rx_data;
wire [7:0]    app_rx_data_keep;
wire         app_rx_data_last;
wire [15:0] app_rx_data_length;
wire [15:0] app_rx_port_num;

wire        udp_tx_ready;
wire        app_tx_ack;

reg         app_tx_data_request;
reg         app_tx_data_valid;
wire [63:0]  app_tx_data;
reg  [7:0]  app_tx_data_keep;
reg         app_tx_data_last;

reg         app_tx_data_read;

reg [11:0]  fifo_read_data_cnt;
reg [1:0]   STATE;

wire            mmcm_locked;
reg [31:0]      delay_cnt;
wire            ip_rx_error;
wire            dst_ip_unreachable;

wire            mac_tx_valid;
wire [63:0]      mac_tx_data;
wire [7:0]      mac_tx_keep;
wire            mac_tx_ready;
wire               mac_tx_last;
wire            mac_tx_user;
        
wire             mac_rx_valid;
wire [63:0]        mac_rx_data;
wire [7:0]       mac_rx_keep;
wire              mac_rx_last;
wire              mac_rx_user;

// AXI Lite config I/F
wire                 s_axi_aclk;
wire                 s_axi_aresetn;
wire       [10:0]    s_axi_awaddr;
wire                 s_axi_awvalid;
wire                 s_axi_awready;
wire       [31:0]    s_axi_wdata;
wire                 s_axi_wvalid;
wire                 s_axi_wready;
wire      [1:0]      s_axi_bresp;
wire                 s_axi_bvalid;
wire                 s_axi_bready;
wire       [10:0]    s_axi_araddr;
wire                 s_axi_arvalid;
wire                 s_axi_arready;

wire      [31:0]     s_axi_rdata;
wire      [1:0]      s_axi_rresp;
wire                 s_axi_rvalid;
wire                 s_axi_rready;

udp_ip_protocol_stack udp_ip_protocol_stack
(.LOCAL_PORT_NUM     (16'hf00e),.LOCAL_IP_ADDRESS   (32'hc0a80f01),.LOCAL_MAC_ADDRESS  (48'h000a3500010f),.ICMP_EN            (1'b1),.ARP_REPLY_EN       (1'b1),.ARP_REQUEST_EN     (1'b1),.ARP_TIMEOUT_VALUE  (30'd20_000_000),.ARP_RETRY_NUM        (4'd2),.core_clk              (coreclk),  .reset                  (core_reset), .udp_tx_ready         (udp_tx_ready), .app_tx_ack         (app_tx_ack), .app_tx_request       (app_tx_data_request), //app_tx_data_request.app_tx_data_valid  (app_tx_data_valid),    .app_tx_data        (app_tx_data),.app_tx_data_keep   (app_tx_data_keep),.app_tx_data_last   (app_tx_data_last),    .app_tx_data_length (udp_rx_data_length), .app_tx_dst_port      (16'hf00f), .ip_tx_dst_address (32'hc0a80f02), .app_rx_data_valid (app_rx_data_valid), .app_rx_data           (app_rx_data),.app_rx_data_keep     (app_rx_data_keep),.app_rx_data_last        (app_rx_data_last),.app_rx_data_length      (app_rx_data_length), .app_rx_port_num      (app_rx_port_num),.udp_rx_error           (udp_rx_error),   .mac_tx_data_valid      (mac_tx_valid),.mac_tx_data         (mac_tx_data),.mac_tx_keep          (mac_tx_keep),.mac_tx_ready         (mac_tx_ready),.mac_tx_last         (mac_tx_last),.mac_tx_user          (mac_tx_user),      .mac_rx_data_valid      (mac_rx_valid),.mac_rx_data         (mac_rx_data),.mac_rx_keep          (mac_rx_keep),.mac_rx_last          (mac_rx_last),.mac_rx_user          (1'b0),.ip_rx_error            (ip_rx_error),  .dst_ip_unreachable     (dst_ip_unreachable));

ZYNQ使用10G Ethernet Subsystem万兆网光通信相关推荐

  1. FPGA基于SFP光口实现10G万兆网UDP通信 10G Ethernet Subsystem替代网络PHY芯片 提供工程源码和技术支持

    目录 1.前言 2.我这里已有的UDP方案 3.详细设计方案 4.vivado工程详解 5.上板调试验证并演示 6.福利:工程代码的获取 1.前言 目前网上的fpga实现udp基本生态如下: 1:ve ...

  2. 10G_Ethernet_02 10G Ethernet Subsystem 简介

    由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:  https://blog.csdn.net/qq_33486907/ ...

  3. 【10G以太网】10G Ethernet Subsystem 学习记录

    10G Ethernet Subsystem 学习记录 说明:本文摘自 V3学院 尤老师的培训班笔记,仅用于个人学习,不用于任何商业用途. 满足个人在公交车上或者其他需要不得不等待的时间段内学习的需要 ...

  4. 万兆网和千兆网ubuntu环境下的配置

    第一个是万兆网,没有连线,第二个是千兆网,连线了. scutech@infokist-arm:~$ ethtool enp130s0f1 Settings for enp130s0f1:Support ...

  5. Ubuntu节点的万兆网搭建

    之前用千兆网跑MXNet的分布式,由于训练数据量比较大并且通信比较频繁,网络通信开销太大,训练速度非常慢,正好实验室有闲置的万兆网设备(万兆网卡.万兆交换机),因此打算给各个工作节点配上万兆网卡(Ch ...

  6. Baumer工业相机堡盟工业相机如何使用BGAPI SDK解决两个万兆网相机的同步采集不同步的问题

    Baumer工业相机堡盟工业相机如何使用BGAPI SDK解决两个万兆网相机的同步采集不同步的问题 Baumer工业相机 Baumer工业相机图像数据转为Bitmap的技术背景 Baumer同步异常 ...

  7. Baumer万兆网工业相机堡盟相机Gige网口连接PC如何实现最大帧率

    项目场景: Baumer堡盟工业相机Gige相机通过合适网线和电脑进行连接,刚开始连接时除了IP需要设置正确外,还需要对相机连接的网卡进行相关参数设置,保证项目相机的稳定.高速.可靠的运行. 但是有的 ...

  8. 10G_Ethernet_04 10G Ethernet Subsystem IP 的快速验证(万兆以太网IP的快速验证)

    由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:  https://blog.csdn.net/qq_33486907/ ...

  9. 万兆网SFP/SFP+设计

    SFP 是将万兆/千兆位电信号转换为光信号的接口器件,可以热插拔使用.简单的理解为GBIC的升级版本. SFP收发器有多种不同的发送和接收类型,用户可以为每个链接选择合适的收发器,以提供基于可用的光纤 ...

最新文章

  1. NOIP 2017 d2t2 70points
  2. 用JSP实现学生查询
  3. Leetcode题库796.旋转字符串(C++实现)
  4. mysql innodb表移植_mysql Innodb引擎独立表空间下通过复制.ibd文件快速迁移数据文件...
  5. easyui控件事件监听委托给jquery事件监听,keyup取最新值问题
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上二手车交易系统
  7. 嵌入式Linux内核开发工程师必须掌握的三十道题
  8. linux curl获取头部信息,curl 命令如何获取 http header 返回的响应消息头
  9. @param注解什么意思_你对Java注解真的理解吗?
  10. 高通骁龙各代处理器解析
  11. 【bat】做个一键连接网络打印机的bat
  12. pojo和vo的含义
  13. 抖音互关源码 E4A源码含数据库后台程序搭建可用
  14. 卸载抖音和微博的一天……
  15. Xcode 6系列百度网盘地址,包含Xcode 6.2以及Xcode 6.3
  16. 联想计算机怎么添加打印机,电脑和联想打印机连接不上怎么办啊
  17. 将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
  18. 金融业信贷风控算法4-python的入门和介绍
  19. 前端面试vue (下)
  20. PDF转Word方法小罗列

热门文章

  1. “小熊电器”IPO获批,其后或再难有小家电企业上市
  2. vlookup使用步骤_vlookup怎么用详细步骤(vlookup函数的使用方法是什么)
  3. UE4 Chaos代码结构剖析
  4. 成立游戏工作室必须具备哪些条件?
  5. Ulink仿真器erase flash failed
  6. 【知识兔】Word教程小技巧之如何实现Word中的表格求和
  7. android地图位置应用-----中国城市GPS经纬度汇总
  8. 【考研数据】三.2022年BJTU计算机学院考研录取数据分析
  9. 直播带货app源码+搭建教程
  10. 第五代小冰发布:是时候与人类谈谈未来了