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. UVA-10384 The Wall Pushers (IDA*)

    题目大意:走迷宫,遇到墙时可以推着墙走,但墙后还是墙时便不能推.求出一条任意的最短路径. 题目分析:这道题出的比较人性,输入的时候便是将四周的墙用二进制数表示好了,其实这样减轻了做题人的负担.IDA* ...

  2. CSS中em、rem和px的区别

    任意浏览器的默认字体高都是16px.所有未经调整的浏览器都符合: 1em=16px,1rem=16px. EM特点  1. em的值并不是固定的: 2. em会继承父级元素的字体大小. rem特点 r ...

  3. npm设置仓库

    如果国外官方的npm仓库下载速度很慢的话,可以考虑更换npm仓库,加快下载包的速度. 1.通过config命令 npm config set registry https://registry.npm ...

  4. poj3814

    题解: 所以poj只放了一组数据? 打表(花费了我无数心血找的的打标) 代码: #include <stdio.h> int main(){ printf("1\n2\n1\n2 ...

  5. zTree简单使用

    zTree使用 zTree github地址 zTree API文档 zTree插件依赖JQ所以使用zTree首先引入JQ,另外zTree的点击功能,编辑功能都是单独的文件,如需使用也要引入(也可以引 ...

  6. java基础第9天

    抽象 abstract 抽象类和抽象方法必须用abstract关键字修饰 抽象类格式 abstract class 类名{} 抽象方法定义,在返回值钱,或修饰符前加上abstract关键字 方法没有方 ...

  7. 【转】Javascript中的this

    作者: 阮一峰 日期: 2010年4月30日 this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, function test(){ ...

  8. C# 序列化详解,xml序列化,json序列化对比

    本文讲讲一些纯技术的东西.并且讲讲一些原理性的东西,和一般的百度的文章不一致,如果你对序列化不清楚,绝对可以很有收获. 技术支持QQ群(主要面向工业软件及HSL组件的):592132877  (组件的 ...

  9. notification的创建及应用

    之前我用了button.setonclicklistener来获取一个点击事件,但是在new notificationcompat.builder是会报一个没有定义的错误.这种点击事件的方式就不会报那 ...

  10. Windows 无法安装到所选位置。错误:0x80300001

    Windows 无法安装到所选位置.错误:0x80300001 这里遇到的情况是这样的,iDrac安装windows 2008 R2,一开始映射 windows 2008 R2系统镜像,后来,阵列驱动 ...