Si vuole realizzare una rete che gestisca un semaforo. In prima istanza si considera un unico semaforo (stile semaforo pedonale). Un possibile grafo degli stati è il seguente:
Rete per la gestione dello stato.
E' possibile utilizzare come rete di gestione dello stato un semplice contatore da 0 a 7 (3 bit). Il contatore sarà formato da un registro (3 bit) che conterrà lo stato corrente e verrà utilizzato come componente di memoria dello stato. E' necessario oltre a ciò una rete di aggiornamento del registro realizzabile tramite un addizionatore i cui ingressi sono il contenuto del registro stesso e la costante 1 (per la costante utilizzare un dip switch).
E' fondamentale non lasciare degli ingressi scollegati. A tale proposito si prevede una parte di rete anche per il reset del registro (interrutore - switch).

Rete di generazione delle uscite.
Una volta realizzata la rete di stato e di aggiornamento dello stato è necessario realizzare una rete combinatoria per la generazione dei segnali che andranno a comandare le luci del semaforo. I possibili approcci sono:
La ROM ha uscita con parallelismo 8 bit. E' necessario programmare la ROM opportunamente. Supponendo che il bit 0 (meno significativo) venga utilizzato per pilotare la luce verde, il bit 1 la luce arancione, il bit 2 la luce rossa:
| Stato della rete | Uscita |
|---|---|
| 0 | xxxx x001 |
| 1 | xxxx x001 |
| 2 | xxxx x001 |
| 3 | xxxx x001 |
| 4 | xxxx x010 |
| 5 | xxxx x100 |
| 6 | xxxx x100 |
| 7 | xxxx x100 |
Output della rete
Per avere un riscontro visivo dell'andamento della rete si possono inserire dei led a bit singolo rappresentanti le luci e un display a sette segmenti per monitorare l'andamento dello stato.

Estendere il progetto così fatto per la gestione di due semafori cercando di sfruttare la modularità della soluzione sintetizzata precedentemente. I semafori dovranno avere chiaramente luci verdi e rosse alternate in modo da simulare un semaforo di un incrocio.
Possibile soluzione
Programmare la ROM in modo da sfruttare i bit precedentemente inutilizzati per gestire le altre 3 luci.

E' ragionevole pensare che vi siano due stadi nei quali entrambi i semafori siano rossi:
| Stato | Semafori |
|---|---|
| 0 | Verde - Rosso |
| 1 | Verde - Rosso |
| 2 | Verde - Rosso |
| 3 | Giallo - Rosso |
| 4 | Rosso - Rosso (nuovo stato) |
| 5 | Rosso - Verde |
| 6 | Rosso - Verde |
| 7 | Rosso - Verde |
| 8 | Rosso - Giallo |
| 9 | Rosso - Rosso (nuovo stato) |
Per fare ciò bisogna estendere la rete di gestione dello stato in modo da realizzare un contatore da 0 a 9. In prima istanza è necessario aumentare il parallelismo del registro (e dei componenti che insistono su esso) portandolo a 4 bit. Il registro a 4 bit tuttavia realizza un contatore da 0 a 15, perciò bisogna provvedere ad inserire una rete che si occupi di azzerare il registro quando arriva allo stato 9.
Possibile soluzione
E' necessario innanzi tutto inserire un comparatore che restituisca il valore logico 1 allorché lo stato sia uguale a 9, il valore logico 0 altrimenti. Quando lo stato è uguale a 9 è necessario porre in ingresso al registro il valore 0; se lo stato è diverso da 9 si pone in ingresso al registro il valore di stato futuro calcolato tramite l'addizionatore. Per fare ciò si introduce un MUX i cui ingressi sono lo stato futuro calcolato dall'addizionatore e il valore 0; il bit di selezione del MUX è pilotato dall'uscita del comparatore.
E' necessario infine modificare opportunamente il contenuto della ROM