声明:未经作者允许,禁止转载
博主主页:王_嘻嘻的CSDN主页
全新原创以太网交换机项目,Blog内容将聚焦整体架构、模块设计方面;更新周期可能会略慢,希望朋友们多多包涵
关注本专题的朋友们可以学习到原创交换机设计的全流程,包括设计与验证(FPGA)。
第一代交换机 从零开始 verilog 以太网交换机系列专栏:点击这里
经过第一代的交换机项目后,博主也算对交换机有了更深的认识,但是第一代的Feature过于单一,架构简单,和市场化的交换机功能完全脱节。而在学习Switch Core的过程中,也没有找到什么完善的中文学习资料,所以博主准备进一步完善以太网交换机的项目,希望凭微薄之力,为想学习的同学们多整理一些资料。
第二代交换机有更丰富的feature,更贴近真正使用的功能,除rtl代码,详细设计文档外,还会包括验证环境、验证代码,最后项目完成后,会全部开源供大家学习,顺利的话,希望还能上FPGA进行原型验证。
为了便于称呼,我们将对第二代交换机项目取名为Atom,也意为之后一切项目的开始。
考虑到对CPU暂时不熟悉,所以Atom没有设置控制端口,也没有独立的CPU承担固件功能。Atom定位于百兆Switch Core,将支持以下feature:
Atom仍将支持4Port,接口也保留双工的10M/100MHz的MII,通过4个MAC接收/发送数据,支持SPI接口访问寄存器模块,对第一代交换机的MAC table进行扩展,还支持了Multicast table、VLAN table等。
Atom共分为9个模块:
MAC:分为RMAC和TMAC,包括L2 pause frame功能以及Switch Core v1的基本功能,支持SM2/AES加解密(可选)暂不实现完整的 MACsec IP;
PF(Packet Filter):负责入口处的L2、L3 Packet过滤,带有DPI(深度包检测功能);
PM(Packet Modifier):负责出口处Packet header内容的修改;
DB(Data Buffer):Atom的Packet缓存区,内部按优先级分为多条链表,所有Packet都缓存于此;
ENG(Switch Engine):负责管理Packet的自学习、老化、查询等操作,并根据查询结果进一步返回给ENG;
TKM(Token Manager):采用令牌桶算法,管理令牌数量;
QCN(Quantized Congestion Notification):实现QCN算法,进行拥塞控制;
TBM(Table Manager):实现SM-3/SHA-1的Hash算法,处理Hash冲突,负责管理多个Table;
CSR(Control and Status Register):通过SPI读写Atom所有控制、统计寄存器,并将寄存器连接到各模块;
由于本人和团队都是第一次独立进行规模化的项目设计,难免缺乏经验,在架构和设计方面若有不足之处,可以及时与我们沟通讨论,我们一定认真听取建议!!!
后续整个工程和代码下载链接也都会放在csdn和公众号内
搜索关注我的微信公众号【IC墨鱼仔】,获取我的更多IC干货分享!