这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 很多重复的模块有什么办法链接呢?

共10条 1/1 1 跳转至

很多重复的模块有什么办法链接呢?

助工
2009-06-10 10:12:24     打赏


如上图所示,怎么样才能把所有的加法器链接到一起呢?因为adder有很多,直接在原理图画很吃力,有没有什么好方法啊?



关键词: 很多     重复     模块     什么     办法     链接    

助工
2009-06-10 10:13:34     打赏
2楼
用程序写不可以吗?

助工
2009-06-10 10:19:10     打赏
3楼
程序也是一样,写到手抽筋........

高工
2009-06-10 14:27:17     打赏
4楼
可以啊,只要您能用一个通式把它表示出来,就可以用for循环写,综合时被展开

助工
2009-06-11 10:41:43     打赏
5楼
貌似,循环结构只能用在测试模块啊 Jason_zhang能帮忙写个实例程序看看吗?

高工
2009-06-12 12:05:19     打赏
6楼

虽然,循环结构经常用在Testbench中,但在可综合的语句中也可以用,你的语句展开综合,也就是面积的复制。
能说一下你的Adder的1、0、Hit表示什么意思吗?应该是加法器的两个加数吧,值应该来自wire或reg?


助工
2009-06-16 08:27:44     打赏
7楼
这是一个通过进位链来延时的程序 当hit信号到来时,进位链就一直进位,那么sum=1的加法器就是进位过的加法器,实现的延时

高工
2009-06-16 13:26:10     打赏
8楼

今天中午试了下,好像还真不行。
如果是使用例化语句的话,好像不能for,因为实在always外面的。
如果直接在alwasys里面写,如下:

module TestAdder( Hit, CoOut
    );
    
input Hit;
output CoOut;

parameter N=10;


(*keep="1"*) reg [N-1 : 0] Sum;
(*keep="1"*) reg [N-1 : 0] Co;

//OneBitAdder Adder1 ( .A( Hit ), .B(1), .Ci(0), .Co( Co[0] ), .Sum( Sum[0] ) );
integer i;
assign CoOut = Co[N-1];

always @ ( Hit )
begin
 
 { Co[0], Sum[0] } = 1 + Hit + 0;
 
 for( i=1; i<N; i++ )
  { Co[i], Sum[i] } = 1 + 0 + Co[i-1];
  
end


endmodule

综合时又被优化了,Synplify Pro的综合结果如下:


只综合得到一个缓冲器,还是不行。

271303204是需要什么样的延时效果呢?要用这种加法器做延时。我觉得即使是用例化的,也还是会有被综合器优化的可能。


高工
2009-06-21 12:24:22     打赏
9楼
延时应该采用其他方法,比如用寄存器的同步延时,或者是加反相器延时

助工
2009-06-30 09:07:50     打赏
10楼
呵呵,这么看来只能在原理图中一个个画了,谢谢了

共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]