Un sistema digitale può essere visto come una “blackbox”. Questa blackbox riceve degli input (Informazioni in ingresso) e restituisce degli output (informazioni elaborate). La blackbox è la funzione che permette di ottenere dagli input determinati output:

Sistemi Digitali - Introduzione

Input e Output possono essere informazioni analogiche o digitali. Le informazioni analogiche vengono “trasformate” in informazioni digitali per essere elaborate. Una volta elaborate, possono essere ritrasformate in analogiche.

I sistemi digitali possono essere:

  • sincroni: ogni singola elaborazione rispetta dei tempi prestabiliti da un “clock”. In questa tipologia di sistemi Input e Output possono variare solo allo scattare del clock
  • asincroni: l’elaborazione può avvenire in un momento qualsiasi. In questi sistemi Input e Output possono variare in qualsiasi momento

I sistemi digitali possono funzionare con due tipologie di “logiche”:

  • logica combinatoria: Per determinati Input in qualsiasi momento otterrò sempre gli stessi Output
  • logica sequenziale: Per determinati Input potrei avere degli Output diversi. Questo avviene perché questi sistemi hanno una “memoria” che può influenzare l’Output. L’Output è influenza dallo stato della memoria al momento dell’elaborazione

Sistemi Digitali - Logica combinatoria- sequenziale

Specifiche di un sistema digitale

Le specifiche di un sistema digitale sono la descrizione precisa di come un sistema deve funzionare. Le metodologie per definire le specifiche sono le seguenti:

  • Utilizzo delle specifiche ad alto livello che definiscono l’insiemi di Input/ Output e la funzione che rappresenta il sistema. Queste informazioni vengono successivamente convertite in binario.
  • Utilizzo di una tabella delle verità
  • Utilizzo si una macchina a stati finiti

Ad esempio:

Un sistema che dice se un certo mese ha 31 giorni oppure no.

Specifiche ad alto livello:

  • Input: x ∈ {1,2,3,4,5,6,7,8,9,10,11,12}. Servono 4 bit per la rappresentazione in binario (x3,x2,x1,x0)
  • Output: x ∈ {0,1}. Serve 1 bit per la rappresentazione in binario (z)
  • Funzione: z = F(x) = z (x3,x2,x1,x0) = !x3x0 + x3!x0 = x3 XOR x0
    • 0 per x = 2,4,6,9,11
    • 1 per x = 1,3,5,7,8,10,12
x x3 x2 x1 x0 z
1 0 0 0 1 1
2 0 0 1 0 0
3 0 0 1 1 1
4 0 1 0 0 0
5 0 1 0 1 1
6 0 1 1 0 0
7 0 1 1 1 1
8 1 0 0 0 1
9 1 0 0 1 0
10 1 0 1 0 1
11 1 0 1 1 0
12 1 1 0 0 1

Per realizzare un sistema digitale si utilizzano semplici componenti:

  • Porte Logiche
  • Porte Universali
  • Memorie Flip-Flop

Porte Logiche e Circuiti combinatori

Le porte logiche più semplici sono:

  • AND (x * y)
  • OR (x + y)
  • NOT (!x)
x y AND (x,y) OR (x,y) NOT (x)
0 0 0 0 1
0 1 0 1 1
1 0 0 1 0
1 1 1 1 0

Queste porte logiche implementano le funzioni booleane più utilizzate.

Esempio:

Sistemi Digitali - Porte Logiche

Esistono altre porte logiche:

  • NAND (AND negato)
  • NOR (OR Negato)
  • XOR (OR Esclusivo)
  • XNOR (OR Esclusivo Negato)
x y NAND NOR XOR XNOR
0 0 1 1 0 1
0 1 1 0 1 0
1 0 1 0 1 0
1 1 0 0 0 1

Esempio:

Sistemi Digitali 2 - Porte Logiche 2

 

In questo esempio è evidente il “riuso” di alcuni risultati, ad esempio x XOR y viene utilizzata la stessa porta e lo stesso risultato sia per la funzione S che per la funzione C

 Porte Universali

Una porta o un insieme di porte è chiamato “Universale” se permette l’implementazione di qualsiasi sistema digitale (Tutte le funzioni Booleane).

Le porte logiche universali standard sono AND, OR  e NOT.

Una porta è universale se può implementare le porte universali standard.

Esempio

f (x,y,z) = !xyz + x!y + !yz
Dimostriamo che è Universale

NOT = f(x,1,1)
!x11 + x!1 + !11 =
!x + x0 + 01 =
!x + 0 + 0 =
!x

Quindi se do come input x, 1 sulla porta y e1 sulla porta z -> ottengo l’inversione di x

OR = f(x,0,y)

!x0y + x!0 + !0y =

0 + x + y =

x + y

Quindi se do come input x sulla porta x, 0 sulla porta y e y sulla porta z -> ottengo x + y

AND = f(x,f(y,1,1),0)

Notare che f(y,1,1) = !y

!x!y0 + xy + y0 =

0 + xy + 0 =

xy

Quindi se do come input x sulla porta x, f(y,1,1) sulla porta y e 0 sulla porta z -> ottengo xy

Per questo motivo posso dire che f è Universale

Semplificazione delle funzioni oppure Ottimizzazione delle funzioni

L’obiettivo della semplificazione delle funzioni è quella di realizzare un sistema digitale con il numero minimo di porte logiche

Esempio

F(x,y,z) = xy!z + !xyz + !x!y!z + x!y!z

Sistemi Digitali 2 - Semplificazione

Semplificazione:

xy!z + !xy!z + !x!y!z + x!y!z =
!z(xy + !xy) + !y!z(!x+x) =
!z(y(x + !x) + !y!z(1)=
!z(y(1)) + !y!z =
y!z + !y!z =
!z(y + !y) = !z (1) = !z

Tutto il circuito si può implementare con una sola porta NOT!

Per questo motivo il processo di semplificazione è molto importante per ridurre i costi dell’hardware e quindi della manutenzione nell’intero processo di vita di quel sistema. Inoltre il sistema effettuando meno operazioni è più veloce nell’esecuzione delle operazioni.

Combinazioni Don’t care

Esempio

E’ necessario un Encoder che assegna 2 bit ad ogni possibile combinazione di input costituita da 3 bit.

La tabella delle verità è la seguente:

x y z a b
0 0 1 0 1
0 1 0 1 0
1 0 0 1 1

Nella tabella delle verità sono visibili solo 3 combinazioni ma le combinazioni dovrebbero essere 2^3 = 8. Cosa è successo alle altre combinazioni? Questo combinazioni che non vengono prese in considerazioni sono le combinazioni “dont’ care”. Queste combinazioni non sono necessarie per l’implementazione della funzione

Soluzione 1:

a = !xy!z + x!y!z =

z!(!xy + x!y) =

z!(x XOR y)

b = !x!yz + x!y!z =

!y(!xz + x!z) =

!y(x XOR z)

Soluzione 2:

a = !z

b = !y

che usa solo 2 porte NOT

questa soluzione è migliore

Le condizioni don’t care vengono considerate quando:

  • alcuni input non verranno mai inviati
  • quando alcune parti del circuito non influenzano il risultato della funzione

osservando tutte le condizioni di don’t care è possibile rimuovere delle porte logiche e quindi semplificare il circuito

Circuiti Sequenziali

E’ possibile realizzare una memoria (latch) con due porte NOR:

S R Q !Q
1 0 1 0
0 0 1 0
0 1 0 1
0 0 0 1

Sistemi Digitali 3 - Flip FlopLa memoria Flip/ Flop è molto più affidabile della memoria Latch ma necessita di 4 porte NAND rispetto alle 2 porte NOR del circuito del latch. Inoltre la memoria Flip/ Flop per funzionare necessita di un clock.

Tabella di eccitazione del Flip/ Flop:

Q(t) Q(t+1) S R
0 0 0 x
0 1 1 0
1 0 0 1
1 1 x 0

Questo significa che se al tempo t il Flip/ Flop si trova nello stato 0 possiamo confermare lo stato 0 inviando su S 0 se invece si trova nello stato 1 possiamo confermare lo stato 1 inviando a R 0. Se invece vogliamo passare da 0 -> 1 dobbiamo settare S=1 e R 0 se vogliamo passare da 1 -> 0 dobbiamo settare S=0 e R=1

Esistono circuiti di memorie Flip/ Flop che usano come input anche un solo segnale.

Esempio

Progettare un circuito con:

  • 1 input x
  • 3 output A, B, C

Una sorgente esterna invia ad x un bit per ogni ciclo di clock, quando l’input è 0 non avviene alcun cambiamento, altrimenti viene dato come output la sequenza binaria per: 0,1,3,7,6,4.

Stato Attuale Stato Successivo
X=0
Stato Successivo
X=1
A B C A B C A B C
0 0 0 0 0 0 0 0 1
0 0 1 0 0 1 0 1 1
0 1 1 0 1 1 1 1 1
1 1 1 1 1 1 1 1 0
1 1 0 1 1 0 1 0 0
1 0 0 1 0 0 0 0 0

Esempio

Sistema Logico/ Combinatorio

Grafo degli stati e transizioni

Sistemi Digitali 3 - Sistema sequenziale

Comportamento Flip/ Flop

Q(t) Q(t+1) T
0 0 0
0 1 1
1 0 1
1 1 0

Tabella output/ Eccitazione

Stato
Attuale
Input Stato
Successivo
Flip/ Flop
Inputs
Output
A B x A B TA TB y
0 0 0 0 1 0 1 0
0 0 1 0 0 0 0 1
0 1 0 1 0 1 1 1
0 1 1 1 1 1 0 0
1 0 0 0 0 1 0 1
1 0 1 0 1 1 1 0
1 1 0 1 1 0 0 0
1 1 1 1 0 0 1 1

Per realizzare il sistema definiamo le funzioni per i Flip/ Flop e per l’output:

  • TA = A XOR B
  • TB = !(A XOR B)
  • y = A XOR B XOR x

Sistemi Digitali 4 - Sistema Logico- Combinatorio

 

Esempio

Sistema non completamente specificato

Progettare un sistema che genera una sequenza binaria per i seguenti valori 0, 1, 3, 5, 7

Sistemi Digitali 4 - Sistema con auto correzione

A B C A B C Ta Tb Tc
0 0 0 0 0 0 1 0 0 1
1 0 0 1 0 1 1 0 1 0
3 0 1 1 1 0 1 1 1 0
5 1 0 1 1 1 1 0 1 0
7 1 1 1 0 0 0 1 1 1
2 0 1 0            
4 1 0 0            
6 1 1 0            

Ta = B

Tb = C

Tc = !C + AB

2,4,6 casi “dont’ care”

Author