当前位置: 首页 > news >正文

以太网基础⑤UDP 协议原理与 FPGA 实现

1.今日摸鱼任务

学习UDP协议的数据字段格式

02_【逻辑教程】基于HDL的FPGA逻辑设计与验证教程V3.5.2.pdf

56 UDP 协议原理与 FPGA 实现
57实用性 UDP 发送逻辑设计与实现
58 实用性 UDP 接收逻辑设计与实现

2. UDP协议与格式

用户数据报协议(User Datagram Protocol , UDP)开放式系统互联(Open System Interconnection,OSI) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768 UDP 正式规范。UDP IP 报文的协议号是 17(0x11)

UDP 用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用 UDP 协议。
MAC 帧中的数据段为 IP 数据报文;
IP 报文中的数据段为 UDP 报文;
UDP 报文中的数据段为用户希望传输的数据内容。

UDP报文格式:

UDP 协议使用端口号为不同的应用保留其各自的数据传输通道。实现对同一时刻内多项应用同时发送和接收数据的支持。

UDP 协议使用报头中的校验值来保证数据的安全。但检测到错误时,UDP 不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。
UDP 报文的 checksum 字段可以为正确,也可以忽略(0x0000),但不能为错,为错误一些标准的以太网工具将会将这样的数据包直接丢弃。

3. 以太网报文发送模块

3.1 第一种设计方案

UDP 帧格式包括:前导码+帧界定符、以太网头部、IP 头部、UDP 头部、UDP 数据、FCS 数据。

IDLE:空闲状态
TX_PREAMBLE:发送以太网的 7个字节的前导码和 1字节的帧首界定符状态
TX_ETH_HEADER:发送以太网头部数据状态
TX_IP_HEADER:发送 IP 头部数据状态
TX_UDP_HEADER:发送 UDP 头部数据状态
TX_UDP_DATA:发送 UDP 数据状态
TX_FILL_DATA:发送填充数据状态,当需要发送的有效数据的长度比较小的时候,导致以太网帧的数据段小于 46 字节就需要用 0 来填充到 46 字节来满足以太网帧数据段长度要求。
TX_CRC:发送 FCS 校验数据状态
TX_DLY:以太网帧间隙,千兆以太网每一帧之间都需要间隔至少 96ns 的时间。

3.2 高性能 UDP 发送逻辑设计

MAC帧头、IP报头、UDP报头等看成一个整体,按照顺序依次发送这些报头后,再发送用户数据

不存在状态的分支

4. UDP 接收逻辑设计

RX_PREAMBLE :当接收到帧界定符(D5)和 5前导码(55)时,进入到 RX_ETH_HEADER 状态,如果接收超过 7个前导码,则表明此时数据接收错误,进入 IDLE 状态
RX_IP_HEADER:判断之前获取的以太网头部数据是否正确,接收完 20 IP 头部书数据之后,进入
RX_UDP_HEADER 状态;若数据接收错误,进入 IDLE 状态。
RX_UDP_HEADER:判断前一个状态获取的以太网 IP 头部数据是否正确
RX_DATA:接收的数据段个数小于 18时,说明此时接收的个数较少,进入RX_DRP_DATA态,当接收的数据个数等于以太网 UDP的帧数据段个数时,进入 RX_CRC态,否则处于 RX_DATA 状态等待。

//简单摸一下鱼
http://www.lryc.cn/news/584159.html

相关文章:

  • 西电考研录取:哪些省份考研上岸西电更容易?
  • websocket的客户端(发送接收json的消息)
  • TCP-与-UDP-协议详解:原理、区别与应用场景全解析
  • 自动驾驶环境感知:天气数据采集与融合技术实战
  • 关键字前跟空格或首字母, 关键字后跟空格或标点符号; 标点符号后面不是必须跟空格;
  • Duplicate cleaner pro 的使用技巧
  • 汽车加气站操作工分类有几种
  • 制作一款打飞机游戏78:游戏选项
  • 城市脉搏中的隐形守护者
  • 羊肚菌自动采收车设计cad【7张】+三维图+设计说明书
  • U-Boot 2025.07 引入的 “uthreads” 优势介绍
  • 【三维重建】开源slam数据集介绍
  • ssh: connect to host github.com port 22: connection refused
  • 微服务架构下某汽车APP电商模块订单服务自动化测试方案(Python蹭个场)
  • 庄懂的水特效AP01/L16/Water
  • 【TCP/IP】10. 引导协议与动态主机配置协议
  • 汽车功能安全-软件集成和验证(Software Integration Verification)【目的、验证输入、集成验证要求】9
  • RHCE考试 ——笔记
  • 接口(上篇)
  • 编译OpenHarmony-4.0-Release RK3566 报错
  • 【保姆级教程】基于anji-plus-captcha实现行为验证码(滑动拼图+点选文字),前后端完整代码奉上!
  • 前端面试十一之TS
  • 电路研究9.4——合宙Air780EP的LuatOS、CSDK跟标准AT
  • 【Ubuntu】编译sentencepiece库
  • php中array($this, ‘loadClass‘)表示啥意思?
  • 【STM32 学习笔记】WDR看门狗
  • 在 Apple 生态中,`aarch64` 和 `arm64` 本质上是相同的架构
  • 解决问题:在cmd中能查看到pnpm版本,在vscode终端中却报错
  • Rust and the Linux Kernel
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十七天