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