Domanda:
Perché le implementazioni della somma dei prodotti sono più popolari delle implementazioni del prodotto delle somme?
Steven Roose
2012-06-23 16:18:17 UTC
view on stackexchange narkive permalink

Nel mio libro sulla progettazione di circuiti ( Fondamenti di logica digitale con VHDL di Stephen Brown e Zvonko Vranesic ), gli autori preferiscono sempre una somma di prodotto per rappresentare e implementare circuiti semplici.

Nell'algebra booleana, viene utilizzata anche questa preferenza, ma penso principalmente perché scrivere la somma dei prodotti è semplicemente più semplice e più breve. E forse è più facile da capire per i lettori.

Ma quando si implementa utilizzando porte logiche, suppongo che vengano fatte anche altre considerazioni oltre a queste. Come i costi e i ritardi dei gate.

Quindi, c'è una ragione specifica per cui vengono effettuate preferibilmente implementazioni di somma di prodotti? F.e. le porte AND sono più economiche delle porte OR? Ho letto della realizzazione dei transistor di queste porte, ma non ricordo una simile affermazione.

Cinque risposte:
Shamtam
2012-06-23 21:47:42 UTC
view on stackexchange narkive permalink

Da quello che ho imparato nei miei corsi di logica digitale, tutto tende ad essere realizzato con NAND, poiché sono più economici e qualsiasi funzione booleana può essere realizzata con NAND (o NOR, se è per questo). Immagino che le implementazioni della somma dei prodotti (porte AND e OR) non siano particolarmente onnipresenti per questo motivo.

Hmm, ho letto come le porte AND e OR possono essere realizzate con porte NAND, sì. Quindi probabilmente un gate AND richiede meno NAND di un OR. Il che sembra ragionevole: P Ma le NAND sono più economiche di quelle NOR?
@StevenRoose In un processo CMOS standard, sì. I PFET sono generalmente peggiori dei NFET, quindi i PFET devono essere più grandi per corrispondere ai pull-down NFET. Con una porta NOR, due PFET sono in serie e dovrebbero essere di dimensioni raddoppiate. Per un gate NAND, si avrebbe un'area attiva di circa 8-10 unità, e un gate NOR avrebbe un'area di forse 14-20 a seconda della forza relativa dei PFET e NFET.
Vale la pena notare che "(aeb) o (ced)" è equivalente a "(a nand b) nand (c nand d)".
supercat
2012-12-07 04:16:59 UTC
view on stackexchange narkive permalink

Sebbene il prodotto di somme e la somma di prodotti abbiano una complessità essenzialmente equivalente (uno può essere trasformato nell'altro invertendo tutti gli input e gli output), penso che la maggior parte delle persone trovi più facile lavorare con la somma dei prodotti. Ad esempio, supponiamo che un chip ROM debba essere selezionato agli indirizzi di memoria [durante i quali MREQ sarà attivo] in 0xC000-0xFFFF e che debba essere selezionato anche all'indirizzo 0x0000-0x3FFF se BANKSEL non è impostato. La sua equazione di selezione può essere scritta sotto forma di somma di prodotti come:

  UseROM = (MREQ & A15 & A14) # (MREQ &! A15 &! A14 &! BANKSEL)  

La forma corrispondente del prodotto delle somme, assumendo la stessa polarità di output, sarebbe

  UseROM = MREQ & (A15 #! A14) & (! A15 # A14) & (A14 #! BANKSEL)  

Il modulo della somma dei prodotti identifica efficacemente le circostanze in cui l'output dovrebbe essere attivo, mentre il prodotto-of-sum identifica efficacemente le circostanze in cui l'output dovrebbe essere inattivo. Nel primo ci sono due termini di prodotto, ciascuno dei quali è chiaramente associato all'accesso in una delle due gamme. In quest'ultimo ci sono quattro fattori, solo uno dei quali ha un'ovvia relazione con il comportamento desiderato. Si potrebbe invertire il senso degli ingressi e delle uscite e ottenere qualcosa di più simile al primo:

  DontUseROM = (! MREQ #! A15 #! A14) & (! MREQ # A15 # A14 # BANKSEL )  

Ciò ridurrà la complessità in modo che corrisponda al primo esempio, ma è molto meno intuitivo. In effetti, l'unico modo per dare un senso è capire cosa deve accadere affinché DontUseROM vada basso, cioè SIA il primo O il secondo fattore deve essere basso. E ogni fattore diminuirà solo quando gli input soddisfano TUTTE le condizioni necessarie affinché ciò accada. In altre parole, torniamo alla somma dei prodotti.

Kaz
2012-12-07 07:30:09 UTC
view on stackexchange narkive permalink

La logica invertita può essere innaturale. Passiamo alla logica quantificata:

$$ \ forall x: ({duck} (x) \ land {quacks} (x)) \ lor ({ cane} (x) \ land {barks} (x)) \ lor (\ lnot {duck} (x) \ land \ lnot {dog} (x)) $$

" Tutto è o un'anatra (e ciarlatani) o un cane (e abbaia) oppure non è né anatra né cane. "

Se scrivi il duale, quindi usa DeMorgan su di esso per capovolgere la logica , otteniamo qualcosa di innaturale:

Doppio (finora tutto bene):

$$ \ lnot \ exist x: \ lnot (( ({duck} (x) \ land {quacks} (x)) \ lor ({dog} (x) \ land {barks} (x)) \ lor (\ lnot {duck} (x) \ land \ lnot { dog} (x))) $$

DeMorgan's, passaggio 1:

$$ \ lnot \ exist x: \ lnot (({duck} (x) \ land {quacks} (x)) \ land \ lnot ({dog} (x) \ land {barks} (x) \ land \ lnot (\ lnot {duck} (x ) \ land \ lnot {dog} (x)) $$

passaggio 2:

$$ \ lnot \ esiste x: (({\ lnot duck} (x) \ lor {\ lnot quacks} (x)) \ land ({\ lnot dog} (x) \ lor {\ lnot barks} (x) \ land ({duck } (x) \ lor {dog} (x)) $$

"Il re non esiste una cosa che, contemporaneamente:

  • sia un non-quacker o un non-duck; e
  • è un non abbaiatore o un non cane; e
  • è un'anatra o un cane, o entrambi. "

Dite cosa? :)

La somma dei prodotti va di pari passo in mano con divide et impera. Una rappresentazione somma di prodotti di una proposizione la divide in tutti i casi che indipendentemente la rendono vera. La proposizione P è vera se tale e tale; o qualche situazione; o se quell'altro caso. La divisione in casi indipendenti aiuta la chiarezza nel ragionamento.

Inoltre, nella logica dei predicati e nel ragionamento correlato, di solito ci occupiamo di aspetti positivi, come "duck", e meno di negativi come "non-duck". "non-duck" non è una classe di oggetti. Le cose vengono classificate utilizzando attributi positivi che hanno, non ciò che non hanno. Lo spazio delle cose che sono "non-anatra" è illimitato. Ragionare con tali negativi crea confusione.

Nella logica proposizionale, come nella logica dell'ordine zero senza quantificatori, come ciò che trattiamo nei circuiti logici, noi può scrivere l'intera tavola della verità. Può risultare che lo spazio negativo di una funzione sia in effetti più semplice da caratterizzare.

Ad esempio una formula booleana su quattro variabili ha solo una tabella di 16 righe. Supponiamo che ci siano tre righe per le quali è vero e che sia falso ovunque. Quindi viene prodotta una formula semplice dando queste tre combinazioni di quattro variabili e combinandole con o”.

Ma supponiamo che la formula sia falsa solo su tre righe. Quindi può essere più conveniente e naturale caratterizzare queste eccezioni ed esprimerlo in questo modo: la formula è vera quando le variabili non sono in questa combinazione, e non in quest'altra combinazione, e non in questa terza combinazione. Gli operatori non possono quindi distribuire nelle combinazioni, producendo un prodotto sulle somme.

Esempio positivo:

  ABCD P0 0 0 0 0 0 0 0 1 00 0 1 0 00 0 1 1 00 1 0 0 1 * 0 1 0 1 00 1 1 0 00 1 1 1 1 * Somma dei prodotti: 1 0 0 0 0 P = A'BC'D '+ A 'BCD + ABC'D1 0 0 1 01 0 1 0 01 0 1 1 01 1 0 0 01 1 0 1 1 * 1 1 1 0 01 1 1 1 0  

Esempio negativo:

  ABCD P0 0 0 0 1 0 0 0 1 10 0 1 0 10 0 1 1 10 1 0 0 0 * 0 1 0 1 10 1 1 0 10 1 1 1 0 * Prodotto di somme: 1 0 0 0 1 P = (A'BC'D '+ A'BCD + ABC'D)' 1 0 0 1 1 P = (A'BC'D ')' (A'BCD) '(ABC 'D)' 1 0 1 0 1 P = (A + B '+ C + D) (A + B' + C '+ D') (A '+ B' + C + D ') 1 0 1 1 1
1 1 0 0 1 Somma dei prodotti: 1 1 0 1 0 * A'B'C'D '+ A'B'C'D + A'B'CD' ... (10 termini aggiuntivi) 1 1 1 0 11 1 1 1 1  

Anche così, nonostante la sua semplicità, è piuttosto difficile capire la terza formula (prodotto-di-somme) rispetto alla seconda (prodotto-di- negated-products). Tuttavia, anche la somma non semplificata alternativa di 13 prodotti è difficile da capire, a causa dell'elevato numero di termini.

Aggiungerei che anche quando le cose sono espresse in forma di prodotto di somme, il metodo normale per valutarle da parte dell'uomo sarebbe quello di invertirle per produrre un prodotto di somme. Se non esiste nulla che soddisfi tutti e tre i criteri, ciò implica che tutto deve "fallire" almeno uno; solo le anatre starnazzanti falliscono la prima, solo i cani che abbaiano falliscono la seconda, e le cose che non sono né cani né anatre falliscono la terza. In altre parole, torniamo alla somma dei prodotti.
Per quanto riguarda il tuo secondo esempio, suggerirei che la descrizione più naturale sarebbe descriverlo in termini di quando P è falso, usando la somma dei prodotti e invertendo il risultato. Anche con SOP non invertito, non sono necessari 13 termini. Penso che ne siano necessari solo cinque: `! B + C! D + A! D + AC +! A! CD`, per esempio.
Ho riformulato "è un'anatra o un cane scavato" perché pensavo che "scavato" fosse un errore di battitura, poi ho capito che "scavato" è qualcosa che è sia un'anatra che un cane.Scusa se c'è qualche confusione.
Penso che anche il passaggio 1 di DeMorgan sia sbagliato.
clabacchio
2012-12-07 05:08:50 UTC
view on stackexchange narkive permalink

Prima di tutto: come altri hanno detto, è possibile implementare tutte le funzioni logiche utilizzando unicamente porte NAND o NOR.

Ora, a causa della sua implementazione CMOS statica, la porta NAND tende ad essere più veloce di il NOR. Questo perché il gate NAND ha il percorso critico come una serie di transistor N nMOS, dove N è il fan-in:

Il NOR, invece, ha il percorso critico con una serie di transistor N pMOS.

enter image description here

Nelle stesse condizioni, data la minore mobilità di lacune rispetto agli elettroni, i pMOS sono meno conduttivi di nMOS e quindi è preferibile utilizzare porte NAND.

Penso che gli aspetti dell'analisi umana siano molto più rilevanti della distinzione tra porte NAND e NOR. SOP equivale a POS con ingressi e uscite invertiti e in molti contesti è possibile invertire ingressi e uscite "gratuitamente". Se si ha un pezzo di carta bianco ad eccezione di alcune forme rettilinee nere, si potrebbe descrivere il contenuto del foglio descrivendo le aree scure (forme) o descrivendo tutte le aree bianche (spazi intorno e tra di esse). Nella maggior parte dei casi, la prima descrizione sarà più semplice.
@supercat è vero che l'inversione è quasi libera, ma è anche vero che se un pMOS ha metà della transconduttanza di un nMOS, un gate NOR a 2 ingressi avrà bisogno di pMOS quattro volte più grandi per essere bilanciato, e pagherai con la capacità di ingresso. E penso che la ragione dell'analisi umana sia abbastanza soggettiva.
Su ogni CPLD che ho visto, ogni input è disponibile in forma normale e invertita, e lo è anche quasi ogni output di somma di prodotti (sebbene alcuni output a termine di un singolo prodotto non lo siano), e molti compilatori logici lo saranno in effetti tradurre la logica da una forma all'altra quando renderebbe le cose più efficienti (ad esempio convertendo i tre termini "Q = W # X # (Y & Z)" nei due termini "! Q = (! W &! X & ! Y) # (! W &! X &! Z) `). L'affinità per la somma dei prodotti non è basata sull'hardware, poiché la scelta della rappresentazione dell'hardware potrebbe non dipendere affatto dalla rappresentazione del codice sorgente.
@clabacchio come giocherete con la capacità e come aiuta in caso di gate NOR?
ram
2012-12-06 17:35:06 UTC
view on stackexchange narkive permalink

il ritardo di propagazione alla porta AND è inferiore alla porta OR, quindi implementare la logica in SOP è migliore di POS. Il secondo punto è il costo del gate, AND gate è più economico del gate OR.

Nessuna di queste affermazioni è vera in generale. Puoi sostenere uno dei due con qualsiasi tipo di riferimento o citazione?
La normale implementazione SOP per le espressioni "(A e B) o (C e D)" nell'hardware è molto più probabile che sia "(A nand B) nand (C nand D)" piuttosto che coinvolgere porte a logica positiva. Se è necessaria un'uscita invertita, la realizzazione `(A e B) né (C e D)` può essere utile (implementata come una porta a quattro ingressi che è un incrocio tra `nand` e` nor`) ma in generale, un Le porte "AND" o "OR" devono essere costituite da una "NAND" o "NOR" seguita da un inverter.
@supercat in che modo il tuo commento è correlato a questa risposta
Le porte @SD7: AND e OR sono utilizzate molto meno spesso delle porte NAND, NOR e ibride;se un circuito descritto usando AND e OR è effettivamente implementato usando porte NAND, il ritardo di propagazione che avrebbe se implementato usando porte AND e OR non sembra molto rilevante.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...