【问题标题】:4-bit adder not adding correctly4 位加法器未正确添加
【发布时间】:2021-04-24 16:34:43
【问题描述】:

我正在使用 Verilog 中的 1 位加法器创建一个 4 位加法器,但遇到了一个问题,即我的 4 位加法器未正确添加。

这是我的代码:

1位

   module ab_fulladd (A,B,Cin,S,Cout);
output Cout,S;
input A,B,Cin;
wire w1,w2,w3;
xor G1(S,A,B,Cin);
and
 G2(w1,A,B),
 G3(w2,A,Cin),
 G4(w3,B,Cin);
or
 G5(Cout,w1,w2,w3);
endmodule

4 位

    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[i], b[i], cin, c[i], sum[i]);  

else if (i == size-1)  

     ab_fulladd  fa(a[i],b[i],c[i-1],cout,sum[i]);  

else  

    ab_fulladd fa (a[i],b[i],c[i-1],c[i],sum[i]);  

end endgenerate  

endmodule

我的 4 位在波形中加起来不好。你能帮帮我吗?

【问题讨论】:

    标签: verilog modelsim quartus


    【解决方案1】:

    你有一个端口连接错误。您错误地连接了sumc 信号,因为您使用的是按顺序连接。为避免这种常见类型的错误,请使用按名称连接。变化:

    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
    

    它在edaplayground 上的多个模拟器上编译(注册一个免费帐户)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2014-02-10
      • 1970-01-01
      相关资源
      最近更新 更多