FPGA无网络芯片实现千兆TCP/IP协议栈,基于1G/2.5G Ethernet PCS/PMA or SGMII方案,提供18套工程源码和技术支持

目录

  • 1、前言
    • 工程概述
    • 免责声明
  • 2、相关方案推荐
    • 我这里已有的以太网方案
    • 网络芯片版本-->千兆网 TCP-->服务器 方案
    • 网络芯片版本-->千兆网 TCP-->客户端 方案
    • 10G 万兆网 TCP-->服务器+客户端 方案
    • 1G/2.5G Ethernet PCS/PMA or SGMII 方案
    • AXI 1G/2.5G Ethernet Subsystem 方案
  • 3、详细设计方案
    • 设计原理框图
    • 测试用PC端电脑
    • SFP光口转RJ45电口
    • 1G/2.5G Ethernet PCS/PMA or SGMII 简介
    • 1G/2.5G Ethernet PCS/PMA or SGMII 配置
    • 多个1G/2.5G Ethernet PCS/PMA or SGMII 主从级联使用
    • Tri Mode Ethernet MAC
    • AXI4-Stream Data FIFO 组
    • TCP/IP协议栈服务器-->简介
    • TCP/IP协议栈服务器-->源码架构
    • TCP/IP协议栈服务器-->性能简介
      • 常规性能
      • 支持多节点
      • FPGA资源占用少
      • 数据吞吐率高
      • 低延时性能
    • TCP/IP协议栈服务器-->接口描述
    • TCP/IP协议栈客户端-->简介
    • TCP/IP协议栈客户端-->源码架构
    • TCP/IP协议栈客户端-->性能简介
      • 常规性能
      • 支持多节点
      • FPGA资源占用少
      • 数据吞吐率高
      • 低延时性能
    • TCP/IP协议栈客户端-->接口描述
    • TCP用户数据测试模块
    • IP地址修改
    • 工程源码架构
  • 4、vivado工程1详解:Artix7版本,单路TCP服务器版本
  • 5、vivado工程2详解:Artix7版本,单路TCP客户端版本
  • 6、vivado工程3详解:Artix7版本,双路TCP客户端+客户端版本
  • 7、vivado工程4详解:Kintex7版本,单路TCP服务器版本
  • 8、vivado工程5详解:Kintex7版本,单路TCP客户端版本
  • 9、vivado工程6详解:Kintex7版本,双路TCP客户端+客户端版本
  • 10、vivado工程7详解:Zynq7100版本,单路TCP服务器版本
  • 11、vivado工程8详解:Zynq7100版本,单路TCP客户端版本
  • 12、vivado工程9详解:Zynq7100版本,双路TCP客户端+客户端版本
  • 13、vivado工程10详解:Virtx7版本,单路TCP服务器版本
  • 14、vivado工程11详解:Virtx7版本,单路TCP客户端版本
  • 15、vivado工程12详解:Virtx7版本,双路TCP客户端+客户端版本
  • 16、vivado工程13详解:KU060版本,单路TCP服务器版本
  • 17、vivado工程14详解:KU060版本,单路TCP客户端版本
  • 18、vivado工程15详解:KU060版本,双路TCP客户端+客户端版本
  • 19、vivado工程16详解:KU5P版本,单路TCP服务器版本
  • 20、vivado工程17详解:KU5P版本,单路TCP客户端版本
  • 21、vivado工程18详解:KU5P版本,双路TCP客户端+客户端版本
  • 22、工程移植说明
    • vivado版本不一致处理
    • FPGA型号不一致处理
    • 其他注意事项
  • 23、上板调试验证并演示
    • 准备工作
    • ping测试
    • 数据回环测试
    • 网络速度测试
  • 24、福利:工程代码的获取

FPGA无网络芯片实现TCP/IP协议栈,基于1G/2.5G Ethernet PCS/PMA or SGMII方案,提供18套工程源码和技术支持

1、前言

没玩过TCP网络通信都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。目前网上fpga实现udp协议的源码满天飞,我这里也有不少,但用FPGA纯源码实现TCP的项目却很少,能上板调试跑通的项目更是少之又少,甚至可以说是凤毛菱角,但很不巧,本人这儿就有一个;一般而言,用FPGA实现TCP并不是一个经济的方案,但对于芯片原型验证、航天可靠通信、水下通信等一些数据传输可靠性极高的领域而言,FPGA实现TCP方案依然占有一席之地;FPGA做千兆网一般会使用网络芯片,比如RTL8211、B50610等,但也可以使用FPGA内部逻辑资源实现无网络芯片方案,这也正是本博客描述的设计方案;

工程概述

本设采用纯VHDL实现了千兆网TCP/IP协议栈,包括TCP服务器和客户端两个版本,没有用到任何一个IP核;并在Xilinx系列FPGA上做了部署并验证,并且无需诸如RTL8211、B50610等网络芯片,而是使用Xilinx官方的1G/2.5G Ethernet PCS/PMA or SGMII+Tri Mode Ethernet MAC方案取代了网络芯片,属于FPGA开发领域的高端项目;整个工程处理流程如下:

TCP/IP协议栈接收流程

PC端网络调试助手发送以太网数据包,或者发起ping操作,数据通过网线发送到FPGA开发板;一个SFP转RJ45电口插在FPGA开发板板载的SFP光口上,接收网线数据;调用Xilinx官方的1G/2.5G Ethernet PCS/PMA or SGMII IP核实现以太网物理层,1G/2.5G Ethernet PCS/PMA or SGMII输出GMII接口的PHY数据,该IP可替代传统的PHY芯片,比如RTL8211、B50610等,可简化硬件电路,节省板材物料;调用Xilinx官方的Tri Mode Ethernet MAC IP核实现以太网MAC层,Tri Mode Ethernet MAC输出AXI4-Stream接口的MAC数据;再调用2个AXI4-Stream Data FIFO做MAC数据跨时钟域处理和数据缓冲处理后依然以AXI4-Stream数据流输出给TCP/IP 协议栈;TCP/IP 协议栈对数据的MAC数据做以太网数据帧解析、IP报文解析等操作,去掉以太网帧头、协议层报文帧头等信息,提取出有效数据段信息和IP、MAC等地址信息,并以AXI4-Stream数据流形式输出有效数据,至此,TCP/IP协议栈接收流程完毕;

TCP/IP协议栈发送流程

用户数据测试模块为数据发起者,可以是测速模式下的单向的给PC端发送数据,也可以是数据回环模式下的将接收数据回环发送出去,两种模式通过define宏定义选择;用户输出发送时序为AXI4-Stream数据流;用户发送数据首先进入TCP/IP协议栈,并做协议层报文封装、以太网帧格式封装等操作,然后以AXI4-Stream数据流输出;再调用2个AXI4-Stream Data FIFO做TCP数据跨时钟域处理和数据缓冲处理后依然以AXI4-Stream数据流输出给MAC层;然后调用Xilinx官方的Tri Mode Ethernet MAC IP核实现MAC数据转换,将AXI4-Stream的MAC数据转换为GMII时序输出;调用Xilinx官方的1G/2.5G Ethernet PCS/PMA or SGMII IP核实现以太网物理层,1G/2.5G Ethernet PCS/PMA or SGMII输出GMII接口的PHY数据,该IP可替代传统的PHY芯片,比如RTL8211、B50610等,可简化硬件电路,节省板材物料;以太网数据通过板载的SFP光口输出,经过一个SFP转RJ45电口后由网线发送给PC电脑端;至此,TCP/IP协议栈发送流程完毕;

针对目前市面上主流的FPGA,共移植了18套工程源码,详情如下:
在这里插入图片描述
现对上述18套工程源码解释如下:

工程源码1

开发板FPGA型号为Xilinx–>Artix7–>xc7a35tfgg484-2;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTP高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码2

开发板FPGA型号为Xilinx–>Artix7–>xc7a35tfgg484-2;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTP高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈客户端,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码3

开发板FPGA型号为Xilinx–>Artix7–>xc7a35tfgg484-2;使用2个1G/2.5G Ethernet PCS/PMA or SGMII IP核构成1主+1从的主从级联架构,实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTP高速接口资源;使用2个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器(即SFP光口1运行TCP/IP协议栈服务器)+1个千兆网TCP/IP协议栈客户端(即SFP光口2运行TCP/IP协议栈客户端),输入输出接口为2路SFP光口,功能是1G TCP网络通信;工程应用是FPGA的1G TCP多光口网卡或交换机;

工程源码4

开发板FPGA型号为Xilinx–>Kintex7–>xc7k325tffg900-2;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTX高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码5

开发板FPGA型号为Xilinx–>Kintex7–>xc7k325tffg900-2;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTX高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈客户端,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码6

开发板FPGA型号为Xilinx–>Kintex7–>xc7k325tffg900-2;使用2个1G/2.5G Ethernet PCS/PMA or SGMII IP核构成1主+1从的主从级联架构,实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTX高速接口资源;使用2个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器(即SFP光口1运行TCP/IP协议栈服务器)+1个千兆网TCP/IP协议栈客户端(即SFP光口2运行TCP/IP协议栈客户端),输入输出接口为2路SFP光口,功能是1G TCP网络通信;工程应用是FPGA的1G TCP多光口网卡或交换机;

工程源码7

开发板FPGA型号为Xilinx–Zynq7100–xc7z100ffg900-2;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTX高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码8

开发板FPGA型号为Xilinx–Zynq7100–xc7z100ffg900-2;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTX高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈客户端,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码9

开发板FPGA型号为Xilinx–Zynq7100–xc7z100ffg900-2;使用2个1G/2.5G Ethernet PCS/PMA or SGMII IP核构成1主+1从的主从级联架构,实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTX高速接口资源;使用2个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器(即SFP光口1运行TCP/IP协议栈服务器)+1个千兆网TCP/IP协议栈客户端(即SFP光口2运行TCP/IP协议栈客户端),输入输出接口为2路SFP光口,功能是1G TCP网络通信;工程应用是FPGA的1G TCP多光口网卡或交换机;

工程源码10

开发板FPGA型号为Xilinx–Virtx7–xc7vx690tffg1761-3;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTH高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码11

开发板FPGA型号为Xilinx–Virtx7–xc7vx690tffg1761-3;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTH高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈客户端,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码12

开发板FPGA型号为Xilinx–Virtx7–xc7vx690tffg1761-3;使用2个1G/2.5G Ethernet PCS/PMA or SGMII IP核构成1主+1从的主从级联架构,实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTH高速接口资源;使用2个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器(即SFP光口1运行TCP/IP协议栈服务器)+1个千兆网TCP/IP协议栈客户端(即SFP光口2运行TCP/IP协议栈客户端),输入输出接口为2路SFP光口,功能是1G TCP网络通信;工程应用是FPGA的1G TCP多光口网卡或交换机;

工程源码13

开发板FPGA型号为Xilinx-- Kintex UltraScale–xcku060-ffva1156-2-i;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTH高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码14

开发板FPGA型号为Xilinx-- Kintex UltraScale–xcku060-ffva1156-2-i;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTH高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈客户端,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码15

开发板FPGA型号为Xilinx-- Kintex UltraScale–xcku060-ffva1156-2-i;使用2个1G/2.5G Ethernet PCS/PMA or SGMII IP核构成1主+1从的主从级联架构,实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTH高速接口资源;使用2个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器(即SFP光口1运行TCP/IP协议栈服务器)+1个千兆网TCP/IP协议栈客户端(即SFP光口2运行TCP/IP协议栈客户端),输入输出接口为2路SFP光口,功能是1G TCP网络通信;工程应用是FPGA的1G TCP多光口网卡或交换机;

工程源码16

开发板FPGA型号为Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTY高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码17

开发板FPGA型号为Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;使用1个1G/2.5G Ethernet PCS/PMA or SGMII IP核实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTY高速接口资源;使用1个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈客户端,输入输出接口为1路SFP光口,功能是1G TCP服务器网络通信;工程应用是FPGA的1G TCP/IP网卡;

工程源码18

开发板FPGA型号为Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;使用2个1G/2.5G Ethernet PCS/PMA or SGMII IP核构成1主+1从的主从级联架构,实现PHY物理层功能,1G/2.5G Ethernet PCS/PMA or SGMII使用GTY高速接口资源;使用2个Tri Mode Ethernet MAC IP核实现MAC功能,挂载1个千兆网TCP/IP协议栈服务器(即SFP光口1运行TCP/IP协议栈服务器)+1个千兆网TCP/IP协议栈客户端(即SFP光口2运行TCP/IP协议栈客户端),输入输出接口为2路SFP光口,功能是1G TCP网络通信;工程应用是FPGA的1G TCP多光口网卡或交换机;

本文详细描述了FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现TCP/IP协议栈的设计方案,经过反复大量测试稳定可靠,可在项目中直接移植使用,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字通信领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

我这里已有的以太网方案

目前我这里有大量UDP协议的工程源码,包括UDP数据回环,视频传输,AD采集传输等,也有TCP协议的工程,对网络通信有需求的兄弟可以去看看:
直接点击前往

网络芯片版本–>千兆网 TCP–>服务器 方案

TCP分为服务器和客户端,两者代码是不一样的,看具体需求,TCP服务器版本依然是16套工程源码,采用我网络芯片实现PHY,之前写了一篇博客专门介绍,感兴趣的朋友可以去看看:
直接点击前往

网络芯片版本–>千兆网 TCP–>客户端 方案

TCP分为服务器和客户端,两者代码是不一样的,看具体需求,TCP客户端版本依然是16套工程源码,采用我网络芯片实现PHY,之前写了一篇博客专门介绍,感兴趣的朋友可以去看看:
直接点击前往

10G 万兆网 TCP–>服务器+客户端 方案

我这里也有10G 万兆网 TCP 方案,该方案有服务器和客户端两套代码,在Xilinx KU和KUP等平台测试通过并很稳定,对10G 万兆网 TCP 方案感兴趣的朋友可以去看看:
直接点击前往

1G/2.5G Ethernet PCS/PMA or SGMII 方案

1G/2.5G Ethernet PCS/PMA or SGMII 方案解决的问题是替代网络芯片,之前写了一篇博客专门介绍,感兴趣的朋友可以去看看:
直接点击前往

AXI 1G/2.5G Ethernet Subsystem 方案

AXI 1G/2.5G Ethernet Subsystem 方案解决的问题也是替代网络芯片,之前写了一篇博客专门介绍,感兴趣的朋友可以去看看:
直接点击前往

3、详细设计方案

设计原理框图

设计原理框图如下:
在这里插入图片描述

测试用PC端电脑

测试用PC端电脑要求如下:
有千兆网口及其驱动;
安装网络调试助手软件,软件已提供在资料包中;
普通的台式电脑或笔记本电脑均可;

SFP光口转RJ45电口

需要准备满足千兆传输要求的SFP光口转RJ45电口,某宝二三十块钱很便宜,大概长这样:
在这里插入图片描述

1G/2.5G Ethernet PCS/PMA or SGMII 简介

1G/2.5G Ethernet PCS/PMA or SGMII实现了类似于网络PHY芯片的功能,其功能框图如下:
在这里插入图片描述
接收端:
数据首先经过GT资源解串,将串行数据解为并行数据;然后经过弹性Buffer做数据缓冲处理,主要是为了去频偏,使板与板之间的数据稳定,然后进行8b/10b解码,恢复正常数据;然后经过PCS接收同步器,对数据进行跨时钟处理,同步到GMII时序下;最后将数据放入GMII总线下输出;

发送端:
发送端则简单得多,输入时序为GMII;然后进入PCS发送引擎;然后对数据进行8b/10b编码;最后放入GT串化后输出;

1G/2.5G Ethernet PCS/PMA or SGMII 配置

1G/2.5G Ethernet PCS/PMA or SGMII配置为1G,其与MAC的接口为GMII,配置如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1G/2.5G Ethernet PCS/PMA or SGMII可运行于1G和2.5G线速率,对GT时钟有严格研究,按照官方数据手册,运行1G线速率时,GT差分时钟必须为125M,运行2.5G线速率时,GT差分时钟必须为312.5M,如下:
在这里插入图片描述

多个1G/2.5G Ethernet PCS/PMA or SGMII 主从级联使用

多个1G/2.5G Ethernet PCS/PMA or SGMII 的主从搭配使用的应用场景是FPGA开发板充当多光口的网卡使用,即一个FPGA挂载多个光口,每一个光口相当于一个独立的网卡,有独立的IP地址和MAC地址,类似于交换机;主从搭配使用框架如下:
在这里插入图片描述
1G/2.5G Ethernet PCS/PMA or SGMII可单独使用,当单独使用时,一个1G/2.5G Ethernet PCS/PMA or SGMII单独占用一个GT高速接口资源,单独占用一对差分时钟资源;此时的IP配置如下:
在这里插入图片描述
1G/2.5G Ethernet PCS/PMA or SGMII也可多个级联主从搭配使用,主从搭配使用时,一个1G/2.5G Ethernet PCS/PMA or SGMII当做主IP,占用一个GT高速接口资源,单独占用一对差分时钟资源;其他1G/2.5G Ethernet PCS/PMA or SGMII当做从IP,占用一个GT高速接口资源,但不占用差分时钟资源,而是使用主IP提供的参考时钟;此时的从IP配置如下:
在这里插入图片描述

Tri Mode Ethernet MAC

Tri Mode Ethernet MAC主要是为了适配1G/2.5G Ethernet PCS/PMA or SGMII,因为后者的输入接口是GMII,而Tri Mode Ethernet MAC的输入接口是AXIS,输出接口是GMII,Tri Mode Ethernet MAC配置如下:
在这里插入图片描述
在这里插入图片描述

AXI4-Stream Data FIFO 组

调用AXI4-Stream Data FIFO 组实现MAC数据与TCP/IP协议栈之间的数据桥接,其在工程中的代码架构如下:
在这里插入图片描述
以接收端为例:
第一级FIFO为异步时钟FIFO,实现MAC数据从Tri Mode Ethernet MAC到TCP/IP协议栈的跨时钟域处理;
第一级FIFO为同步时钟FIFO,实现MAC数据到TCP/IP协议栈的数据缓冲处理;
以发送端为例:
第一级FIFO为异步时钟FIFO,实现MAC数据从TCP/IP协议栈到Tri Mode Ethernet MAC的跨时钟域处理;
第一级FIFO为同步时钟FIFO,实现MAC数据到Tri Mode Ethernet MAC的数据缓冲处理;

注意!!!!
注意!!!!
当工程配置为网络测速模式时,请将AXI4-Stream Data FIFO组的深度设置大一些,如下:
在这里插入图片描述

TCP/IP协议栈服务器–>简介

本TCP/IP协议栈为纯VHDL实现的千兆网速率服务器版本,可实现TCP协议网络通信,针对不同需求,提供两个版本的模块,一种是TCP/IP 协议栈源码,即完全看得到并可修改的纯源码;另一种是TCP/IP 协议栈网表,可以正常调用、例化并使用,但看不到TCP/IP 协议栈源码也不能修改;TCP/IP协议栈基本设计框架如下:
在这里插入图片描述
其中的UDP我们没有用到,只用到了TCP;

TCP/IP协议栈服务器–>源码架构

TCP/IP 协议栈源码架构如下:
在这里插入图片描述

TCP/IP协议栈服务器–>性能简介

此TCP/IP协议栈是TCP服务器,不是客户端;即FPGA是TCP服务器,远程节点(比如 PC 电脑)是客户端;

常规性能

1:纯VHDL实现,没有用到任何一个IP核;
2:移植性天花板,该协议栈可在Xilinx、Altera、Lattice、国产FPGA等各大FPGA型号之间任意移植,因为是没有任何IP和源语的纯VHDL代码实现;但例如Tri Mode Ethernet MAC这样的PHY侧IP核目前用的Xilinx的;
3:功能齐全,包含了服务器和客户端,客户端目前还在开发中,暂不提供;TCP/IP协议栈本身包含了动态ARP、NDP、PING、IGMP (for multicast UDP)等功能模块;
4:代码符合标准的IEEE 802.3协议,支持IPv4和IPv6;
5:对外接PHY的数据格式要求:RGMII;
6:时序收敛很到位,考虑到TCP协议的复杂性和时序的高要求,所以没有采用时序收敛不强的verilog,而是VHDL,虽然阅读性可能会低一些,但用户只需要知道用户接口即可,并不需要去看内部的复杂代码;
7:动态ARP功能;
8:带ping功能;
9:支持多播;

支持多节点

支持节点数是TCP里面最重要的性能指标之一,这里需要重点讲述:
TCP节点数最大支持255个,通过parameter TCP_NUM参数设置,但前提是你的FPGA资源能满足;TCP_NUM参数可以在代码中自由修改,含义和用法,在代码里有详细的注释,为了防止不同编译器下中文注释出现乱码,注释均由英文书写,英语较差的兄弟可以直接某度翻译,位置如下:
在这里插入图片描述
本例程只用到了1个节点;
此外,使用TCP/IP 协议栈网表的工程不支持多节点,没有此参数配置;

FPGA资源占用少

FPGA资源消耗是TCP里面最重要的性能指标之一,这里需要重点讲述:
FPGA资源消耗很低;以下举例:
以Xilinx系列Artix7-35T平台为例,TCP/IP协议栈的资源消耗如下:
在这里插入图片描述

数据吞吐率高

数据吞吐率是TCP里面最重要的性能指标之一,这里需要重点讲述:
下面给出4项测试结果,你可以自己对比评估以下:
测试1:
通过千兆以太网在TCP服务器和TCP客户端之间双向连接,FPGA参考时钟120 MHz条件下,测量的持续吞吐率为双向并发452 Mbits/s;
测试2:
Xilinx Spartan-6 -2速度等级,FPGA参考时钟120 MHz,512字节的UDP数据包通过局域网点对点发送下测得:
0丢包,吞吐率为878.5 Mbits/s;当用户时钟为125 MHz或以上时,UDP最大帧吞吐率为915 Mbits/s;
测试3:
TCP服务器传输吞吐量在1百兆局域网下PC端测量平均吞吐量为93 Mbps,如下;
在这里插入图片描述
测试4:
TCP服务器将8Gbits发送到TCP Java客户端,同时Wireshark收集速度信息。从基于FPGA的TCP服务器到PC的点对点LAN连接平均吞吐率为390.2 Mbits/s;如下:
在这里插入图片描述

低延时性能

延时性能是TCP里面最重要的性能指标之一,这里需要重点讲述:
延时与TCP数据包长直接相关,如果你对延时性能性能要求很高,则可以减少包长来有效降低延时,假设你的载包为X bytes,那么你的收发延时关系如下:
发送延时=0.5 + 2X÷125 µs;
接收延时=0.5 + X÷125 µs;
最大帧长度为1460字节,FPGA 时钟125 MHz下的测试结果如下:
发送延时=23.9µs;
接收延时=12.2µs;

TCP/IP协议栈服务器–>接口描述

由于TCP/IP协议栈主体部分由VHDL代码编写,导致可读性较差,毕竟很多朋友都是直接学的verilog语言,对VHDL并不熟悉,所以我们用verilog模块对VHDL模块做了例化形成verilog的顶层模块接口供用户例化,所以TCP/IP协议栈顶层接口如下:

module ikun_1gtcp_vip #(parameter TCP_NUM         = 1   ,	// tcp 端口数量,这里仅用到了1个parameter CLK_FREQUENCY   = 125 ,	// 参考时钟频率,比如输入时钟为125M,则CLK_FREQUENCY=125parameter TX_IDLE_TIMEOUT = 50  ,	// 以太网帧发送间隔parameter IPVX_ADDR_LOOP  = 1   ,	// 目的IP地址回环使能; 1-->不需要指定目的IP地址; 0-->需要指定目的IP地址;parameter SIMULATION      = 1'b0    // 仿真模式; 1-->开启仿真模式; 0-->关闭仿真模式; 默认关闭
)(// 时钟和复位input                   clk                ,	// 参考时钟input                   sync_reset         ,	// 同步复位input                   async_reset        ,	// 异步复位	// 配置端口input  [ 47:0]          fpga_MAC_addr      ,	// FPGA网卡MAC地址	input  [ 31:0]          fpga_IPV4_addr     ,	// FPGA网卡IPV4地址		input  [127:0]          fpga_IPV6_addr     ,	// FPGA网卡IPV6地址	input  [ 31:0]          fpga_multicast_addr,	// FPGA网卡组播地址	input  [ 31:0]          fpga_subnet_addr   ,	// FPGA网卡子网掩码	input  [ 31:0]          fpga_gaitway_addr  ,	// FPGA网卡网关地址	input  [16*TCP_NUM-1:0] fpga_tcp_port      ,	// FPGA网卡端口号		input  [ 31:0]          PC_IPV4_addr       ,	// 远端网卡IPV4地址	input  [ 15:0]          PC_tcp_port    	   ,	// 远端网卡端口号	output [ 15:0]          PC_tcp_port_out    ,	// 远端网卡端口号          	// MAC层接口信号output [  7:0]          mac_tx_tdata       ,	// 输出--MAC层发送数据input                   mac_tx_tready      ,	// 输入--MAC层发送数据准备好	output                  mac_tx_tvalid      ,	// 输出--MAC层发送数据有效	output                  mac_tx_tuser       ,	// 输出--MAC层发送数据开始	output                  mac_tx_tlast       ,	// 输出--MAC层发送数据结尾input  [  7:0]          mac_rx_tdata       ,	// 输入--MAC层接收数据input                   mac_rx_tvalid      ,	// 输入--MAC层接收数据有效	input                   mac_rx_tuser       ,	// 输入--MAC层接收数据开始	input                   mac_rx_tlast       ,	// 输入--MAC层接收数据结尾// UDP协议栈用户接口信号                   output [  7:0]          udp_rx_tdata       ,	// 输出--UDP协议栈用户接收数据output                  udp_rx_tvalid      ,	// 输出--UDP协议栈用户接收数据有效output                  udp_rx_tuser       ,	// 输出--UDP协议栈用户接收数据开始	output                  udp_rx_tlast       ,	// 输出--UDP协议栈用户接收数据结束	input  [  7:0]          udp_tx_tdata       ,	// 输入--UDP协议栈用户发送数据input                   udp_tx_tvalid      ,	// 输入--UDP协议栈用户发送数据有效output                  udp_tx_tready      ,	// 输入--UDP协议栈用户发送数据准备好	input                   udp_tx_tuser       ,	// 输入--UDP协议栈用户发送数据开始	input                   udp_tx_tlast       ,	// 输入--UDP协议栈用户发送数据结束	output                  udp_tx_ack         ,	// 输入--UDP协议栈用户发送数据应答	output                  udp_tx_nak         ,	// 输入--UDP协议栈用户发送数据无应答	// TCP协议栈用户接口信号	               output [8*TCP_NUM-1:0]  tcp_rx_tdata       ,	// 输出--TCP协议栈用户接收数据output [TCP_NUM-1:0]    tcp_rx_tvalid      ,	// 输出--TCP协议栈用户接收数据有效output [TCP_NUM-1:0]    tcp_rx_tready      ,	// 输出--TCP协议栈用户接收数据准备好input  [TCP_NUM-1:0]    tcp_rx_tkeep       ,	// 输入--TCP协议栈用户接收数据选通input  [8*TCP_NUM-1:0]  tcp_tx_tdata       ,	// 输入--TCP协议栈用户发送数据input  [TCP_NUM-1:0]    tcp_tx_tvalid      ,	// 输入--TCP协议栈用户发送数据有效output [TCP_NUM-1:0]    tcp_tx_tkeep       	// 输出--TCP协议栈用户发送数据选通			
);

TCP/IP协议栈接口是用户逻辑与TCP/IP协议栈对接的,所以这部分非常重要,用户想要把TCP/IP协议栈用起来,理论上只需要掌握其用户接口的使用即可;
其中的parameter参数有详细注释;
配置端口用户对FPGA开发板做网卡级别的配置,包括IP、MAC地址等;
MAC层接口与Tri Mode Ethernet MAC IP核对接;
UDP协议栈用户接口暂时用不到;
TCP协议栈用户接口是用户逻辑直接对接的接口;
具体可参考工程源码中对该模块的调用;

TCP/IP协议栈客户端–>简介

本TCP/IP协议栈为纯VHDL实现的千兆网速率客户端版本,可实现TCP协议网络通信,针对不同需求,提供两个版本的模块,一种是TCP/IP 协议栈源码,即完全看得到并可修改的纯源码;另一种是TCP/IP 协议栈网表,可以正常调用、例化并使用,但看不到TCP/IP 协议栈源码也不能修改;TCP/IP协议栈基本设计框架如下:
在这里插入图片描述
其中的UDP我们没有用到,只用到了TCP;

TCP/IP协议栈客户端–>源码架构

TCP/IP 协议栈源码架构如下:
在这里插入图片描述

TCP/IP协议栈客户端–>性能简介

此TCP/IP协议栈是TCP客户端,不是服务器;即FPGA是TCP客户端,远程节点(比如 PC 电脑)是服务器;

常规性能

1:纯VHDL实现,没有用到任何一个IP核;
2:移植性天花板,该协议栈可在Xilinx、Altera、Lattice、国产FPGA等各大FPGA型号之间任意移植,因为是没有任何IP和源语的纯VHDL代码实现;但例如Tri Mode Ethernet MAC这样的PHY侧IP核目前用的Xilinx的;
3:功能齐全,包含了客户端;TCP/IP协议栈本身包含了动态ARP、NDP、PING、IGMP (for multicast UDP)、DHCP等功能模块,但DHCP目前存在小BUG,不建议使用,具体就是DHCP实现了IP地址动态分配,也能ping通,但在传输TCP数据时有错误,有时甚至无法连接TCP客户端;
4:代码符合标准的IEEE 802.3协议,支持IPv4和IPv6;
5:对外接PHY的数据格式要求:RGMII;
6:时序收敛很到位,考虑到TCP协议的复杂性和时序的高要求,所以没有采用时序收敛不强的verilog,而是VHDL,虽然阅读性可能会低一些,但用户只需要知道用户接口即可,并不需要去看内部的复杂代码;
7:动态ARP功能;
8:带ping功能;
9:支持多播;

支持多节点

支持节点数是TCP里面最重要的性能指标之一,这里需要重点讲述:
TCP节点数最大支持255个,通过parameter TCP_NUM参数设置,但前提是你的FPGA资源能满足;TCP_NUM参数可以在代码中自由修改,含义和用法,在代码里有详细的注释,为了防止不同编译器下中文注释出现乱码,注释均由英文书写,英语较差的兄弟可以直接某度翻译,位置如下:
在这里插入图片描述
本例程只用到了1个节点;
此外,使用TCP/IP 协议栈网表的工程不支持多节点,没有此参数配置;

FPGA资源占用少

FPGA资源消耗是TCP里面最重要的性能指标之一,这里需要重点讲述:
FPGA资源消耗很低;以下举例:
以Xilinx系列Artix7-35T平台为例,TCP/IP协议栈的资源消耗如下:
在这里插入图片描述

数据吞吐率高

数据吞吐率是TCP里面最重要的性能指标之一,这里需要重点讲述:
下面给出4项测试结果,你可以自己对比评估以下:
测试1:
通过千兆以太网在TCP服务器和TCP客户端之间双向连接,FPGA参考时钟120 MHz条件下,测量的持续吞吐率为双向并发452 Mbits/s;
测试2:
Xilinx Spartan-6 -2速度等级,FPGA参考时钟120 MHz,512字节的UDP数据包通过局域网点对点发送下测得:
0丢包,吞吐率为878.5 Mbits/s;当用户时钟为125 MHz或以上时,UDP最大帧吞吐率为915 Mbits/s;
测试3:
TCP服务器传输吞吐量在1百兆局域网下PC端测量平均吞吐量为93 Mbps,如下;
在这里插入图片描述
测试4:
TCP服务器将8Gbits发送到TCP Java客户端,同时Wireshark收集速度信息。从基于FPGA的TCP服务器到PC的点对点LAN连接平均吞吐率为390.2 Mbits/s;如下:
在这里插入图片描述

低延时性能

延时性能是TCP里面最重要的性能指标之一,这里需要重点讲述:
延时与TCP数据包长直接相关,如果你对延时性能性能要求很高,则可以减少包长来有效降低延时,假设你的载包为X bytes,那么你的收发延时关系如下:
发送延时=0.5 + 2X÷125 µs;
接收延时=0.5 + X÷125 µs;
最大帧长度为1460字节,FPGA 时钟125 MHz下的测试结果如下:
发送延时=23.9µs;
接收延时=12.2µs;

TCP/IP协议栈客户端–>接口描述

由于TCP/IP协议栈主体部分由VHDL代码编写,导致可读性较差,毕竟很多朋友都是直接学的verilog语言,对VHDL并不熟悉,所以我们用verilog模块对VHDL模块做了例化形成verilog的顶层模块接口供用户例化,所以TCP/IP协议栈顶层接口如下:

module ikun_1gtcp_vip #(parameter TCP_NUM         = 1       ,	// tcp 端口数量,这里仅用到了1个parameter FPGA_TCP_PORT_B = 16'd1024,	// 	FPGA网卡--tcp客户端--端口号parameter CLK_FREQUENCY   = 125     ,	// 参考时钟频率,比如输入时钟为125M,则CLK_FREQUENCY=125parameter TX_IDLE_TIMEOUT = 50      ,	// 以太网帧发送间隔parameter IPVX_ADDR_LOOP  = 1       ,	// 目的IP地址回环使能; 1-->不需要指定目的IP地址; 0-->需要指定目的IP地址;parameter SIMULATION      = 1'b0    	// 仿真模式; 1-->开启仿真模式; 0-->关闭仿真模式; 默认关闭
)(// 时钟和复位input                   clk                     ,	// 参考时钟input                   sync_reset              ,	// 同步复位input                   async_reset             ,	// 异步复位	output [4*TCP_NUM-1:0]  tcp_status_out          ,   // TCP连接状态; idle (0), connecting (1), connected (2), unreacheable IP (3), destination port busy (4)// 配置端口 input                   client_dhcp_en          ,	// 0-->disable client_dhcp ; 1-->enable client_dhcp                                   input  [ 47:0]          fpga_MAC_addr           ,	// FPGA网卡MAC地址	input  [ 31:0]          fpga_static_IPV4_addr   ,	// FPGA网卡静态IPV4地址		input  [127:0]          fpga_IPV6_addr          ,	// FPGA网卡IPV6地址	input  [ 31:0]          fpga_subnet_addr        ,	// FPGA网卡子网掩码	input  [ 31:0]          fpga_static_gaitway_addr,	// FPGA网卡静态网关地址	input  [16*TCP_NUM-1:0] fpga_tcp_port           ,	// FPGA网卡端口号		input  [ 31:0]          PC_IPV4_addr            ,	// 远端网卡IPV4地址	input  [ 15:0]          PC_tcp_port    	        ,	// 远端网卡端口号	output [ 15:0]          PC_tcp_port_out         ,	// 远端网卡端口号          	// MAC层接口信号                                output [  7:0]          mac_tx_tdata            ,	// 输出--MAC层发送数据input                   mac_tx_tready           ,	// 输入--MAC层发送数据准备好	output                  mac_tx_tvalid           ,	// 输出--MAC层发送数据有效	output                  mac_tx_tuser            ,	// 输出--MAC层发送数据开始	output                  mac_tx_tlast            ,	// 输出--MAC层发送数据结尾input  [  7:0]          mac_rx_tdata            ,	// 输入--MAC层接收数据input                   mac_rx_tvalid           ,	// 输入--MAC层接收数据有效	input                   mac_rx_tuser            ,	// 输入--MAC层接收数据开始	input                   mac_rx_tlast            ,	// 输入--MAC层接收数据结尾// UDP协议栈用户接口信号                        output [  7:0]          udp_rx_tdata            ,	// 输出--UDP协议栈用户接收数据output                  udp_rx_tvalid           ,	// 输出--UDP协议栈用户接收数据有效output                  udp_rx_tuser            ,	// 输出--UDP协议栈用户接收数据开始	output                  udp_rx_tlast            ,	// 输出--UDP协议栈用户接收数据结束	input  [  7:0]          udp_tx_tdata            ,	// 输入--UDP协议栈用户发送数据input                   udp_tx_tvalid           ,	// 输入--UDP协议栈用户发送数据有效output                  udp_tx_tready           ,	// 输入--UDP协议栈用户发送数据准备好	input                   udp_tx_tuser            ,	// 输入--UDP协议栈用户发送数据开始	input                   udp_tx_tlast            ,	// 输入--UDP协议栈用户发送数据结束	output                  udp_tx_ack              ,	// 输入--UDP协议栈用户发送数据应答	output                  udp_tx_nak              ,	// 输入--UDP协议栈用户发送数据无应答	// TCP协议栈用户接口信号	                    output [8*TCP_NUM-1:0]  tcp_rx_tdata            ,	// 输出--TCP协议栈用户接收数据output [TCP_NUM-1:0]    tcp_rx_tvalid           ,	// 输出--TCP协议栈用户接收数据有效output [TCP_NUM-1:0]    tcp_rx_tready           ,	// 输出--TCP协议栈用户接收数据准备好input  [TCP_NUM-1:0]    tcp_rx_tkeep            ,	// 输入--TCP协议栈用户接收数据选通input  [8*TCP_NUM-1:0]  tcp_tx_tdata            ,	// 输入--TCP协议栈用户发送数据input  [TCP_NUM-1:0]    tcp_tx_tvalid           ,	// 输入--TCP协议栈用户发送数据有效output [TCP_NUM-1:0]    tcp_tx_tkeep            	// 输出--TCP协议栈用户发送数据选通			
);

TCP/IP协议栈接口是用户逻辑与TCP/IP协议栈对接的,所以这部分非常重要,用户想要把TCP/IP协议栈用起来,理论上只需要掌握其用户接口的使用即可;
其中的parameter参数有详细注释;
配置端口用户对FPGA开发板做网卡级别的配置,包括IP、MAC地址等;
MAC层接口与Tri Mode Ethernet MAC IP核对接;
UDP协议栈用户接口暂时用不到;
TCP协议栈用户接口是用户逻辑直接对接的接口;
具体可参考工程源码中对该模块的调用;

需要注意的是,由于EDF网表不支持对parameter参数的封装,所以EDF网表版本的TCP/IP协议栈接口没有parameter参数,只有wire用户接口,FPGA网卡端的TCP端口号被固定为1024,且不可更改;

TCP用户数据测试模块

TCP用户数据测试模块集成了接收数据回环和数据测速功能,通过define宏定义选择,如下:
在这里插入图片描述
在这里插入图片描述
接收数据回环功能:
将接收数据回环发送出去,即形成发送=接收的自回环功能;该功能的作用是配合网络调试助手进行数据收发测试、数据丢包测试、数据正确性测试等;

数据数据测速:
FPGA自动循环向TCP/IP 协议栈发送累加的数据,数据内容从0开始累加,即形成连续发送数据功能;该功能的作用是配合PC端测试网络极限速率,打开电脑端的资源管理器,查看网卡,即可看到通信速率;值得注意的是,该方法并不能真实反映网速,用更为专业的网速测试软件为佳;

IP地址修改

每套工程均可修改FPGA开发板的IP地址、MAC地址、端口号等信息,同时也可以修改远程节点的IP地址、端口号等信息,当IPVX_ADDR_LOOP设置为1时,不需要指定远程节点的IP地址,这也是默认的工作方式,以工程源码1为例,代码里有注释,如下:
在这里插入图片描述

工程源码架构

18套工程的源码具有相似性,这里仅以工程3为例截图如下,其他工程与之类似:
在这里插入图片描述
注意!!!!
注意!!!!
上图为1主+1从的2路TCP协议栈架构,也就是用到了2路1G/2.5G Ethernet PCS/PMA or SGMII和2路Tri Mode Ethernet MAC,TCP协议栈用到了1路服务器+1路客户端,单独的服务器或客户端工程则只用到了1路1G/2.5G Ethernet PCS/PMA or SGMII和1路Tri Mode Ethernet MAC;

4、vivado工程1详解:Artix7版本,单路TCP服务器版本

开发板FPGA型号:Xilinx–>Artix7–>xc7a35tfgg484-2;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>服务器网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTP;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>服务器;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

5、vivado工程2详解:Artix7版本,单路TCP客户端版本

开发板FPGA型号:Xilinx–>Artix7–>xc7a35tfgg484-2;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTP;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

6、vivado工程3详解:Artix7版本,双路TCP客户端+客户端版本

开发板FPGA型号:Xilinx–>Artix7–>xc7a35tfgg484-2;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端/客户端网络数据;
接口:2路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:2路GTP;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:1路千兆TCP/IP协议栈服务器+1路千兆TCP/IP协议栈客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

7、vivado工程4详解:Kintex7版本,单路TCP服务器版本

开发板FPGA型号:Xilinx–>Kintex7–>xc7k325tffg900-2;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>服务器网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTX;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>服务器;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

8、vivado工程5详解:Kintex7版本,单路TCP客户端版本

开发板FPGA型号:Xilinx–>Kintex7–>xc7k325tffg900-2;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTX;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

9、vivado工程6详解:Kintex7版本,双路TCP客户端+客户端版本

开发板FPGA型号:Xilinx–>Kintex7–>xc7k325tffg900-2;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端/客户端网络数据;
接口:2路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:2路GTX;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:1路千兆TCP/IP协议栈服务器+1路千兆TCP/IP协议栈客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

10、vivado工程7详解:Zynq7100版本,单路TCP服务器版本

开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>服务器网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTX;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>服务器;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

11、vivado工程8详解:Zynq7100版本,单路TCP客户端版本

开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTX;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

12、vivado工程9详解:Zynq7100版本,双路TCP客户端+客户端版本

开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端/客户端网络数据;
接口:2路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:2路GTX;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:1路千兆TCP/IP协议栈服务器+1路千兆TCP/IP协议栈客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

13、vivado工程10详解:Virtx7版本,单路TCP服务器版本

开发板FPGA型号:Xilinx–Virtx7–xc7vx690tffg1761-3;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>服务器网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTH;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>服务器;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

14、vivado工程11详解:Virtx7版本,单路TCP客户端版本

开发板FPGA型号:Xilinx–Virtx7–xc7vx690tffg1761-3;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTH;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

15、vivado工程12详解:Virtx7版本,双路TCP客户端+客户端版本

开发板FPGA型号:Xilinx–Virtx7–xc7vx690tffg1761-3;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端/客户端网络数据;
接口:2路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:2路GTH;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:1路千兆TCP/IP协议栈服务器+1路千兆TCP/IP协议栈客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

16、vivado工程13详解:KU060版本,单路TCP服务器版本

开发板FPGA型号:Xilinx-- Kintex UltraScale–xcku060-ffva1156-2-i;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>服务器网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTH;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>服务器;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

17、vivado工程14详解:KU060版本,单路TCP客户端版本

开发板FPGA型号:Xilinx-- Kintex UltraScale–xcku060-ffva1156-2-i;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTH;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

18、vivado工程15详解:KU060版本,双路TCP客户端+客户端版本

开发板FPGA型号:Xilinx-- Kintex UltraScale–xcku060-ffva1156-2-i;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端/客户端网络数据;
接口:2路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:2路GTH;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:1路千兆TCP/IP协议栈服务器+1路千兆TCP/IP协议栈客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

19、vivado工程16详解:KU5P版本,单路TCP服务器版本

开发板FPGA型号:Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>服务器网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTY;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>服务器;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

20、vivado工程17详解:KU5P版本,单路TCP客户端版本

开发板FPGA型号:Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端网络数据;
接口:1路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:1路GTY;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:千兆TCP/IP协议栈–>客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

21、vivado工程18详解:KU5P版本,双路TCP客户端+客户端版本

开发板FPGA型号:Xilinx-- Kintex UltraScale±-xcku5p-ffvb676-1-i;
开发环境:Vivado2019.1;
输入输出:以太网帧,TCP/IP协议栈–>客户端/客户端网络数据;
接口:2路SFP,1G线速率;
PHY方案:Xilinx官方1G/2.5G Ethernet PCS/PMA or SGMII方案;
PHY使用高速接口资源:2路GTY;
MAC方案:Xilinx 官方Tri Mode Ethernet MAC方案;
协议层方案:1路千兆TCP/IP协议栈服务器+1路千兆TCP/IP协议栈客户端;
工程源码架构请参考前面第3章节中的《工程源码架构》小节;
工程作用:此工程目的是让读者掌握FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII的TCP/IP协议栈设计能力,以便能够移植和设计自己的项目;
工程的资源消耗和功耗如下:
在这里插入图片描述

22、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
在这里插入图片描述
3:如果你的vivado版本高于本工程vivado版本,解决如下:
在这里插入图片描述
打开工程后会发现IP都被锁住了,如下:
在这里插入图片描述
此时需要升级IP,操作如下:
在这里插入图片描述
在这里插入图片描述

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

23、上板调试验证并演示

准备工作

试验需要准备以下设备:
FPGA开发板,可以自行购买,也可以找本博主购买同款开发板;
测试电脑;
SFP转RJ45电口,千兆网线;
网络调试助手;
以工程源码1的开发板为例进行上板调试;
连接如下:
在这里插入图片描述
首先设置电脑端IP如下:
在这里插入图片描述
然后下载bit,如下:
在这里插入图片描述

ping测试

打开cdm,输入 ping 192.168.0.56,如下:
在这里插入图片描述
ping测试视频演示如下,请点击观看:

千兆网TCP协议栈ping操作

数据回环测试

以工程源码1为例,打开网络调试助手并配置,如下:
在这里插入图片描述
单次发送数据测试结果如下:
在这里插入图片描述
循环发送数据测试结果如下,1秒时间间隔循环:可以看到,数据收发量超过15万字节,没有丢包,足以证明其稳定性;
在这里插入图片描述
TCP数据回环测试视频演示如下,请点击观看:

千兆网TCP协议栈服务器数据收发测试

网络速度测试

以工程源码1为例,下载测速的bit,打开网络调试助手,选择暂停接收显示,如下:
在这里插入图片描述
然后将测速bit里面的VIO打开,并将tx_en设置为1,如下:
在这里插入图片描述
然后打开电脑资源管理器,点击性能,找到以太网网卡选项,即可看到测速,测速如下:
在这里插入图片描述
注意!!!
注意!!!
注意!!!
在电脑上观察到的是开发板以太网网口的发送速率,这个测速只代表可能的最高的速度,不代表电脑真实的不丢包速度,UDP 的点到点不丢包速度和电脑的网卡、CPU 速度、内存速度、操作系统都有关系。

TCP网络速度测试视频演示如下,请点击观看:

1G-TCP测速

24、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java内存模型以及多线程并发深度剖析

文章目录 Java内存模型JMM的基本概念缓存一致性与处理器优化happens-before原则总结主内存以及cpu的多级缓存模型的实现原理主内存(Main Memory)CPU多级缓存模型实现原理:多线程并发运行时可能引发的数据不一致问题总线加锁机制和MESI缓存一致性协议的工作原理总线加锁机制M…

AI大模型安全挑战和安全要求解读

引言 随着人工智能技术的飞速发展,大模型技术以其卓越的性能和广泛的应用前景,正在重塑人工智能领域的新格局。然而,任何技术都有两面性,大模型在带来前所未有便利的同时,也引发了深刻的安全和伦理挑战。 大模型&…

vscode安装lean4

本教程演示在Windows系统下如何安装Lean 4正式版。Linux和MacOS版本请参考Lean Manual。 如果你身在中国,在运行安装程序前需要做如下准备: 在系统目录C:\Windows\System32\drivers\etc文件夹下找到hosts文件。对于其它系统用户也都是找到各自系统的host…

vue vue.config.js webpack 加密混淆代码

一、下载加密插件 webpack-obfuscator npm install --save-dev webpack-obfuscatorVue CLI 本身依赖于 Webpack 进行构建和打包。不需要单独安装 Webpack 二、配置vue.config.js const { defineConfig } require(vue/cli-service) const WebpackObfuscator require(webpac…

C#中使用Redis作为缓存系统

在现代软件开发中,缓存是提高应用性能和响应速度的关键技术之一。Redis,作为一种高性能的内存数据存储和缓存数据库,已被广泛应用于各种项目中,特别是在需要频繁数据读取和高速数据处理的场景下。在C#项目中,通过使用R…

字节码编程ASM之两数之和

写在前面 源码 。 看下如何使用ASM来写如下的类: package com.dahuyou.demo.asm;public class AsmSumOfTwo {public AsmSumOfTwo() {}public static void main(String[] var0) {int var1 (new AsmSumOfTwo()).sum(1, 2);System.out.println(var1);}public int su…

NEFU算法设计与分析课程设计

(一)动态规划问题 最大子矩阵问题 【题目描述】 有一个包含正数和负数的二维数组。一个子矩阵是指在该二维数据里,任意相邻的下标是1 * 1或更大的子数组。一个子矩阵的和是指该子矩阵中所有元素的和。本题中,把具有最大和的子矩…

Batch学习及应用案例

一、介绍 Batch是一种Windows操作系统中使用的批处理脚本语言,用于自动化执行一系列命令和操作。通过编写批处理脚本,可以实现自动化完成重复性或繁琐的任务,提高工作效率。 Batch脚本可以使用内置的命令和命令行工具,以及调用其…

2024.06.27【读书笔记】|医疗科技创新流程(第1章:需求发现 第一部分)【AI增强版】

第1章:需求发现 (Needs Finding) 1.1 战略聚焦 (Strategic Focus) 战略聚焦是医疗技术创新过程的起点。它要求创新者明确自己的使命、评估自身的强项与弱点,并据此确定项目接受标准。以下是对1.1小节的详细介绍: 定义使命:创新者…

使用飞书多维表格实现推送邮件

一、为什么用飞书? 在当今竞争激烈的商业环境中,选择一款高效、智能的办公工具至关重要。了解飞书的朋友应该都知道,飞书的集成能力是很强大的,能够与各种主流的办公软件无缝衔接,实现数据交互,提升工作效…

【Linux】防火墙命令

文章目录 1. 启动、停止和重启防火墙2. 防火墙状态查询3. 防火墙规则配置4. 防火墙规则查询5. 防火墙其他常用命令 1. 启动、停止和重启防火墙 启动防火墙:systemctl start firewalld停止防火墙:systemctl stop firewalld重启防火墙:systemc…

Gemalto SafeNet Luna HSM服务器硬件监控指标解读

在现代化的信息安全体系中,硬件安全模块(HSM)扮演着至关重要的角色,它负责保护和管理敏感的数据和密钥。Gemalto SafeNet Luna HSM作为一款高性能的硬件安全模块,广泛应用于金融、政府和企业等领域。为了确保Luna HSM的…

竞赛选题 python区块链实现 - proof of work工作量证明共识算法

文章目录 0 前言1 区块链基础1.1 比特币内部结构1.2 实现的区块链数据结构1.3 注意点1.4 区块链的核心-工作量证明算法1.4.1 拜占庭将军问题1.4.2 解决办法1.4.3 代码实现 2 快速实现一个区块链2.1 什么是区块链2.2 一个完整的快包含什么2.3 什么是挖矿2.4 工作量证明算法&…

vue3中通过vditor插件实现自定义上传图片、录入echarts、脑图、markdown语法的编辑器

1、下载Vditor插件 npm i vditor 我的vditor版本是3.10.2,大家可以自行选择下载最新版本 官网:Vditor 一款浏览器端的 Markdown 编辑器,支持所见即所得(富文本)、即时渲染(类似 Typora)和分屏 …

消息队列选型之 Kafka vs RabbitMQ

在面对众多的消息队列时,我们往往会陷入选择的困境:“消息队列那么多,该怎么选啊?Kafka 和 RabbitMQ 比较好用,用哪个更好呢?”想必大家也曾有过类似的疑问。对此本文将在接下来的内容中以 Kafka 和 Rabbit…

阿里AI-Spring Cloud Alibaba AI:快速搭建自己的通义千问

本文基于官方文档。 Spring AI 官方文档:Spring AI :: Spring AI Reference 中文文档:Spring AI 简介 - spring 中文网 (springdoc.cn) Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用…

流光卡片,生成炫酷文字,开源API

https://fireflycard.shushiai.com/ 这是我的一个网站,流光卡片,主要功能是帮你制作酷炫的文字卡片,用精美的卡片让你的文字生动起来。 展示效果如下: 你可以用它制作卡片,来记录自己的表达。支持设定卡片背景、LOGO…

梗图生成器突然爆红;ElevenLabs发布IOS APP 高质量语音朗读手机各种文本内容;开源工作流架构ControlFlow

✨ 1: 梗图生成器 fabianstelzer 在Glif做的一个超强meme生成器 Glif 是一个工作流,能生成文字图片和视频,用工作流的形式可以完成很多的花样来。 最近爆红的梗图生成器,WOJAK MEME GENERATOR ,也是用工作流的形式来生成这些有…

MetaGPT全面安装与配置指南

文章目录 MetaGPT环境配置1.1 检查Python版本1.2 拉取MetaGPT仓库1.3 拉取源码本地安装1.4 MetaGPT安装成果全流程展示1.5 尝试简单使用 MetaGPT的API调用2.1 本地部署大模型尝试安装必要的依赖下载并配置大模型配置API服务 2.2 讯飞星火API调用获取API密钥安装讯飞星火SDK调用…

宝塔面板之 wwwroot修改不了权限

宝塔使用Apache环境,搭建网站出现 You don’t have permission to access this resource.Server unable to read h出错时的解决办法 今天由于某些原因导致我宝塔 在Apache和Nginx运行环境下不断切换,结果我网站全部不能正常打不开了 结果我发现原本宝塔…