- 博客(74)
- 资源 (2)
- 收藏
- 关注
原创 Verilog开源项目——百兆以太网交换机(九)表项管理模块设计
Atom TBM(Table Manager)即交换机表项管理模块,负责根据Packet的源MAC地址、源端口号进行自学习,便于下次遇到相同的MAC地址查询端口号,并定时完成高效的表项老化处理。 此外,Atom创新的使用循环hash和双hash算法来减轻hash冲突的影响。
2024-10-08 21:57:29
1227
1
原创 Verilog开源项目——百兆以太网交换机(八)包缓存模块设计
包缓存模块负责在Atom查询目的端口时,缓存接收到的Packet,以保证在多种场景下端口不会拥塞。Atom DB(DataBuffer)支持2MB的缓存空间,并支持按队列优先级提供QoS服务。
2024-10-08 21:37:17
1436
原创 Verilog开源项目——百兆以太网交换机(七)包修改模块设计
Atom 包修改模块 PM(Packet Modifier)和PF对称,负责Atom出口Packet的整合,Packet从PM出去后就不再被改变。PM将负责出口带宽控制、风暴控制、VLAN映射、VLAN透传等VLAN管理,以及流量统计。
2024-09-02 15:13:43
940
原创 Verilog开源项目——百兆以太网交换机(六)Packet filter单元设计
Atom PF是Switch入口的重要一环,负责接收的所有Packet的过滤工作,包括L2 VLAN check、L3 IP header checksum check、L4 TCP/UDP header checksum check以及用户自定义过滤规则ACL。
2024-07-25 21:05:19
980
原创 Verilog开源项目——百兆以太网交换机(五)TCAM单元设计
Atom支持了包过滤特性,为了支持过滤的多样性,Atom将使用TCAM来存储过滤规则,以实现带优先级的1k条规则匹配,包过滤模块会根据接受包的特征向TCAM发起匹配请求,若匹配成功则进行对应操作,若匹配失败则按部就班的转发。 而为了便于实现,以及资源的平衡,Atom TCAM将使用SRAM实现,并采取分层分列的小块SRAM结构。
2024-07-02 22:59:58
1653
原创 Verilog开源项目——百兆以太网交换机(四)令牌桶管理单元设计
千兆以太网交换机开源项目-Atom支持了多种形式的QoS特性,其中发送端口的限速是Tx Path上尤为重要的功能,Atom将使用令牌桶的管理方式,对所有流出的报文,进行限速管理,并将该令牌桶管理单元命名为TKM(Token Manager)。TKM将实现单速单桶、双速双桶可配置形式,并能统计普通流量、突发流量、瞬时峰值流量,提供给上层更多的管理指导。
2023-12-07 13:30:12
1773
原创 Verilog开源项目——百兆以太网交换机(三)Hash模块设计
本文介绍了在百兆以太网交换机项目中Hash模块的设计与实现方案。在Atom中,在SM2加解密和LUT模块中都需要用到Hash模块,且为了更好地解决LUT中Hash冲突的问题,将实现SM3、SHA-256两种Hash算法,以满足循环Hash或双Hash方案。
2023-11-22 17:20:48
774
原创 Verilog开源项目——百兆以太网交换机(一)架构设计与Feature定义
经过第一代的交换机项目后,博主也算对交换机有了更深的认识,但是第一代的Feature过于单一,架构简单,和市场化的交换机功能完全脱节。而在学习Switch Core的过程中,也没有找到什么完善的中文学习资料,所以博主准备进一步完善以太网交换机的项目,希望凭微薄之力,为想学习的同学们多整理一些资料。 第二代交换机有更丰富的feature,更贴近真正使用的功能,除rtl代码,详细设计文档外,还会包括验证环境、验证代码,最后项目完成后,会全部开源供大家学习,顺利的话,希望还能上FPGA进行原型验证。
2023-08-29 21:09:58
1834
3
原创 从零开始 verilog 以太网交换机(七)总结与展望
本专题从开始至今已半年,博主也是第一次更新完整的专题,对网络方面也还是懵懂无知阶段,有很多地方做的不足,还请各位多多担待。开展本专题的初衷是希望给广大学子们多一些练手的项目,在面试时有更广泛的技术背景,但是在过程中发现很多同行也挺敢兴趣。为此,将在此专题的基础之上,进一步推出v2版本,目前已初步完成的架构设想。v2版本会增加更多feature,更贴合市场的功能实现,也将更有难度,会在接下来的半年~一年的时间完成。
2023-07-26 21:23:26
1329
3
原创 从零开始 verilog 以太网交换机(六)帧处理单元设计与实现
从零开始 verilog 以太网交换机(六)帧处理单元设计与实现本章将继续进行帧处理单元设计与实现,交换机完整的架构可以参考:从零开始 verilog 以太网交换机(一)架构分析。
2023-07-12 21:34:45
1499
原创 从零开始 verilog 以太网交换机(五)帧合路单元的设计与实现
本章将开始进行帧合路单元的设计,其负责将多个mac controller的帧合并为一路进行后续处理。交换机完整的架构可以参考:从零开始 verilog 以太网交换机(一)架构分析。
2023-06-24 22:32:20
1349
3
原创 从零开始 verilog 以太网交换机(四)以太网转发表的设计与实现
以太网转发表负责维护MAC地址和端口间的转发关系,需要经可能快速的帮助交换机确认数据帧应该从哪个端口发送出去。本章将开始进行以太网转发表的设计与实现,其负责判断数据帧对应的去向。
2023-04-10 21:29:48
3713
2
原创 从零开始 verilog 以太网交换机(三)MAC发送控制器的设计与实现
MAC发送控制器的功能和接收控制器对称,负责以太网的MAC -> PHY的数据交换,将数据帧转换为MII接口形式的数据流,并根据长度进行补零,计算CRC校验等。
2023-02-19 15:22:55
3860
5
原创 从零开始 verilog 以太网交换机(二)MAC接收控制器的设计与实现
本章进行MAC控制器的设计与实现,共分为两个部分:接收控制器和发送控制器。整体架构可以参考:从零开始 verilog 以太网交换机(一)架构分析,本文将首先分析MAC接收控制器的设计。关注本专题的朋友们可以收获一个经典交换机设计的全流程,包括设计与验证(FPGA);以太网MAC的基础知识。新手朋友们还将获得一个具有竞争力的项目经历。
2023-01-18 14:13:34
5065
10
原创 卷积神经网络硬件加速——INT8数据精度加速
上一专题已介绍了一种通用的卷积神经网络硬件加速方法——Supertile,本文将介绍一种特殊的硬件加速方案,一种INT8数据精度下的双倍算力提升方案。 目前大部分卷积神经网络模型的数据类型都是32-bits单精度浮点型,或者16-bits,但对于实际应用而言,99%和99.5%的网络准确率是没有区别的。所以,对于某些场景下,网络的数据精度使用INT8的数据类型就能较好的胜任工作。
2022-12-30 16:14:18
1989
3
原创 从零学习 InfiniBand-network架构(十一) —— 管理器的介绍
本章将介绍IB协议中的管理器的概念,包括子网管理器,子网管理代理,通用服务管理器,通用服务管理代理。通用服务接口,子网管理包SMP,通用服务管理包GMPS,概念都较为抽象,可以简单了解一下。
2022-12-29 20:39:25
4751
1
原创 从零学习 InfiniBand-network架构(十) —— IB协议中全局ID
专题内的上一文章谈到的是子网内ID的意义和作用,而本文要介绍的全局ID将用在两个不同子网下的Packet传输。本章介绍IBA中全局ID的作用,IPv6地址及单播、多播规则;并描述如何为子网中的每个端口分配相同的子网ID以及一个或多个GUID。
2022-12-24 20:09:45
3058
2
原创 FPGA在卷积神经网络中的双倍算力应用——supertile技术分析
近年来随着智慧安防、生物医疗、汽车电子等强实时性应用开始快速兴起,各类AI模型层出不穷,神经网络结构日益复杂,所需算力也越来越大,这使得神经网络的硬件加速成为近几年的热点研究,不论是工业界还是学术届,AI的硬件加速方案层出不穷,但主要分为FPGA和ASIC两类。 FPGA不像ASIC,可以通过堆叠大量的计算单元来提升板卡算力,所以在FPGA上进行算力提升更受局限,本文将介绍一种基于Xilinx FPGA平台中DSP单元的supertile技术,该技术可以将DSP的计算效率提升两倍。
2022-12-14 22:37:09
1445
原创 从零学习 InfiniBand-network架构(九) —— IB协议中子网本地地址
本章介绍了IBA子网中报文从源端口路由到目的端口时使用的地址,解释了在CA、交换机和路由器上的端口如何编号。解释了Local ID (LID)地址空间、LID地址的用途以及SM为每个端口分配的唯一LID;最后介绍了SM路径数据库的概念。
2022-12-08 14:19:11
3896
1
原创 从零学习 InfiniBand-network架构(八) —— IB协议中的原子操作
本章将介绍IB协议中传输请求中的原子操作,并解释原子操作存在的意义以及IB协议中原子操作的具体类型与流程。
2022-11-24 10:32:50
2222
原创 从零学习 InfiniBand-network架构(七) ——IB协议中数据如何传输
本章将介绍IB协议中五种类型的消息传输请求,并对其中的RDMA read操作进行详细描述,还介绍了可以由QP的RQ逻辑发布和执行的单一类型的消息传输请求。
2022-11-11 17:26:39
5051
2
原创 从零学习 InfiniBand-network架构(六)—IB协议链路层QoS如何实现
本章将介绍什么是QoS,为什么需要QoS,以及在IB协议中如何在链路层实现QoS
2022-11-04 10:22:21
3225
原创 从零学习 InfiniBand-network架构(五) —— 物理层究竟干些什么?
本章将更详细的介绍网络模型中的物理层的功能和组成,介绍了PHY中的PCS、PMA、PMD子层,并描述了数据如何从MAC层出发经过PHY到达对端的过程。
2022-10-27 17:42:21
2461
原创 从零学习 InfiniBand-network架构(四) —— IB六层网络模型
本章将介绍IBA的六层网络模型,其模型与经典网络模型OSI七层模型类似,并简单介绍了每层的责任与功能,并解释了IBA设备实现层次的原因,IBA六层网络模型中更详细的物理层和QoS内容将在后续两章介绍。
2022-10-18 17:50:02
4294
2
原创 从零学习 InfiniBand-network架构(三) —— IB核心传输引擎Queue Pair
本章将介绍IBA技术中最核心的信息传输引擎,队列的概念(QP,Queue Pair)、请求报文、响应报文、报文序列号(PSN),简单介绍QP服务类型和verb layer API,最后将描述一个详细的信息传输示例。
2022-10-13 17:11:49
4981
3
原创 从零学习 InfiniBand-network架构(二) —— 属性与管理器
本章将介绍设备属性、管理器、管理代理MA和管理数据报MADS的概念。
2022-09-29 21:31:43
3216
原创 从零学习 InfiniBand-network架构(一) —— IB协议中常用术语及定义
当前IC产业中火热的DPU赛道,其本质就是IB协议的硬件卸载,使芯片支持RDMA等功能;恰巧博主也在进行文,该报文带有destination port ID,通过交换机和路由器的帮助,CA最终抵达目标CA。交换机规则:负责在同一子网内报文的路由,根据DLID查找交换机内部的转发表(由软件在启动阶段配置),确定报文需要从交换机的哪个端口输出。原子比较和交换操作:收到请求后,目标CA从其本地的指定内存中读取数据,将读取的数据与Compare值比较,若相等,将值写入指定位置,返回的响应操作与上述加法原子操作一致。
2022-09-28 10:31:42
12607
5
原创 数字IC秋招手撕代码(九)可参数化的多端口寄存器堆设计
用verilog设计一个可参数化的寄存器堆,同一时刻输入的写地址互不相同,但读地址可以相同,所有端口都能连续响应读写请求。
2022-09-22 22:07:42
1054
1
原创 数字IC秋招手撕代码(八)找序列中的第一个1—升级篇
用verilog实现,不断寻找序列中的第一个1,并输出其index,当寻找完毕后输出介绍信号。(LSB为例)
2022-09-21 14:32:21
3090
2
原创 Verilog阻塞/非阻塞赋值电路角度解读
对于具有一定软件基础的同学来说,赋值无非是将等号右边的数字赋给等号左边的变量。那么什么是阻塞/非阻塞赋值呢?在Verilog中,阻塞赋值和非阻塞赋值应用于截然不同的代码逻辑中。
2022-08-21 19:40:16
1360
原创 从零开始 verilog 以太网交换机(一)架构分析
从零开始 verilog 以太网交换机(一)架构分析前言马上要去新公司入职,也将步入我再三思考的网络IC行业在入职前,准备完成一个简单的以太网交换机的项目以下所有内容均参考于乔庐峰教授的《Verilog HDL数字系统设计与验证——以太网交换机案例分析》一、ethernet switch作用在开始工程前,先讨论以下为什么要有以太网交换机。简单来说,当越来越多的设备接入网络后,点对点的通信需要某一设备来集中处理数据的转发以太网交换机就是为了完成这一任务,当然随着时代发展,其内部对网络包的处
2022-03-15 14:47:33
7291
5
原创 数字IC秋招手撕代码(六)异步FIFO详解
数字IC秋招手撕代码(六)异步FIFO常用情况FIFO的空满标志FIFO指针格雷码格雷码下的空满信号重点最小深度FIFO的计算代码最近两天晚上在看异步FIFO,之前也使用过异步FIFO,但是一直没有仔细搞懂原理。这次准备写篇博客记录一下。常用情况以下两种情况,经常会使用到异步FIFO1.跨时钟域问题2.位宽不一致(例如 输入8bit 输出16bit)这时候fifo中的内存结构应该和常见的不同,具体还不清楚FIFO的空满标志一个深度为(2^n)的FIFO,其地址位宽需要n+1位MSB
2021-08-14 22:23:44
801
原创 数字IC秋招面试专题(五)逻辑式如何转换为晶体管电路
在面试中经常会要求画出某一个逻辑表达式的管级电路,本文将详细分析逻辑表达式到管级电路的推导过程
2021-07-06 10:43:26
1613
5
原创 数字IC秋招面试专题(四)低功耗设计方法及HVT、UPF介绍
随着芯片工艺越来越先进,功耗也被越来越关注,低功耗设计转变为芯片设计的常态。本文简单介绍一下主流的低功耗设计方法,博主也只是简单了解,并不深入。
2021-07-03 12:39:37
7195
4
原创 数字IC秋招面试专题(一)setup time 和 hold time
数字IC秋招面试专题(一)setup time推导hold time推导想必在数字IC笔试和面试中总是会考到setup time和hold time的知识,博主之前理解的不是很深刻,虽然回答的上,但是老是会忘,希望通过这次总结,彻底理解。先字面理解一下setup time和hold timesetup time:建立时间hold time: 保持时间在DFF中,数据需要保证在建立时间前到达,在保持时间后才能更新,否则DFF会发生亚稳态(这里证明亚稳态并非只在异步电路中出现)先看一下基本分.
2021-06-30 17:27:42
2467
1
原创 VCS激励”零延时“的解决方法
VCS激励”零延时“的解决方法由于不同的编译器对tb产生的激励的模拟行为不同,例如vivado,激励都默认是带有“零延时的”(可以理解此时激励带有rising time and falling time,不是理想的瞬时信号)但在VCS中,激励就成为了理想信号,触发器会在当拍就检测到变化,这导致我们无法进行理想的行为测试。如下图:我的解决办法是手动在tb中引入“零延时”,即**#0**.在所有的信号变化后都加上**#0**,即可保证信号理想化,改后信号如下图:...
2021-05-21 17:19:42
2718
7
原创 synopsys-SDC第六章——生成时钟
synopsys-SDC第六章——生成时钟时钟派生方式create_generated_clockedge divide multiplyedge_shift多同源时钟使能组合路径其他注意事项之前准备了一段时间的秋招,好久没有学SDC,现在准备SDC和秋招同时准备,更新。一个复杂的设计都需要多个时钟信号来共同完成功能,设计中异步时钟不能共享确定相位关系的时钟信号,也不必过于关心其时钟源,但是同步信号往往产生于同一个时钟源(如时钟分频器、时钟乘法器、时钟门控)不同模块运行在不同时钟下,如果不考虑
2021-04-06 17:23:03
9901
CRC校验Verilog代码生成器
2023-01-10
verilog细节与陷阱
2020-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人