UDP网口(1)概述

在这里插入图片描述

文章目录

  • 1.计算机网络知识在互联网中的应用
  • 2.认识FPGA实现UDP网口通信
  • 3.FPGA实现UDP网口通信的方案
  • 4.FPGA实现UDP网口文章安排
  • 5.传送门

1.计算机网络知识在互联网中的应用

以在浏览器中输入淘宝网为例,介绍数据在互联网是如何传输的。我们将要发送的数据包称作A(无论经历了怎么的编码都叫做A)。1.在发送数据之前,主机应该有自己的MAC地址和IP地址才具备发送的条件,每一块网卡上都有一个唯一的MAC地址,IP地址使用DHCP动态主机配置协议统一管理。2.打开浏览器,输入淘宝网址(又称域名),在浏览器缓存中查找是否保存有这个域名对应的IP地址,如果没有。将采用DNS(域名解析协议)解析ip地址,具体过程为:网络客户端PC输入www.baidu.com问本地DNS服务器,该网址的ip地址是多少,本地服务器查看缓存列表,缓存中没有就去问根(13台)DNS服务器,根回复去问.com区域管理,.com回应,由163.com管理,由163.com服务器返回ip地址,完成域名解析。3.已知对端IP之后,此时由浏览器(应用层)打包http协议找到传输层的对应端口,传输层使用UDP、TCP之一打包到网络层(UDP面向报文主要用于高速数据的实时传输,TCP面向连接,区别于UDP最大的特点是在传输数据之前先要建立连接(这是数据之外的开销,就是常说的三次握手),传输结束后要结束连接(四次挥手),而UDP可能随时的发送报文)。此时A在主机中的网络层。4.互联网分三个区域,接入层(用户主机所在一级,或大或小的局域网),汇聚层(运营商管理的交互机与数据链路),核心网。A要通过自己所处的局域网必须经过该局域网的路由器(指的是实验室多台主机共用的那个路由器,或者家里的路由器),路由器去寻找接入层与汇聚层之间的交换机。那么此时A应该打包MAC头,到达数据链路层,此时数据在向前传输首先应该知道该路由器的MAC地址,用到了ARP地址解析协议(广播ARP报文),已知对端的ip地址,获取对端的MAC地址,已知对端MAC之后,A打包MAC头,在以太网中传输到路由器上。注:以太网中传输是用到MAC地址的,而以太网是局域网的组网协议(类似的协议还有WLAN!),也就是说对于发送端,MAC地址或者说以太网协议,仅在本地主机到那个直连的路由器之间应用。5.A到达路由器之后,将寻找最短路径(路由)找对端,将采用到RIP路由信息协议和OSFP开放式最短路径优先协议找下一跳的路径,当A到达核心网中时,由于AS域自治,可能还需使用AS之间的边界网关协议BGP,最终A到达淘宝服务器。6.淘宝服务器响应A的请求,返回数据将经历A来时经历的动作到达A。这种交互方式称之为C/S交互,常见的如访问网址;与之对应的另一种交互方式是P2P,例如微信聊天(发消息不去找服务器,而是找某个客户端)。
上述是计算机网络知识在互联网中的应用,涉及各种互联网中的设备与转发。根据冯诺依曼关于计算机架构的理论,具有中央处理器,存储器,输入输出设备,控制器的设备就是计算机,因此计算机网络知识适用于FPGA应用场景。基于不同网络设备实现不同应用的场景很多,TCP/IP协议架构十分庞杂,计算机网络知识很丰富。FPGA实现UDP网口通信系列文章将阐述FPGA与PC如何实现点对点通信。

2.认识FPGA实现UDP网口通信

FPGA实现UDP网口点对点通信,首先要讨论三个问题,第一,数据交互的双方都是FPGA(或PC)里面的谁(具体指哪一个协议)?通过解决这个问题,明白当前要建立的数据链路通道从哪里来到哪里去;第二,指明设备硬件的环境,例如,什么接口,什么芯片等,了解应用基于的硬件环境,搞清每一个硬件部分发挥的作用;第三,不同的硬件环境应该采用不同的技术方案,并且明确基于这样的数据链路和硬件环境创建什么样的应用。本节将回答第一个问题,下一节回答第二第三个问题。
OSI网络模型有七层,但更为人熟知的是五层网络模型。如下图所示左半部分,上层的协议对于下层协议而言只是一个“数据段”。以FPGA到PC上行数据为例,FPGA将用户数据(应用层数据)打包,添加传输层协议信息形成传输层数据,依次类推网络层数据和链路层数据(这几个步骤都是要FPGA完成的)。通过物理层传输到PC设备上,PC上边的接收流程对开发者不可见,或者说使用QT中的Socket开发无需关注底层数据,直接在传输层获取应用层数据即可。如图右半部分,这是一个TCP/IP协议簇的简要示意,下面关注在这个数据链路中到底要实现什么协议?在PC与FPGA连接的场景中,大多是通过网口下发设备运行所需数据,或者通过网口接收设备采集的数据,并不做网络应用,而是偏向于工业控制和数据采集,因此应用层通常是设备的数据,而不去实现某应用层协议。对于传输层通常是TCP和UDP两种,TCP使用单FPGA架构实现的案例很少,主要原因是协议复杂,硬件资源有限,即便实现可靠性和稳定性无法保证。可通过在FPGA内部搭建软核或者使用Soc实现TCP协议,但这种做法与其他的处理器相比不占优势,因此实际应用也不多见。在多数与PC相连用作数据采集的场景中,实现UDP协议能够传输数据即可。网络层将实现ip协议,这是因为UDP协议在ip数据包中打包。此外还可根据应用场景实现ARP协议和ping通信。ARP可以根据已知的对端的ip地址广播(指对端mac地址设置为广播地址)ARP请求报文,网络中所有设备收到ARP请求,匹配IP的设备将返回ARP应答包,以此告知自己的MAC地址。实现ARP协议的好处是,PC给FPGA发送数据,需要知道FPGA板卡的MAC地址,FPGA也需要知道PC的MAC地址,实现ARP协议,当切换不同的PC与FPGA通信时,FPGA可识别不同主机的MAC地址(否则需要在命令提示符对话框中使用arp -s命令手动绑定)。在链路层将按照以太网数据帧格式将网络层数据打包即可。
在这里插入图片描述

3.FPGA实现UDP网口通信的方案

实际上,任何设备实现计算机网络的某个功能就是要在对应的协议层实现相应的协议。FPGA实现UDP网口通信就是要在传输层实现UDP协议,在网络层实现IP(大部分都需要ARP协议),在物理层实现以太网协议,数据链路层没有什么协议。具体为在PHY层实现物理信号的传输和接收,如编码、解码、串行化、解串行化、介质连接管理等。数据链路层中的MAC(Media Access Control)子层负责帧封装和解封装,将上层协议的数据包封装成以太网帧,添加以太网头部和尾部(如源MAC地址、目标MAC地址、以太网类型字段等);负责帧校验和:计算和验证以太网帧的校验和(Frame Check Sequence,FCS);负责帧过滤:根据MAC地址过滤帧,只接收发给本设备的帧或广播帧;负责流量控制:实现流量控制机制(如基于IEEE 802.3x的流控)等。此外数据链路层的LLC(Logical Link Control)子层提供逻辑链路控制服务,使得上层协议能够通过一个统一的接口访问数据链路层。网络层的IP协议负责数据包的寻址和路由,处理IP头部生成和解析;ARP协议将IP地址映射为MAC地址,必要时发送ARP请求和处理ARP回复。UDP协议提供无连接、不可靠的传输服务,负责UDP头部的生成和解析。
对于实现计算机网络的设备,具体是设备中的哪些部分实现哪一层是无关紧要的,也正因为如此,形成了不同的方案,不同方案之间也有不同优缺点适用于不同的应用场景。此外,以太网方案现在用的最多的是千兆网口和万兆网口,本系列介绍不同的方案实现这两种接口。
方案一,使用FPGA组包实现MAC层及以上的层+外部的PHY芯片实现物理层。这种方案FPGA只需要按照与PHY芯片一致的通信接口,按照不同层的通信要求传输数据即可。这类通信接口常见的有RGMII、GMII等(二者都适配)千兆以太网口。这种方案灵活性高,可根据自己的需求定制满足特定场景需求,也不需要购买额外的IP核,成本相对较低。但需要对MAC层的协议和实现有深入的了解,相对的开发难度大,调试成本较高。
方案二,使用xilinx 三态以太网 IP核实现mac层+外部的phy芯片实现物理层。这种方案使用Xilinx提供的IP核已经经过验证,使用方便,降低了开发难度,开发效率会高,与此同时它依赖于IP核的功能,灵活性相对较低。
方案三,使用三态以太网IP核+PCS/PMA实现物理层(通过SFP与PC连接)它的有点是集成度高:通过IP核实现MAC和PCS/PMA层,简化了设计。高性能:可以支持更高的传输速率,通常用于千兆或万兆以太网通信。缺点:成本较高:需要额外购买PCS/PMA的IP核。硬件要求高:需要使用SFP模块进行光电转换,增加了硬件成本和复杂性。这种方案需要使用光电转换模块与PC的网卡相连,或者PC端配备相应的SFP光纤网卡或具备SFP接口的交换机。
方案四,使用10G Ethernet Subsystem IP核实现UDP通信的所有层与协议,进而实现万兆以太网通信。该方案同样需要PC端配备相应的SFP光纤网卡。

4.FPGA实现UDP网口文章安排

本文作为概述介绍要做的哪些事情以及相互之间的关系。方案一用两篇文章介绍,其篇名与链接是UDP网口(2)逻辑组包(上)、UDP网口(3)逻辑组包(下);随后在方案一的基础上做了一个应用,篇名与链接是UDP网口(4)ROM存储网口转发Qt显示;方案二篇名与链接是UDP网口(5)TEMAC IP核组包。方案三的代码开发工作已经完成,相关硬件在采购中,将在验证后第一时间发布。方案四的篇名与链接是UDP网口(6)10G subsystem Ethernet IP实现万兆以太网通信。

5.传送门

  • 我的主页
  • FPGA通信接口专栏汇总导航
END

🔈文章原创,首发于CSDN论坛。
🔈欢迎点赞❤❤收藏⭐⭐打赏💴💴!
🔈欢迎评论区或私信指出错误❌,提出宝贵意见或疑问❓。


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

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

相关文章

在 ROS 2 中创建一个节点的过程

在 ROS 2 中创建一个节点的过程包括几个关键步骤。以下是一般的步骤流程,使用 C 和 ament_cmake 构建系统为例: 步骤 1: 创建工作空间 如果还没有工作空间,首先创建一个: mkdir -p ~/my_ros2_ws/src cd ~/my_ros2_ws colcon bu…

Java学习Day10:总结帖

学习第十天,发一个总结帖! 1.基本数据类型,变量 基本数据类型不用过多赘述,其在后面不论是面型对象还有其他知识等都会经常使用; 变量最重要的就是其定义: 这对于我们之后理解自定义类型变量有很大的用处…

【从零开始实现stm32无刷电机FOC】【实践】【5/7 stm32 adc外设的高级用法】

目录 采样时刻触发采样同步采样 点击查看本文开源的完整FOC工程 本节介绍的adc外设高级用法用于电机电流控制。 从前面几节可知,电机力矩来自于转子的q轴受磁力,而磁场强度与电流成正比,也就是说电机力矩与q轴电流成正相关,控制了…

通信网络机房服务器搬迁流程方案

数据中心机房搬迁是一项负责高难度的工程。整个搬迁过程充满挑战,伴随着各种风险。如何顺利的完成服务器的迁移,需要专业的数据中心服务商全程提供保障。友力科技(广州)有限公司,作为华南地区主流的数据中心服务商&…

Leetcode3208. 交替组 II

Every day a Leetcode 题目来源:3208. 交替组 II 解法1:环形数组 把数组复制一份拼接起来,和 3101 题一样,遍历数组的同时,维护以 i 为右端点的交替子数组的长度 cnt。 如果 i ≥ n 且 cnt ≥ k,那么 i…

【java】力扣 跳跃游戏

文章目录 题目链接题目描述代码1.动态规划2.贪心 题目链接 55.跳跃游戏 题目描述 代码 1.动态规划 1.1 dp数组的含义 dp[i]:从[0,i]的任意一点处出发,你最大可以跳跃到的位置。 例如nums[2,3,1,1,4]中: dp[0]2 dp[1]4 dp[2]4 dp[3]4 dp[4]8&#xff…

【思科】链路聚合实验配置和背景

【思科】链路聚合实验配置和背景 背景链路聚合基本概念链路聚合聚合接口 思科链路聚合协议01.PAgP协议02.LACP协议 思科链路聚合模式LACP协议模式PAgP协议模式ON模式 实验准备配置二层链路聚合LACP协议模式SW1SW2PC1PC2查看LACP聚合组建立情况查看LACP聚合端口情况查看逻辑聚合…

「实战应用」如何用DHTMLX将上下文菜单集成到JavaScript甘特图中(三)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。 DHTMLX Gantt是一个高度可定制的工具,可以与项目管理应用程序所需的其他功能相补充。在本文中您将学习如何使用自定义上…

设计模式——模版方法和策略模式

前言 作为一名资深CV工程师,学会为自己减少工作量乃重中之重。但只是一味地CV,只会因为劣质代码而让自己的工作量加倍,为了将来不被繁重的维护工作而打扰自己的休息日,为了更好的节能,学习设计模式,刻不容缓…

数据结构_Map和Set

目录 一、搜索模型 二、Map 2.1 Map.Entry 2.2 Map 方法 2.3 Map 注意事项 三、Set 3.1 Set 方法 3.2 Set 注意事项 四、哈希表 4.1 哈希表 4.2 冲突 4.3 哈希函数设计 4.4 闭散列 4.5 开散列/哈希桶 总结 【搜索树】 二叉搜索树又称二叉排序树,它或…

spring-boot 整合 redisson 实现延时队列(文末有彩蛋)

应用场景 通常在一些需要经历一段时间或者到达某个指定时间节点才会执行的功能,比如以下这些场景: 订单超时提醒收货自动确认会议提醒代办事项提醒 为什么使用延时队列 对于数据量小且实时性要求不高的需求来说,最简单的方法就是定时扫描数据…

语音合成-TTS文字转语音(专业版)

语音合成-TTS文字转语音(专业版) 一、工具简介 *使用强大的智能AI语音库,合成独具特色接近真人语音的朗读音频。 *使用极具表现力和类似人类的声音,使文本阅读器和已启用语音的助理等方案栩栩如生。 *用途:这个语音工具,不仅可…

【C语言初阶】C语言数组基础:从定义到遍历的全面指南

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C语言 “ 登神长阶 ” 🤡往期回顾🤡:C语言函数 🌹🌹期待您的关注 🌹🌹 ❀数组 📒1. 什么是数组…

【C++】学习笔记——AVL树

文章目录 十六、AVL树1. AVL树的概念2. AVL树节点的定义3. AVL树的插入4. AVL树的旋转5. AVL树的验证6. 完整代码测试7. AVL树的性能 未完待续 十六、AVL树 1. AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树&…

前端基础之JavaScript学习——函数的使用

大家好我是来自CSDN的前端寄术区博主PleaSure乐事,今天我们继续有关JavaScript的学习,使用的编译器为vscode,浏览器为谷歌浏览器。 函数的声明与使用 声明 在JavaScript当中函数的声明和其他语言类似,使用如下格式即可声明&…

实战篇(十):使用Processing创建可爱花朵:实现随机位置、大小和颜色的花朵

使用Processing创建可爱花朵 0.效果预览1. 引言2. 设置Processing环境3. 创建花朵类4. 实现花瓣绘制5. 绘制可爱的笑脸6. 鼠标点击生成花朵7. 完整代码8. 总结与扩展0.效果预览 在本教程中,我们将使用Processing编程语言来创建一个可爱的花朵生成器。通过封装花朵为一个类,并…

大语言模型-检索测评指标

1. MRR (Mean Reciprocal Rank)平均倒数排名: 衡量检索结果排序质量的指标。 计算方式: 对于每个查询,计算被正确检索的文档的最高排名的倒数的平均值,再对所有查询的平均值取均值。 意义: 衡量…

【STM32】按键控制LED光敏传感器控制蜂鸣器(江科大)

一、按键控制LED LED.c #include "stm32f10x.h" // Device header/*** 函 数:LED初始化* 参 数:无* 返 回 值:无*/ void LED_Init(void) {/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENAB…

199.二叉树的右视图(DFS)

给定一个二叉树的根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 示例 2: 输入: [1,null,3] 输出: [1,3] 示例 3: 输入: [] 输出: [] 解题…

贪心算法总结(1)

一、贪心算法简介 常用方法&#xff1a;交换论证法、数学归纳法、反证法、分类讨论 二、柠檬水找零&#xff08;交换论证法&#xff09; . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool lemonadeChange(vector<int>& bills) {int five0,t…