本模块的功能就是MAC子层、网络层、传输层各层协议的具体实现,这些子模块作为数据传输的通道,需要具有一定的缓存和查错能力,同时为了能扩展其他协议,还必须保持相互之间的独立性。如图4所示,硬件设备接收数据的过程就是以太网帧经过每一层,去除各层的首部并核对校验,最后获得纯粹的用户数据;发送数据的过程就是用户数据每经过一层,添加相应的首部和校验,直到组成一个完整的以太网帧。
(1) MAC子层的功能。设计中直接调用Altera公司提供的三速以太网控制器IP核实现MAC子层的功能,该IP核提供了统一的寄存器接口,用户可以通过它来配置以太网最大帧长、源MAC地址、目的MAC地址和PHY地址等重要信息。如图4所示,发送数据时,MAC模块向数据帧添加以太网首部,并利用CRC算法添加32位的校验码;接收数据时,MAC模块同样要进行CRC校验,对于不正确的数据帧要予以丢弃,用户也可以通过配置寄存器决定是否将校验位一并送至上一层。
(2) UDP/IP协议栈的实现。相对于TCP协议的三次握手,UDP和IP协议面向无连接的性质使其在硬件上可以快速实现,至于连接的建立完全可以在应用层实现。
如图4所示,UDP和IP协议的功能在硬件上的实现有较多相同之处:对于上层发送的数据均需要添加相应的首部和校验和;对于下层接收的数据,检验校验和,并去除首部,然后才能送到上一层;由于首部中有该数据包的长度区域,所以无论是发送和接收,都需要将数据包全部缓存,才能确定其长度大小,相当于一种“存储-转发”的机制。