1  引言  

距离上次文章已经过去了一个半月,但并没有停止研究fpga的脚步,今天给大家带来的是基于ZCU106开发板的通过SFP+/SGMII口通过光纤或网线与PC机传输数据的内容,本系列教程计划写三篇,如有不对之处还请海涵,本人也是第一次研究。下面是本人做的SOC-PL侧的10G网UDP协议的数据回传项目,包含以下开发板的UDP传输,需要的请联系我的邮箱。

2  网络数据协议讲解TCP、UDP、IP、MAC

应用层相当于电脑的比如浏览器请求、文件传输请求,对于FPGA来讲,就是数据生成部分或者数据请求部分;传输层就是说数据包通过什么协议进行传输,TCP协议传输可靠但速度慢、UDP传输不可靠但速度快(QQ就是UDP传输);网络层就说,数据包要发送给谁,或者要不要接收这个数据包,比如送快递的,需要知道你的手机,这个对应的就是设备的IP地址;数据链路层就是指示你的固定位置,比如你的户口本、者身份证住址、快递的接收地点,这个应该就是相当于MAC地址;物理传输介质就是光纤或者网线,相当于送快递走的公路啦。 所以要发送/接收一个网络数据包需要经过5个步骤,3次封装。因此我们可以得到下图:

由上图可知,我们的网络数据包的接收与发送是双向的,因此对于FPGA来说,既要写接收数据又要写发送数据;而针对PC来说,这个任务操作系统已经将其实现,我们只需要调用相关接口即可。

下面我们采用一个FPGA接收PC发送的网络数据包的例子来进行详细解释网络数据包的各个组成部分以及对应关系。PS:网络数据包最大为2^16字节

2.1  数据链路MAC子层

由上图可知,MAC数据包由前导码、SFD、DA、SA、数据包类型、数据区域与FCS校验构成。

1、前导码与SFD:由连续的7个字节的55与1个字节的D5构成。因此我们接收到的数据包的开头为pack_head=D5_55_55_55_55_55_55_55(由于数据模块是从低位开始接收的,因此实际上接收到的数据位为 55_55_55_55_55_55_55_D5)

2、DA与SA:由目的MAC地址与源MAC地址构成。因此我们接收到的数据包为pack_das=55545352515A_000000000002(000000000002是FPGA的MAC地址,这个写代码的时候随便写一个就行,但是写好就不能随便改了。55545352515A是PC的地址,cmd-ipconfig查看即可)

3、类型/长度:用来描述属于IP、ARP、SNMP包,也可以用来描述MAC数据包的长度,大于0x0600(2字节)时,描述的是类型而非长度。采用UDP传输时,一般设置为0x0800。因此我们接收到的数据包为pack_type_len=0008。想看都有哪些内容请点击下面的传送连接。

6 --> MAC层协议_老理说的好的博客-CSDN博客_mac层协议以太网的MAC帧格式有好几种,被广泛应用的是DIX Ethernet V2标准,还有一种是IEEE的802.3标准,该标准经过了多年的发展,已经出现了很多种子标准。DIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网MAC 的全称 medium acess control 即媒体访问控制,以太网的数据链路层。媒体访问控制主要是解决数据流发送规则,谁https://blog.csdn.net/weixin_38387929/article/details/116558181?utm_term=mac%E6%95%B0%E6%8D%AE%E5%8C%85%E4%B8%8A%E5%B1%82%E4%BD%BF%E7%94%A8%E7%9A%84%E5%8D%8F%E8%AE%AE&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduweb~default-0-116558181-null-null&spm=3001.44304、DATA:这里是网络层IP、ARP数据

5、FCS校验:这个很重要!!!,如果接收方收到的数据校验不正确会把数据抛弃,因此当FPGA给PC发数据时,需要正确的FCS校验码PC才能收到数据。下面是连接,大家自行下载

基于Verilog的FCS校验-嵌入式文档类资源-CSDN下载资源来自github,用于Verilog进行网络通信时的FCS校验码的生成更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq_37912811/85749732下面是FCS校验规则:

也就是说,需要FPGA与PC事先约定好一个校验码,针对IPV4的校验码通常采用32位的 04c11db7串进行加密与校验。加密时将所有数据位左移32位然后除以04c11db7,所得数据放到最后4个字节,校验时将所有数据除以04c11db7,如果为0则代码数据传输正确可以接收,不是0则直接抛弃。

2.2  网络IP层

由上图可知,MAC子层的DATA域包括,IP首部的20字节与DATA域。

1、版本+首部长度+服务类型

udp传输时设置的值一般为pack_ip_head=0045,即对应的版本为4,首部长度为5,服务类型为0

2、总长度:UDP长度+20字节(长度都是按字节算的) 因此最大值为65535字节,所以这里解释了为什么长度时65536,因为网络协议约最大长度就是16位,即2^16=65536。

3、标识:

比如当我们下载时,一个数据包肯定发送不完,那就需要多次发送,这个标识指示是否是同一段数据,一般设置0001,所以接收到的数据为0100

4、标记、分段漂移、生存时间:本教程内容只实现了数据小于65536字节的传输,因此这里设置的数据为0000,生存时间设置为40。因此接收到的数据为:400000下面是各个指标的解释:

5、协议:该字段指出在IP处理过程完成之后,有哪种上层协议接收导入数据报。这个字段的值对接收方的网络层了解数据属于哪个协议很有帮助。设置为11。

6、首部校验合:这里的校验方法与UDP校验和校验方法相同,而UDP校验和是非必选的,因此这里讲解校验和后,UDP的校验和不再重复讲解。

例1、

例2、 

7、源地址与目的地址

192.168.1.100=C0_A8_01_64(src);192.168.1.128=C0_A8_01_80(dst)。

因此,FPGA接收到PC发送来的数据为:80_01_A8_C0_64_01_A8_C0

8、DATA数据域,保存传输层数据

2.3  传输TCP/UDP子层

2.3.1 UDP子层

1、src_port与dst_port

源端口5678=162E,目的端口1234=04D2;因此FPGA接收到的的数据为都D2_04_2E_16

2、udp长度与udp校验和

UDP长度=8字节的UDP首部+数据位,因此此字段最小为8,UDP校验上面已经讲解过了。

如果还是觉得有问题,可以看下面的链接讲解:

IP 数据包格式_半砖的博客-CSDN博客_ip协议数据包格式IP 数据包是一种可变长分组,它由首部和数据负载两部分组成。首部长度一般为20-60字节(Byte),其中后40字节是可选的,长度不固定,前20字节格式为固定。数据负载部分的长度一般可变,整个 IP 数据包的最大长度为65535字节。版本:【4位】指 IP 协议版本。通信双方使用的版本必须一致,IPv4 值为0100,IPv6 值为0110。首部长度:【4位】表示首部的长度,IP 头的最大长度为60字节,而该字段占4位,最大表示的十进制数为15,所以该字段的值*4才代表首部长度所占的字节数.https://blog.csdn.net/hexf9632/article/details/124846416

2.3.2 TCP子层:本项目FPGA采用UDP传输,因此TCP不做介绍

tcp数据包的介绍_一十六笔画生的博客-CSDN博客_tcp数据包TCP报文由首部和数据两部分组成。首部一般由20-60字节(Byte)构成,长度可变。其中前20B格式固定,后40B为可选。  因为,TCP报文还得传给下层网络层,封装成IP包,而一个IP包最大长度为65535,同时IP包首部也包含最少20B,所以一个IP包或TCP包可以包含的数据部分最大长度为65535-20-20=65495B。  TCP报文中数据部分是可选的,即TCP报文可以不包含数据(同理IP包也可以不包含数据)。不含数据的TCP报文通常是一些确认和控制信息类的报文,如TCP建立连接时的三次握.https://blog.csdn.net/weixin_44809632/article/details/106483711至此,本系列教程的第一篇基础知识讲解已经完成。

FPGA--ZCU106通过SFP+/SGMII模块传输数据-第一讲(全网唯一)相关推荐

  1. FPGA--ZCU106通过SFP+/SGMII模块传输数据-第二讲(全网唯一)

    1 引言 有了上一讲的基础知识后,本篇进行基于SoC的PL与PS侧协同完成通过网口SGMII的udp传输,本教程为全网第一篇关于ZCU106开发板的教程,先上视频看效果. ZCU106与PC的UDP通 ...

  2. 基于FPGA的Hamiton方程--辛几何算法实现(全网唯一)

    1.本文实验基于冯康院士的<哈密尔顿系统的辛几何算法>开展,链接:https://pan.baidu.com/s/1GM0Px7SLWBWzh4sXmAdcwg  提取码:fmkt 2.虽 ...

  3. XFP光模块与SFP+光模块有何区别?能互通吗?

    在光纤网络中,光模块是实现数据传输必不可少的组件之一.10G光模块凭借着较低的成本和功耗被广泛应用于学校.公司等应用环境中.XFP光模块和SFP+光模块是两种常见的10G光模块,您对它们了解多少?知道 ...

  4. FPGA学习之串口发送模块设计与验证

    FPGA学习之串口发送模块设计与验证 1.实验目的: 实现一个串口输出,通过上位机PC查看接收到的是否是串口发送的数据. 2.实验介绍: 学习UART通信原理及其硬件电路设计,使用FPGA实现UART ...

  5. 如何为SFP光模块搭配对应的光纤跳线?

    光模块没有了光纤跳线,就不能实现光纤网络连接.由于光模块的不同传输介质,光纤接口.传输距离和数据速率都会有区别.想要识别这些光模块并不难,但是为光模块搭配合适的光纤跳线还是需要花一些心思的,易天光通信 ...

  6. 易天教你如何保养SFP光模块

    人们都想要留住青春,拥有好的皮肤,这些都是需要保养的.那么你们又知不知道其实光模块也是需要保养的呀? SFP光模块里面涵盖了许多精密的光学元件和电路元件,在日常使用中,我们需按照规范进行操作,否则很容 ...

  7. sfp光模块和sfp+高速线缆有什么区别?

    一.什么是sfp光模块?什么是sfp+高速线缆? sfp光模块是小型热插拔光模块,是GBIC光模块的升级版本,体积比GBIC光模块减少一半,但它却可以在相 同的面板上配置多出一倍以上的端口数量,功能上 ...

  8. SFP光模块基本概念及使用注意事项详解

    光模块(optical module)由光电子器件.功能电路和光接口等组成,光电子器件包括发射和接收两部分.简单的说,光模块的作用就是光电转换,发送端把电信号转换成光信号,通过光纤传送后,接收端再把光 ...

  9. 什么是SFP光模块?SFP光模块小知识介绍!

    SFP光模块是SFP封装的热插拔小封装模块,目前最高速率可达10.3G,接口为LC.SFP光模块主要由激光器构成.SFP分类可分为速率分类.波长分类.模式分类.接下来就由飞畅科技的小编来为大家详细介绍 ...

最新文章

  1. RFID系统的基本工作原理
  2. mysql当前时间减1小时_最佳睡眠时间:晚上睡眠不超8小时,午睡不超1小时
  3. ifconfig 命令介绍
  4. 在 NetBeans IDE 中设计 Swing GUI
  5. Struts2配置文件中传递参数的一个小问题
  6. 【实数二分/前缀和维护】Best Cow Fences
  7. java web响应式框架_Web开发的十佳HTML5响应式框架
  8. 【原创】.NET Core应用类型(Portable apps Self-contained apps)
  9. TCP/IP卷一实验之------EIGRP
  10. mysql 定时备份 空_如何在不停止Mysql服务的状况下,定时备份mysql数据库
  11. 35万推特僵尸账号发现始末:这只是开始?
  12. IOS越狱--修复Cydia闪退(或打不开)的办法
  13. ps联盟服务器无响应怎么办,PS联盟网新手教程视频
  14. 计算机内部如何防止溢出,电脑提示堆栈溢出是什么意思 该怎么解决
  15. 数据结构:假设有一个带头结点的单链表L,每个结点值由单个数字、小写字母和大写字母构成。设计一个算法将其拆分成3个带头结点的单链表L1、L2和L3,L1包含L中的所有数字结点,L2包含L中的所有小写字母
  16. evm?衡そΑ_RGB? CMYK? Α? 什么是图像通道,它们是什么意思?
  17. 电子元器件贸易采购管理常见难题及解决方案
  18. Android:BroadCast Receiver
  19. STM32的SG90舵机驱动
  20. Suzy找到实习了吗 Day24 | 回溯算法开始啦:回溯的理论知识,77组合(有一个问题没有解决)

热门文章

  1. 【下载源码】在线生成网页缩略图.超越Snap.com:WebSnap Beta 1.1 发布。感谢博客园的“萧寒”重写的底层。开源。
  2. Arduino 学习思考与记录
  3. 微博吃瓜总是晚一步才知道,程序员直接写了一个热搜提醒工具
  4. 指令下载Google网盘数据遇到的无法连接问题
  5. 蓝牙耳机连接电脑,找不到stereo模式
  6. MATLAB用相干解调DSB信号,AM DSB信号解调的MATLAB实现
  7. 开源协议(GPL,LGPL,BSD,MIT,Apache)
  8. 如何在 Visual Paradigm 中创建流程图丨使用教程
  9. R可视乎|创建乐高版马赛克图
  10. ubuntu 20 无法联网或无法解析域名(2022最新办法,实测有效)