Comme cela a pu être illustré,
cette bascule possède un état interdit : c’est
le fameux état ou « Q » et « Qbar
» sont à 1 (lorsque « set » et
« reset » sont à 1)
module RS(reset, set, Q, Qbar) ;
input reset, set ;
output Q, Qbar ;
reg Q, Qbar ;
always
case ( {set, reset})
’b10 : Q = 1 ; Qbar = 0 ;
’b01 : Q = 0 ; Qbar = 1 ;
’b11 : Q = 1 ; Qbar = 1 ;
endcase
endmodule
On
remarque l'absence de description du 4ème état ; c'est un
état de mémorisation (la variable de type reg -
mémoire - la réalise sans action, c'est son état
naturel).
ou encore :
reg [ 1 : 0] S ; // à la place de
reg Q, Qbar;
always
case ( {set, reset})
‘b10 : S = ‘b10 ;
‘b01 : S = ‘b01 ;
’b11 : S = ‘b11 ;
endcase
assign {Q, Qbar} = S ;
endmodule
ou en simplifiant l'écriture, mais
sans table de vérité :
module RS(reset,
set, Q, Qbar) ;
input reset, set
;
output Q, Qbar ;
reg Q, Qbar ;
always
if ( set || reset)
// ou ({set,reset})
{Q, Qbar} = {set, reset}
;
endmodule
L’ensemble des
programmes donne le même résultat à
la simulation.
Attention : les bascules
RS simulées présentes dans la biblothèque
n’ont pas forcément cet état dit interdit
tel quel. Il pourra être intéressant de vérifier
cet état.
Dans les data books, le
4ème état est donné, mais est
souvent annoncé mais avec une mention « non garanti ».