前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于UDP/IP协议的电口通信(三)

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

作者头像
碎碎思
发布2020-06-28 17:29:50
6050
发布2020-06-28 17:29:50
举报
文章被收录于专栏:OpenFPGAOpenFPGA

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 首部时进行数据缓冲。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档