2017-05-02 9 views
0

ここでは動作しませんが、SRラッチの私のゲートレベルの記述である:のSystemVerilog:SRラッチが正しく

module SR_Latch_Nand(input S, R, C, output Q, QB); 
    wire s1, r1; 
    nand #8 n1(r1, R, C); 
    nand #8 n2(s1, S, C); 
    nand #8 n3(QB, R, Q); 
    nand #8 n4(Q, S, QB); 
endmodule 

、ここで、このSRラッチのためのテストベンチです:

module SR_Latch_Nand_TB(); 
    logic s, r, clk; 
    wire q, qb; 
    SR_Latch_Nand sr(s, r, clk, q, qb); 
    initial begin 
    s = 0; r = 0; clk = 0; 
    #100 s = 1; 
    #100 clk = 1; 
    #100 clk = 0; 
    #100 clk = 1; 
    #100 s = 0; 
    #100; 
    end 
endmodule 

ときIウェーブフォームをチェックすると、Qの値はたいていの場合Xです。それ以外の時はほとんど間違っています。 Q、QBの値をプリセットしようとしましたが、まだ動作していません。

このコードの問題点を教えてください。

答えて

0

問題はテストベンチにあります。 rとsの両方がアクティブローの場合、テストベンチがアクティブローのうちの1つだけをテストすることを確認します。

1

SR_Latch_Nandのコードは間違っています。 出力NANDゲートn3n4にはs1r1を使用していませんでした。 修正されたSRラッチモジュールは、次のとおりです。

module SR_Latch_Nand(input S, R, C, output Q, QB); 
    wire s1, r1; 
    nand #8 n1(r1, R, C); 
    nand #8 n2(s1, S, C); 
    nand #8 n3(QB, s1, Q); 
    nand #8 n4(Q, r1, QB); 
endmodule