2010-08-10 6 views
0

J'ai essayé de coder une bascule de base en utilisant des portes NAND dans Verilog Pro, mais la forme d'onde que j'obtiens n'est pas correcte. S'il vous plaît voir ce qui ne va pas avec.Comment coder une bascule basique dans Verilog Pro?

//design module 
module rstt(s,r,q,qbar); 
input r,s; 
output q,qbar; 
nand n1(q,r,qbar); 
nand n2(qbar,s,q); 
endmodule 

//stimulus module 
module test; 
reg r,s; 
wire q,qbar; 
initial begin 
r=1'b1; 
s=1'b0; 
#25 r=1'b0; 
    s=1'b1; 
#25 r=1'b1; 
    s=1'b1; 
#100 $finish; 
end 
endmodule 
+1

Tracez la forme d'onde et une description de ce qui ne va pas, s'il vous plaît ... – Marty

+2

Je reçois des lignes droites en q et qbar. n n'obtenant aucune ligne dans s et r. ce sont de mauvaises vagues pour bascule basique en utilisant des portes nand –

Répondre

2

Vous n'avez pas instancier votre module rstt dans votre module test. Cela signifie que les fils (q et qbar) à l'intérieur du module test ne sont pas activés. C'est pourquoi ils restent comme des lignes droites au lieu de basculer. Conformément à la norme IEEE Verilog, un wire par défaut sera 1'bz.

Essayez quelque chose comme ceci:

//design module 
module rstt(s,r,q,qbar); 
input r,s; 
output q,qbar; 
nand n1(q,r,qbar); 
nand n2(qbar,s,q); 
endmodule 

//stimulus module 
module test; 
reg r,s; 
wire q,qbar; 

rstt i0 (
    .s (s), 
    .r (r), 
    .q (q), 
    .qbar (qbar) 
); 

initial begin 
r=1'b1; 
s=1'b0; 
#25 r=1'b0; 
    s=1'b1; 
#25 r=1'b1; 
    s=1'b1; 
#100 $finish; 
end 
endmodule 

Notez que votre problème est pas spécifique à un simulateur.