TCAM 三态内容地址查找存储器,CAM内容地址查找存储器。区别在于TCAM多了一级掩码功能,也就是说可以指定某几位是dont care。匹配的时候0,1都行的意思。

广泛应用于数据流处理领域,本文简要介绍TCAM和CAM的逻辑组成和Verilog实例。

TCAM对于一个带mask的表项,如:“1000 * * * * ”。

为表达流表项,我们在下载流表之前我们需要做一步计算,

首先将其分解为entry1 和 mask:

第二步,令entry2 = entry & mask

所以entry2 = 10000000

将entry2 和mask 下载存入TCAM表项组中:

在做查找的时候,key广播到每个表项组中。之后将key和当前表项组中的mask做与运算,如key = 10001010. key& mask = 10001010 & 11110000 = 10000000

最后再和entry做比较,如果相等则将1写入结果寄存器。之后所有的结果汇总到优先级选路器中。并得到id编号。

优先级选路器:

可以用function函数实现:

参考代码请看这里一个粗糙的实现:https://github.com/qiaosiyi/progASICp4SWITCH/blob/master/tcam.v

这样我们基本上就可以用Verilog语言去实现了,其次要注意的是,广播,复制,或者做逻辑运算,都会比较占用时延,不要在一个时钟周期去做,很可能无法完成时序约束。

建议一个操作使用一个时钟周期,所以tcam查找我这里延迟了四个周期,但是fully-pipeline。吞吐还是一周期一次。

有时候表项很多,也许优先级选路器timing收不了,其实可以考虑将这一步延长俩周期做。其实本质相当于降低了tcam处理频率。

关于CAM:

CAM与TCAM类似,CAM是精确匹配,key广播到每个entry,然后比较出结果汇总到优先选路器中,得到id。比tcam操作步骤减少了一些,而且逻辑资源也减少了很多。

可以在这里看一下我粗糙的代码:https://github.com/qiaosiyi/progASICp4SWITCH/blob/master/cam.v

========================

qsy

15MAR2019

TCAM CAM 说明 原理 结构 Verilog 硬件实现的更多相关文章

  1. 【接口时序】4、SPI总线的原理与Verilog实现

    一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1. FPGA型号:Xilinx公 ...

  2. 【接口时序】3、UART串口收发的原理与Verilog实现

    一.软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1.FPGA型号:XC6SLX45- ...

  3. SPI总线的原理与Verilog实现

    转载地址:https://www.cnblogs.com/liujinggang/p/9609739.html 一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件 ...

  4. 【接口时序】6、IIC总线的原理与Verilog实现

    一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE .ChipScope 硬件平台: 1. FPG ...

  5. 【接口时序】7、VGA接口原理与Verilog实现

    一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1. FPGA型号:Xilinx公 ...

  6. 定点CORDIC算法求所有三角函数及向量模的原理分析、硬件实现(FPGA)

    一.CORDIC算法 CORDIC(Coordinate Rotation DIgital Computer)是一种通过迭代对多种数学函数求值的方法,它可以对三角函数.双曲函数和平面旋转问题进行求解. ...

  7. 格雷码原理与Verilog实现

    格雷码原理 格雷码是一个叫弗兰克*格雷的人在1953年发明的,最初用于通信.格雷码是一种循环二进制码或者叫作反射二进制码.格雷码的特点是从一个数变为相邻的一个数时,只有一个数据位发生跳变,由于这种特点 ...

  8. 我的 FPGA 学习历程(04)—— 练习 verilog 硬件描述语言

    这篇讲的是使用 verilog 硬件描述语言编写一个 3 - 8 译码器. 3 - 8 译码器是一个简单的组合逻辑,用于实现并转串,其输入输出关系如下: | 输入  |  输出  | -------- ...

  9. FIR滤波原理及verilog设计

    FIR(Finite Impulse Response)Filter:有限冲激响应滤波器,又称为非递归线性滤波器. FIR滤波器的冲击响应是一个值为滤波器抽头系数的采样序列,其脉冲响应由有限个采样值构 ...

随机推荐

  1. 【css】 文本超出2行显示省略号

    首先,要知道css的三条属性. overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用省略号显示 white-space:nowrap; // ...

  2. POJ 3278 Catch That Cow bfs 难度:1

    http://poj.org/problem?id=3278 从n出发,向两边转移,为了不使数字无限制扩大,限制在2*k以内, 注意不能限制在k以内,否则就缺少不断使用-1得到的一些结果 #inclu ...

  3. SGU 132. Another Chocolate Maniac 状压dp 难度:1

    132. Another Chocolate Maniac time limit per test: 0.25 sec. memory limit per test: 4096 KB Bob real ...

  4. 客户端链接Blog

    Word 2013链接Blog 1.设置共享->发布至博客->发布至博客 2.新建博客账户 3.添加新建账户信息 注意:URL内为Blog名,而非用户名 a) 在"Type of ...

  5. 微信授权登录,关于调不起授权页面,无法响应回调方法,获取不到code 详解

    前期准备工作:申请AppId,下载资源包jar.文档等. 微信授权登录步骤: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据c ...

  6. How to convert a QString to unicode object in python 2?

    How to convert a QString to unicode object in python 2? I had this problem to solve, and I tried to ...

  7. yaf路由配置规则

    使用框架的默认路由来访问的时候,会遇到一些困扰,这部分无法查看源代码,只能通过猜测来分析. 如果项目有多个模块,显然使用yaf的默认的静态路由是无法满足需求的. yaf默认的配置是着这样的: appl ...

  8. I.MX6 CAAM

    /********************************************************************************* * I.MX6 CAAM * 说明 ...

  9. Brackets编辑器使用

    常用快捷操作 Ctrl + b 当选中一个文本时,离该文本最近的相同的文本会被高亮显示,这样,相同的2个文本就全部获得了焦点,可以同时更改高亮文本.(对,只会找寻最近的且只找到一个就不找了!惰性查找. ...

  10. POJ3070 矩阵快速幂模板

    题目:http://poj.org/problem?id=3070 矩阵快速幂模板.mod写到乘法的定义部分就行了. 别忘了 I ( ) 和 i n i t ( ) 要传引用! #include< ...