微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 请问这样的大mux应该怎么处理?

请问这样的大mux应该怎么处理?

时间:12-12 整理:3721RD 点击:
reg [127:0] a;
case (a)
  128'hFEDC865 : addr = 0;
  128'hESDF#FC : addr = 1;
  ... // 一共6000个case,每个分支的值没有任何关系,但可能平均分布在a的取值空间
  128'hGDAFAVD : addr = 6000;
endcase
这种情况怎样处理合理? 在100个周期以内完成这个任务就行。

这个我想过。每个周期处理8位之类的,但好像会产生很多状态,而且最后产生输出信号addr时还是会好大一个mux

把case拆成60组,每组100个case,default值addr=0;把每组的结果或在一起就可以了。

用ram或者rom也可以,怎么做?这个mux实际上是通过内容来寻找index,而不是传统的通过index来找内容。

就是分2~3级实现,每级用n^0.5: 1 或n^0.333: 1的mux.

对index 按0, 1, 2, ...重新编码,替代之。

哦我理解了,之前我看错了,我以为是全case呢。。。
就是个CAM吧,但是用CAM肯定比较贵
如果周期宽松就慢慢搞吧
这种其实是hash吧,本质就是cam了

对,就是你说的CAM, 同等容量的CAM比普通RAM贵多少?
周期可以在200以内都没问题,但感觉用逻辑实现,代价很大啊

cam密度一般是1rw的ram的三分之一到四分之一,比2rw的RAM密度还要低一点
取决于你们的最终流片厂商,可以去找你们后端聊聊

你不在乎周期的话没啥代价
大不了用一个6000depth128width的ram存下来,6000个clock查就好了
200个周期的话也不太难搞定,分块就好了正好用

晕,只是说明随机数据,在键盘上乱敲的,不是真实代码

ROM, 深度 6000 宽度 128 + 13
128放case中的值,13放addr的值
重新组织数据的顺序:按128中的数据从小大到排序
将重新排序后的数据存入ROM中
对ROM用折半查找,不到200个周期就可以找到你的输入对应的addr在ROM中的位置。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top