用循环生成语句描述的脉动加法器
0赞
发表于 2/29/2012 7:37:17 PM
阅读(5394)
//本模块生成的是一个门级脉冲加法器
module fpgaceshi (co, sum, a0, a1, ci);
parameter N = 4;
output [N - 1:0] sum;
output co;
input [N - 1:0] a0, a1;
input ci;
output co;
input [N - 1:0] a0, a1;
input ci;
//本地线网声明语句
wire [N-1:0] carry;
wire [N-1:0] carry;
//指定进位变量的第0位等于进位的输入
assign carry[0] = ci;
assign carry[0] = ci;
//什么临时变量
//仿真前,循环生成已经展平,所以用Verilog对设计进行仿真时,该变量已经不再存在
genvar i;
//仿真前,循环生成已经展平,所以用Verilog对设计进行仿真时,该变量已经不再存在
genvar i;
//用一个单循环生成按位异或门等逻辑
generate
for (i = 0; i < N; i = i + 1)
begin: r_loop
wire t1, t2, t3;
xor g1(t1, a0[i], a1[i]);
xor g2(sum[i], t1, carry [i]);
and g3(t2, a0[i], a1[i]);
and g4(t3, t1, carry[i]);
or g5(carry[i + 1], t2, t3);//编译报错??
end
endgenerate
generate
for (i = 0; i < N; i = i + 1)
begin: r_loop
wire t1, t2, t3;
xor g1(t1, a0[i], a1[i]);
xor g2(sum[i], t1, carry [i]);
and g3(t2, a0[i], a1[i]);
and g4(t3, t1, carry[i]);
or g5(carry[i + 1], t2, t3);//编译报错??
end
endgenerate
assign co = carry [N];
endmodule
编译有误??
