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.