专栏首页OpenFPGA基于UDP/IP协议的电口通信(三)

基于UDP/IP协议的电口通信(三)

3

有些生命自然而来的缘份,是约定俗成好了的。无力改变。只能精心的筹划痴心的遥望耐心的守候动心的注目。

ip_layer层模块设计

ip_layer 主要完成对 udp 报文的 ip 协议控制,其中包含了三个子模块:ip_send、ip_receive 和icmp_echo_data_fifo,分别完成对 ip 层协议数据的发送和接收。除此之外,在 ip_receive 中包含了解析 icmp 协议的子模块 icmp_packet_process,ip 首部校验和校验模块ip_header_checksum_check。

ip_send 中包含发送 icmp 协议包的子模块 icmp_packet_send。目前,可支持 icmp 协议中的 ping 子协议,可接收并应答外部的 ping 请求包。ip_send 中例化了长度为 20 的移位寄存器组udp_shift_register,用于发送 ip 首部时进行数据缓冲。

另外,icmp_echo_data_fifo 用于缓存 icmp_packet_process 模块所解析出的 ping 请求数据包中的附加数据,供 icmp_packet_send 模块发送 ping 应答包时读取。

图8‑27 ip_layer层模块框图

表8‑10 ip_layer层模块框图引脚说明

reset

复位信号,高电平有效

udp_tx_request

UDP发送接口数据发送请求,高电平有效

udp_tx_data_valid

UDP发送接口发送数据有效标志信号,高电平有效

udp_tx_data

UDP发送接口所需发送的数据

udp_tx_data_length

UDP发送接口一次发送的数据包长度(不含 udp、ip、mac 首部),单位:字节

udp_rx_data_valid

UDP接收接口发送数据有效标志信号,高电平有效

udp_rx_data

UDP接收接口所需发送的数据

send_buffer_ready

握手是基于 ready、request、ack三个信号来实现的

send_buffer_ack

握手是基于 ready、request、ack三个信号来实现的

ip_tx_ready

握手是基于 ready、request、ack三个信号来实现的

ip_tx_ack

握手是基于 ready、request、ack三个信号来实现的

ip_tx_clk

时钟信号

ip_tx_dst_address

用户接口数据包的发送源 ip 地址

ip_tx_request

发送请求,高电平有效

ip_tx_data_valid

发送数据有效标志信号,高电平有效

ip_tx_data

接口所需发送的数据

ip_tx_address

用户接口数据包的发送目的 ip 地址

ip_rx_clk

时钟信号

ip_rx_data_valid

发送数据有效标志信号,高电平有效

ip_rx_data

接口所需发送的数据

ip_rx_error

检验错误指示信号,低电平有效

4

有些生命自然而来的缘份,是约定俗成好了的。无力改变。只能精心的筹划痴心的遥望耐心的守候动心的注目。

arp_layer层模块设计

arp_layer 主要完成 arp 协议的控制。其中包含了 3 个子模块 arp_send、arp_receive 和 mac_cache。

其中,arp_send、arp_receive 模块分别完成 arp 请求/应答包的发送和接收,mac_cache 则用于建立ip 地址和 mac 地址之间的查找表。

5

有些生命自然而来的缘份,是约定俗成好了的。无力改变。只能精心的筹划痴心的遥望耐心的守候动心的注目。

mac_layer层模块设计

mac_layer 主要完成对 ip 数据报和 arp 包的 mac 协议控制,包含了两个子模块 mac_send 和mac_receive,分别完成 mac 帧的发送和接收。除此之外,mac_receive 包含 mac 暂停帧解析子模块mac_control_frame_process,CRC 码校验子模块 CRC32_check,并通过 receive_fifo 完成 phy 接口时钟域至用户接口时钟域的转换。

mac_send 包含了 mac 发送流量控制的子模块mac_send_flow_control,CRC 校验码生成子模块CRC32_generation,并通过 send_fifo 完成用户接口时钟域至 phy 接口时钟域的转换。本模块通过mac_control_frame_process和 mac_send_flow_control 模块可完成有效的以太网流量控制。

mac_send 中例化了长度为 22 的移位寄存器组 mac_shift_register,用于发送 mac 首部时进行数据缓冲。

本文分享自微信公众号 - OpenFPGA(OpenFPGA),作者:碎碎思

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于UDP/IP协议的电口通信(一)

    设计参考:https://opencores.org/projects?expanded=Communication%20controller

    碎碎思
  • Altera官方FPGA电机控制的中文文档

    本文档推荐一种设计流程,它在电机控制设计中利用了 Altera FPGA 强大的适应能力、精度可调 DSP 以及集成系统设计工具。工业电机驱动设备的设计人员可以...

    碎碎思
  • ARTIX-7 FPGA 开发平台 黑金AX7103/AX7A200

    2. 进行实验时:先按教程格式化 TF 卡,然后拷贝相应的音乐(大海.wav, 上海滩.wav)至卡中;

    碎碎思
  • Python写ARP局域网主机存活扫描与ARP欺骗工具

    專 欄 ❈exploit,Python中文社区专栏作者,入坑Python一年。希望与作者交流或者对文章有任何疑问的可以与作者联系: QQ:1585173691...

    Python中文社区
  • 局域网安全攻防

    在最初的时候,交换机里是没有mac地址表信息的,那么交换机就要进行学习,假如交换机上连接着两个主机PC1和PC2,当PC1要与PC2进行通信时,PC1的数据帧流...

    没有故事的陈师傅
  • 开源堡垒机jumpserver搭建

    之前说了国产良心kodexplorer,今天再说一个国内比较好的开源项目jumpserver,除此之外还可以的国内开源项目我觉得就是宝塔面板了。废话不多说上教程...

    bboysoul
  • Softmax及两层神经网络

    0.说在前面1.Softmax向量化1.1 Softmax梯度推导1.2 Softmax向量化实现2.两层神经网络2.1 反向传播推导2.2 两层神经网络实现3...

    公众号guangcity
  • 聊聊nacos的MysqlHealthCheckProcessor

    nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/healthcheck/MysqlHealt...

    codecraft
  • 聊聊nacos的MysqlHealthCheckProcessor

    nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/healthcheck/MysqlHealt...

    codecraft
  • Sentinel基于滑动窗口的流量统计【源码笔记】

    1.StatisticSlot主要职责是流量统计(为后面插槽链的流控和降级做准备),这些流量是如何统计出来的? 2.统计出来的流量在流控中是如何使用的?

    瓜农老梁

扫码关注云+社区

领取腾讯云代金券