从零开始 verilog 以太网交换机(一)架构分析
🔈声明:
😃博主主页:王_嘻嘻的CSDN主页
🔑未经作者允许,禁止转载
🚩本专题部分内容参考于乔庐峰教授的《Verilog HDL数字系统设计与验证——以太网交换机案例分析》,侵权必删
当下很多IC设计的求职者可能苦于找不到合适的项目,或者是希望有一个区别于培训班的独特项目,所以博主从今天开始会根据一些资料,完成一个以太网交换机的手把手教学,并将所有工程代码开源。
关注本专题的朋友们可以收获一个经典交换机设计的全流程,包括设计与验证(FPGA);以太网MAC层(Media Access Control,媒体介入控制层)的基础知识。新手朋友们还将获得一个具有竞争力的项目经历。
一、ethernet switch作用
在开始工程前,先讨论以下为什么要有以太网交换机。
简单来说,当越来越多的设备接入网络后,子网下的点对点的通信需要某一设备来集中处理数据的转发。以太网交换机就是为了完成这一任务,当然随着时代发展,其内部对网络包的处理变得更为多样,但本工程仅仅完成最基本的交换机功能。
有关更多同一子网下数据的传输过程可以关注IB协议专题。
二、ethernet switch架构
首先我们需要明确,ethernet switch作用在ISO模型的传输层,物理层通常由外置的PHY完成,在更高级的交换机中,上层的网络层、链路层也可以进一步融入设计中。
ethernet switch的整体架构如下图,主要由mac_r/mac_t(MAC收发控制器)、frame_mux(帧合并单元)、frame_process(帧处理单元)、MAC Lut(MAC地址查找表)、queue manager(队列管理器) 组成,最后实现的交换机可以支持4 Port的数据输入输出。
基本功能如下:
- mac_r 负责接受PHY上传的MAC帧,并检测是否出现CRC Error、帧长度错误、非字节对齐错误;
- frame mux将4 Port的数据帧进行合路;
- frame process需要根据数据帧进行Mac Address查找,地址逆向学习并维护MAC Address和输出Port的映射表;
- MAC Lut 是基于hash算法的MAC Address和输出Port的映射表;
- queue manager负责;
- mac_t 功能和mac_r对称,负责将处理完的数据帧按PHY所要求的格式发送,包括添加帧起始符,CRC校验码等;
具体功能细节将在每个子模块设计中进行详细介绍与分析。
本专题的后续章节将对MAC控制器、帧合并,处理单元、Mac地址LUT以及队列管理四部分进行设计与实现。