Verilog中generate用法
-
必须用genvar来定义i
-
begin:后边必须加一个名字,随便起一个😆
一种用法:
genvar i;
generate
for( i=1; i<=99; i=i+1) begin:add1
assign sum[i] = a[i] ^ b[i]^ cout[i-1];
assign cout[i] = a[i]&b[i] | a[i]&cout[i-1] | b[i]&cout[i-1];
end
endgenerate
另一种用法:
可以在循环体中重复例化同一个模块,同样也必须在begin:后边加一个名字。
genvar i;
generate
for (i = 1;i<=99 ; i=i+1) begin:fadd
bcd_fadd fadd(
.a(a[4*(i+1)-1:4*(i+1)-4]),
.b(b[4*(i+1)-1:4*(i+1)-4]),
.cin(cout_reg[i-1]),
.cout(cout_reg[i]),
.sum(sum[4*(i+1)-1:4*(i+1)-4])
);
end
endgenerate