La tempificazione dei segnali e le alee

Da Hacknowledge.

Indice

[modifica] Introduzione

Finora abbiamo effettuato il progetto delle macchine combinatorie trascurando gli effetti temporali sugli ingressi I della macchina. In realtà, durante la fase di progettazione, bisogna tener conto non solo dell’aspetto logico della macchina combinatoria ma è opportuno studiarne anche il comportamento seguendo l’evoluzione nel tempo che le variabili d’ingresso subiscono. Le macchine ideali reagiscono istantaneamente ad un segnale, esse rappresentano tuttavia un modello ben lontano dalla realtà, infatti, una sostanziale differenza con le macchine reali è il tempo di risposta che esse mostrano nei confronti di un ingresso. Ogni sistema, anche fisico, impiega un certo tempo per rispondere alla sollecitazione che gli viene mossa, è questo il concetto da tenere in considerazione per realizzare macchine più vicine alla realtà. Pertanto, uno dei primi concetti che dobbiamo necessariamente introdurre è il tempo di risposta di una macchina, studiaremo inoltre le tempificazioni dei segnali in ingresso ed i problemi a queste collegate.

[modifica] Il tempo di risposta di una macchina

Il tempo di risposta di una macchina è il ritardo d=tf-ti con il quale una variazione sull’ingresso è seguita da una variazione sull’uscita. Ad esempio, consideriamo una semplice rete logica:

Immagine:Tempificazioni-rete_di_esempio.jpg


Immagine:Tempificazioni-diagramma.jpg

La rete logica è costituita dalla sola porta logica AND, la cui uscita è appunto x1 AND x2. Nel diagramma che immediatamente segue la rete sono invece riportati i valori delle singole variabili di ingresso e dell’uscita y. Nel tratto iniziale del diagramma temporale, quello cioè in cui entrambi le variabili di ingresso sono ancora 0 non vi è alcun problema, visto che gli ingressi non cambiano. Osservando invece l’ultima parte del diagramma, quello in cui vengono a trovarsi entrambe le variabili x1 ed x2 ad 1, notiamo che la risposta y in uscita non assume subito il valore logico (alto) che gli compete, ma in corrispondenza del tratto in cui l’ultima variabile d’ingresso, e cioè x2, raggiunge anch’essa un valore logico alto si nota che l’uscita y attende un certo tempo prima di portarsi anch’essa sul valore logico alto, ecco quindi il manifestarsi di un ritardo! Nell’intervallo di tempo che va dall’istante in cui x2 si alza all’istante in cui l’uscita assume il giusto valore logico la macchina si comporta in modo errato e può causare problemi dovuti a funzionamenti impropri oltre a generare un uscita non corretta. Con lo scopo di modellare questo effetto di ritardo si introduce un dispositivo detto appunto dispositivo di ritardo iniziale.

Il dispositivo di ritardo inerziale Si chiama ritardo inerziale E un elemento avente ingresso I(t) e la cui uscita U(t) rispetti le seguenti condizioni. Se E è il ritardo ed I(t) l’ingresso in funzione del tempo, allora:

Immagine:Dispositivo_inerziale-eq1.jpg per Immagine:Dispositivo_inerziale-eq1a.jpg

ed ancora:

Immagine:Dispositivo_inerziale-eq2.jpg per Immagine:Dispositivo_inerziale-eq2a.jpg

pertanto:

Immagine:Dispositivo_inerziale-eq3.jpg e Immagine:Dispositivo_inerziale-eq4.jpg

In altre parole il dispositivo di inerzia non fa nulla! Esso si limita semplicemente a riproporre l’ingresso ricevuto dopo un certo tempo t. Quest’oggetto è tipico dei simulatori logici che dovendo modellare e simulare una rete logica necessitano di questi e di altri strumenti per avvicinare il progetto quanto più possibile alla realtà. Il suo simbolo è il seguente:

Immagine:Dispositivo_inerziale.jpg

Esso è simile all’operatore di NOT, infatti, tutti gli operatori unari si rappresentano in questo modo. Il dispositivo, seguendo la sua definizione, se sollecitato ad un ingresso all’istante t rimane nello stato precedente per un tempo E, che appunto il ritardo inerziale. La presenza di ritardi nei dispositivi utilizzati in alcuni casi può avere l’effetto di modificare il comportamento delle uscite. Ecco allora l’altro concetto fondamentale da ricordare. Si chiamano alee quei fenomeni per i quali le uscite, anche se solo per brevi intervalli di tempo, assumono dei valori imprevisti. In tal caso il comportamento della rete risulterebbe aleatorio in quanto legato alle caratteristiche incontrollabili dei ritardi. Una delle prime condizioni di funzionamento da rispettare affinché una macchina combinatoria funzioni a dovere è la seguente:

Immagine:Dispositivo_inerziale-eq5.jpg

La variazione di frequenza con la quale le variabili si alternano o comunque cambiano agli ingressi della macchina può avvenire al massimo con periodo 2R, con R ritardo della macchina. Superato il valore di fmax il comportamento della macchina non è definito e risulta essere aleatorio. Tuttavia, pur rispettando questa ipotesi è possibile comunque il verificarsi di possibili fenomeni aleatori.

[modifica] Le alee

Una classificazione delle alee prevede in un primo livello di generalizzazione le cosiddette alee transitorie ed alee di regime. Un alea è di tipo transitorio se le uscite della rete assumono valori diversi da quelli progettati soltanto nel transitorio conseguente alle variazioni degli ingressi per poi assestarsi ai valori giusti. Un alea di regime si verifica quando l’uscita assume un valore diverso da quello progettato anche dopo il transitorio. Un alea transitoria è preferibile ad una di regime poiché se attendiamo un tempo sufficientemente grande siamo sicuri che la rete fornisca in uscita il giusto risultato, mentre il risultato di un alea di regime non è, per definizione, mai quello della rete di progettazione. Tipicamente le alee transitorie vengono anche dette alee combinatorie poiché riguardano esclusivamente le macchine di tipo combinatorio. Invece, le alee di regime sono anche dette alee sequenziale poiché investono principalmente le macchine di tipo sequenziale. Ecco una classificazione delle alee:

  • Alee transitorie;
    • Alea multipla (variazione simultanea di due o più variabili di ingresso);
    • Alea per impulsi concomitanti (presenza di due o più impulsi);
    • Alea statica (variazione temporanea dell’uscita che dovrebbe rimanere costante);
    • Alea dinamica (oscillazione temporanea dell’uscita);
  • Alee di regime;
    • Alee essenziali (dovute alle caratteristiche della rete);
    • Alee per corse critiche (a causa della codifica le variazioni delle uscite dipendono dall’ordine degli ingressi);
    • Alee per frequenza elevata (gli ingressi variano troppo rapidamente);

[modifica] Alea multipla

Per introdurre il concetto di alea multipla è utile prima dare spiegazioni sull’ingresso di dati di tipo adiacenti. Due stati di ingresso si dicono adiacenti se sono codificati in modo che essi differiscano solo in una sola variabile. Ad esempio:

i1: 000010

i2: 000000

Gli ingressi i1 ed i2 sono tra loro adiacenti. Al contrario, invece, gli ingressi:

i3: 000010

i4: 010000

non sono tra loro adiacenti. Si ha un alea multipla se due ingressi consecutivi nel tempo, diciamoli i1 ed i2, non sono tra di loro adiacenti. Ad esempio, consideriamo la rete che realizza questa funzione:

Immagine:Alee_multiple-eq1.jpg


Immagine:Alee_multiple-esempio.jpg

Avente il seguente diagramma temporale:

Immagine:Alee_multiple-tempificazione.jpg

Osservando la funzione logica, si nota che il valore in uscita della macchina combinatoria dovrebbe essere fissa ad 1, tuttavia nel diagramma temporale notiamo una leggera oscillazione che ne modifica, se pur in brevi istanti di tempo, il giusto valore. Ciò è dovuto ad una parte della macchina che risulta essere più lenta rispetto all’altra per la presenza non solo della porta logica AND ma anche di una NOT, ogni porta logica è infatti caratterizzata da un tempo di risposta o ritardo che nel caso analizzato è la somma di due ritardi. Se tutti e due gli ingressi alla porta n°3 assumono il valore 1 per un tempo maggiore del suo ritardo inerziale, l’uscita y assumerà valore 0. Il problema sembra essere dunque di natura tecnologica, la realizzazione di porte logiche più rapide in termini di risposta agli ingressi potrebbe quindi ridurre gli istanti di tempo in cui l’uscita y anziché rimanere fissa ad 1 oscilla per brevi istanti di tempo. Tuttavia, anziché scaricare il problema sul processo tecnologico, investendo tempo e denaro nella costruzione di dispositivi logici ad alta efficienza, è possibile correggere il problema agendo sulla codifica degli ingressi e facendo in modo che questi risultino tra loro sempre adiacenti se questi devono contribuire all’uscita della macchina. Quindi, per eliminare le alee multiple è opportuno eliminare la possibilità di ingressi non adiacenti agendo sulla codifica delle variabili in ingresso alla macchina.

[modifica] Alea per impulsi concomitanti

L’alea ad impulsi concomitanti è un caso particolare di alea multipla, essa si manifesta quando due impulsi avvengono contemporaneamente, in tal caso i ritardi possono cambiare il comportamento della funzione. Si verificano degli impulsi quando le variabili d’ingresso alla macchina cambiano in tempi molto rapidi. Supponiamo ad esempio il caso in cui una rete realizzi la funzione logica di AND. All’ingresso delle variabili x1=1 ed x2=1 la funzione logica y=x1 AND x2 riceve contemporaneamente due valori alti, ma per un certo intervallo di tempo essa non presenta il giusto risultato. Per fare in modo che ciò non avvenga si è soliti mettere un dispositivo di inerzia su una delle variabili d’ingresso in maniera tale da provocarne un rallentamento. Poiché tutte le funzioni sono derivate dalle funzioni logiche di somma e prodotto, al fine di evitare i fenomeni aleatoti è necessario che due impulsi in ingresso alla medesima macchina non siano mai in concomitanza se insieme debbono contribuire a determinare l’uscita.

[modifica] Alea statica

Questo tipo di alea avviene se, avendo due ingressi i1 ed i2 adiacenti con uscite uguali f(i1)=f(i2), l’uscita assume nel transitorio il valore NOT f(i1)= NOT f(i2), ad esempio:

Immagine:Alee_statiche-eq1.jpg

Immagine:Alee_statiche-esempio.jpg

Gli ingressi pur essendo tra loro adiacenti causano un oscillazione temporanea dell’uscita, ciò risulta essere causato dall'eccessiva minimizzazione che segue dalla mappa di Karnough e che tende ad escludere nella funzione logica un primo implicante perché già contenuto in due implicanti ssenziali. Infatti, sollecitando la macchina con gli ingressi x0x1x2=111 e successivamente con x0x1x2=110 (e/o viceversa) notiamo che:

  • per x0x1x2=111, ∆1=0 e ∆2=1;
  • per x0x1x2=110, ∆1=1 e ∆2=0;


L’uscita y quindi, per fornire il giusto valore in uscita deve necessariamente attendere un certo istante di tempo in quanto l’oscillazione di ∆1=0→1 e ∆2=1→0 avviene simultaneamente. Per eliminare le alee statiche da una rete è necessario e sufficiente aggiungere alla funzione logica che la realizza gli eventuali implicanti ridondanti che contengono le transizioni fra gli ingressi adiacenti per i quali l’uscita assume il valore logico 1. Infatti, in questo modo la funzione logica comprenderà un altro addendo:

Immagine:Alee_statiche-eq2.jpg


[modifica] Alea dinamica

Si ha una alea dinamica se avendo due ingressi i1 ed i2 adiacenti con uscite f(i1)=alfa ed f(i2)=beta, la sequenza di uscita è del tipo alfa ... beta alfa ... beta ... beta. L’alea dinamica si verifica soltanto in reti a più di due livelli logici di progettazione e può essere vista come il fenomeno risultante da una o più alee statiche contenute nelle sottoreti a due livelli. Le alee dinamiche si eliminano eliminando le alee statiche nelle sottoreti.

[modifica] Ingressi e sequenze di valori

Avendo considerato il tempo come fattore determinante per le reti logiche, non è più possibile considerare l’ingresso semplicemente come un singolo fattore fornito in ingresso alla macchina. Inizieremo, allora, a pensare alle macchine ed agli ingressi che vi si presentano tenendo sempre presente la scala temporale. Per fare ciò è opportuno rivedere quali tipologie di ingressi sono possibili e considerare queste come sequenze variabili nel tempo. Gli ingressi delle macchine sono delle sequenze di valori e di sequenze ne esistono di diverse tipologie, infatti:

Immagine:Sequenze_di_ingressi.jpg

Gli ingressi delle macchine da noi progettate fin ora sono delle sequenze di valori in ingresso che evolvono nel tempo. I problemi che gli ingressi introducono alla progettazione della macchine sono stati appena descritti (le alee). I diversi tipi di sequenze che una macchina può ricevere in ingresso sono descritti graficamente in questa pagina. La sequenza a livelli è simile alla funzione a gradino, l’ingresso della macchina rimane costante per un determinato periodo di tempo,in ogni istante di tempo c’è sempre un valore logico in ingresso. La sequenza puramente impulsiva prevede un ingresso impulsivo caratterizzato da un valore alto raggiunto in una frazione di tempo molto piccolo, questa sequenza di ingresso può essere usata come sincronizzatore, il riferimento in questo caso è ad uno spazio discreto di istanti di tempo in cui agisce appunto l’impulso. La sequenza a sincronizzazione esterna, ottenuta miscelando una sequenza a livelli e una impulsiva, consente ad una macchina di considerare i valori in ingresso solo quando l’impulso indica a quest’ultima di leggerne il valore, si nota infatti che l’impulso è unico su tutta la sequenza a livelli. Nel caso di una sequenza auto-sincronizzata è possibile avere su una sequenza a livelli più di un impulso, ciascuno dei quali avrà uno specifico significato per la macchina.

[modifica] Una particolare sequenza di ingresso

Il clock è una particolare sequenza utile in fase di simulazione e largamente usata dalle macchine di tipo sequenziale che in seguito osserveremo, esso in particolare scandisce gli ingressi secondo una sequenza puramente impulsiva in cui gli impulsi hanno tutti la medesima altezza, gli impulsi si ripetono inoltre con la stessa frequenza, risulteranno pertanto spaziati sempre alla stessa distanza. Il clock è pertanto una particolare variabile binaria impulsiva che identifica, in uno spazio discreto dei tempi, una particolare sequenza. Un diagramma temporale di un segnale di clock è il seguente:

Immagine:Clock.jpg

Tuttavia, nella realtà il clock è fisicamente realizzato con uno oscillatore, esso pertanto continua a mantenere i diversi livelli logici ma questi ultimi risultano essere di durata non più nulla come nel caso reale. Per questo motivo un diagramma temporale di un segnale di clock reale è il seguente:

Immagine:Clock_reale.jpg

Nei simulatori per reti logiche è talvolta possibile impostare per ogni dispositivo logico ed anche per il clock un certo tempo di ritardo in uscita. Per finire mostriamo come è possibile ottenere da un segnale di clock una diversa tempificazione del segnale a disposizione. Molto spesso è utile avere per una macchina diversi valori di clock (almeno più di uno) sfasati tra loro che insieme definiscono una sequenza d’ingresso. E’ possibile ottenere clock ad n fasi, miscelando n clock e ritardandoli tra loro, ad esempio:

Immagine:clock-2.jpg

E’ inoltre possibile realizzare una sequenza a sincronizzazione esterna miscelando un segnale di clock con una sequenza a livello:

Immagine:sequenze_di_ingressi2.jpg

Strumenti personali