Come in oggetto, come si fa ad assicurare che durante il passaggio da un livello logico all'altro non ci sia una porta logica che commuta prima di un'altra creando per un brevissimo istante un comportamento indesiderato del circuito combinatorio?
Esempio concreto: sia X un ingresso che sta passando dal valore logico
0 al valore logico 1 e sia C il seguente circuito: C =3D (Not X) And X Se durante la rampa di salita la porta Not riconosce per prima il valore alto di X allora per un istante (seppur infinitesimo) il risultato sar=E0: (Not 1) And 0 =3D 0 Mentre se a sentire per primo il livello alto di X =E8 il secondo ingresso della and allora il risultato sar=E0: (Not 0) And 1 =3D 1
Il fenomeno che hai descritto si chiama alea ed è difficilmente eliminabile. Anzi, quasi sempre lo si dà per inevitabile e il problema si risolve mettendo un flip-flop D in uscita e lo si fa commutare dopo un tempo prefissato, quando la funzione combinatoria si è sicuramente stabilizzata. Questo concetto è alla base di tutta la progettazione dei circuiti digitali sincroni.
Nell'ambito delle reti logiche combinatorie, il problema delle alee nasce quando due (o piu') diversi input potrebbero commutare simultaneamente; in questo caso per brevissimi istanti si puo' avere un risultato spurio errato. Per il corretto funzionamento di una rete puramente combinatoria la non simultaneita' delle variazioni degli input e' un requisito. Questo pero' non e' sufficiente. Nell'esempio che ha posto, infatti, l'alea "statica", che deriverebbe dalla commutazione di un solo ingresso, sarebbe dovuta ad una errata implementazione della rete logica, perche' una semplificazione dell'equazione darebbe come risultato C = 0. Nel caso di equazioni logiche piu' complicate (ma non troppo, lavorare a mano con 5 o piu' ingressi diventa difficile), lo strumento delle mappe di Karnaugh puo' aiutare - oltre a trovare la rete semplificata - anche ad individuare ed evitare le possibili alee, predisponendo le opportune ricoperture.
Grazie a tutti per le risposte. La pongo spudoratamente sul pratico: devo sentire una particolare combinazione delle uscite di un divisore di frequenza CD4060 (011011 per fare un esempio, che mi dice che =E8 trascorso il tempo voluto) quindi pensavo ad una porta And con pi=F9 ingressi (6 per proseguire l'esempio) alcuni dei quali negati (nell'esempio i negati sono il primo e il quarto da sinistra), in questo modo quando si presenta la sequenza voluta la And d=E0 un uno logico. Il quesito che mi pongo =E8 ora questo: nel momento in cui la sequenza binaria =E8 arrivata a 111110 e sta per commutare a 000001 (scrivendo la cifra pi=F9 significativa a destra), se sono cos=EC sfortunato che il sesto ingresso della And sente subito l'uno logico che sta "arrivando" mentre il secondo, il terzo e il quinto tardano a sentire lo zero, e contemporaneamente il primo e il quarto invece sentono subito lo zero... allora si ha il problema dell'alea. Spero di non essere stato contorto. Mi preoccupo per niente? Il fatto =E8 che l'uscita della and mi attiverebbe un flip flop SR e basterebbe quindi un'alea di brevissima durata che il FF si attiverebbe indebitamente... Una mezza idea che mi =E8 venuta =E8 questa: usare come dice brown_fox un flip flop D col clock dato da una uscita del 4060 a frequenza maggiore di tutte quelle monitorate dalla And; in questo modo mi pare che quando il clock va alto le altre uscite a frequenza minore dovrebbero gi=E0 aver commutato... 8bisognerebbe farsi il disegnino delle uscite d un divisore di frequenza).
credo di si, se non ricordo male il 4060 e' un contatore asincrono, quindi nel momento in cui il contatore avanza le uscite non commutano tutte assieme, prima si aggiorna la meno significativa, poi la seconda e cosi' via, quindi nel tuo caso prima cominceranno a diventare zero i "bit meno significativi", e solo alla fine l'ultimo zero diventa un 1.
La scelta delle uscite mi sembra corretta, se si chiudono gli switch=20 corrispondenti agli uno si ottiene un impulso positivo (che produce il=20 reset) al raggiungimento del conteggio previsto.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.