Salta al contenuto
Note per Studenti Esercizio 4 · comparatore a maggiore di b su due numeri a due bit (tema d'esame luglio 2022)

Esercizio 4comparatore a maggiore di b su due numeri a due bit (tema d'esame luglio 2022)

Esame
In questa pagina 5

Testo (tema d'esame luglio 2022, secondo appello, esercizio 1). Sintetizzare la funzione logica a>ba>b, dove a=a1a0a=a_1a_0 e b=b1b0b=b_1b_0 sono due interi positivi senza segno da due bit con a1a_1 e b1b_1 i bit più significativi, utilizzando le mappe di Karnaugh. Riportare la tabella di verità della funzione, la mappa di Karnaugh con i raggruppamenti utilizzati per semplificare la funzione e l'equazione finale ottenuta.


Teoria usata: Mappe di Karnaugh - implicanti e copertura minimaLa mappa di Karnaugh è la tabella di verità disposta in una griglia con righe e colonne in codice Gray, così che celle adiacenti (anche tra bordi opposti) differiscano in una sola variabile. Si raggruppano gli 1 in rettangoli di $2^k$ celle: ogni gruppo elimina $k$ variabili e dà un prodotto. Implicante primo = gruppo massimo; essenziale = unico a coprire un mintermine; la copertura minima contiene tutti gli essenziali più il minimo di altri primi (può non essere unica). Efficace fino a 4 variabili.Mappe di Karnaugh - implicanti e copertura minima →, Progettazione di una rete combinatoria - approccio gerarchico e porte NAND-NORUna rete combinatoria ha uscite che dipendono solo dagli ingressi presenti (nessuna memoria, nessuna retroazione); una sequenziale dipende anche dalla storia (stato, memoria, feedback). Progetto: specifiche, tabella di verità, funzione a costo minimo, diagramma logico, verifica. Con molti ingressi si usa l'approccio gerarchico (blocchi e sottoblocchi riusabili; regolarità). Blocchi base: funzioni di una variabile, vettori, enabling. Mappatura tecnologica: in CMOS NAND e NOR sono più compatte, quindi SOP $\to$ NAND-NAND e POS $\to$ NOR-NOR.Progettazione di una rete combinatoria - approccio gerarchico e porte NAND-NOR →, Introduzione al VHDL - entity, architecture, tipi e livelli di descrizioneVHDL è un linguaggio di descrizione dell'hardware (HDL), non di programmazione: le dichiarazioni sono concorrenti e descrivono blocchi di circuito; serve per documentare, simulare e sintetizzare. Un blocco ha una entity (nome e porte in/out) e almeno una architecture (cosa c'è dentro: structural con component e port map, dataflow con equazioni booleane, behavioral con comportamento). Tipi: std_logic (da 1164: '0','1','X','Z','U','-',...), std_logic_vector, bit, boolean, integer. Signal per i collegamenti interni, constant per i valori fissi.Introduzione al VHDL - entity, architecture, tipi e livelli di descrizione → (stesso comparatore in VHDL).

Passo 1: tabella di verità

Ci sono 44 ingressi, quindi 1616 righe: per ogni coppia (a,b)(a,b) di numeri da 00 a 33 si scrive y=1y=1 se a>ba>b. L'indice della riga è a1a0b1b0a_1a_0b_1b_0 in binario.

a1a0a_1a_0 aa b1b0b_1b_0 bb yy a1a0a_1a_0 aa b1b0b_1b_0 bb yy
00 0 00 0 0 10 2 00 0 1
00 0 01 1 0 10 2 01 1 1
00 0 10 2 0 10 2 10 2 0
00 0 11 3 0 10 2 11 3 0
01 1 00 0 1 11 3 00 0 1
01 1 01 1 0 11 3 01 1 1
01 1 10 2 0 11 3 10 2 1
01 1 11 3 0 11 3 11 3 0

I mintermini sono y=∑m(4,8,9,12,13,14)y=\sum m(4,8,9,12,13,14) (ci sono (42)=6\binom42=6 coppie con a>ba>b, tra 4⋅3=124\cdot3=12 coppie con a≠ba\ne b).

Passo 2: mappa di Karnaugh

Righe a1a0a_1a_0, colonne b1b0b_1b_0 (codice Gray):

a1a0\b1b0a_1a_0\backslash b_1b_0 00 01 11 10
00 0 0 0 0
01 1 0 0 0
11 1 1 0 1
10 1 1 0 0

Passo 3: raggruppamenti

Gli implicanti primi sono tre:

  • il gruppo da 4 celle {8,9,12,13}\{8,9,12,13\} (righe a1a0=11a_1a_0=11 e 1010, colonne b1b0=00b_1b_0=00 e 0101): costanti a1=1a_1=1, b1=0b_1=0 ⇒\Rightarrow a1b1‾a_1\overline{b_1} ("il bit alto di aa vale 1 e quello di bb vale 0": a≥2>ba\ge2>b);
  • il gruppo da 2 celle {4,12}\{4,12\} (colonna b1b0=00b_1b_0=00, righe a1a0=01a_1a_0=01 e 1111): costanti a0=1a_0=1, b1=0b_1=0, b0=0b_0=0 ⇒\Rightarrow a0b1‾ b0‾a_0\overline{b_1}\,\overline{b_0};
  • il gruppo da 2 celle {12,14}\{12,14\} (riga a1a0=11a_1a_0=11, colonne b1b0=00b_1b_0=00 e 1010, adiacenti attraverso il bordo): costanti a1=1a_1=1, a0=1a_0=1, b0=0b_0=0 ⇒\Rightarrow a1a0b0‾a_1a_0\overline{b_0}.

Sono tutti essenziali: la cella 44 è coperta solo dal secondo, la cella 1414 solo dal terzo, la cella 88 solo dal primo.

a>b=a1b1‾+a0 b1‾ b0‾+a1a0 b0‾a>b=a_1\overline{b_1}+a_0\,\overline{b_1}\,\overline{b_0}+a_1a_0\,\overline{b_0}

Passo 4: verifica e commento

Il controllo sui 1616 casi dà l'uguaglianza con a>ba>b per ogni coppia. Sulla struttura: a1b1‾a_1\overline{b_1} copre i casi in cui il bit alto decide; gli altri due prodotti coprono i casi in cui i bit alti sono uguali (a1=b1a_1=b_1) e decide il bit basso: infatti a0b1‾ b0‾a_0\overline{b_1}\,\overline{b_0} (a=01a=01, b=00b=00) e a1a0b0‾a_1a_0\overline{b_0} (a=11a=11, b∈{10,00}b\in\{10,00\}) si possono riscrivere con una XNOR: a>b=a1b1‾+(a1⊙b1) a0b0‾a>b=a_1\overline{b_1}+(a_1\odot b_1)\,a_0\overline{b_0}, forma "gerarchica" che si estende ai comparatori a più bit.

Costo (ingressi di porta, inverter di b1,b0b_1,b_0 compresi): AND a 2 ingressi (2)(2) + AND a 3 (3)(3) + AND a 3 (3)(3) + OR a 3 (3)(3) + 2 inverter (2)(2) =13=13.

In VHDL la funzione si descrive in dataflow come

vhdl
AgtB <= (A(1) and not B(1)) or (A(0) and not B(1) and not B(0)) or (A(1) and A(0) and not B(0));

(comparatore della nota di introduzione al VHDL, Introduzione al VHDL - entity, architecture, tipi e livelli di descrizioneVHDL è un linguaggio di descrizione dell'hardware (HDL), non di programmazione: le dichiarazioni sono concorrenti e descrivono blocchi di circuito; serve per documentare, simulare e sintetizzare. Un blocco ha una entity (nome e porte in/out) e almeno una architecture (cosa c'è dentro: structural con component e port map, dataflow con equazioni booleane, behavioral con comportamento). Tipi: std_logic (da 1164: '0','1','X','Z','U','-',...), std_logic_vector, bit, boolean, integer. Signal per i collegamenti interni, constant per i valori fissi.Introduzione al VHDL - entity, architecture, tipi e livelli di descrizione →).

La POS minima ha 5 somme: (b1‾+b0‾)(a0+b1‾)(a1+b0‾)(a1+b1‾)(a1+a0)(\overline{b_1}+\overline{b_0})(a_0+\overline{b_1})(a_1+\overline{b_0})(a_1+\overline{b_1})(a_1+a_0): più costosa della SOP (qui si preferisce la SOP).

Errori comuni

  • Dimenticare il raggruppamento attraverso il bordo ({12,14}\{12,14\}).
  • Raggruppare le celle di a=ba=b (diagonale) o di a<ba<b.
  • Ordinare le colonne b1b0b_1b_0 in binario (00,01,10,1100,01,10,11) invece che in Gray.

Versione ripasso

Teoria collegata