返回信息流刚入门不久,写了个小程序,为了节省资源,一个模块复用了3次,
例化的复用模块为module A(input, output),一个时钟完成计算
我是用case进行的复用的,
大致如下:
需要计算的输入参数为
reg in[2 : 0];
输出结果放在
reg out[2 : 0];
case(count)
0:
input <= in[0];
out[1] <= output;
1:
input <= in[1];
out[2] <= output;
2:
input <= in[2];
out[0] <= output;
endcase
综合后我看了一下图,发现里面出现了很多选择器,结果所使用的资源已经远远超出了不复用的结果。
大家都是怎么复用的,主流方式是什么?
PS: 对于以上这个例子,我仔细看了一下综合后的的结果,发现对于复用模块的输入input,它一共有3(复用的大小)*1(输入信号的位宽)这么多个选择器,如果在复用倍数和信号位宽都变大时,资源就悲剧的上去了。
这是一条镜像帖。来源:北邮人论坛 / circuit / #15993同步于 2010/12/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
大家都是怎么复用的啊?
limingh
2010/12/29镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
复用后:A,输入MUX,输出MUX,counter
不利用:A,A,A
如果A的逻辑太简单了,会出现复用后效果不理想的情况。
只有当A的逻辑很复杂的时候才会体现出复用的优势。
【 在 ysun36 的大作中提到: 】
: 复用后:A,输入MUX,输出MUX,counter
: 不利用:A,A,A
: 如果A的逻辑太简单了,会出现复用后效果不理想的情况。
: ...................
也就是说这种复用结构本身带来的资源消耗也是很大的了。
正常的复用就是这样做的吗?
【 在 police 的大作中提到: 】
: 他要把一个module给tdma了。
: 【 在 lanphon (上善若水) 的大作中提到: 】
: : 从头到尾,就没看懂lz想表达什么意思。。。。。
: ...................
是TDMA了。大家复用都是这样做的吗?
连时钟都没有,这算什么TDMA?count值根本都没变。最起码要把时钟信号引进来,你那样写全被综合成组合逻辑了。
【 在 limingh 的大作中提到: 】
: 是TDMA了。大家复用都是这样做的吗?
【 在 FC 的大作中提到: 】
: 连时钟都没有,这算什么TDMA?count值根本都没变。最起码要把时钟信号引进来,你那样写全被综合成组合逻辑了。
: 【 在 limingh 的大作中提到: 】
: : 是TDMA了。大家复用都是这样做的吗?
: ...................
为了简洁,只写了关键部分,过程块没写完整。