Mi permetto di dire anch'io la mia, perché sono all'altro capo dello sviluppo rispetto a
PietroBaima. Dopo lo studio ho lavorato per due anni in un istituto del politecnico sviluppando un sistema di controllo su FPGA per il sistema magnetico di un free-electron-laser. Poi ho lavorato per tre anni e rotti come ASIC-designer (esclusivamente digitale). Adesso sono passato a fare il "generalista": meno specializzato, ma piú interessante. Credo anch'io di poter parlare con cognizione di causa
Quello che viene praticamente sempre omesso in un corso (o che forse non è nemmeno chiaro al docente

) è la spiegazione della visione d'insieme. C'è a questo proposito la cosiddetta Y-Chart, che è perfetta:

- Gajski-Kuhn.png (35 KiB) Osservato 6020 volte
Lo sviluppo comincia sempre sul ramo
Behavioral, dove viene definito
cosa il sistema deve fare, ma non
come. Si passa poi in senso orario al ramo
Structural, dove si concretizza soprattutto l'interconnessione e l'inter-operazione dei componenti (front-end design). L'ultimo passaggio (back-end design) e il passaggio al ramo
Geometry, dove si va al livello fisico.
Per esempio:
PietroBaima si trova sul ramo
Behavioral, nei due gironi (

) piú esterni (anche se ha una buona padronanza anche di quello che c'è all'interno), io sono sullo stesso ramo, ma sui gironi piú interni. Quello che deve essere chiaro è che non si tratta di scatole chiuse: Pietro non può fare il suo lavoro senza avere un'idea del mio e viceversa.
Secondo quella che è la mia esperienza, nelle lezioni di tecnica digitale si parte dal punto
Logic sul ramo
Behavioral (funzioni logiche) ci si sposta su
Structural stando alla stessa altezza e si vede che ci sono componenti che realizzano le funzioni viste (magari, come dice Pietro studiandosi in modo assolutamente anacronistico tutta la serie 74HC). Si sale poi di un livello e si torna su
Behavioral (è il punto in cui si studiano le FSM).
Qui finisce il tutto. Gli altri punti non vengono considerati. E sono d'accordo che non sono tutti necessari se uno non vuole diventare un designer digitale. Ma quello che si fa non basta. Senza toccare concetti che sono propri del cerchio piú interno o dei cerchi esterni sul ramo
Structural, quello che nella matematica funziona, in presenza del timing del mondo reale (propagation delay, setup-time, hold-time, skew) smette di funzionare.
Non c'è poi da meravigliarsi se in questo forum, si vedono in continuazione richieste (anche da studenti che stanno proprio trattando la materia) i cui una linea dati passa attraverso un paio di gates e magicamente diventa un clock usato per un flip-flop. Circuiti del genere, non credo sia il caso che te lo spieghi, funzionano solo sulla carta (e forse neanche sulla carta).
Quindi, dopo questo excursus enorme, la mia risposta alla tua domanda è che sì, le FSM sono fondamentali, ma c'è un sacco di altra roba che si può scremare a favore di cose piú utili.
Chiaro, i diagrammi di Karnaugh sono nice-to-know, ma dopo averne fatti decine e decine durante lo studio, non ne ho mai piú usato uno nella vita professionale, al punto che oggi avrei difficoltà a risolverli. È come il discorso di cui sopra per la logica discreta. Non li si usano piú. La FSM viene scritta in VHDL e il compiler si occupa del signor Karnaugh.
Come dicevo, tutto è utile e conoscerli non sarebbe male, ma dovendo scegliere, io li lascerei cadere a favore di uno studio del clocking. Ovvero dell'interconnessione dei gates considerando i fattori tempo e sincronismo. È al momento una grossa lacuna.
Ai tempi del mio studio avevamo fortunatamente un professore che era un'autorità nel campo e ha smaltito tutta la paccottiglia discreta dal laboratorio e abbiamo fatto tutti gli esercizi di tecnica digitale su una CPLD. Con Max+Plus si potevano instanziare i gates graficamente e collegarli con "fili", senza dover quindi conoscere il VHDL. È un approccio che probabilmente è stato la scintilla iniziare per accendere la mia passione per la tecnica digitale e posso solo consigliarlo.
Saluti Boiler