Verilog波形显示蓝线和某些变量的Hiz

问题描述 投票:0回答:1
module half_adder(sum, carry, a, b); 
input a, b; 
output sum, carry; 
xor sum1(sum, a, b); 
and carry1(carry, a, b); 
endmodule

module full_adder (fsum, fcarry_out, a, b, c); 
input a, b, c; 
output fsum, fcarry_out; 
wire half_sum_1, half_carry_1, half_carry_2; 
half_adder HA1(half_sum_1, half_carry_1, a, b); 
half_adder HA2(fsum, half_carry_2, half_sum_1, c); 
or or1(fcarry_out, half_carry_2, half_carry_1); 
endmodule

module four_bit_binary_adder (full_sum_1, full_sum_2, full_sum_3, full_sum_4, carry_out_4, a, b, c, d, e, f, g, h, c_in);
input a, b, c, d,e,f,g,h, c_in;
output full_sum_1, full_sum_2, full_sum_3, full_sum_4, carry_out_4;
wire full_carry_1, full_carry_2, full_carry_3;
full_adder FA1(full_sum_1, full_carry_1, a, e, c_in);
full_adder FA2(full_sum_2, full_carry_2, b, f , full_carry_1);
full_adder FA3(full_sum_3, full_carry_3, c, g ,  full_carry_2);
full_adder FA4(full_sum_4, carry_out_4 , d, h, full_carry_3);
endmodule

module testbench_4_bit_binary_adder;
  reg  A,B,C,D,E,F,G,H,C_in;
  wire  a,b,c,d,e,f,g;
  four_bit_binary_adder t6(S0,S1,S2,S3,C_out,A,B,C,D,E,F,G,H,C_in);
    initial
    begin
      #100 A=1'B0;B=1'B0;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B1;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B1;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B1;B=1'B0;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B1;B=1'B0;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B0;C=1'B1;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B0;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B0;D=1'B1; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;
      #100 A=1'B0;B=1'B1;C=1'B1;D=1'B0; E=1'B0;F=1'B0;G=1'B0;H=1'B0;C_in=1'B0;

    end
  endmodule

这是我的Verilog代码。我首先在全加器中实例化了半加器,然后在四位加法器中实例化了全加器,并创建了一个用于仿真的测试平台。它可以编译,但是我不能从中获得准确的波形。我无法确定问题出在设计还是测试台上。

verilog modelsim
1个回答
0
投票

在测试台中,您将信号a,b,c,d,e,f,g声明为wire,但没有驱动这些信号。 wire的默认值为z

由于您没有使用那些信号,但是您正在使用S0-S3信号,因此您应该更改:

  wire  a,b,c,d,e,f,g;

至:

  wire S0, S1, S2, S3;
© www.soinside.com 2019 - 2024. All rights reserved.