在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2567|回复: 5

[求助] 菜鸟求助,这样的逻辑应该怎么实现

[复制链接]
发表于 2016-4-11 21:13:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 eda—wdy 于 2016-4-11 22:10 编辑

绘图1.jpg
功能:输入数据与存储器或在寄存器阵列的存储内容做比对,
如果已经存有一样数据则输出match信号,否则miss。

求助应该怎样高效地实现(不使用cam,没有这样的ip),
还要方便dc综合。我现在只想到for循坏去一个地址一个地址一一比对了。。
发表于 2016-4-12 13:35:20 | 显示全部楼层
回复 1# eda—wdy


   分两种情况:
如果你的数据位宽很小,可以将input_data用作mem的地址,mem每个地址只需存储1bit数据,用来表示该数据是否存在。这种方法读一次即可查询出结果。

如果数据位宽很大,那么就需要写search的算法了,基本上就是读出每个数进行比较。这种方法要想快,mem数据的存储需要一定的策略,数据较大就存储在高位地址,数据较小就存在低位地址,这样可以减少一半的时间。总之,需要在mem存储和input_data采取适当的策略才能快速search。
发表于 2016-4-12 15:56:53 | 显示全部楼层
信息给的详细一点呢。输入数据位宽多少?存储器阵列里面存了多少个数?
 楼主| 发表于 2016-4-12 20:13:07 | 显示全部楼层
回复 3# 杰克淡定


   比如数据位宽8位,存储阵列16或者32...说一下大体思路也行
发表于 2016-4-13 09:34:47 | 显示全部楼层
从理论上讲,这属于查找算法的范畴了。

如果数据量较少,而且对效率要求不高,可以用顺序查找,即一个个比较。

如果效率要求高,就要对存储数据的位置进行修改,所对应的有如下查找:
二分法查找: 要先对存储数据进行排序(楼上已讲到)
二叉树查找:先将存储数据构造成二叉树
Hash查找:先构造hash表。

其实从实现和效率综合看,二分法查找已经不错了。
发表于 2016-4-13 09:53:14 | 显示全部楼层
数据量小就不需要搞复杂查找算法了。
顺序查找吧,地址从0开始,读出SRAM里的数据,与input data比较,相等则match置1并结束,不等则地址加1继续,直到地址加到最大值。
SRAM存了16个数,最多读16次即可,花费16个cycle。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-29 18:23 , Processed in 0.025457 second(s), 10 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表