SystemVerilog:S-R Latch无法正常工作

时间:2017-05-02 20:40:03

标签: verilog system-verilog digital-logic flip-flop

这是我对S-R锁存器的门级描述:

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

这里是这个S-R锁存器的测试平台:

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  

当我检查waverform时,Q的值在大多数情况下都是X.其他时候,它大多是不正确的。我试图预设Q,QB的值,但它似乎仍然不起作用。

那你能说出这段代码的问题是什么吗?

2 个答案:

答案 0 :(得分:1)

SR_Latch_Nand的代码错了。 您错过了使用s1r1作为输出与非门n3n4。 修正后的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

答案 1 :(得分:0)

问题在于您的测试平台。如果r和s都是低电平有效,请确保您的测试台仅测试其中一个低电平有效。