0

这是我对 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  

当我检查波形时,大多数时候 Q 的值是 X。其他时候它大多是不正确的。我尝试过预设 Q、QB 的值,但它似乎仍然不起作用。

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

4

2 回答 2

1

的代码SR_Latch_Nand是错误的。您错过了将s1andr1用于输出 NAND 门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
于 2017-05-04T01:10:15.620 回答
0

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

于 2017-05-02T21:20:18.717 回答