Comportamento circuito combinatorio durante transizione del livello logico

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

Spero di aver posto la domanda in modo chiaro.

Reply to
antologiko
Loading thread data ...

Il 26 Apr 2009, 15:25, antologiko ha scritto:

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.

-------------------------------- Inviato via

formatting link

Reply to
brown_fox

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.

Saluti Augusto

Reply to
Augusto Leonardi

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).

Reply to
antologiko

snipped-for-privacy@virgilio.it ha scritto:

meglio ;)

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.

ciao Claudio_F

Reply to
Claudio_F

E' vero! sei un mito, grazie.

Reply to
antologiko

Non ti serve controllare gli zero, nel tuo caso basta un and con 4 ingressi, forse anche un and fatto con 4 diodi.

mandi

Reply to
cabernet berto

On 28 Apr, 00:26, cabernet berto wrote:

Esatto. Mi permetto di mostrare l'accrocchio. Spero di non aver fatto errori troppo grossolani. Zoom consigliato 400%

[FIDOCAD] MC 10 5 2 0 010 MC 15 40 0 0 170 MC 15 50 0 0 170 MC 30 40 0 0 980 MC 41 50 2 0 115 LI 45 50 25 50 MC 55 50 1 0 115 LI 55 40 25 40 TY 56 18 4 2 0 0 0 * 16 TY 56 28 4 2 0 0 0 * 12 TY 56 38 4 2 0 0 0 * 11 TY 56 48 4 2 0 0 0 * 10 LI 55 60 15 60 TY 56 58 4 2 0 0 0 * 08 SA 15 40 SA 15 50 SA 15 60 TY 18 33 4 2 0 0 0 * C1 TY 18 53 4 2 0 0 0 * C2 TY 25 35 4 2 0 0 0 * Xtal1 TY 39 35 4 2 0 0 0 * R1 TY 48 44 4 2 0 0 0 * R2 RV 55 15 75 65 TY 72 38 4 2 0 0 0 * 4 TY 72 18 4 2 0 0 0 * 9 LI 80 20 75 20 TY 76 16 4 2 0 0 0 * f TY 76 36 4 2 0 0 0 * f/64 LI 55 20 40 20 LI 40 20 40 5 SA 40 5 LI 55 30 15 30 SA 41 40 SA 41 50 SA 30 40 SA 30 50 SA 15 5 LI 105 30 90 30 TY 106 18 4 2 0 0 0 * 16 TY 106 28 4 2 0 0 0 * 12 TY 106 38 4 2 0 0 0 * 11 TY 106 58 4 2 0 0 0 * 08 TY 120 18 4 2 0 0 0 * 07 TY 120 23 4 2 0 0 0 * 05 TY 120 28 4 2 0 0 0 * 04 TY 120 33 4 2 0 0 0 * 06 TY 120 38 4 2 0 0 0 * 14 TY 120 43 4 2 0 0 0 * 13 TY 120 48 4 2 0 0 0 * 15 TY 100 36 4 2 0 0 0 * IN MC 130 80 3 0 200 MC 135 80 3 0 200 MC 140 80 3 0 200 MC 145 80 3 0 200 MC 150 80 3 0 200 MC 155 80 3 0 200 SA 130 20 SA 135 25 SA 140 30 SA 145 35 SA 150 40 SA 155 45 SA 160 50 TY 128 81 4 2 0 0 0 * T4 TY 133 81 4 2 0 0 0 * T5 TY 138 81 4 2 0 0 0 * T6 TY 143 81 4 2 0 0 0 * T7 TY 148 81 4 2 0 0 0 * T8 TY 153 81 4 2 0 0 0 * T9 TY 158 81 4 2 0 0 0 * T10 LI 130 20 130 50 LI 140 50 140 30 LI 150 50 150 40 LI 155 50 155 45 LI 135 25 135 50 LI 145 50 145 35 MC 160 50 0 0 750 MC 155 50 0 0 750 MC 150 50 0 0 750 MC 145 50 0 0 750 MC 140 50 0 0 750 MC 135 50 0 0 750 SA 155 80 SA 150 80 SA 145 80 SA 140 80 SA 135 80 SA 130 80 MC 160 80 3 0 200 RV 105 15 125 65 MC 130 50 0 0 750 LI 90 30 90 80 MC 90 30 2 0 115 LI 90 5 90 20 LI 105 20 90 20 SA 90 20 SA 90 30 LI 105 60 80 60 LI 105 40 75 40 SA 90 5 TY 84 23 4 2 0 0 0 * R3 MC 80 105 0 0 045 MC 15 105 0 0 045 LI 15 5 15 105 LI 80 60 80 105 TY 48 56 4 2 0 0 0 * GND TY 98 56 4 2 0 0 0 * GND TY 108 53 4 2 0 0 0 * CD4060B TY 58 53 4 2 0 0 0 * CD4060B TY 41 16 4 2 0 0 0 * + ALIM TY 43 26 4 2 0 0 0 * RESET TY 91 16 4 2 0 0 0 * + ALIM TY 93 26 4 2 0 0 0 * RESET MC 200 80 3 0 200 MC 205 80 3 0 200 MC 210 80 3 0 200 MC 215 80 3 0 200 MC 220 80 3 0 200 MC 225 80 3 0 200 SA 200 20 SA 205 25 SA 210 30 SA 215 35 SA 220 40 SA 225 45 SA 230 50 LI 200 20 200 50 LI 210 50 210 30 LI 220 50 220 40 LI 225 50 225 45 LI 205 25 205 50 LI 215 50 215 35 MC 230 50 0 0 750 MC 225 50 0 0 750 MC 220 50 0 0 750 MC 215 50 0 0 750 MC 210 50 0 0 750 MC 205 50 0 0 750 SA 225 80 SA 220 80 SA 215 80 SA 210 80 SA 205 80 SA 200 80 MC 230 80 3 0 200 MC 200 50 0 0 750 LI 230 80 185 80 SA 180 5 TY 198 81 4 2 0 0 0 * T4 TY 203 81 4 2 0 0 0 * T5 TY 208 81 4 2 0 0 0 * T6 TY 213 81 4 2 0 0 0 * T7 TY 218 81 4 2 0 0 0 * T8 TY 223 81 4 2 0 0 0 * T9 TY 228 81 4 2 0 0 0 * T10 TY 178 86 4 2 0 0 0 * 14 TY 174 96 4 2 0 0 0 * 7 LI 175 105 175 100 TY 179 96 4 2 0 0 0 * 6 TY 184 96 4 2 0 0 0 * 3 LI 180 100 180 105 LI 180 105 185 105 LI 185 105 185 100 LI 195 90 200 90 LI 200 90 200 95 TY 192 88 4 2 0 0 0 * 2 TY 192 93 4 2 0 0 0 * 4 TY 175 91 4 2 0 0 0 * CD4001B LI 180 85 180 5 SA 185 80 LI 175 80 175 85 RV 170 85 195 100 MC 175 105 0 0 045 LI 90 80 175 80 SA 160 80 TY 174 86 4 2 0 0 0 * 5 TY 184 86 4 2 0 0 0 * 1 LI 235 50 125 50 LI 235 45 125 45 LI 235 40 125 40 LI 235 35 125 35 LI 235 30 125 30 LI 235 25 125 25 LI 235 20 125 20 LI 10 5 235 5 MC 185 75 2 0 115 LI 185 65 180 65 SA 180 65 LI 185 75 185 85 LI 225 95 195 95 MC 250 105 0 0 045 SA 200 95 MC 235 95 0 0 280 LI 250 80 250 86 SA 250 85 LI 255 85 250 85 LI 280 60 279 58 TY 279 53 4 2 0 0 0 * C LI 281 58 280 60 LI 295 60 294 58 TY 294 53 4 2 0 0 0 * D LI 296 58 295 60 LI 280 75 280 60 LI 280 83 277 86 LI 277 88 280 91 LI 274 86 277 89 LI 274 83 274 87 LI 277 81 274 84 LI 277 81 280 81 LI 280 83 280 75 LI 265 85 274 85 LI 277 85 277 90 PP 276 87 275 88 274 86 PP 277 88 279 89 278 90 EV 271 80 283 92 LI 280 91 280 95 LI 280 95 295 95 LI 295 95 295 60 LI 250 60 249 58 LI 251 58 250 60 TY 247 53 4 2 0 0 0 * +24 LI 250 60 250 70 MC 225 95 0 0 080 MC 250 70 1 0 080 TY 243 73 4 2 0 0 0 * R5 TY 258 78 4 2 0 0 0 * R6 MC 255 85 0 0 080
Reply to
antologiko

Errata corrige. Ovviamente all'inizio non c'=E8 un corto tra + e massa, ma un condensatore da 100n

Reply to
antologiko

snipped-for-privacy@virgilio.it ha scritto:

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.

Reply to
Claudio_F

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.