我在 4 位 fullAdder 中的输出始终是 z 并且不会改变

My outputs in 4bits fullAdder are always z and don't change

提问人:saba safavi 提问时间:1/3/2019 更新时间:9/6/2021 访问量:491

问:

我正在 Active-hdl 中使用 verilog 编写 4 位全加法器,我认为我的代码和测试台是正确的,但 sum 和 cout 的值在波形中始终是 z,任何人都可以帮助我解决问题。

    module fullAdder(A, B, cin, sum, cout);
    input A,B,cin;
    output sum,cout;
    assign {cout , sum} = A + B + cin;
endmodule

module fullAdder4bits(A, B, cin, sum, cout);
    input [3:0] A,B;
    input cin;
    output [3:0] sum;
    output cout;
    wire w1,w2,w3;
    fullAdder I0(A[0],B[0],cin,sum[0],w1);  
    fullAdder I1(A[1],B[1],w1,sum[1],w2);
    fullAdder I2(A[2],B[2],w2,sum[2],w3);
    fullAdder I3(A[3],B[3],w3,sum[3],cout);
endmodule   
`timescale 1 ns/1 ps  
module testbench;
    reg tcin;
    reg [3:0] tA,tB;
    wire [3:0] tsum;
    wire tcout;
    fullAdder4bits dut(tA, tB, tcin, tsum, tcout);
    initial 
        begin
        tA = 0;
        tB = 0;
        tcin = 0;
        #10 tA = 5;
        #10 tB = 8;
        #10 tA = 7;
        #10 tcin = 1;
    end
    initial $monitor("A = %d , B = %d , cin = %b , sum = %d , cout = %b",tA,tB,tcin,tsum,tcout);  
    initial #60 $finish;
    endmodule

the output in waveform

Verilog Active-HDL

评论

0赞 saba safavi 1/3/2019
你能帮忙运行测试台吗?我遵循了以下步骤: 1- 右键单击测试台并单击初始化仿真 2- 选择所有输入和输出 3- 右键单击并选择添加到波形,最后运行它
0赞 saba safavi 1/4/2019
我无法理解 active-hdl 中发生了什么,所以我使用编译器和在线模拟器并查看我的输出,这是链接:edaplayground.com/x/23eb

答:

1赞 Oldfart 1/3/2019 #1

我无法发现任何错误,因此我决定将您的设计抛给 Vivado。

它有助于您提供完整的代码包含测试平台!

您的代码看起来不错,在 Vivado 中我没有看到“z”状态:

enter image description here