Verilog 4位加法器加法不正确
我正在用Verilog中的1位加法器创建一个4位加法器,并且面临一个问题,即我的4位加法器不能正确相加 以下是我的代码: 1比特 4位Verilog 4位加法器加法不正确,verilog,modelsim,quartus,Verilog,Modelsim,Quartus,我正在用Verilog中的1位加法器创建一个4位加法器,并且面临一个问题,即我的4位加法器不能正确相加 以下是我的代码: 1比特 4位 模块add4bit_参数化(a、b、cin、cout、sum); 参数大小=4; 输入[size-1:0]a、b; 输入cin; 输出电流; 输出[size-1:0]和; 电线[尺寸-2:0]c; genvar i; 生成 对于(i=0;i
模块add4bit_参数化(a、b、cin、cout、sum);
参数大小=4;
输入[size-1:0]a、b;
输入cin;
输出电流;
输出[size-1:0]和;
电线[尺寸-2:0]c;
genvar i;
生成
对于(i=0;i
我的4位在波形中加起来不好。你能帮我一下吗?你的端口连接有问题。您错误地连接了
sum
和c
信号,因为您使用了按顺序连接。为了避免这种常见的错误,请使用按名称连接。更改:
ab_fulladd fa (a[i], b[i], cin, c[i], sum[i]);
致:
对所有实例重复此操作。以下是完整的模块代码:
module add4bit_parametric (a, b, cin, cout, sum);
parameter size = 4;
input [size-1:0] a, b;
input cin;
output cout;
output [size-1:0] sum;
wire [size-2:0] c;
genvar i;
generate
for (i = 0; i < size; i = i + 1) begin: adder
if (i == 0)
ab_fulladd fa (.A(a[i]), .B(b[i]), .Cin(cin), .Cout(c[i]), .S(sum[i]));
else if (i == size-1)
ab_fulladd fa(.A(a[i]), .B(b[i]), .Cin(c[i-1]), .Cout(cout), .S(sum[i]));
else
ab_fulladd fa (.A(a[i]), .B(b[i]), .Cin(c[i-1]), .Cout(c[i]), .S(sum[i]));
end endgenerate
endmodule
模块add4bit_参数化(a、b、cin、cout、sum);
参数大小=4;
输入[size-1:0]a、b;
输入cin;
输出电流;
输出[size-1:0]和;
电线[尺寸-2:0]c;
genvar i;
生成
对于(i=0;i
它在上的多个模拟器上编译(注册一个免费帐户)
ab_fulladd fa (a[i], b[i], cin, c[i], sum[i]);
ab_fulladd fa (.A(a[i]), .B(b[i]), .Cin(cin), .Cout(c[i]), .S(sum[i]));
module add4bit_parametric (a, b, cin, cout, sum);
parameter size = 4;
input [size-1:0] a, b;
input cin;
output cout;
output [size-1:0] sum;
wire [size-2:0] c;
genvar i;
generate
for (i = 0; i < size; i = i + 1) begin: adder
if (i == 0)
ab_fulladd fa (.A(a[i]), .B(b[i]), .Cin(cin), .Cout(c[i]), .S(sum[i]));
else if (i == size-1)
ab_fulladd fa(.A(a[i]), .B(b[i]), .Cin(c[i-1]), .Cout(cout), .S(sum[i]));
else
ab_fulladd fa (.A(a[i]), .B(b[i]), .Cin(c[i-1]), .Cout(c[i]), .S(sum[i]));
end endgenerate
endmodule