SystemVerilog: S-R Latch no funciona correctamente

1

Aquí está mi descripción de nivel de puerta de un pestillo 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

y aquí está el banco de pruebas para este pestillo 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  

Cuando compruebo waverform, el valor de Q es x la mayoría de las veces. otras veces es mayormente incorrecto. He intentado preestablecer valores de q, qb, pero todavía no parece funcionar.

Entonces, ¿puedes decir cuál es el problema con este código?

    
pregunta

2 respuestas

0

El problema es con su banco de pruebas y la forma en que configura r y s. Si ambos están activos en nivel bajo, asegúrese de que su banco de pruebas solo pruebe un nivel bajo activo.

    
respondido por el dave_59
0

El código de SR_Latch_Nand es incorrecto. Te perdiste el uso de s1 y r1 para los flops de salida. El módulo de seguro SR corregido debe ser.

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
    
respondido por el Kiran

Lea otras preguntas en las etiquetas