米联客(MSXBO)新版本协议栈udp_ip_protocal_stach接口说明

社会主义新天地 提交于 2019-11-30 09:33:13

1概述

在米联客老版本的MIA701开发板(2017版本)中,米联开源了1套原创的UDP IP协议栈。在后续开发过程中,我们对协议栈进行了改进和升级,在新一代开发板中发布新版UDP IP协议栈。出于保护知识产权的目的,新版的UDP IP协议栈不再开源,仅以网表的形式免费提供大家使用。

新版UDP IP协议栈将原MAC协议实现部分移除,留出MAC接口。将用户接口数据位宽由8bit增加到64bit。另外,增加和升级了若干功能,整体的逻辑框架与原协议栈基本保持一致,如下图所示。

2特点

2特点

>支持UDP接收校验和检验功能,暂不支持UDP发送校验和生成。

>支持IP首部校验和的生成和校验,同时支持ICMP协议中的PING功能,可接收并响应同一个子网内部设备的PING请求。

>可自动发起或响应同一个子网内设备的ARP请求,ARP收发完全自适应。ARP表可保存同一个子网内部256个IP和MAC地址对。

>支持ARP超时机制,可检测所需发送数据包的目的IP地址是否可达。

>协议栈发送带宽利用率可达93%,高发送带宽下,内部仲裁机制保证PING和ARP功能不受任何影响。

>发送过程不会造成丢包。

>提供64bit位宽AXI4-Stream形式的MAC接口,可与Xilinx官方的千兆以太网IP核Tri Mode Ethernet MAC,以及万兆以太网IP核10 Gigabit Ethernet Subsystem、10 Gigabit Ethernet MAC配合使用。

3协议栈使用

3.1接口定义

协议栈接口定义

模块信号接口名称

信号方向

信号说明

LOCAL_PORT_NUM[15:0]

input

(Paramter类信号)本地UDP端口号

LOCAL_IP_ADDRESS[31:0]

input

(Paramter类信号)本地IP地址

LOCAL_MAC_ADDRESS[47:0]

input

(Paramter类信号)本地MAC地址

ICMP_EN

input

(Paramter类信号)使能ICMP功能,1使能,0关闭

ARP_REPLY_EN

input

(Paramter类信号)使能ARP应答,1使能,0关闭

ARP_REQUEST_EN

input

(Paramter类信号)使能ARP请求,1使能,0关闭

ARP_TIMEOUT_VALUE[29:0]

input

(Paramter类信号)ARP超时检测超时值(时钟周期数)

ARP_RETRY_NUM[3:0]

input

(Paramter类信号)ARP超时重传次数

core_clk

input

用户接口时钟

reset

input

复位信号,高电平有效

udp_tx_ready

output

可接收外部用户数据输入标志信号,高电平有效。

app_tx_ack

output

app_tx_request的反馈信号,高电平有效。表示此时外部模块可通过用户接口可向本模块输入数据

app_tx_request

input

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

app_tx_data_valid

input

用户发送AXI-Stream接口

app_tx_data[63:0]

input

app_tx_data_keep[7:0]

input

app_tx_data_last

input

app_tx_data_length[15:0]

input

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

app_tx_dst_port[15:0]

input

用户接口数据包的发送目的端口号

ip_tx_dst_address[31:0]

input

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

app_rx_data_valid

output

用户接收AXI-Stream接口

app_rx_data[63:0]

output

app_rx_data_keep[7:0]

output

app_rx_data_last

output

app_rx_data_length[15:0]

output

从外部所接收的当前数据包的长度(不含udp、ip、mac首部),单位:字节

app_rx_port_num[15:0]

output

从外部所接收的数据包的源端口号

udp_rx_error

output

接收数据包udp检验错误指示信号,高电平有效,仅在app_rx_data_last拉高时有效

mac_tx_data_valid

output

AXI-Stream形式的MAC发送接口,

(现版本mac_tx_user信号在内部被恒置为0)

mac_tx_data[63:0]

output

mac_tx_keep[7:0]

output

mac_tx_ready

input

mac_tx_last

output

mac_tx_user

output

mac_rx_data_valid

input

AXI-Stream形式的MAC接收接口,

(现版本mac_rx_user信号在内部不被使用)

mac_rx_data[63:0]

input

mac_rx_keep[7:0]

input

mac_rx_last

input

mac_rx_user

input

ip_rx_error

output

接收数据包ip首部检验错误指示信号,低电平有效。作为调试使用,用户无需关注该信号

dst_ip_unreachable

output

当前请求发送的目的IP地址不可达指示信号,高电平有效

3.2用户接口

3.2.1发送时序

3.2.1.1正常发送时序

用户需通过协议栈发送一个UDP数据包时发送接口的正常时序如下图所示。需要注意的是,在一个数据包持续期间app_tx_data_valid信号必须持续为1。

3.2.1.2IP地址不可达,ARP超时发送时序

若遇到目的IP地址不可达的情况,app_tx_ack将不会拉高。当ARP请求重传次数达到ARP_RETRY_NUM所设置的上限时, dst_ip_unreachable将持续拉高,此时用户需要将app_tx_request拉低撤销当前发送请求,dst_ip_unreachable才会变为0,用户才可发起下一次发送请求。如下图所示。

3.2.2接收时序

3.2.2.1正常接收时序

用户接口接收UDP校验和正确的UDP包的时序如下图所示。需要注意的是,在一个数据包持续期间app_rx_data_valid信号持续为1。

3.2.2接收错误时序

当接收的UDP包中的校验和产生错误时,udp_rx_error信号会在app_rx_data_last拉高的同时拉高。如下图所示。

3.4MAC接口

3.4.1发送时序

MAC接口数据发送时序如下图所示。需要注意的是,在一个数据包持续期间mac_tx_data_valid信号持续为1。

3.4.2接收时序

MAC接口数据接收时序如下图所示。需要注意的是,在一个数据包持续期间mac_rx_data_valid信号必须持续为1。

3.5注意事项

可发送数据的长度范围为1~1472字节(不含UDP、IP、MAC协议首部)。

虽然协议栈的用户接口和MAC接口都采用了AXI-Stream形式,但是由于设计架构的限制,在一个数据包持续期间AXI-Stream的valid信号都持续为高,直到1个数据包结束。若用户需要将协议栈的用户接口和MAC接口与支持valid信号不持续为高的标准AXI-Stream接口连接,建议中间采用AXI-Stream DATA FIFO配合其packet mode功能进行数据缓冲。关于协议栈的使用在新一代开发板开发板的后续教程中给出了应用实例。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!