- Principio di base dell'encoder:
- Creazione di codificatori utilizzando progetti di logica combinatoria
- Codificatori 8: 3:
- Inconveniente dei normali codificatori:
- Codificatore prioritario:
I codificatori, come suggerisce il nome, codificano un bit più grande di informazioni in un valore di bit più piccolo. Esistono molti tipi di encoder in base al numero di ingressi e uscite e in base a come opera. Ma ogni Encoder ha una regola sottostante, il numero di linee di output su un Encoder sarà sempre inferiore al numero di linee di input. In questo articolo impareremo di più sugli encoder, cos'è un encoder, come e perché vengono utilizzati nei circuiti digitali.
Principio di base dell'encoder:
Immaginiamo che un codificatore sia una scatola nera come mostrato di seguito che riduce magicamente il numero di linee di ingresso da 4 a 2 sole linee di uscita, ma fornisce comunque le stesse informazioni senza alcuna perdita di dati.
Per prima cosa determiniamo quale sarebbe il nome di questo Encoder. Ha quattro ingressi e due uscite quindi il nome di questo Encoder sarà Encoder 4: 2. Se un Encoder ha un numero " n " di linee di uscita, il numero di linee di ingresso sarà 2 n, nel nostro caso il numero di linee di output è due (n = 2) quindi il numero di linee di input dovrebbe essere (2 2 = 4) quattro, il che è esattamente il caso. I quattro pin di ingresso sono etichettati da I0 a I3 ei due pin di uscita sono etichettati da O0 a O1
Quindi, come fa l'Encoder a convertire quattro segnali in due, lo si può capire dando un'occhiata alla tabella di verità di seguito. È anche importante sapere che un normale Encoder come quello mostrato qui ha una regola che in un dato momento solo un pin di ingresso dovrebbe essere alto, quindi nella seguente tabella di verità solo un ingresso sarà alto.
Ogni possibile condizione dell'ingresso in uscita è mostrata nella tabella di verità sopra. Ad esempio, quando solo O1 è alto (1) e tutti gli altri ingressi sono bassi (0), entrambi i pin di uscita saranno bassi (0). Allo stesso modo per ogni caso anche i pin di uscita cambieranno il suo stato. Utilizzando questo stato dei bit di uscita l'utente sarà in grado di risalire a quale segnale di ingresso sarebbe stato dato all'encoder.
Ok, cosa c'è di fantasia nel convertire 4 righe in 2 righe perché ne abbiamo bisogno?
Ai fini della comprensione abbiamo spiegato un Encoder 4: 2, ma ci sono altri encoder che possono prendere un numero maggiore di ingressi e convertirli in un numero inferiore di uscite come l' Encoder 8: 3, l'Encoder 16: 4 ecc. Questi tipi di Encoder sono molto utili quando dobbiamo ridurre il numero di pin utilizzati su un MCU / MPU o ridurre il numero di cavi che trasportano segnali in PLC e altri sistemi in cui è presente un array di interruttori o LED. Viene anche utilizzato per trasmettere dati in modo efficiente utilizzando fili inferiori. In alcune applicazioni potremmo avere una situazione in cui più di un input potrebbe essere alto (1), in questi casi faremo qualcosa chiamato Priority Encoder che discuteremo ulteriormente in questo articolo.
Creazione di codificatori utilizzando progetti di logica combinatoria
Ora che sappiamo come funziona un Encoder e dove viene utilizzato. Impariamo come costruirne uno usando semplici porte logiche. Sebbene Encoder come 8: 3 sia disponibile come IC a pacchetto singolo come SN74LS148, è importante sapere come sono costruiti in modo da poter creare encoder personalizzati per i nostri progetti basati sulla tabella di verità richiesta.
Espressione booleana:
Il primo nella progettazione del dispositivo di logica combinatoria è trovare l'espressione booleana per la tabella della verità. È molto semplice e può essere facilmente determinato guardando la tabella della verità. La stessa tabella di verità che abbiamo visto prima è riportata di seguito con alcune illustrazioni per farti capire meglio.
Il numero di espressioni sarà uguale al numero di righe di output, qui abbiamo due output e quindi abbiamo due espressioni. Per la prima uscita O0, basta controllare in quale condizione è alta (1) e tracciare il numero del pin di ingresso corrispondente che rimane anch'esso alto (1). Allo stesso modo per tutti i valori alti di O0 annotare quale numero di pin di input è alto e aggiungere i pin. I pin di ingresso corrispondenti al pin di uscita O0 sono evidenziati in rosso sopra e per O1 è evidenziato in blu. Quindi l'espressione per O0 e O1 sarà
O 1 = I 3 + I 2 O 0 = I 3 + I 1
Schema del circuito dell'encoder 4: 2:
Una volta ottenuta l'espressione booleana non ci resta che disegnarla sotto forma di Gates. Qui poiché abbiamo un'operazione di addizione (+) useremo le porte OR per costruire i nostri circuiti. È inoltre possibile semplificare o modificare l'espressione booleana in base alle proprie esigenze. Lo schema del circuito per l'espressione sopra è mostrato di seguito
Il circuito può essere facilmente costruito utilizzando un CI 7432 per porta OR. Ho costruito il mio circuito encoder su una breadboard come mostrato di seguito
Le quattro linee di ingresso (I0, I1, I2 e I3) sono fornite dai quattro pulsanti, quando il pulsante viene premuto collega + 5V al pin rendendolo logico 1 e quando il pulsante non viene premuto il pin viene tenuto a massa attraverso un resistore pull down da 10k per renderlo logico zero. Le uscite (O0 e O1) sono rappresentate tramite una coppia di LED rossi. Se il LED è acceso significa che la logica di uscita è 1 e se sono spente significa che la logica di uscita è 0. Il completo funzionamento del Circuito Encoder è mostrato nel video sotto
Come puoi vedere quando viene premuto il primo pulsante l'ingresso I0 è alto e quindi entrambe le uscite rimangono basse. Quando si preme il secondo pulsante l'ingresso I1 viene attivato e quindi un LED si accende per indicare che O0 è alto. Infine alla pressione del quarto pulsante l'ingresso I3 è alto e quindi entrambi i LED si accendono. Questo è un circuito molto semplice, quindi lo abbiamo costruito facilmente su una breadboard ma, per gli encoder pratici, il circuito diventerà un po 'più complesso. Tuttavia, gli encoder sono disponibili anche come pacchetti IC che possono essere acquistati se si adattano al tuo progetto.
Codificatori 8: 3:
Anche il funzionamento e l'utilizzo dell'encoder 8: 3 è simile all'encoder 4: 2 ad eccezione del numero di pin di ingresso e uscita. L'encoder 8: 3 è anche chiamato encoder da ottale a binario, lo schema a blocchi di un encoder 8: 3 è mostrato di seguito
Qui l'Encoder ha 8 ingressi e 3 uscite, anche in questo caso solo un ingresso dovrebbe essere alto (1) in un dato momento. Poiché ci sono 8 ingressi, viene chiamato ingresso ottale e poiché ci sono tre uscite è anche chiamato output binario. La tabella di verità dell'Encoder è mostrata di seguito.
Tabella verità encoder 8: 3:
Espressione booleana:
Dato che abbiamo i tuoi output avremo tre espressioni come mostrato di seguito
O 2 = I 7 + I 6 + I 5 + I 4 O 1 = I 7 + I 6 + I 3 + I 2 O 0 = I 7 + I 5 + I 3 + I 1
Schema del circuito dell'encoder 8: 3:
Una volta ottenuta l'espressione booleana come sempre, possiamo costruire lo schema circuitale utilizzando le porte OR come mostrato di seguito.
Il circuito utilizza un CI di gate OR a 4 ingressi, puoi anche semplificare l'espressione booleana per utilizzare altri normali CI di gate a 2 ingressi.
Inconveniente dei normali codificatori:
Questi tipi di encoder presentano i seguenti principali inconvenienti
- Quando nessuno degli ingressi è alto, l'uscita sarà uguale a zero, ma questa condizione è anche in conflitto con il primo bit alto (MSB). Quindi si dovrebbe sempre fare attenzione che almeno un bit rimanga sempre su ON
- Quando più di un input è alto, l'output verrà compresso e può dare il risultato per uno degli input che crea confusione.
Per superare queste difficoltà utilizziamo un diverso tipo di encoder chiamato Priority Encoder che utilizza un'uscita aggiuntiva per determinare se l'uscita è valida, e quando più di un ingresso è di aiuto alto quello che va alto a partire dall'LSD viene considerato solo mentre ignorando gli altri input.
Codificatore prioritario:
Analizziamo un Encoder Prioritario 4: 2 come esempio per capire come si differenzia da un normale Encoder e può superare i due inconvenienti sopra citati. Di seguito è mostrato lo schema a blocchi di un codificatore prioritario 4: 2
Un Encoder con priorità 4: 2 ha anche 4 ingressi e 2 uscite, ma aggiungeremo un'altra uscita chiamata V che sta per bit valido. Questo bit valido controllerà se tutti e quattro i pin di ingresso sono bassi (0) se bassi anche il bit si renderà basso affermando che l'uscita non è valida quindi possiamo superare il primo inconveniente sopra menzionato.
Tabella verità codificatore 4: 2 priorità:
Il prossimo inconveniente può essere evitato dando priorità ai bit MSB, l'Encoder controllerà dall'MSB e una volta trovato il primo bit alto (1) genererà l'uscita di conseguenza. Quindi non importa se gli altri pin sono alti o bassi. Quindi nella tabella di verità sotto, una volta raggiunto un 1, i valori non importa sono presentati da una "X".
Espressione booleana:
Ora dobbiamo derivare tre espressioni che sono per O0, O1 e V. Poiché la tabella di verità non ha elementi di interesse, dobbiamo utilizzare il metodo K-map per derivare l'espressione booleana per questo. Non spiegheremo come risolvere con le mappe K poiché è fuori dallo scopo di questo articolo. Ma la mappa è mostrata di seguito in modo che tu possa interferire e imparare da solo.
Nelle mappe sopra, quella di sinistra è per O1 e quella di destra è per O0. Le righe di output sono indicate da y e le righe di input sono indicate da x. Quindi, disponendo l'equazione di conseguenza, otterremo quanto segue.
O 1 = I 3 + I 2 O 0 = I 2 I 1 '+ I 3
Allo stesso modo, per il bit valido "V" l'espressione booleana può essere data come
V = io 3 + io 2 + io 1 + io 0
Schema elettrico:
Lo schema del circuito per questo progetto può essere creato utilizzando le espressioni booleane.
Il circuito può essere costruito utilizzando le porte di base NOT, AND e OR. Qui i bit O0 e O1 sono considerati come uscite mentre il bit V è utilizzato per convalidare l'uscita. Solo se il bit V è alto, l'uscita sarà considerata se il valore di V è basso (0) l'uscita dovrebbe essere ignorata, poiché implica che tutti i pin di ingresso siano zero.