基于fpga实现cam功能的方法

文档序号:8431809阅读:977来源:国知局
基于fpga实现cam功能的方法
【技术领域】
[0001] 本发明涉及一种基于FPGA实现CAM功能的方法,属于数据通信技术领域。
【背景技术】
[0002] 在数据通信网和计算机互联网领域中,广泛使用各种交换机及路由器实现数据的 适配转换及转发,数据转换及转发一般可利用专用的内容可寻址的存储器(CAM:Content AddressableMemory)芯片通过查表实现。
[0003] 随着可编程逻辑器件技术的高速发展,现场可编程门阵列 FPGA(Field-ProgrammableGateArray)在各种信号处理电路中都得到了广泛的应用;目 前,基于FPGA实现CAM功能的方法主要有以下三种:
[0004] 第一种是直接外挂CAM芯片,由于CAM芯片价格较高导致整个系统成本上升,且 CAM芯片占用的电路板面积较大,CAM芯片本身容量较大,若仅使用部分CAM容量,降低了 CAM芯片的利用率,也降低了系统的性价比;
[0005] 第二种是利用FPGA的内部资源按照ASIC-CAM的逻辑结构(即寄存器加比较器结 构)设计FPGA-CAM,这种方法逻辑设计复杂,需要占用较多的FPGA资源,在FPGA资源紧张 的情况下难以接受;且由于结构较为复杂,一般需要借助第三方提供的IP核来实现,这种 IP核往往需要额外支付知识产权费用,额外增加了成本,不适用于中低端的FPGA系统;
[0006] 第三种是利用FPGA的内部资源通过状态机轮询方式逐项查找、比较来实现CAM功 能,这种方法与软件轮询类似,实现CAM功能较为耗时,特别是CAM容量上升时尤为明显,难 以满足实时线速CAM匹配处理的要求。

【发明内容】

[0007] 鉴于上述原因,本发明到目的在于提供一种基于FPGA实现CAM功能的方法,该方 法利用FPGA的内部资源,可以实现各种中小容量的CAM功能,不仅逻辑设计较为简单,占用 FPGA内部资源较少,能够满足线速实时处理要求,且可灵活定制,通用性强,无需额外增加 成本。
[0008] 为实现上述目的,本发明采用以下技术方案:
[0009] 基于FPGA实现CAM功能的方法,其特征在于,包括步骤:
[0010] 1)根据已知条件构建原始CAM数据表,该CAM表至少包括第一地址项和第二地址 项;
[0011] 2)根据原始CAM数据表中的第一地址项,构建第一数据表,该第一数据表以第一 地址项为地址索引,以第二地址项为相应的数据内容;
[0012] 3)根据第一数据表的第二地址项,构建第二数据表,该第二数据表以第二地址项 为地址索引,以第一地址项为相应的数据内容。
[0013] 进一步的,
[0014] 所述第一数据表由CPU根据所述原始CAM数据表生成,所述第二数据表由FPGA逻 辑电路根据第一数据表生成。
[0015] 所述第一数据表及第二数据表保存于RAM中。
[0016] 所述用于存储第一数据表的RAM,其地址对应着第一地址项内的地址值,其数据空 间则存放着原始CAM数据表中,与第一地址项内地址值相对应的第二地址项及其它项;所 述用于存储第二数据表的RAM,其地址对应着第二地址项内的地址值,其数据空间则存放着 原始CAM数据表中,与第二地址项内地址值相对应的第一地址项及其它项。
[0017] 所述用于保存第一数据表的RAM为三口RAM,该三口RAM的三个数据接口分别用于 输入查找、输出结果以及将第一数据表的内容输入FPGA逻辑电路,以经过该FPGA逻辑电路 处理生成第二数据表。
[0018] 所述第一数据表和第二数据表中均包括表项是否有效的状态项。
[0019] 所述存储第一数据表的RAM,其深度取决于第一地址项的位宽;其字宽取决于第 二地址项及其它项所占的位数;所述存储第二数据表的RAM,其深度取决于第二地址项的 位宽;其字宽取决于第一地址项及其它项所占的位数。
[0020] 本发明的优点在于:
[0021] 本发明的基于FPGA实现CAM功能的方法,利用FPGA的内部资源,可以实现各种中 小容量的CAM功能,不仅逻辑设计较为简单,占用FPGA内部资源较少,能够满足线速实时处 理要求,且可灵活定制,通用性强,无需额外增加成本。
【附图说明】
[0022] 图1是本发明的方法流程图。
[0023] 图2是本发明一具体实施例的整体系统框图。
[0024] 图3是图2所示系统中数据适配转换过程示意图。
[0025] 图4是本发明一具体实施例的用于存储数据表的RAM结构框图。
【具体实施方式】
[0026] 以下结合附图和实施例对本发明作进一步详细的描述。
[0027] 图1是本发明的方法流程图,如图所示,本发明公开的基于FPGA实现CAM功能的 方法,基本步骤是:
[0028] 1)构建原始CAM数据表,该原始CAM表中至少包括第一地址项、第二地址项,以及 与第一地址项对应的第一数据项、与第二地址项对应的第二数据项;
[0029]
【主权项】
1. 基于FPGA实现CAM功能的方法,其特征在于,包括步骤: 1) 根据已知条件构建原始CAM数据表,该CAM表至少包括第一地址项和第二地址项; 2) 根据原始CAM数据表中的第一地址项,构建第一数据表,该第一数据表以第一地址 项为地址索引,以第二地址项为相应的数据内容; 3) 根据第一数据表的第二地址项,构建第二数据表,该第二数据表以第二地址项为地 址索引,以第一地址项为相应的数据内容。
2. 如权利要求1所述的基于FPGA实现CAM功能的方法,其特征在于,所述第一数据表 由CPU根据所述原始CAM数据表生成,所述第二数据表由FPGA逻辑电路根据第一数据表生 成。
3. 如权利要求2所述的基于FPGA实现CAM功能的方法,其特征在于, 所述第一数据表及第二数据表保存于RAM中。
4. 如权利要求3所述的基于FPGA实现CAM功能的方法,其特征在于, 所述用于存储第一数据表的RAM,其地址对应着第一地址项内的地址值,其数据空间则 存放着原始CAM数据表中,与第一地址项内地址值相对应的第二地址项及其它项;所述用 于存储第二数据表的RAM,其地址对应着第二地址项内的地址值,其数据空间则存放着原始 CAM数据表中,与第二地址项内地址值相对应的第一地址项及其它项。
5. 如权利要求4所述的基于FPGA实现CAM功能的方法,其特征在于, 所述用于保存第一数据表的RAM为三口 RAM,该三口 RAM的三个数据接口分别用于输入 查找、输出结果以及将第一数据表的内容输入FPGA逻辑电路,以经过该FPGA逻辑电路处理 生成第二数据表。
6. 如权利要求5所述的基于FPGA实现CAM功能的方法,其特征在于,所述第一数据表 和第二数据表中均包括表项是否有效的状态项。
7. 如权利要求6所述的基于FPGA实现CAM功能的方法,其特征在于,所述存储第一数 据表的RAM,其深度取决于第一地址项的位宽;其字宽取决于第二地址项及其它项所占的 位数;所述存储第二数据表的RAM,其深度取决于第二地址项的位宽;其字宽取决于第一地 址项及其它项所占的位数。
【专利摘要】本发明公开了一种基于FPGA实现CAM功能的方法,包括步骤:根据已知条件构建原始CAM数据表,该CAM表至少包括第一地址项和第二地址项;根据原始CAM数据表中的第一地址项,构建第一数据表,并将第一数据表保存于FPGA的RAM中,该第一数据表以第一地址项为地址索引,以第二地址项为相应的数据内容;根据第一数据表的第二地址项,构建第二数据表,并将该第二数据表保存于FPGA的又一RAM中,该第二数据表以第二地址项为地址索引,以第一地址项为相应的数据内容。本发明利用FPGA的内部资源,可以实现各种中小容量的CAM功能,逻辑设计简单,能够满足线速实时处理要求,且可灵活定制,通用性强,无需额外增加成本。
【IPC分类】G11C15-00
【公开号】CN104751879
【申请号】CN201310751559
【发明人】丛远建
【申请人】北京大唐高鸿数据网络技术有限公司
【公开日】2015年7月1日
【申请日】2013年12月31日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1