Basandosi sulla risposta di Bob e sulla tua domanda sulle equazioni: il concetto di base da ricordare è il teorema di DeMorgen. Usando + per OR, * per AND e ~ per NOT,
~ (a + b) = (~ a * ~ b)
~ (a * b) = ( ~ a + ~ b)
In altre parole, l'uscita di una porta NOR è equivalente all'uscita di una porta AND con gli ingressi invertiti. E, viceversa: l'output di una porta NAND è equivalente all'output di una porta OR con gli ingressi invertiti.
Se sposti le inversioni tutte da un lato ottieni:
(a + b) = ~ (~ a * ~ b)
(a * b) = ~ (~ a + ~ b)
In altre parole, una porta OR è equivalente a una porta NAND con ingressi invertiti e una porta AND è equivalente a una porta OR con ingressi invertiti.
Il trucco da realizzare è che puoi spostare le "bolle" e implementare il teorema di DeMorgen con lo schema. Ho sentito questo chiamato "il gioco delle bolle". L'idea è di capire quale funzione ti serve con solo "logica positiva" usando AND e OR. Quindi gioca al gioco delle bolle e crea tutte le NAND e NOR con le bolle sugli ingressi, quindi sposta le bolle lungo le linee (due su una linea si annullano) per creare semplici NAND e NOR. A volte è necessario anche un inverter aggiuntivo qua o là.
Il gioco delle bolle ha quattro regole:
1) Puoi cambiare AND o OR in (N) AND e (N) OR con bolle su tutti i terminali.2) Puoi "spingere" una bolla dall'output indietro agli input, rendendoli tutti invertiti.3) Puoi "spingere" le bolle da tutti gli input fino all'output, invertendo l'output.4) Due bolle su una riga si annullano.
Ecco un esempio.
Si scopre che se cambiamo solo il gate di output possiamo salvare un passaggio o due ...
Saluti.