Le uscite di un dispositivo logico digitale possono assumere tre
configurazioni fondamentali:
- totem pole
- totem pole con 3-state
- open collector / open drain
Totem Pole.
Si tratta di un driver composto da una coppia complementare di semiconduttori
N e P (o, nei TTL, anche da due BJT N).
|
|
L' uscita può assumere solo due livelli, dovuti all' entrata in conduzione
di uno dei due semiconduttori.
La logica interna di controllo impedisce che entrambi vadano in
conduzione nello stesso istante, creando un corto circuito tra la
tensione positiva e la massa. |
E' rappresentabile come un interruttore a due
posizioni (interruttore on-on).
|
Mosfet P in conduzione |
Il livello 1 sul pin di uscita viene ottenuto chiudendo
lo switch P che collega il pin alla Vdd. |
Mosfet N in conduzione |
il livello 0 sul pin di uscita viene ottenuto chiudendo
lo switch N che collega il pin alla Vss. |
Questi circuiti vanno usati solo per comandare uno o più ingressi
successivi.
Non possono essere mesi in parallelo: se una stessa linea venisse comandato da più
circuiti di tipo totem-pole che cercano di forzare livelli di tensione
diversi, si verificherebbero conflitti con corto circuiti tra Vdd e Vss
attraverso i semiconduttori-switches chiusi. Questo darebbe luogo a correnti elevate,
molto più del valore nominale, danneggiando, anche definitivamente, i circuiti integrati. La
maggior parte dei GPIO dei PIC è di questo genere.
Totem Pole con 3-state.
Un 3-state è il gate tipico per il collegamento ad un bus, dove concorrono
su una stessa linea più dispositivi.
Si tratta di un driver composto da una coppia complementare di semiconduttori
N e P, ma con la possibilità di disattivare entrambi i semiconduttori
L' uscita può assumere, allora, tre livelli, dovuti all' entrata in
conduzione di uno dei due semiconduttori oppure al blocco di entrambi. Questa
terza situazione si indica col nome 3-state o alta impedenza (Hi-Z). E'
rappresentabile come un interruttore a tre posizioni, con quella centrale che
non chiude alcun circuito (interruttore on-off-on).
|
Mosfet P in conduzione |
Il livello 1 sul pin di uscita viene ottenuto chiudendo
lo switch P che collega il pin alla Vdd. |
Nessun Mosfet in conduzione |
Il livello su pin di uscita è floating, dato che assume
una impedenza molto elevata. |
Mosfet N in conduzione |
il livello 0 sul pin di uscita viene ottenuto chiudendo
lo switch N che collega il pin alla Vss. |
Queste uscite possono essere usate in parallelo su uno stesso bus e comandati da diversi circuiti
facendo in modo che uno solo dei dispositivi sia in uno stato attivo e gli altri assumano una
condizione di 3-state.
|
Per ottenere la condizione di 3-state, solitamente i circuiti prevedono un ingresso di
comando, definito Output Enable (OE).
Applicando a questo ingresso
il livello logico "non attivo" previsto dal costruttore (spesso OE
attivo è =0, ma è possibile anche l' opposto) si forza lo stato di alta impedenza, mentre al livello attivo
si connette l' uscita agli switches.
A lato una possibile implementazione per BJT: in 3-state entrambi i
semiconduttori finali hanno le basi bloccate. |
Per evitare che, in condizione di 3-state di tutti i dispositivi collegati
ad un bus esso assuma una tensione non definita, speso si utilizza un weak
pull-up (o anche un pull-down), che porta ad un preciso livello la
tensione sul bus.
E' possibile emulare un totem pole con 3-state da GPIO generici, nel
seguente modo :
- se vogliamo imporre un livello 0 al bus, programmiamo il pin come uscita
dopo aver programmato il registro del port a livello 0. Questo collegherà
il pin al bus con il MOSFET N chiuso e il P aperto
- se vogliamo applicare un livello 1 al bus, ovvero lasciare libero il bus
al livello imposto dal pull-up. programmeremo il pin come ingresso.
Questo lo porta in stato di alta impedenza e R1 tira su (pull-up) la
tensione.
Open collector - open drain.
Se omettiamo nel totem pole il semiconduttore P, abbiamo una uscita open
drain (o, per un BJT, open collector).
|
L' uscita può assumere, allora, un solo livello definito, dovuto alla
conduzione del transistor.
Quando il transistor conduce, collega il pin di uscita alla massa.
Quando è interdetto, il pin resta floating, ad alta impedenza. |
E' rappresentabile come un interruttore a due
posizioni, con una che non chiude alcun circuito (interruttore off-on).
|
Mosfet N aperto |
Il livello sul pin è flottante. L' impedenza è molto
elvata. |
Mosfet N in conduzione |
il livello 0 sul pin di uscita viene ottenuto chiudendo
lo switch N che collega il pin alla Vss. |
Queste uscite possono essere usate in parallelo su uno stesso bus (bus
open collector). In particolare, il livello della tensione sul bus connessione con altri
dispositivi sarà dato da una resistenza di pull-up o da un generatore di
corrente.
|
Mosfet N aperto |
Il livello sul pin è alto, stabilito dal pull-up.
L' impendenza del pin è molto elvata. |
Mosfet N in conduzione |
il livello 0 sul pin di uscita viene ottenuto chiudendo
lo switch N che collega il pin alla Vss.
Nel pull-up scorre una corrente pari a:
Id = V / Rp
|
Se un solo dispositivo manda in conduzione il suo switch, il bus è
portato a livello basso
Il livello basso è quindi predominante su quello alto: qualunque altro dispositivo che
cerchi di applicare un livello alto, vedrà vanificata la sua azione.
|
Il bus open collector ammette che più di un
dispositivo vada in conduzione senza creare problemi di sovra
corrente, dato che si tratta semplicemente di interruttori verso massa
in parallelo e che il livello alto è
garantito dal pull-up. Ne risulta che in ogni caso la corrente
massima possibile sarà: Id = V / R1
e non dipenderà dal numero delle unità collegate al
bus.
|
Nei
PIC è tipicamente open drain in uscita il pin RA4.
In altri microcontroller alcuni pin sono configurabili come open drain. Maggiori
informazioni su bus open collector qui.
L' uscita open collector, per le sue caratteristiche, è quella tipica per
il comando di LED o piccoli relais collegati tra la tensione di alimentazione
e il pin del dispositivo.
|
Alcune considerazioni:
- la tensione sul carico V+ può essere diversa da quella di
alimentazione dell' integrato Vdd, ma occorre verificare che non
superi quella ammessa dal semiconduttore
- la corrente assorbita dal carico non deve essere superiore alla
massima supportata dal semiconduttore
- la logica open collector è negata
base |
oc |
pin |
0 |
bloccato |
floating |
1 |
conduzione |
0 |
|
Nell' esempio, il carico è un relè; data la sua natura induttiva, occorre
il diodo D di protezione per la sovratensione generata alla commutazione.
Per la caratteristica di poter comandare un carico in tensione diversa
dalla Vdd, una gate open collector / open drain sarà utilizzabile anche come
traslatore di livello tra due diversi sistemi che lavorano con livelli di
tensione diversi.
|