CN104751879A - 基于fpga实现cam功能的方法 - Google Patents

基于fpga实现cam功能的方法 Download PDF

Info

Publication number
CN104751879A
CN104751879A CN201310751559.3A CN201310751559A CN104751879A CN 104751879 A CN104751879 A CN 104751879A CN 201310751559 A CN201310751559 A CN 201310751559A CN 104751879 A CN104751879 A CN 104751879A
Authority
CN
China
Prior art keywords
data
tables
address
ram
fpga
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310751559.3A
Other languages
English (en)
Other versions
CN104751879B (zh
Inventor
丛远建
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING DATANG GAOHONG DATA NETWORK TECHNOLOGY Co Ltd
Original Assignee
BEIJING DATANG GAOHONG DATA NETWORK TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING DATANG GAOHONG DATA NETWORK TECHNOLOGY Co Ltd filed Critical BEIJING DATANG GAOHONG DATA NETWORK TECHNOLOGY Co Ltd
Priority to CN201310751559.3A priority Critical patent/CN104751879B/zh
Publication of CN104751879A publication Critical patent/CN104751879A/zh
Application granted granted Critical
Publication of CN104751879B publication Critical patent/CN104751879B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于FPGA实现CAM功能的方法,包括步骤:根据已知条件构建原始CAM数据表,该CAM表至少包括第一地址项和第二地址项;根据原始CAM数据表中的第一地址项,构建第一数据表,并将第一数据表保存于FPGA的RAM中,该第一数据表以第一地址项为地址索引,以第二地址项为相应的数据内容;根据第一数据表的第二地址项,构建第二数据表,并将该第二数据表保存于FPGA的又一RAM中,该第二数据表以第二地址项为地址索引,以第一地址项为相应的数据内容。本发明利用FPGA的内部资源,可以实现各种中小容量的CAM功能,逻辑设计简单,能够满足线速实时处理要求,且可灵活定制,通用性强,无需额外增加成本。

Description

基于FPGA实现CAM功能的方法
技术领域
本发明涉及一种基于FPGA实现CAM功能的方法,属于数据通信技术领域。
背景技术
在数据通信网和计算机互联网领域中,广泛使用各种交换机及路由器实现数据的适配转换及转发,数据转换及转发一般可利用专用的内容可寻址的存储器(CAM:Content Addressable Memory)芯片通过查表实现。
随着可编程逻辑器件技术的高速发展,现场可编程门阵列FPGA(Field-Programmable Gate Array)在各种信号处理电路中都得到了广泛的应用;目前,基于FPGA实现CAM功能的方法主要有以下三种:
第一种是直接外挂CAM芯片,由于CAM芯片价格较高导致整个系统成本上升,且CAM芯片占用的电路板面积较大,CAM芯片本身容量较大,若仅使用部分CAM容量,降低了CAM芯片的利用率,也降低了系统的性价比;
第二种是利用FPGA的内部资源按照ASIC-CAM的逻辑结构(即寄存器加比较器结构)设计FPGA-CAM,这种方法逻辑设计复杂,需要占用较多的FPGA资源,在FPGA资源紧张的情况下难以接受;且由于结构较为复杂,一般需要借助第三方提供的IP核来实现,这种IP核往往需要额外支付知识产权费用,额外增加了成本,不适用于中低端的FPGA系统;
第三种是利用FPGA的内部资源通过状态机轮询方式逐项查找、比较来实现CAM功能,这种方法与软件轮询类似,实现CAM功能较为耗时,特别是CAM容量上升时尤为明显,难以满足实时线速CAM匹配处理的要求。
发明内容
鉴于上述原因,本发明到目的在于提供一种基于FPGA实现CAM功能的方法,该方法利用FPGA的内部资源,可以实现各种中小容量的CAM功能,不仅逻辑设计较为简单,占用FPGA内部资源较少,能够满足线速实时处理要求,且可灵活定制,通用性强,无需额外增加成本。
为实现上述目的,本发明采用以下技术方案:
基于FPGA实现CAM功能的方法,其特征在于,包括步骤:
1)根据已知条件构建原始CAM数据表,该CAM表至少包括第一地址项和第二地址项;
2)根据原始CAM数据表中的第一地址项,构建第一数据表,该第一数据表以第一地址项为地址索引,以第二地址项为相应的数据内容;
3)根据第一数据表的第二地址项,构建第二数据表,该第二数据表以第二地址项为地址索引,以第一地址项为相应的数据内容。
进一步的,
所述第一数据表由CPU根据所述原始CAM数据表生成,所述第二数据表由FPGA逻辑电路根据第一数据表生成。
所述第一数据表及第二数据表保存于RAM中。
所述用于存储第一数据表的RAM,其地址对应着第一地址项内的地址值,其数据空间则存放着原始CAM数据表中,与第一地址项内地址值相对应的第二地址项及其它项;所述用于存储第二数据表的RAM,其地址对应着第二地址项内的地址值,其数据空间则存放着原始CAM数据表中,与第二地址项内地址值相对应的第一地址项及其它项。
所述用于保存第一数据表的RAM为三口RAM,该三口RAM的三个数据接口分别用于输入查找、输出结果以及将第一数据表的内容输入FPGA逻辑电路,以经过该FPGA逻辑电路处理生成第二数据表。
所述第一数据表和第二数据表中均包括表项是否有效的状态项。
所述存储第一数据表的RAM,其深度取决于第一地址项的位宽;其字宽取决于第二地址项及其它项所占的位数;所述存储第二数据表的RAM,其深度取决于第二地址项的位宽;其字宽取决于第一地址项及其它项所占的位数。
本发明的优点在于:
本发明的基于FPGA实现CAM功能的方法,利用FPGA的内部资源,可以实现各种中小容量的CAM功能,不仅逻辑设计较为简单,占用FPGA内部资源较少,能够满足线速实时处理要求,且可灵活定制,通用性强,无需额外增加成本。
附图说明
图1是本发明的方法流程图。
图2是本发明一具体实施例的整体系统框图。
图3是图2所示系统中数据适配转换过程示意图。
图4是本发明一具体实施例的用于存储数据表的RAM结构框图。
具体实施方式
以下结合附图和实施例对本发明作进一步详细的描述。
图1是本发明的方法流程图,如图所示,本发明公开的基于FPGA实现CAM功能的方法,基本步骤是:
1)构建原始CAM数据表,该原始CAM表中至少包括第一地址项、第二地址项,以及与第一地址项对应的第一数据项、与第二地址项对应的第二数据项;
表1
如表1所示,首先根据已知条件构建出原始CAM数据表,表1所示的CAM数据表包括四项内容,分别为:
第一地址项:存储单元的地址值(AA0、AA1、……AAk-1)
第一数据项:对应于第一地址项中的地址值位置保存的数据,即:地址AA0中的数据为AD0、地址AA1中的数据为AD1、……地址AAk-1中的数据为ADk-1
第二地址项:存储单元的地址值(BA0、BA1、……BAk-1)
第二数据项:对应于第二地址项中的地址值位置保存的数据,即:地址BA0中的数据为BD0、地址BA1中的数据为BD1、……地址BAk-1中的数据为BDk-1
2)基于原始CAM数据表,根据第一地址项构建第一数据表,并将第一数据表存储于FPGA的第一RAM(RAM-I)中;
表2
如表2所示,第一数据表是基于原始CAM数据表,根据第一地址项的地址值大小顺序排列的,即RAM-I的地址对应着第一地址项内的地址值,RAM-I的数据空间则存放着原始CAM数据表中,与第一地址项内地址值相对应的第一数据项、第二地址项、第二数据项。
具体地说,如表1所示,原始CAM数据表为一个纯数据表格,它包括了K条表项,每条表项包括第一地址项的值、第一数据项的值、第二地址项的值以及第二数据项的值;即,表项1包括第一地址AA0、第一数据AD0、第二地址BA0、第二数据BD0,表项2包括第一地址AA1、第一数据AD1、第二地址BA1、第二数据BD1,表项k包括第一地址AAk-1、第一数据ADk-1、第二地址BAk-1、第二数据BDk-1
假定AA0=2、AA1=5、AAk-1=26,则第一地址项的部分地址值从小到大排列顺序为:AA0<AA1<AAk-1,则第一数据表按照第一地址项的地址值大小顺序生成,并将对应的数据部分(第二地址项及其他项)存放到FPGA内部存储器RAM-I中。由于原始CAM数据表不一定能占满RAM-I的整个存储空间(k不一定等于2n-1),因此,RAM-I的有些区域可能为空;
根据原始CAM数据表中各表项的内容,RAM-I的数据空间存储着与第一地址项的地址值对应的第一数据项的数据、第二地址项的地址值以及第二数据项的数据;即,对应于RAM-I的地址2存储着数据AD0、BA0、BD0,对应于RAM-I的地址5存储着数据AD1、BA1、BD1,对应于RAM-I的地址26存储着数据ADk-1、BAk-1、BDk-1
第一数据表中的状态ACT项很重要,k条表项写入RAM-I需要k次写操作,每写入RAM-I一条表项,该表项的ACT置为1,表示该表项有效,当该项无效时,必须把该ACT位清0;RAM-I初始化时全部清0。
RAM-I的深度取决于第一地址项的位宽n,深度等于2n;而RAM-I的字宽取决于第一数据项、第二地址项及第二数据项所占的位数,位宽应大于等于“第一数据项比特数+第二地址项比特数+第二数据项比特数+1”。
3)根据第一数据表构建第二数据表,并将第二数据表存储于FPGA的第二RAM(RAM-II)中;
表3
如表3所示,第二数据表是基于第一数据表,根据第二地址项的地址值大小顺序排列而成的,并将对应的数据部分(第一地址项及其他项)存放到FPGA内部存储器RAM-II中。
具体的说,假定BA0=15、BA1=53、BA2=1、BAk-2=32、BAk-1=12,则第二地址项的部分地址值从小到大排列顺序为:BA2<BAk-1<BA0<BAk-2<BA1,则第二数据表按照第二地址项的地址值大小顺序生成并存储于RAM-II中,由于第一数据表不一定能占满RAM-II的整个存储空间(2n-1不一定等于2m-1),因此,RAM-II的有些区域可能为空;
在根据第一数据表中各表项的内容,RAM-II的数据空间存储着与第二地址项的地址值对应的第二数据项的数据、第一地址项的地址值以及第一数据项的数据;即,对应于RAM-II的地址1存储着数据BD2、AA2、AD2,对应于RAM-II的地址12存储着数据BDk-1、AAk-1、ADk-1,对应于RAM-II的地址15存储着数据BD0、AA0、AD0,对应于RAM-II的地址32存储着数据BDk-2、AAk-2、ADk-2,对应于RAM-II的地址53存储着数据BD1、AA1、AD1
第二数据表中的状态ACT项很重要,k条表项写入RAM-II需要k次写操作,每写入RAM-II一条表项,该表项的ACT置为1,表示该表项有,当该项无效时,必须把该ACT位清0,RAM-II初始化时全部清0。
RAM-II的深度取决于第二地址项的位宽m,深度等于2m;而RAM-II的字宽取决于第二数据项、第一地址项及第一数据项所占的位数,位宽应大于等于“第二数据项比特数+第一地址项比特数+第一数据项比特数+1”。
4)所述的第一数据表和第二数据表按照RAM的读取方式独立读取,完成查表操作。
图2是本发明一具体实施例的整体系统框图,图3是图2所示系统中数据适配转换过程示意图,如图所示,将本发明的方法应用于多路语音转换处理系统中,该多路语音转换处理系统用于实现ATM信元与MAC数据包之间的适配及转发,左侧ATM接口用于接收通信网中的ATM信元,该ATM信元经过ATM接口芯片或FPGA处理生成微信元、微信元转换为G729帧、G729帧转换为RTP包、RTP包封装MAC头成为MAC-RTP后,经RMII接口(ReducedMedia Independent Interface)发送至计算机网络;同理,RMII接口接收的计算机网络中的MAC包,经过去除MAC头成为RTP包、RTP包转换为G729帧、G729帧转换为微信元、微信元封装处理生成ATM信元等过程后,ATM信元经ATM接口发送到通信网中。
以下分别对微信元、G729帧、RTP包、MAC包的数据格式进行简要说明。
1)微信元
本实施例中的微信元为AAL2-CPS微信元,该AAL2-CPS微信元为ATM信元AAL2定义的一种微信元,一个ATM信元可封装四个AAL2-CPS微信元,每个AAL2-CPS微信元长度为固定的12字节,代表一个用户业务或填充包,AAL2-CPS微信元的数据格式为:
其中,CID:通道号,当CID取值1~254时,代表AAL2用户业务通道标识,即多个用户业务之间利用不同的CID值区分;
UUI:代表负载类型,当UUI取值2时,负载内容为G.729话音编码的数据。
OSF:偏移指示域。取值范围为0~10,其意义分三种情况
a)对定长业务适配时,OSF始终为10(非法值);
b)针对变长业务,OSF=0~9时表示CPS-Payload的10个字节内的偏移地址位置为一个新G.729帧的起始或是填充部分的起始;OSF=10时表示本CPS-Payload中数据为属于同一个G.729帧或者CPS-Payload中没有填充。
c)在有定时关系或在连接删除的时刻即话尾,OSF的值指示PAD(0填充)的起始位置,解析微信元时应将0填充部分丢弃。
2)G729帧
其中,控制字段Control占一个字节,其由帧负载类型Opcode和帧编码类型Coder组成,Opcode和Coder各占四位,通过不同的编码代表不同的负载数据,
从数据包长度角度讲,G729帧可分为定长帧和变长帧两种,
当Opcode取值9时,表示每帧负载为10各字节的G.729语音编码;
当Opcode取值10时,表示每帧负载为2个字节的G.729静音编码;
当Opcode取值13时,负载为T.38传真编码的数据。
当Coder取值4时,表示负载为G729编码的的帧,可以使定长帧、也可以是变长帧。
3)RTP包
RTP包的数据头部格式为:
RTP-Header:固定头长度=12字节
其中,PT为RTP的负载类型,当PT取值18时,负载为定长G729语音编码的数据,当PT取值98时,负载为变长G729语音编码的数据。
4)MAC包
这里的MAC包指以RTP包为负载封装MAC头部的数据包,由于本实施例中使用的M82520芯片规定了MAC包的数据格式,所以将封装RTP负载的MAC包称为MAC-RTP包,其数据格式为:
其中,CH-ID:M82520器件内部信号通道号;
T.38:负载为T.38传真数据。
按照本发明的方法,实现ATM信元到MAC-RTP包,以及MAC-RTP包到ATM信元的转换过程为,
1、根据已知条件构造原始CAM数据表
由于负载类型不同,且数据转发通道不同,因此,需要构造两张原始CAM数据表,即用于说明微信元和MAC-RTP包之间路由关系的通道连接原始CAM数据表,及说明微信元、G729帧和MAC-RTP包之间负载类型对应关系的负载类型原始CAM数据表。
1)通道连接原始CAM数据表:
表4
如表4所示,通道连接原始CAM数据表的第一地址项为CH-ID,即M82520器件内部信号通道号;第一数据项为G729AB及最大处理时延TIME,其中,G729AB通过取值0或是1表示数据帧为变长或是定长,最大处理时延TIME取值可以是2ms/4ms/6ms/8ms/10ms/20ms/30ms/40ms。
通道连接原始CAM数据表的第二地址项为CID,即AAL2-CPS微信元的通道号;第二数据项为UUI,即AAL2-CPS微信元的负载类型。
2)负载类型原始CAM数据表:
表5
如表5所示,负载类型原始CAM数据表的第一地址项为T.38和PT,其中,T.38为MAC-RTP包头中的T.38字段,PT为RTP包头中的PT字段;
负载类型原始CAM数据表的第二地址项为Opcode和Coder,该Opcode和Coder为G.729帧的负载类型标识。
2、根据原始CAM数据表,构建第一数据表
1)对于通道连接原始CAM数据表,根据第一地址项生成通道连接的第一数据表,并将通道连接的第一数据表保存于RAM-I中,
表6
如表6所示,通道连接的第一数据表保存于RAM-I中,RAM-I的数据空间存储着与第一地址项CH_ID对应的第一数据项G729AB及TIME、第二地址项CID、第二数据项UUI。
2)对于负载类型原始CAM数据表,根据第一地址项生成负载类型的第一数据表,并将负载类型的第一数据表保存于RAM-III(第三RAM)中,
表7
如表7所示,负载类型的第一数据表保存于RAM-III中,RAM-III的数据空间存储着与第一地址项相对应的第二地址项Opcode及Coder。
3、根据第一数据表,构建第二数据表
1)对于通道连接的第一数据表,根据第二地址项生成通道连接的第二数据表,并将通道连接的第二数据表保存于RAM-II中,
表8
如表8所示,通道连接的第二数据表保存于RAM-II中,RAM-II的数据空间存储着与第二地址项CID相对应的第二数据项UUI、第一地址项CH-ID、第一数据项G729AB及TIME。
2)对于负载类型的第一数据表,根据第二地址项生成负载类型的第二数据表,并将负载类型的第二数据表保存于RAM-IV(第四RAM)中,
表9
如表9所示,负载类型的第二数据表保存于RAM-IV中,RAM-IV的数据空间存储着与第二地址项相对应的第一地址项T.38及PT。
图4是本发明一具体实施例的用于存储数据表的RAM结构框图。如图所示,利用FPGA的内部资源构造RAM-I、RAM-II、RAM-III及RAM-IV,RAM-I用于存储通道连接的第一数据表,RAM-II用于存储通道连接的第二数据表,RAM-III用于存储负载类型的第一数据表,RAM-IV用于存储负载类型的第二数据表。于具体实施例中,可将RAM-I设置成14bitsX32的三口RAM,该三口RAM可实现输入查找、输出结果及转换并行操作,RAM-II设置成13bitsX64的双口RAM,该双口RAM可实现输入查找及输出结果的并行操作;同理,RAM-III设置成9bitsX256的三口RAM,RAM-IV设置成9bitsX256的双口RAM。
如图4所示,通道连接原始CAM数据表、通道连接的第一数据表、通道连接的第二数据表的生成过程是:
CPU根据已知条件预先生成通道连接原始CAM数据表,根据通道连接原始CAM数据表构建的通道连接的第一数据表存储于RAM-I中,RAM-I中的通道连接的第一数据表,经过FPGA逻辑电路的转换生成通道连接的第二数据表,并将通道连接的第二数据表保存于RAM-II中。
负载类型原始CAM数据表、负载类型的第一数据表、负载类型的第二数据表的生成过程是:
CPU根据已知条件预先生成负载类型原始CAM数据表,根据负载类型原始CAM数据表构建的负载类型的第一数据表存储于RAM-III中,RAM-III中的负载类型的第一数据表,经过FPGA逻辑电路的转换生成负载类型的第二数据表,并将负载类型的第二数据表保存于RAM-IV中。
正常工作过程中,CPU也可按照连接关系的变化和负载类型的变化随时动态地修改原始CAM数据表,对应修改的表项,第一数据表同时刷新发生变化的表项,第二数据表根据第一数据表的变化刷新变化的表项;刷新过程中,每当增加一条表项时,该表项的ACT置为1,每删除一条表项,该表项的ACT置0。
结合图2至图4,在本实施例的多路语音转换处理系统中,ATM信元与MAC-RTP包之间的适配及转发过程为:
ATM接口接收通信网中的ATM信元,经接口芯片的转换生成微信元,微信元根据自身的通道号CID查找通道连接的第二数据表(RAM-II),查找结果为微信元到MAC-RTP包的路由通道号CH-ID,同时,根据查找到的是否变长信息G729AB及TIME,确定出G729帧的负载内容(G729帧的负载内容对适配方向直接来自微信元的负载内容、对解适配方向直接来自RTP包负载,只是由于负载字节大小的不同而经过拆分或组合,比如多个微信元负载被拼装成一个G729帧,或者一个微信元负载被拆分成多个G729帧;G729是否变长适配方向取决于微信元的OSF字段值、解适配方向取决于MAC-RTP包的负载类型指示),G729帧的除负载内容外的其它字段可由原始微信元中获取,从而完成了微信元到G729帧的转换过程;接下来,进行G729帧到RTP包的转换过程,G729帧根据自身的控制字段(Opcode+Coder),查找负载类型的第二数据表(RAM-IV),查找结果为RTP包的负载类型PT及MAC-RTP包的T.38字段值,RTP包的除PT字段的其它字段内容均可从原始微信元中获取,从而完成了G729帧到RTP的转换;最后,给RTP包封装MAC头成为MAC-RTP包(该MAC-RTP包的T.38字段值为查找到的T.38字段值)后,该MAC-RTP包经查找到通道号CH-ID,由RMII接口转发至计算机网络。
MAC-RTP包与ATM信元之间的适配及转发过程为:
RMII接口接收计算机网中的MAC-RTP包,经去MAC头处理后转换为RTP包,RTP包转换为G729帧的过程是:RTP包根据MAC-RTP包的通道号CH-ID查找通道连接的第一数据表(RAM-I),查找到MAC-RTP包到微信元的路由通道号CID,同时,根据查找到的是否变长信息G729AB及TIME,确定出G729帧的负载内容,然后,RTP包根据自身的PT字段及MAC-RTP包的T.38字段,查找负载类型的第一数据表(RAM-III),查找到G729帧的控制字段值(Opcode+Coder),G729帧的除负载内容及控制字段外的其它字段可由原始MAC-RTP包中获取,从而完成了MAC-RTP包到G729帧的转换过程;接下来,进行G729帧到微信元的转换过程,上述RTP包根据CH-ID查找通道连接的第一数据表(RAM-I)时,同时可以查找到微信元的负载类型UUI,而微信元的除负载类型外的其它字段均可由原始MAC-RTP包获得(内容直接继承过来,只是要重新拆分或组装,处理过程中负载数据是不变的,无论是由微信元承载、G729帧承载、RTP包承载,变化的只是微信元的头部、G729帧的帧头、RTP包头、MAC包头中的部分字段),从而可实现G729帧到微信元的转换过程,基于查找通道连接的第一数据表时可同时找到微信元的负载类型UUI,因此,RTP包可以直接转换为微信元。
本发明的基于FPGA实现CAM功能的方法,首先由CPU生成原始CAM数据表,然后根据原始CAM数据表的第一地址项生成第一数据表并保存于FPGA的RAM中,根据第一数据表的第二地址项经过FPGA逻辑电路的转换生成第二数据表并保存于FPGA的又一RAM中,后续通过读取RAM可实现CAM功能。本发明是利用FPGA的内部存储资源,借助开发工具实现双口RAM、三口RAM及按需设置RAM的数据宽度和存储容量,从而可实现各种容量大小的CAM;可应用于数据适配及转换等相关数据处理的FPGA嵌入式系统中,占用FPGA内部资源较少,尤其适用于中小型FPGA系统中,能够满足线速实时处理要求,且可灵活定制,通用性强,无需额外增加成本。
以上所述是本发明的较佳实施例及其所运用的技术原理,对于本领域的技术人员来说,在不背离本发明的精神和范围的情况下,任何基于本发明技术方案基础上的等效变换、简单替换等显而易见的改变,均属于本发明保护范围之内。

Claims (7)

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,其深度取决于第二地址项的位宽;其字宽取决于第一地址项及其它项所占的位数。
CN201310751559.3A 2013-12-31 2013-12-31 基于fpga实现cam功能的方法 Active CN104751879B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310751559.3A CN104751879B (zh) 2013-12-31 2013-12-31 基于fpga实现cam功能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310751559.3A CN104751879B (zh) 2013-12-31 2013-12-31 基于fpga实现cam功能的方法

Publications (2)

Publication Number Publication Date
CN104751879A true CN104751879A (zh) 2015-07-01
CN104751879B CN104751879B (zh) 2019-01-11

Family

ID=53591433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310751559.3A Active CN104751879B (zh) 2013-12-31 2013-12-31 基于fpga实现cam功能的方法

Country Status (1)

Country Link
CN (1) CN104751879B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111614793A (zh) * 2020-04-22 2020-09-01 上海御渡半导体科技有限公司 一种基于fpga的以太网交换机的mac地址管理装置及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101411136A (zh) * 2006-04-03 2009-04-15 极进网络股份有限公司 利用超过cam关键字长度的表索引执行查表操作的方法
US20110320693A1 (en) * 2010-06-28 2011-12-29 Avaya Inc. Method For Paramaterized Application Specific Integrated Circuit (ASIC)/Field Programmable Gate Array (FPGA) Memory-Based Ternary Content Addressable Memory (TCAM)
CN103475584A (zh) * 2012-06-07 2013-12-25 中兴通讯股份有限公司 三态内容寻址存储器(tcam)查询方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101411136A (zh) * 2006-04-03 2009-04-15 极进网络股份有限公司 利用超过cam关键字长度的表索引执行查表操作的方法
US20110320693A1 (en) * 2010-06-28 2011-12-29 Avaya Inc. Method For Paramaterized Application Specific Integrated Circuit (ASIC)/Field Programmable Gate Array (FPGA) Memory-Based Ternary Content Addressable Memory (TCAM)
CN103475584A (zh) * 2012-06-07 2013-12-25 中兴通讯股份有限公司 三态内容寻址存储器(tcam)查询方法和装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111614793A (zh) * 2020-04-22 2020-09-01 上海御渡半导体科技有限公司 一种基于fpga的以太网交换机的mac地址管理装置及方法

Also Published As

Publication number Publication date
CN104751879B (zh) 2019-01-11

Similar Documents

Publication Publication Date Title
US8880507B2 (en) Longest prefix match using binary search tree
US9639501B1 (en) Apparatus and methods to compress data in a network device and perform ternary content addressable memory (TCAM) processing
US8089961B2 (en) Low power ternary content-addressable memory (TCAMs) for very large forwarding tables
US6430527B1 (en) Prefix search circuitry and method
JP5529976B2 (ja) 高速ipルックアップのためのシストリック・アレイ・アーキテクチャ
Waldvogel et al. Scalable high-speed prefix matching
Banerjee et al. Tag-in-tag: Efficient flow table management in sdn switches
US9871727B2 (en) Routing lookup method and device and method for constructing B-tree structure
CN1327674C (zh) 核心路由器上支持访问控制列表功能的双栈兼容路由查找器
CN105224692A (zh) 支持多核处理器的sdn多级流表并行查找的系统及方法
US20110307656A1 (en) Efficient lookup methods for ternary content addressable memory and associated devices and systems
CN101594319B (zh) 表项查找方法和装置
US20050149513A1 (en) Compressed prefix tree structure and method for traversing a compressed prefix tree
Le et al. Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning
Zerbini et al. Performance evaluation of packet classification on FPGA-based TCAM emulation architectures
CN106416151A (zh) 用于分组处理的基于多表哈希查找
CN110096458B (zh) 基于神经网络的命名数据网内容存储池数据检索方法
Stimpfling et al. SHIP: A scalable high-performance IPv6 lookup algorithm that exploits prefix characteristics
CN113411380B (zh) 基于fpga可编程会话表的处理方法、逻辑电路和设备
CN110324204A (zh) 一种在fpga中实现的高速正则表达式匹配引擎及方法
CN104751879A (zh) 基于fpga实现cam功能的方法
Hsieh et al. A classified multisuffix trie for IP lookup and update
CN1517881A (zh) 存储器管理空闲指针库
Kuo et al. A memory-efficient TCAM coprocessor for IPv4/IPv6 routing table update
CN104090942A (zh) 应用于网络处理器中的Trie搜索方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20150701

Assignee: CHINA TECHNOLOGY EXCHANGE Co.,Ltd.

Assignor: BEIJING GOHIGH DATA NETWORKS TECHNOLOGY Co.,Ltd.

Contract record no.: X2023110000145

Denomination of invention: A Method for Implementing CAM Functionality Based on FPGA

Granted publication date: 20190111

License type: Exclusive License

Record date: 20231201

EE01 Entry into force of recordation of patent licensing contract
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Method for Implementing CAM Functionality Based on FPGA

Effective date of registration: 20231206

Granted publication date: 20190111

Pledgee: CHINA TECHNOLOGY EXCHANGE Co.,Ltd.

Pledgor: BEIJING GOHIGH DATA NETWORKS TECHNOLOGY Co.,Ltd.

Registration number: Y2023110000516

PE01 Entry into force of the registration of the contract for pledge of patent right