• Non ci sono risultati.

Macchine a stati algoritmiche - ASM Charts

Nel documento Sistemi Elettronici Digitali (pagine 57-61)

e sempre diversa dalle altre, e questa continua a variare a seconda del valore dell’uscita attuale del contatore, in modo da variare continuamente il valore delle uscite.

5.5 Macchine a stati algoritmiche - ASM Charts

Quando si devono progettare sistemi sequenziali complicati, l’approccio noto dal corso di Calcolatori Elettronici, basato sulla sintesi del grafo di transizione degli stati, potrebbe essere troppo limitante rispetto alla complessit`a dei progetti da effettuare.

I passi da seguire sono, come sempre, sostanzialmente i seguenti: 1. Comprendere le specifiche;

2. Introdurre una rappresentazione grafica del comportamento della mac-china a stati;

3. Semplificare gli stati e attribuire una codifica ai medesimi; 4. Procedere con un metodo di sintesi.

Per quanto riguarda la rappresentazione grafica, si dedicher`a una sot-tosezione a parte; si vogliono prima di essa riprendere alcuni concetti, che potrebbero tornare utili per macchine relativamente semplici, riguardo la codifica degli stati.

5.5.1 Codifica degli stati

Nel caso di procedimenti di sintesi manuali o semi-manuali, uno dei passi che possono rivelarsi pi`u fatali `e quello di attribuire, per ciascuno stato, una codifica, ossia un valore numerico in grado di identificare lo stato della macchina. Nel caso di macchine a stati relativamente semplici, fino a 8 o 10 stati, la scelta pi`u sicura `e quella della codifica one-hot: identificare ciascuno stato con la posizione di un ‘1’, rispetto a tutti ‘0’ per gli altri stati. Questo tipo di approccio `e molto interessante per due motivi:

• Si pu`o sostanzialmente prevedere l’evoluzione logica dello stato in mo-do semplice, per “ispezione”, identificanmo-do l’1 tra gli 0. Il senso `e che si pu`o ricavare le funzioni logiche combinatorie e sequenziali rappre-sentanti l’evoluzione degli stati semplicemente “guardando” la tavola di transizione degli stati, “scrivendo” le condizioni che permettono di passare dall’ stato Qn−1 a Qn immediatamente e con semplicit`a; • Il fatto di avere una codifica cos`ı semplice permette sostanzialmente

di non utilizzare alcuna logica di decodifica, rendendo di fatto molto semplice e veloce la macchina a stati.

La sintesi della macchina a stati pu`o dunque essere effettuata in diversi modi, seguendo le tecniche precedentemente proposte: mediante LUT, ROM, MUX o altri tipi di tecniche.

5.5.2 ASM Charts

Quando si ha a che fare con progetti di una certa complessit`a, quali le ASM (Algoritmic State Machines), ossia macchine a stati basate sull’implementa-zione elettronica digitale di un certo algoritmo di una certa complessit`a (un algoritmo di divisione piuttosto che di ordinamento piuttosto che altre cose), le tecniche basate sul “pallogramma” risultano essere inefficienti, poich`e non in grado di documentare in maniera efficiente il progetto. Quella che si vuole

a questo punto introdurre `e una migliore e pi`u semplice schematizzazione, in grado di contenere un maggior numero di informazioni e presentante un maggior riscontro su quello che sar`a il comportamento della macchina a stati finale.

Questo tipo di rappresentazione `e basata sostanzialmente sull’uso di tre blocchi, pi`u indicazioni sui segnali in esse contenute:

Sostanzialmente bisogna tenere presente il significato e la temporizzazione legate a questi tre blocchi, in modo da poterli utilizzare in maniera corretta: • State box (forma “rettangolo”): si tratta sostanzialmente di blocchi contenenti indicazioni sull’evoluzione delle uscite secondo una logica di Moore. Ci`o significa che tutte le uscite e le indicazioni sui segnali contenute nei “rettangoli”, al colpo di clock in cui si arriva nel suddetto stato, variano. Si noti che solo al colpo di clock successivo, ossia in prossimit`a del successivo “rettangolo”, le uscite saranno a disposizione della macchina o dell’utenza. Il significato sotto il punto di vista della temporizzazione `e: per ogni rettangolo `e associato un colpo di clock, e solo al colpo di clock successivo a quello di un dato “rettangolo” si avran a disposizione le uscite richieste nel rettangolo stesso.

• Decision box (forma “rombo”): si tratta di blocchi in grado di intro-durre una “scelta”, a seconda dello stato in cui ci si trova. Entrati in uno stato, dati i valori di diverse uscite, l’evoluzione della macchina a stati pu`o portare a uno stato piuttosto che a un altro; questa box semplicemente, riferendosi al colpo di clock del rettangolo “appena pre-cedente”, propone una biforcazione, inviando la macchina in uno stato anzich`e in un altro.

• Conditional output box (forma “ovale”) : si tratta sostanzialmente del-la modellizzazione, in ASM Charts, delle “uscite di Mealy”: a seconda dello stato in cui ci si trova e a seconda del valore di determinati ingres-si, le uscite contenute nei rettangoli potranno essere o meno attivate e/o portate a determinati valori. Queste uscite devono essere tenden-zialmente introdotte dopo un “rettangolo”; il vantaggio di queste uscite `

e che saranno gi`a a disposizione, se attivate, al colpo di clock successivo a quello del rettangolo: essendo uscite di Mealy esse saranno sincrone, in quanto dipendenti comunque dal clock, ma potranno essere o meno attivate nello stesso istante delle condizioni contenute nel “rettangolo” appena precedente, dunque essere pronte per il colpo di clock seguente. Tenendo bene a mente queste indicazioni, a partire da questi grafici `e pos-sibile ricavare con semplicit`a un’implementazione VHDL, ottenendo cos`ı una macchina a stati facilmente sintetizzabile mediante strumenti informatici.

5.5.3 Progetto di sistemi elettronici digitali complessi

In questa sottosezione si suggerir`a sostanzialmente un metodo per progettare un sistema elettronico digitale, a partire dagli strumenti per ora presentati. Il fatto di aver introdotto gli ASM Chart fornisce sostanzialmente uno strumen-to molstrumen-to interessante: un ASM chart rappresenta, di fatstrumen-to, una traduzione di un algoritmo, pensato e proposto ad esempio in pseudocodice (piuttosto che in un linguaggio particolarmente semplice quale un pseudo-C piuttosto che pseudo-BASIC o pseudo-pascal, a seconda dei gusti).

La tattica da seguire quando si progettano sistemi di tipo complesso, `e quella di dividere il progetto in diverse sezioni:

• Traduzione dell’algoritmo in ASM chart, in modo da fornire una prima idea di quello che sar`a il progetto definitivo (parte di fatto opzionale, ma che di sicuro non guasta);

• Progetto della parte puramente “hardware” del sistema, ossia del co-siddetto “datapath”: si definiscono tutte le strutture fisiche (descritte a diversi livelli, a seconda di ci`o che il sistema e le specifiche richiedono), e si collegano tra di loro (descrivendo il sistema graficamente, e poi in seguito in VHDL utilizzando i costrutti del linguaggio di descrizione / programmazione a seconda del livello di astrazione);

• Progetto della parte puramente “comportamentale” del sistema: una volta definite tutte le strutture fisiche nel sistema, mediante un al-tro ASM chart si definisce il comportamento dei vari segnali, in modo da definire il comportamento e l’evoluzione degli stati della macchina, operando per`o non pi`u in modo astratto, algoritmico come per il pri-mo ASM chart, bens`ı definendo esattamente il comportamento che i segnali devono avere nei diversi stati, dunque ai diversi colpi di clock. Una volta definito dunque un algoritmo che descriva il funzionamento del sistema elettronico, lo si traduce in un primo ASM chart, descrittivo; a questo punto, dall’algoritmo, `e possibile capire quante e quali strutture dati servano, per realizzare il sistema elettronico digitale; queste vengono dun-que introdotte e connesse opportunamente tra loro nel datapath, definendo un certo numero di segnali di supporto che permetteranno di controllare la macchina a stati. Un terzo blocco, un altro ASM chart, molto simile al pri-mo, sar`a in grado di controllare il datapath, modificando i valori dei segnali ai vari istanti di clock. A questo punto, terminata la schematizzazione, es-sa viene implementata o manualmente o (pi`u comunemente) mediante una descrizione in VHDL, che quindi potr`a essere sintetizzata dal calcolatore.

Nel documento Sistemi Elettronici Digitali (pagine 57-61)