2016-12-04 15 views
0

Verilogで加算器のゲートレベルコードを書いています。加算器の出力を下に示します。あなたが見ることができるように、sumとcoutは常にzにあります。どうしてか分かりません。私は何が欠けているか確認できますか?御時間ありがとうございます。Verilogモジュールの加算出力の値が正しくありません

OUTPUT:

= X、B = X、CIN = X、SUMM = Z、COUT = Z時= 0

= 0、B = 0、CIN = 0、SUMM = Z、COUT = Z時= 10

= 0、B = 1、CIN = 0、SUMM = Z、COUT = Z時= 20

= 1、B = 0、CIN = 0、summ = z、時間= 30でのcout = z

a = 1、b = 1、cin = 0、summ = z、cout = z一度= 40

= 0、B = 0、CIN = 1、SUMM = Z、COUT = Z時= 50

= 0、B = 1、CIN = 1、SUMM = Z 、COUT = Z時= 60

= 1、B = 0、CIN = 1、SUMM = Z、COUT = Z時= 70

= 1、B = 1、CIN = 1 、sum = z、時間= 80におけるcout = z

module tb(); 

reg a, b, cin; 
wire cout, summ; 


FA_gatelevel gatelevel(.a(a), .b(b), .cin(cin), .summ(summ), .cout(cout)); 

initial begin 

    #10 a = 0; b = 0; cin = 0; 
    #10 a = 0; b = 1; cin = 0; 
    #10 a = 1; b = 0; cin = 0; 
    #10 a = 1; b = 1; cin = 0; 
    #10 a = 0; b = 0; cin = 1; 
    #10 a = 0; b = 1; cin = 1; 
    #10 a = 1; b = 0; cin = 1; 
    #10 a = 1; b = 1; cin = 1; 

end 


initial begin 


$monitor("a = %0h, b = %0h, cin = %0h, sum = %0h, co = %0h at time = `%0t",a,b,cin,summ,cout,$time); // gate level 

    #200 $finish; 
end 

endmodule 

module FA_gatelevel(a, b, cin, summ, cout); 

input a,b,cin; 
output summ,cout; 

FA_co ins_co(.a(a), .b(b), .cin(cin), .cout(cout)); 
FA_sum ins_sum(.a(a), .b(b), .cin(cin), .summ(summ)); 

endmodule 

module FA_co (a, b, cin, cout); 

input a, b, cin; 
output cout; 
wire ab, bc, ca; 

and g0 (a,b,ab); 
and g1 (b,c,bc); 
and g2 (c,a,ca); 
or g3 (ab,bc,ca,cout); 

endmodule 

module FA_sum(a, b, cin, summ); 

input a, b, cin; 
output summ; 

xor g0 (a,b,cin,summ); 


endmodule 

答えて

1

Verilogゲートプリミティブに接続すると、出力は常に最初の接続になります。

関連する問題