Man mano che i sistemi embedded diventano sempre più complessi, la progettazione diventa sempre più difficile. Per far fronte a questa problematica emergente e alle sue implicazioni, come il controllo della qualità e dei costi di sistema, molti produttori di sistemi embedded si sono orientati alla progettazione model-based. La progettazione model-based è un modello di progettazione molto efficiente per lo sviluppo di applicazioni di controllo, di signal processing, di image processing, di comunicazione, e di altre applicazioni di natura embedded. I vantaggi che derivano dall'adozione di questo approccio alla progettazione sono soprattutto in termini di aumento della qualità e di accorciamento dei tempi di sviluppo. Il modello sostituisce quello che normalmente è il prototipo fisico del sistema, consentendo di eseguire le operazioni necessarie alla progettazione, inclusa anche la prototipazione fisica ove necessaria. La progettazione tradizionale consiste di una sequenza di fasi che iniziano con la definizione delle specifiche di sistema e terminano con l'implementazione seguita dal test. Tutte le varie fasi si succedono utilizzando strumenti e ambienti di sviluppo differenti tra loro e con numerosi interventi manuali. Entrambi questi due aspetti sono il punto debole della progettazione tradizionale relativamente alla velocità e alla robustezza del processo di progettazione e di realizzazione del sistema embedded. L'altro aspetto di debolezza del processo di progettazione tradizionale sta nella natura degli strumenti di progettazione utilizzati, di cui il sistema di sviluppo (ambiente di sviluppo), anche se avanzato, è orientato più al dispositivo (microcontrollore, Dsp, Fpga, ecc.) che all'applicazione. Il gap tra il dispositivo e l'applicazione, nella progettazione tradizionale, va colmato dal team di progettazione facendo ricorso alla esperienza e capacità di coordinamento e di integrazione che questo ha sviluppato nel tempo. In questo gap c'è un punto particolarmente critico, quello della traduzione del progetto in codice eseguibile dalla piattaforma di computing scelta. La generazione del codice è manuale, onerosa in termini di tempo e soprattutto soggetta ad errori, in parte condizionati da altri errori fatti nella fase precedente di progettazione, in parte dovuti alla complessità del codice da generare e al fatto che tale codice viene prodotto da più persone. La fase di integrazione e test ereditano tutte le criticità introdotte nella fasi precedenti, rendendo particolarmente rischiosa la fase di prototipazione. Questa, essendo di natura fisica, quando fallisce perché non sono adeguatamente soddisfatte le specifiche di progetto, porta ad un incremento dei costi di progettazione e alla dilatazione, anche smisurata, dei tempi di completamento del progetto, con critici ritardi (a volte fatali) per entrare sul mercato con l'applicazione. Con la progettazione model-based l'approccio allo sviluppo di un'applicazione è di natura sistemistico e integrato, con un elevato livello di automazione dominante in tutte le fasi che si articolano dalla definizione delle specifiche a quella di prototipazione e test finale. Il modello è il punto centrale intorno a cui ruota tutto il processo di progettazione. Questo è la realizzazione funzionale delle specifiche scritte da cui parte la progettazione tradizionale. Il modello implementa le specifiche e consente di verificarne la congruenza e la fattibilità già in fase molto avanzata e in maniera decisamente più economica di quanto consente la progettazione tradizionale.
Dal modello al prodotto
La progettazione model-based concentra nel modello tutto quello che il progettista ha a disposizione nel prototipo. Formalmente sarebbe la stessa cosa, ma nella pratica c'è un'enorme differenza tra i due approcci. Mentre il prototipo della progettazione tradizionale corrisponde alla verifica finale di corrispondenza tra le specifiche e la loro implementazione, il modello della progettazione model-based corrisponde alla verifica iniziale. In tal modo i progettisti sono in grado di verificare i requisiti e le specifiche del progetto in una fase in cui l'investimento, soprattutto in termini di hardware e di software, è ancora limitato mentre i margini di correzione e di revisione delle specifiche sono ancora molto ampi. Modellare non è certamente più facile che prototipare, e può implicare anche un notevole impegno di tempo e di risorse di sviluppo, ma il tempo e le risorse in più impegnate nella fase di modellazione vengono ampiamente compensati dall'elevato livello di automazione che il modello consente di attuare, sia nella generazione del codice, sia nella realizzazione dell'hardware. La generazione automatica del codice di programmazione dei microcontrollori e di programmazione dell'hardware è la componente più importante del processo di automazione della progettazione. La generazione automatica del codice è possibile proprio perché la progettazione si basa sul modello e il modello è completamente definito nel sistema di modellazione.
La progettazione, grazie alla definizione del modello, si attua completamente a livello di sistema, sia in termini di simulazione, sia in termini di implementazione. Gli errori di progettazione possono verificarsi solo al livello di modellazione, mentre nella fase di implementazione non possono essere introdotti errori in quanto l'implementazione non è manuale ma automatica. Quando la progettazione è completa e verificata a livello di modello, la generazione automatica del codice può riguardare direttamente la produzione. Il sistema di modellazione, oltre a generare il codice di programmazione, genera anche i test pattern per la validazione e la certificazione del prodotto finale. Il vantaggio della progettazione model-based sta principalmente nello spostare tutte le problematiche del progetto alla fase iniziale e conseguentemente la loro ricerca ed eliminazione. La simulazione in questo caso viene effettuata usando il modello (molto più economico e maneggevole del prototipo fisico). I potenziali problemi funzionali e di non congruenza con le specifiche vengono evidenziati in una fase, quella della modellazione, in cui gli investimenti sul progetto sono ancora bassi in quanto la fase implementativa, decisamente più costosa per risorse umane e materiali, non è ancora iniziata.
Progettazione model-based di controller
La progettazione dei sistemi di controllo implica la modellazione dell’impianto da sottoporre a controllo automatico. La modellazione dell’impianto consente di eseguire in maniera efficace l’analisi e la sintesi del controller dell’impianto, ne consente la simulazione sia dell’impianto e dello stesso controllore, fino alla completa implementazione. National Instruments, con LabView e il suo hardware real-time, supporta le fasi della modellazione dell’impianto, della progettazione del controller e della realizzazione finale.
Il primo passo della progettazione è quello che porta alla definizione del modello matematico dell’impianto oggetto di controllo (per esempio utilizzando il metodo dell’identificazione di sistema). Stimolando l’impianto e acquisendo dati viene eseguita l’analisi numerica che porta alla stima dei parametri dell’impianto. Strumenti come il System Identification Toolkit sono utilissimi per stimare e creare un modello matematico accurato dell’impianto. La fase di analisi del modello dell’impianto viene supportata dal Contro Design and Simulation Module. Questo modulo consente di identificare la struttura di controller più appropriata. Quindi si può passare alla sintesi del controller più appropriato per ottenere le prestazioni richieste. La parte più interessante di questo processo di progettazione basata sul modello è proprio quella che consente di connettere insieme il modello dell’impianto con il modello del controllore e poter analizzare il comportamento globale. Oltre alla simulazione del funzionamento congiunto impianto-controller, è possibile anche l’emulazione, grazie alla disponibilità di moduli di prototipazione rapida e di hardware-in-loop simulation.
Progettazione model-based per il signal processing
La progettazione di applicazioni di natura signal processing ha caratteristiche di complessità tali che trova nella modellazione l’approccio più produttivo. La realizzazione di un modello è spesso legata a un algoritmo matematico o una serie di algoritmi. Il sistema di modellazione Simulink di Mathworks è un potente strumento di modellazione e simulazione di algoritmi matematici e di processi di elaborazione numerica che consente di progettare a livello di sistema applicazioni complesse ove il segnale è una componente fondamentale.
L’integrazione di Simulink con l’ambiente di modellazione matematica e numerica Matlab e con altri strumenti di progettazione connessi a processori e piattaforme hardware per la prototipazione, consente allo sviluppatore di disporre dell’intero ciclo di progettazione, dal modello al sistema finale, con tutte le necessarie fasi intermedie, tra cui anche la generazione automatica del codice.