2014-05-24 128 views
0

大家好,這是我第一週使用verilog。這裏即時顯示四位加法器的代碼。即時通訊只是想知道爲什麼當我模擬測試臺時,我得到了ZXXX0的輸出?我做錯了什麼嗎? :/我從4位全加器沒有輸出Verilog


module adder(
input a, 
input b, 
input cin, 
output s, 
output cout 
); 

assign s = a^b^cin; 
assign out = (a & b) | (cin & a) | (cin & b); 

endmodule 

module full_adder(p,q,ci,r); 

input [3:0] p,q; // four-bit inputs 
input ci;   // one-input input carry 

output [4:0] r; // five-bit outputs 

wire [2:0] carry; // internal carry wires 

adder fa0(p[0],q[0],ci,r[0],carry[0]); 
adder fa1(p[1],q[1],carry[0],r[1],carry[1]); 
adder fa2(p[2],q[2],carry[1],r[2],carry[2]); 
adder fa3(p[3],q[3],carry[2],r[3],r[4]); 

endmodule 

module test_bench(); 

    // Inputs 
    reg [3:0] p; 
    reg [3:0] q; 
    reg ci; 

    // Outputs 
    wire [4:0] r; 

    // Instantiate the Unit Under Test (UUT) 
    full_adder uut (
     .p(p), 
     .q(q), 
     .ci(ci), 
     .r(r) 
    ); 

    initial begin 
     // Initialize Inputs 
     p = 0; 
     q = 0; 
     ci = 0; 

     // Wait 100 ns for global reset to finish 
     #100; 

     // Add stimulus here 
     p=4'b0011; 
     q=4'b0001; 
     #100 $finish; 


    end 

endmodule 

+1

歡迎來到堆棧溢出,我希望你覺得它有幫助,並在可以的時候給予回饋。接受最好的答案以及提供有用的答案是一種很好的做法。 – Morgan

回答

2

你typo'd你的任務之一:

assign out = (a & b) | (cin & a) | (cin & b); 

應(COUT):

assign cout = (a & b) | (cin & a) | (cin & b); 

這不得不的r [4]爲無驅動(z)從

adder fa3(p[3],q[3],carry[2],r[3],r[4]); 

和z中的效果被驅動到的CIN,變成一個未知( x)當它擊中的布爾邏輯值:

assign s = a^b^cin; 

工作EDAplayground例子。

+0

非常感謝摩根先生:) – user3611806

相關問題