La capacité de mémorisation est une des fonctions principale des composants
logiques.
La fonction mémoire doit conserver son état en l’absence
d’activité des signaux de commande. Elle peut
être décrite à partir de portes «
NOR ». Dans ce cas, il n’y a pas de notion de
comportement : c'était l'objet d'un des exercices.
Décrire la mémoire
est simple. L’entrée « set » provoque la mise
à 1, l'entrée « reset » la mise à 0.
L’absence des signaux de commande garde le contenu.
Il demeure un problème de
taille : les 2 sorties ne sont pas toujours complémentaires.
Lorsque S et R sont à 1, les 2 sorties se trouvent être
à 1.
Une solution c'est de définir
une mémoire qui ne possède pas cet aléas.
module memoire(reset,
set, Q, Qbar) ;
input reset, set ;
output Q, Qbar ;
reg Q ;
always
begin
if (set)
Q = 1 ;
if (reset)
Q = 0 ;
end
assign Qbar = !Q ;
endmodule
Un détail n’a pas
été vu : la priorité des signaux «
set » et « reset ». Ceci peut être
réglé par la transformation de l’alternative
simple en alternative complète « else ».
Voici la partie modifiée limitée à l'intérieur
du bloc always :
always
begin
if (set)
Q = 1 ;
else
if (reset)
Q = 0 ;
end
Notre fonction mémoire peut
être dite à « set » prioritaire.