Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Implementazione di ASF
Vi sono due diverse implementazioni di un ASF, entrambi ricorrendo alla funzione " getch( ) " per leggere il
prossimo carattere della stringa da riconoscere:
- il primo metodo utilizza uno switch per ogni stato dell'automa (in cui si sceglie la transizione in base al simbolo
letto);
- il secondo usa una matrice di transizione del grafo , che restituisce il prossimo stato a partire dallo stato attuale
e dal simbolo letto.
Implementazione di Macchine a stati finiti
L'implementazione delle MSF non è diversa da quella delle ASF ; si può difatti utilizzare il metodo basato su uno
switch o quello con matrice di transizione (che in Mealy ha una matrice per il prossimo stato e una matrice per
l'uscita, mentre in Moore ha una matrice per il prossimo stato e un vettore per l'uscita).
Possiamo astrarre da questa scelta di implementazione utilizzando due funzioni: next() e output()
Mealy Moore
int c; int c;
//input //input
int stato=0; int i ; int stato=0; int i ;
while(TRUE) output(stato);
{ input(&c); while(TRUE)
output(stato,c); { input(&c);
stato=next(stato,c); stato=next(stato,c);
} output(stato);
}
Si noti dunque che la principale differenza con l'implementazione di un ASF riconoscitore di linguaggi sta
nell'utilizzo di un ciclo infinito (while(TRUE)). Questo poichè spesso un sistema embedded deve controllare un
processo senza terminazione.
Dunque una volta conosciuta la definizione della MSF , la scrittura del codice è meccanica ed automatica.
Event-Driven system
Un sistema è detto event-driven (o reattivo) quando, a seguito della ricezione di eventi provenienti dall'esterno,
risponde con una reazione.
Un evento può essere notificato ad un sistema in due modi:
modo sincrono : con variazione del valore di una variabile.
while(TRUE)
if(input variato) {reazione all'input}
Se vi sono più variabili in ingresso, vi sarà un if per ciascuna variabile.
Un'implementazione di questo tipo si dice con attesa attiva perchè il processore attende la variazione degli
ingressi senza compiere alcuna operazione.
La reazione ad un input (fatta con una MSF) include la funzione next() che incapsula il test sulla variabile di
input e in cui una variabile globale mantenga il valore dello stato corrente.
modo asincrono : attraverso le interruzioni e relativa routine di interruzione.
while(TRUE);
Anche in questo caso le routine di interruzione possono realizzare le funzione di transizione (next()) e di
output() di una MSF, che deve essere inizializzata per denotare lo stato iniziale prima che il processore entri
in attesa attiva. 4
In entrambe le soluzioni la struttura dell'algoritmo di controllo è comunque costituita da una fase di inizializzazione
seguita da un ciclo infinito : all'interno del ciclo si leggono gli ingressi e si compiono le opportune azioni sulle uscite;
che in un sistema embedded vengono dette lettura dei sensori e scrittura degli attuatori.
Molto importante da notare è il fatto che le due implementazioni si comportano diversamente dal punto di vista
temporale: se gli eventi non si sovrappongono temporalmente, nella soluzione con interruzioni l'evento viene
servito immediatamente; mentre nella soluzione in cui un ciclo testa periodicamente tutte le variabili di ingresso
(polling) l'evento viene servito solo quando il processore arriva a testare la relativa variabile di ingresso.
Questo diverso trattamento ha quindi effetto sul tempo di risposta all'evento: sistemi con requisiti sui tempi di
risposta si dicono sistemi real-time.
2- SISTEMI REAL-TIME
Sistema real-time: sistema il cui corretto funzionamento non dipende solamente da un corretto calcolo funzionale,
ma anche dal tempo in cui questo calcolo viene effettuato.
- soft real time : i vincoli sui tempi di risposta non sono stringenti, perchè in qualche caso si può non rispettarli;
- hard real time: i vincoli sui tempi di risposta sono stringenti, perchè se non vengono rispettati il sistema è
inutile o persino pericoloso.
Temporizzazione dell'algoritmo di controllo
Come già visto precedentemente, gli algoritmi di controllo di tipo discreto hanno la tipica struttura di un ciclo
infinito che alterna la lettura dei sensori al calcolo delle risposte e del prossimo stato, al comando degli attuatori.
Per il controllo digitale dei sistemi, si deve ricorrere ad una discretizzazione temporale del controllo stesso: si usa il
cosiddetto Teorema di Nyquist-Shannon, che garantisce che se un segnale viene campionato ad una sufficiente
frequenza, l'insieme dei campioni basta a ricostruire il segnale senza perdita di informazioni.