Reti logiche e sequenziali: porte logiche & c.

« Older   Newer »
  Share  
icon1  view post Posted on 28/4/2018, 08:35
Avatar

GWFstory

Group:
Administrator
Posts:
359
Location:
da qui...., quo, qua. Siete curiosi di saperlo, vero? No? Beh, tanto non ve l'avrei detto.

Status:


Ho aperto questa discussione per fare un riassunto di ciò che è stato detto in Gioco di logica.



Ho voluto iniziare questa discussione come nei libri (sì, quei così di carta su cui c'è scritto qualcosa sopra e che non hanno bisogno di essere ricaricati ogni tanto/spesso) :wacko: , mettendo l'introduzione.
Come tutte le introduzioni è lunga e destinata ad essere saltata jump, quindi potete andare direttamente al Capitolo 1; se poi pensate che l'ho scritta io e non una persona famosa, probabilmente ha ancora meno senso leggersela. Se poi qualcuno è ansioso è meglio che non la legga proprio. Se lo fa è per sua libera scelta e non può incolpare nessun altro di eventuali coneguenze. :B):

Introduzione



E' sicuramente capitato a molti di svegliarsi nel cuore della notte e di non riuscire ad addormentarsi.

Cerchi di usare vari sistemi (ognuno ha il suo, più o meno collaudato ed efficace): cambi posizione (fianco destro, fianco sinistro, manco fossi un militare, di schiena, di pancia, poi le hai finite), conti le pecore, ma quando le hai finite hai ancora gli occhi sbarrati. Poi trovi la soluzione classica: accendi la luce e inizi a leggere le riviste che hai sul comodino......1,2, poi passi al libro che ancora non avevi iniziato. Si sa, spesso i romanzi all'inizio sono molto descrittivi e barbosi..... Neanche quello funziona. :blink:

Decidi di ricorrere all'arma segreta: quella che tieni chiusa nel cassetto del comodino un po' perchè ti vergogni :ph34r: di averla comprata anche tu perchè era di moda e ce l'avevano praticamente tutti, un po' per la minaccia riportata sopra: "Da aprire solo in caso di insonnia grave. Può avere gravi effetti collaterali di narcolessia o morte apparente"
Trattasi di un tomo di 1297 pagine, scritte tutte in Time New Roman 7 (da leggersi con buoni occhiali), stratagemma ideato dall'editore per evitare che le pagine superassero le 2 migliaia e il costo lievitasse enormemente.
..........neanche quello funziona, anche se, pur fra atroci sofferenze legate alla vista e all'istinto di sopravvivvenza, sei arrivato alla 18° pagina.

La situazione è realmente disperata.

Sono le 3 di mattina e puoi giocare il jolly; ti alzi e ti siedi sul divano davanti alla tv. A quest'ora ci sono tanti programmi adatti al tuo scopo: lezioni universitarie in cui viene spiegata filosofia "astratta" (perchè esiste? Certo, l'hanno inventata apposta per i programmi notturni perchè quella standard era troppo leggera), analisi matematica (no, va bene che la matematica mi piace, ma non vorrei appassionarmi alle N dimensioni dell'universo, svegliandomi ancora di più)......Documentario sugli animali....ferma un attimo.....Parlano dell'accoppiamento dei bradipi...

....E' quello che ci vuole. Certo, ti chiedi come faccia un animale così lento da avere il muschio che gli cresce addosso, così indolente che quando muore sta appeso agli alberi senza che nessuno se ne accorga per giorni, ad avere una vita sessuale; ma poi ti rendi conto che i qualche modo dovranno provvedere, anche se non riesci a pensarla come un qualcosa di così entusiasmante e coinvolgente.......Dopo 27 minuti hanno finito (il documentarista e il montatore hanno pensato di non mettere stacchi nelle riprese e te lo sei visto tutto), ma del sonno neppure l'ombra. <_<

Nel frattempo sono circa le 3.30. Ti alzi e vai ad aprire il frigorifero.....scansione veloce: latte, bibite, salumi, formaggi, ortaggi, frutta....no, non è quello che stai cercando. :sick:
Passi poi alla dispensa: biscotti, cereali, merendine, crema spalmabile......................ecco qua, un bel cucchiaio e...... ma che sto facendo? Ma chi ha fame? :huh:
Poi capisci finalmente cos'è che ti manca: a quest'ora senti la necessità di avere fra le mani una bella porta logica XOR. :wub: Finalmente ti rendi conto che è proprio quello che ti assillava. :wb:
Accendi il pc, ti colleghi ad internet e ti cerchi il datasheet delle porte logiche: NOT, OR, AND, NAND......XOR, ecco qua: CD4070. Per aumentare le possibilità cerchi ancora e trovi che anche il DM7486 può andare bene.

Perfetto! Vai in cantina dove tieni tutti i tuoi componenti e cominci a rovistare nello scatolino degli integrati logici: 4011, 4093, 40106, 74HC04, 407....ecco qua, non si legge bene.... prendi una lente.....4071...... nooooo!
Dopo quasi 2 ore (e son già le 5.30) non hai ancora trovato quello che stavi cercando, proprio non c'è (e dopo tutto quando mai l'hai usata una porta logica così strana!?!?).

A questo punto ti metti a cercare nei vari negozi on-line per ordinarlo.......Lo trovi senza problemi, ma ti rendo conto che per 0,70€ d'integrato devi spenderne almeno 8 di spedizione se lo vuoi avere subito, altrimenti per 0,30€ te ne mandano 10 pezzi, ma spediscono dalla Cina e ti danno tempi di consegna da 30 a 50 giorni.
Ma poi, pensandoci, saresti disposto a spendere 8€ per averlo prima possibile, ma è sabato mattina e prima di lunedì non te lo spediscono di certo. Dovresti apsettare martedì per averlo.......no, non puoi rischiare di non dormire per 3 giorni: ormai è diventata una priorità. -_-

Decidi ci andare a quel negozio a 12 Km da casa tua. Visto che hai idee ecocompatibili prendi la bicicletta (dopo tutto sono le 7.30 e così puoi evitare di sembrare il pensionato che arriva davanti al superemercato un'ora prima dell'apertura) e parti.

Quando arrivi la serranda è chiusa....Cominci a fare i tuoi ragionamenti....I negozi di elettronica sono aperti il giovedì pomeriggio e chiusi il sabato? No, solo il sabato pomeriggio...Mah....
Poi abbassi gli occhi e vedi un foglio che spunta parzialmente da sotto la serranda. Vedi che ha alcuni pezzi di scotch, e capisci che evidentemente si è staccato dalla serranda. Lo leggi: "Chiuso perchè mi ero già rotto di tenere aperto per 12,73€ di incasso medio giornaliero (dei quali 11,50€ di cinesate e i restanti di componenti elettronici vari)."

Capisci 2 cose: la prima è che il negoziante aveva veramente poco lavoro, :( visto che trovava il tempo di farsi questi calcoli sugli incassi, la seconda che fai parte di una razza, qualle degli hobbysti elettronica, in via di estinzione. :cry:
Te ne torni verso casa con la tua bicicletta.....Il morale non è proprio altissimo, ed infatti ci metti 3 ore e un quarto per percorrere i 12 Km che all'andata ti eri fatto in 40 minuti sì e no.
Riporti la bicicletta in cantina e torni in casa sconsolato: il tuo problema è ancora lì, irrisolto, con in più la consapevolezza che da hobbysta quale sei stai facendo la stessa fine dei dinosauri, ovvero vai verso l'estinzione. dead
Ti dici che almeno loro hanno sofferto poco: un meteorite il testa e via!! Tu no........Decisamente il morale non è alto. :( :cry:

Poi butti l'occhio verso il PC......."è ancora acceso, ora lo vado a spegnere" ti dici, ma poi ti viene in mente che forse i dinosauri non si sono tutti estinti e ti viene in mente di un forum di cui qualcuno ti ha parlato.....Aveva a che fare con i geni e il laboratorio....Il laboratorio di Aladino? No......
I geni di Aladino nel laboratorio? Non credo proprio, non possono avergli dato un nome così assurdo, e poi era in inglese....Genius workshop, eccolo!!

Digito su Google "Genius Workshop" e fra le prime voci lo trovo. Clicco e capisco che effettivamente i dinosauri non si sono estinti: ci sono ancora discussioni nuove, non sono tante, ma ci sono. E sembrano essere come me: parlano di scienza, idee, elettronica e....

Capitolo 1: Porte logiche e XOR



La "breve" introduzione, nella sua assurdità, mi è servita per riprendere il discorso delle reti logiche che era iniziato in un'altra discussione

Non mi ripeterò per quello che riguarda la teoria dei mintermini, ma dimostrerò che, se vi trovate nella situazione dell'introduzione in cui avete un cassetto di integrati contenenti porte logiche ma siete privi di porte XOR, probabilmente riuscire a soddisfare la vostra voglia (e riaddormentarvi beatamente).

Innanzi tutto partiamo dalla tabella della verità della porta XOR:

XOR_truth_table

In un'altra discussione "Gioco di logica" ho parlato della teoria dei mintermini, nome difficile per indicare la combinazione degli ingressi corrispondente all'uscita con livello logico 1.


CITAZIONE
Il metodo dei mintermini è più difficile da descrivere a parole che da calcolare, ma ci provo lo stesso.
Per ogni mintermine occorre considerare una porta logica AND con tanti ingressi quanti sono quelli della tabella della verità.

Nel nostro caso serve quindi una porta AND a 2 ingressi per ognuno dei 2 mintermini.
Bene, ora sugli ingressi della porta AND andranno portati i livelli logici di A e B, considerando che gli ingressi saranno portati direttamente se sono a 1 e negati (quindi invertite di livello perchè passanti attraverso un NOT) se sono a 0.
E a questo punto? Cosa ne faccio delle uscite dei 2 AND/mintermini?
Dato che una qualsiasi di esse, quando è a 1, mi deve fornire 1 sull'uscita OUTPUT, le colleghiamo ad una porta OR a 2 ingressi.

Alla fine il risultato è il seguente:

XOR_schematic_diagram

La porta AND1 gestisce il mintermine della riga 3 A=1, B=0, mentre la porta AND2 il mintermine della riga A=0, B=1.

In caso di reti più complesse il discorso non cambia.
Cambia semmai il numero degli ingressi delle porte AND di ogni singolo mintermine (gli AND avranno un numero di ingressi uguali al quello degli ingressi della rete), mentre l'OR avrà un numero di ingressi pari al numero di porte AND, quindi al numero di combinazioni che daranno uscita = 1 (e, in conclusione, al numero di mintermini).
Come si vede dallo schema sarebbero necessari 3 tipi di porte logiche per realizzare il circuito in figura: NOT, AND e OR.
Servirebbero quindi 3 diversi integrati, per esempio il 40106 per i 2 NOT, il 4081 per i 2 AND e il 4071 per l'OR; decisamente sarebbe abbastanza complicato come discorso.

L'algebra di boole (quella applicata nei circuiti digitali) ci viene però in aiuto, perchè si possono fare un po' di "giochi per semplificare il circuito.
Nella figura sotto riportata sono presenti 3 diversi circuiti e a fianco i loro equivalenti costruiti con un'architettura diversa e impiegante porte NAND a 2 ingressi, che sono molto più diffuse delle altre porte.
Gli ultimi 2 circuiti si basano sui teoremi di De Morgan che non sono intuitivi, ma funzionano. Se non ci credete potete creare le tabelle della verità dei 2 circuiti e vedrete che danno lo stesso risultato quando nei vari ingressi si applicano gli stessi livelli logici.

De_Morgan

Per il momento ho finito. Chi sarà arrivato a leggere fino qui senza addormentarsi avrà qualcosa su cui riflettere.

Nella prossima puntata parlerò di reti logiche un po' più complesse e di un secondo modo per realizzarle chiamato "mappe di Karnaugh"

SEGUE.....

Edited by Robo67 - 12/5/2018, 14:48
 
Top
view post Posted on 12/5/2018, 14:39
Avatar

GWFstory

Group:
Administrator
Posts:
359
Location:
da qui...., quo, qua. Siete curiosi di saperlo, vero? No? Beh, tanto non ve l'avrei detto.

Status:


Capitolo 2: le mappe di Karnaugh e accenni sulle reti sequenziali

Nel capitolo 1 ho spiegato come funzionano le reti logiche combinatorie. Introduciamo ora quelle che sono le reti logiche combinatorie che come ho già scritto in un'altra discussione:

CITAZIONE
Le sequenziali sono quelle in cui le uscite sono dipendenti non solo dallo stato degli ingressi, ma anche dallo stato precedente di una o più uscite/nodi (sono uscite se possono essere usate dall'esterno della rete logica oppure nodi se sono utilizzabili solo dalla stessa rete logica, ma che non fanno capo a vere e proprie uscite).
Sempre per fare un esempio di un impianto di illuminazione potremmo pensare ad una stanza in cui le luci possono essere comandate da N pulsanti posti su varie pareti. In questo caso si usa un relè passo-passo che, ad ogni impulso ricevuto da uno dei pulsanti, inverte lo stato della lampada, da acceso a spento e viceversa.
In questo caso si tratta di una logica sequenziale perchè ogni pulsante (ingresso) non ha una funzione ben specifica, ma provoca un risultato dipendente dallo stato precedente.
Queste reti sono composte sia da porte logiche sia da blocchi che memorizzano i segnali digitali (Flip-flop)

Ammettiamo di volere realizzare un semaforo stradale, tanto per intenderci quelli che dovrebbero fermare le auto quando c'è una luce rossa accesa e lasciarle passare con la lampada verde accesa, ma che non sempre riescono nell'intento. Il giallo è invece stato messo per permettere agli altri di tamponare la macchina che precede quando questa si ferma come dovrebbe invece di accelerare.

Per comodità ho semplificato la sequenza, considerando che le varie fasi (rosso, verde e verde+giallo) abbiano la stessa durata (cosa che sembra illogica, vista la scarsa durata della fase giallo+verde) ma che in alcuni semafori della mia città sono realtà. :wb:

Considerando che le verie fasi devono alternarsi la cosa più logica da fare è quella di realizzare un qualcosa di simile ad un quadrante di un orologio, in cui ogni tacca corrisponde ad una combinazione di luci rossa/verde/gialla accese.

Per realizzare un "orologio" bisogna usare un contatore in grado di generare tutte le posizioni delle "lancette" dell'orologio. Per sapere come questo contatore deve essere fatto (praticamente quali sono i valori minimo e massimo che deve contare) coviene prima realizzare la tabella della verità relativa alle sequenze dekl semaforo (scusate, ma l'immagine è venuta un po' grande):

light_truth_table

Innanzi tutto R1,V1 e G1 sono le lampade del semaforo della prima strada (rispettivamente rossa, verde e gialla), mentre R2,V2 e G2 sono quelle della seconda strada (quella perpendicolare alla prima).

Quando la luce V2 (lampada verde della 2° strada) è accesa lo è anche R1 (lampada rossa della 1° strada).
Nella fase successiva, contemporaneamente dalla lampada V2 si accende anche G2, per avvertire quello che precede la fila e che si vuole fermare, che ci sono ottime possibilità che venga tamponato da quelli dietro che sono invece convinti che non si fermerà. <_<
La fase ancora successiva acccenderà la lampada R2 e la V1, invertendo il flusso del traffico.
L'ultima fase vedrà l'aggiunta della lampada G1 che farà da preludio alla condizione iniziale di R1 e V2 accese.

Contando quante fasi sono necessarie per gestire il semaforo si nota che ne bastano 4 in totale.
A sinistra della tabella della verità sono presenti le colonne Q1 e Q0. Queste sono le uscite di un contatore che fornisce le fasi per la sequenza del semaforo.
La rete logica finale sarà quindi formata da una parte sequenziale (il contatore a 2 uscite) e da una combinatoria, che, prenlevando i segnali dai 2 contatori, pilota le relative lampade.

Usando il sistema dei mintermini, già spiegato prima avremo che l'uscita R1 sarà data da:
R1=Q1Q0 + Q1Q0
Nota: Q0 è un tentativo un po' rustico di indicare Q0 negato (NOT Q0)

Analogamente scriveremo le equazioni anche per le restanti uscite:
V1=Q1Q0+Q1Q0
G1=Q1Q0
R2=Q1Q0+Q1Q0
V2=Q1Q0+Q1Q0
G2=Q1Q0

La prima cosa che si nota confrontando le equazioni di R1 e V2 è che sono uguali (cosa visibile anche dalla tabella della verità), quindi possono essere pilotati dalla stessa uscita della rete logica.
Anche V1 e R2 sono uguali, quindi anch'esse saranno gestibili da un'unica uscita.

La rete logica sarà quindi provvista di 4 uscite invece di 6 (R1/V2, G1, V1/R2 e G2).

semaforo_mintermini-1_0

Quello sopra è lo schema definitivo per ottenere la logica combinatoria del semaforo. Per realizzarla servirebbero 4 integrati:
2 delle 6 porte not contenute nel 4069
un intero 4081 (4 porte in totale)
2 delle 4 porte contenute in un secondo 4081
2 delle 4 porte contenute nel 4071

:unsure: :blink: La prima reazione che si tende ad avere a questo punto è che sembra impossibile che un circuito così semplice deva essere così complicato da realizzare.
Effettivamente il sistem dei mintermini è quello che richiede meno impegno per realizzare le reti logiche, ma probabilmente il meno efficiente.

Proviamo ora ad usare un secondo sistema: le cosiddette mappe di Karnaugh.

Non mi voglio sostituire a Wikipedia, ma visto che sto parlando di reti logiche mi sembra.......logico <_< trattare i vari sistemi di progettazione usabili.

Una mappa di Karhaugh è una griglia in cui viene riassunta la tabella della verità relativa ad una uscita.

Qui sotto ho riassunto quella relativa all'uscita R1.

Karnaugh_R1_0

Nella fase 0 si compone una griglia di N x N caselle dove N dipende dagli ingressi. Nel nostro caso del semaforo gli ingressi sono 2, quindi le colonne saranno 2 e le righe pure.
In orizzontale ho inserito le combinazioni dell'ingresso Q0. Nella prima colonna c'è la condizione 0 e nella seconda c'è la condizione 1.
In overticale ho inserito le combinazioni dell'ingresso Q1. Nella prima riga c'è la condizione 0 e nella seconda c'è la condizione 1.

Righe e colonne le avrei anche potute invertire (praticamente scambiare Q0 e Q1), ma il risultato finale sarebbe stato lo stesso.
Se avessimo avuto 4 ingressi da gestire ci sarebbero state 4 colonne (oltre a quella di intestazione) e 4 righe (oltre a quella di intestazione).

Nella fase 1 si inseriscono nelle varie caselle gli stati logici relativi alle combinazione degli ingressi.

Nella fase 2 Si raggruppano solo gli 1 (senz aincludere anche gli 0) fino ad averli inclusi tutti almeno una volta. Cosa significa "almeno una volta"?. Significa che se un gruppo non riesce ad includere un 1 bisogna creare uno ulteriore gruppo per includerlo. Questo ulteriore gruppo può includere anche degli 1 già inclusi in altri gruppi.
La possibilità che un gruppo non possa da solo includere tutti gli 1 sta nela fatto che i gruppi possono essere solo rettangolari o quadrati (non a L, a X, ecc.). Tanto per intenderci si possono creare gruppi di 1x1 caselle (il più piccolo), 1x2, 2x1, 2x2, 1x4, 4x1, 4x2, 2x4 o 4x4.

Quando si sono creati i gruppi si possono scrivere le relative equazioni per formare la rete logica. Di ogni gruppo occorre individuare qual'è (o quali sono) gli ingressi che nel gruppo restano sempre costanti. Dopo di chè gli ingressi costanti si inseriscono in un AND così come sono se all'interno del gruppo sono sempre a 1, oppure negati se sono a 0.
La situazione è difficile da capire come descrizione, ma l'esempio ci aiuterà a capire.

Nella tabella sopra è inserito un unico gruppo 2x1 che include tutti gli 1. In questo gruppo si ha che Q0 varia (prima è 0 poi è 1), mentre Q1 è costante. Quindi l'equazione è formata da solo Q1, che però deve essere negato perchè nel gruppo è 0.

Quindi il risultato finale è: R1=Q1
Ci si può stupire di un risultato così semplice, ma se si va ad osservare la tabella della verità si noterà che effettivamente R1 è acceso quando Q1 è 0, indipendentemente dallo stato di Q0.

Analogamente andiamo a realizzare le mappe di Karnaugh relative alle restanti 3 uscite V1, G1 e G2 (ricordo che V2 corrisponde a R1 e R2 corrisponde a V1).

Karnaugh_V1G1

Per quello che riguarda l'uscita V1 l'equazione del gruppo è:
V1=Q1 dato che Q1 è l'unico ingresso che resta costante e, in questo caso, è 1.

Per G1 invece le cose sono più complicate, dato che essendoci un gruppo 1x1 sono 2 gli ingressi che restano costanti. E allora come si fa?
Si crea un AND a 2 ingressi (uno per ogni ingresso che resta fisso) e si ripete il ragionamento precedente, considerando l'ingresso normale se è a 1 o negato se è a 0.
Il risultato è: G1=Q0*Q1

Mentre per G2, anch'esso con un gruppo di 1x1, si avrà:

G2=Q0*Q1 dato che nel gruppo Q0 è a 1 e Q1 è a 0.

Siamo quasi arrivati alla fine....Ora resta solo da creare la rete logica corrispondente:

semaforo_Karnaugh-1

Come si nota rispetto a l'esempio dei mintermini in questo caso la rete logica è molto più semplice, bastano infatti 2 soli integrati contro i 4 di prima.

Le mappe di Karnaugh sono quindi più convenienti dei mintermini, verrebbe da dire......

Non è sempre così.

Le mappe di Karnaugh sono comode fino a 4 ingressi, dato che le colonne di ogni tabella possono essere al massimo 4 x 4 (oltre alle 2 di intestazione). Oltre a questa misura bisognerebbe ragionare in 3D, sovrapponendo più tabelle e facendo gruppi anche in "profondità", ma è una cosa che non ho mai fatto in tanti anni, perchè rischia di portare a tantissimi errori.

Quando poi non si ha a che fare con porte logiche vere e proprie, ma con logiche programmabili come PAL, GAL, ecc., dove all'interno si possono raggruppare porte logiche eterogenee, i mintermini sono comodi perchè non constringono a fare grossi ragionamenti (anche se posso garantire che con un po' di allenamento anche Karnaugh è molto facile da applicare.

Nella prossima puntata proseguiremo con il famoso semaforo, completo di contatori, e approfondiremo le mappe di Karnaugh per reti logiche a più di 2 ingressi.

SEGUE.....

Edited by Robo67 - 13/5/2018, 20:26
 
Top
view post Posted on 14/5/2018, 09:48
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Però... Questo mi porta a circa 40 (o più) anni fa...
Ma sta roba esiste sempre? :unsure:
 
Web  Top
view post Posted on 14/5/2018, 09:56
Avatar

GWFstory

Group:
Administrator
Posts:
359
Location:
da qui...., quo, qua. Siete curiosi di saperlo, vero? No? Beh, tanto non ve l'avrei detto.

Status:


In realtà non esiste più se ci si butta sulle schede a microcontrollori (programmati in vari linguaggi, ma prevalentemente C) o sulle logiche programmabili come FPGA & c. (che vengono programmate di Verilog, VHDL o a blocchi "pre-masticati").

In realtà queste cose le uso ancora, se non tutti i giorni, ma abbastanza spesso.
......ma dopo tutto io lo so di essere vintage. <_<
 
Top
view post Posted on 14/5/2018, 10:03
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Ahhh... ecco.
Probabilmente esistono ancora i 74LS00 ma semplicemente io non li vedo. :)
 
Web  Top
view post Posted on 14/5/2018, 10:09
Avatar

GWFstory

Group:
Administrator
Posts:
359
Location:
da qui...., quo, qua. Siete curiosi di saperlo, vero? No? Beh, tanto non ve l'avrei detto.

Status:


CITAZIONE
Probabilmente esistono ancora i 74LS00

Beh, non esageriamo, altrimenti facciamo le porte logiche con i tubi a vuoto!!

Le serie 74LSxx & c. ormai sono molto vintage, dato che consumano da bestia (rispetto agli standard moderni) a fronte di velocità non esagerate (a parte le serie 74Fxx , 74Hxx, ecc. , molto veloci).
Ormai si usano le serie 74HCxx o 74HCTxx, che consumano poco e hanno delle buone velocità.
 
Top
view post Posted on 14/5/2018, 10:11
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Magari come dite si useranno poco oggi, ma restano sempre le basi fondamentali. Bello e utile saperle padroneggiare. Leggo.
 
Top
Elemento 38
view post Posted on 14/5/2018, 23:40




QUOTE
In realtà non esiste più se ci si butta sulle schede a microcontrollori (programmati in vari linguaggi, ma prevalentemente C) o sulle logiche programmabili come FPGA & c. (che vengono programmate di Verilog, VHDL o a blocchi "pre-masticati").

Esiste, esiste ... :)
Mettendo da parte i microcontrollori, che sono più informatica che elettronica, il design digitale “moderno” si basa sugli stessi principi.
Può sembrare semplice descrivere un circuito in VHDL/Verilog, ma il modo migliore per farlo è sempre descrivere esattamente la logica che si vuole sintetizzare. Ovviamente non sempre si può esprimere una funzione con mappe di K (soprattutto quando sono funzioni con decine di variabili :) ), ma la semplificazione manuale è fondamentale per aggiustare dettagli tipo condizioni dove non interessa il valore dell’uscita, che permette di avere circuiti più snelli.
(Magari quando robo finisce il thread sul semaforo, ne apro un altro con lo stesso progetto fatto in Verilog ... :) )
QUOTE
Per realizzare un "orologio" bisogna usare un contatore in grado di generare tutte le posizioni delle "lancette" dell'orologio. Per sapere come questo contatore deve essere fatto (praticamente quali sono i valori minimo e massimo che deve contare) coviene prima realizzare la tabella della verità relativa alle sequenze dekl semaforo

Come ha ben descritto robo, gli stati possibili sono 4, quindi solo due bit di memoria sono sufficienti per il circuito (Q1 e Q2).
Un’ altra soluzione sarebbe usare una codifica one-hot (“solo uno acceso”), dove ogni stato ha il proprio bit.
0001 r1 v2
0010 r1 v2 g2
0100 v1 r2
1000 v1 r2 g1

Servono due flops in più per salvare lo stato corrente, ma il passaggio da uno stato all’altro è semplicemente un colpo di clock su uno shift register. Il circuito finale, con questa codifica, è semplicemente una porta OR è una NOT , con input i quattro bit di stato.
Questa codifica è molto usata quando il numero di stati non è troppo alto, ma in molti casi permette di semplificare il circuito non poco!
 
Top
view post Posted on 15/5/2018, 09:59
Avatar

GWFstory

Group:
Administrator
Posts:
359
Location:
da qui...., quo, qua. Siete curiosi di saperlo, vero? No? Beh, tanto non ve l'avrei detto.

Status:


CITAZIONE
(Magari quando robo finisce il thread sul semaforo, ne apro un altro con lo stesso progetto fatto in Verilog ... :) )

Ci conto, sarebbe proprio interessante. ;) :wub:

CITAZIONE
Un’ altra soluzione sarebbe usare una codifica one-hot (“solo uno acceso”), dove ogni stato ha il proprio bit.

Anche questa è una bella idea. Il bello dell'elettronica digitale è che si presta a rivisitazioni, rimescolamenti, modifiche, semplificazioni per ottenere qualcosa di equivalente ma più comodo o, almeno, compatibile con in componenti che si hanno già in casa. :P

Per il discorso dell' one-hot c'è l'integrato 4017 che ha 10 uscite che "scorrono" ad ogni impulso di clock.
 
Top
view post Posted on 16/5/2018, 09:44
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Io dicevo che "non li vedo" nel senso letterale. Non volevo dire che non se ne vede più in giro, ma semplicemente che sono così piccoli, ma così piccoli, che occorre un microscopio per vederli.
Magari sono in un contenitore con 14 pin ad una distanza di 1um tra l'uno e l'altro e solo l'idea di doverli saldare o dissaldare senza formare una pallina di stagno con dentro l'intero integrato
mi fa venire i brividi.
Ora, ci sarebbe da fare tutta una disquisizione sull'imbecillità e la megalomania umana, il senso del "cinese", la pidocchiosità (tirchieria o tirchiaggine) dei nuovi imprenditori e tutto il resto della serie
delle malattie mentali umane.
Ma non voglio interrompere il vostro idillio con temi da avanzato di età... :rolleyes:
 
Web  Top
view post Posted on 26/5/2018, 14:42
Avatar

GWFstory

Group:
Administrator
Posts:
359
Location:
da qui...., quo, qua. Siete curiosi di saperlo, vero? No? Beh, tanto non ve l'avrei detto.

Status:


Capitolo 3: il semaforo si completa dei contatori

Riprendiamo ora il discorso del semaforo descritto in precedenza.

Eravamo rimasti alla rete combinatoria che gestisce le uscite. Dopo averla inizialmente sviluppata con il metodo dei mintermini siamo arrivati a svilupparla con le mappe di Karhaugh, notando una notevole semplificazione.

Come dicevamo serve ora il contatore che realizza le 4 fasi dei cicli semaforici: 00 , 01, 10, 11

Qualsiasi sistema digitale utilizza 2 soli livelli logici, 0 e 1. 1 corrisponde alla presenza di tensione, mentre 0 alla sua assenza. Non sono possibili livelli intermedi, che metterebbero in crisi tutto il discorso e i componenti che lo sfruttano per funzionare.

Risulta quindi che per realizzare un contatore come quello necessario al semaforo occorre un "qualcosa" con 2 uscite. Questo qualcosa utilizza l'unità di base delle reti combinatorie, chiamato flip-flop.

La trattazione teorica dei flip-flop può essere trovata nella onnipresente Wikipedia.
Qui farò una breve trattazione della teoria generale per non costringere i lettori a passare continuamente da questo post a Wikipedia e viceversa

Il flip-flop è un oggetto che sostanzialmente è in grado di funzionare come memoria a 1 bit. Praticamente è in grado di memorizzare uno stato logico (0 o 1) inserito nel suo ingresso e mantenerlo fino a quando non succede qualcosa che lo cancella (mancanza di alimentazione, un nuovo comando di memorizzazione, che cancella la memoria precedente oppure utilizzo di uno degli ingressi si cancellazione di cui è dotato).

I flip-flop possono essere di vario tipo: Set/Reset, JK e D (più il flip-flop di tipo T che non esiste come componente, ma, essendo molto importante dal punto di vista elettronico, è realizzabile con altri tipi di flip-flop).

Il più semplice è il flip-flop tipo Set/Reset (detto anche SR). Per dirla breve un flip-flop SR è quello che si ha comunemente in molte macchine automatiche o utensili (esempio trapani a colonna) e che viene gestito con i pulsanti verde/rosso (marcia e arresto).

Premendo il pulsante verde di marcia l'oggetto si mette in funzione e ci resta anche rilasciando il pulsante (memorizzazione dello stato di uscita a 1). Per spegnerlo occorre premere, anche solo per un istante, il pulsante rosso d'arresto, che provoca la memorizzazione dello stato di uscita a 0.

Il secondo flip-flop (JK) è il più completo (e complesso) e permette di gestire tutte le funzioni realizzabili con gli altri. Non lo tratterò, perchè è inutile ripetere quello già presente in altri psoti.

Il terzo flip-flop, che è poi quello che ho deciso di usare nel semaforo, è quello di tipo D. Nel nostro caso ho scelto l'integrato 4013.

All'interno di un unico integrato sono presenti 2 flip-flop tipo D, dotati ognuno di 4 ingressi e 2 uscite.
Vediamo in dettaglio a cosa servono.

Innanzi tutto parliamo delle 2 uscite, chiamate Q e Q . Il fatto che abbiano entrambe il nome Q non è un caso, dato che di fatto sono la stessa uscita. Una delle 2 ha però una barra superiore, che nelle convenzioni dell'elettronica digitale significherebbe (NOT)Q (o -Q), quindi Q passa attraverso una porta not. Il risultato è che quando Q è 0 Q è 1 (e viceversa), quindi si tratta dello stesso segnale ma in un caso è preso tale e quale, nell'altro è invertito.

Vediamo ora gli ingressi.

Innanzi tutto ci sono gli ingressi SD e CD, rispettivamente Set Data e Clear Data.

Set Data è quell'ingresso che, se messo a 1, porta Q a 1 (e Q a 0). Se SD è 0 Q e Q restano nello stato in cui sono e vengono condizionati dagli altri ingressi.

Clear Data si comporta nello stesso modo di Set Data, ma con la differenza che non porta Q a 1, ma lo porta a 0. Se Clear Data è a 1 azzera Q, se è 0 non influenza Q.

Questi ingressi vengono usati per fare in modo che l'uscita Q assuma un livello logico ben preciso quando si attiva un determinato segnale (es. pulsante di reset/azzeramento) oppure all'accensione dell'integrato (tramite un circuito formato da un condensatore e da una resistenza è possibile creare una situazione di Set o Clear momentanea che funziona solo nell'istante in cui si alimenta il tutto).

Veniamo ora a 2 ingressi molto interessanti. Questi si chiamano CP (clock) e D (dato).
A differenza di SD e CD, che funzionano in un modo chiamato asincrono (nome difficile per dire "sempre funzionanti, in qualsiasi momento, indipendentemente dal resto"), CP e D sono sincroni, ovvero legati a un qualche evento.

Cosa significa "evento"?
Nel caso del 4013 l'evento in questione è quello che nella tabella della verità di pagina 3 è simboleggiato con ^ (freccia puntata in alto), che sta a significare fronte di salita Il fronte di salita è quell'istante, brevissimo, in cui il segnale sull'ingresso CP passa da 0 a 1. Praticamente il 4013 si disinteressa completamente del fatto che CP sia 0 o 1; l'unica cosa che a lui interessa è l'istante in cui CP, che prima era 0, passa a 1. In questo istante (e solo in questo, visto che ignora pure il passaggio di CP da 1 a 0, detto fronte di discesa) il 4013 gestisce l'evento.

L'evento provoca la copia di quello che c'è sull'ingresso D (0 o 1) sull'uscita Q. Da quel momento Q mantiene il livello logico che aveva D durante il fronte di salita e resta in questo stato fino ad un nuovo fronte di salita (che aggiornerà Q in base a D, confermando il livello logico che c'era già oppure sostituendolo con l'altro), oppure fino all'attivazione di SD o CD che, in quanto ingressi asincroni, entreranno in funzione anche se CP resta invariato.

La copia (aggiornamento) del livello di D su Q non è immediato, dato che qualsiasi dispositivo logico ha i cosidddetti tempi di propagazione, che sono i ritardi che il dispositivo (porta logica o flip-flop) introduce quando adegua il segnale di uscita a quello degli ingressi.
Praticamente da quando arriva il clock a quando Q assumerà il livello di D, passa un tempo che nel caso del 4013 alimentato a 5V è di 110-220nsec quando passa da 1 a 0 e di 95-190nsec quando passa da 0 a 1.

Perchè vi ho tediato con questa storia del ritardo? Perchè attorno ad essa ruota il funzionamento del flip-flop D, nel senso che ad ogni fronte di CP il segnale impiega, per passare da D a Q, un tempo più lungo di quello necessario al 4013 per dichiarare finito il fronte di salita, col risultato che se nel frattempo D dovesse essere cambiato Q resterà comunque fermo e sarà necessario un nuovo fronte di salita per riaggiornare Q.

Questo è il "trucco" che viene usato per creare il cosiddetto flip-flop T (toggle), realizzabile anche col 4013, che è praticamente l'equivalente elettronico di ciò che accade negli impianti di illuminazione quando hai più di 3 punti luce (in questo caso ogni punto luce ha un pulsante che inverte lo stato dell'illuminazione ogni volta che lo si preme).
Praticamente considerando il pulsante come CP del 4013 e la luce come l'uscita Q si avrebbe che al primo fronte/pressione del pulsante Q passa da 0 a 1 e, con una seconda pressione, Q passa da 1 a 0. E così via.....

Come si fa a convincere un flip-flop D come il 4013 a funzionare come flip-flop T? E' molto semplice, visto che basta collegare a D l'uscita Q. Ad ogni impulso su CP il livello di D verrà copiato su Q; ma visto che D è in realtà Q, si avrà ogni volta l'inversione del livello logico di Q.

Questo è lo schema definitivo del semaforo:
semaforo_counter-1

Come si vede è la combinazione della rete logica del capitolo 2 e del contatore formato dai 2 flip-flop contenuti all'interno del 4013.
Sì, lo so, non è proprio lo stesso, visto che in quell'altro c'era un NOT, ma in questo caso invece di prendere il segnale Q1 e negarlo con un not è stato preso il segnale di Q1, ottenendo lo stesso risultato.

Ognuno dei 2 flip-flop ha il D collegato a Q, per ottenere un flip-flop T.
Il 2° flip-flop del 4013 è collegato all'uscita del 1°, realizzando in questo modo un contatore a 2 stati, dato che:

Inizialmente consideriamo che Q0 e Q1 siano entrambi a 0, quindi Q0 e Q1 sono entrambi a 1.

Arriva il 1° impulso di clock; Q0 passa da 0 a 1 e comanda CP del 2° flip-flop (perchè il passaggio di Q0 da 0 a 1 è considerato come un fronte di salita) , portando anche Q1 a 1.
Avremo quindi la condizione Q0=1 e Q1=1.

Arriva ora un 2° clock.
Q0 passerà da 1 a 0, mentre il 2° flip-flop non cambierà di stato, perchè CP si trovrà un fronte di discesa.
Avremo quindi la condizione Q0=0 e Q1=1.

Arriva ora il 3° clock.
Q0 passerà da 0 a 1 e comanderà CP del 2° flip-flop, la cui uscita Q, prima a 1, passerà a 0.
Avremo quindi la condizione Q0=1 e Q1=0.

Arriva ora il 4° clock.
Q0 passerà da 1 a 0, mentre il 2° flip-flop non cambierà di stato, perchè CP si troverà un fronte di discesa.
Avremo quindi la condizione Q0=0 e Q1=0.

Controllando la sequenza vedremo di avere ottenuto la sequenza 11->10->01->00....
Praticamente un conteggio alla rovescia (per ottenerne uno in avanti basterebbe prelevare le uscite Q0 e Q1, ma non è così importante, tanto le fasi vengono tutte eseguite anche se in ordine contrario.

In questo modo, con 2 soli integrati, siamo riusciti ad ottenere il semaforo come lo volevamo.

Nelle prossima puntata vedrò di mostrare un esempio con le mappe di Karnaugh applicate a 3 o 4 ingressi (devo solo lavorare un po' di fantasia per pensare ad un problema sensato da realizzare con la logica combinatoria).

Segue....


Edited by Robo67 - 26/5/2018, 19:45
 
Top
10 replies since 28/4/2018, 08:35   129 views
  Share