以太网控制器
万兆以太网是存储设备与控制系统之间进行长距离高速数据传输的最佳选择,因此采用万兆光纤将NVMe SSD中的数据回传至PC机以供后续处理。传输层协议的选择上,主要有UDP协议和TCP协议两种方案,两者之间最大不同在于是否需要建立连接,UDP协议无需建立连接,只需要将数据打包后直接发送即可;而TCP协议需要与对端设备建立连接后才能进行真正的数据交互,这就导致其传输效率较低,资源开销也较大。为此,考虑到项目对逻辑资源开销较为敏感,决定通过UDP协议进行数据的回传工作,并通过纯硬件逻辑的方式来实现UDP/IP协议栈的处理工作,使得系统的传输性能更好,同时也有效的减小了CPU的负载。如下图所示为以太网控制器的功能模块框图。
以太网控制器主要通过硬件逻辑实现了对UDP协议、ARP协议、ICMP协议以及IP协议的处理工作,并在与10G Ethernet IP模块之间添加异步FIFO,来解决大量数据流数据跨时钟域传输的问题。
(1)UDP数据包处理
本设计采用UDP协议上传数据,因此需要实现对UDP数据包的封装和拆解。具体而言,对于UDP数据包的封装,需要给有效数据添加UDP首部,包含源端口号、目的端口号、UDP长度和UDP校验和字段,以便进行传输。而对于UDP数据包的拆解工作,需要首先解析UDP首部,并判断其与本地信息是否一致。若一致,则将UDP数据包中的有效数据部分提取出来,并传输至数据缓存控制器。若不一致,则需要丢弃该数据包。
(2&