Nuova ricerca

Stefano CATTINI

Professore Associato
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Hardware and Software Co-Design

Electronics engineering (Offerta formativa 2024)

Obiettivi formativi

Per gli obiettivi formativi si rimanda alla sezione relativa ai risultati di apprendimento attesi.

Prerequisiti

Conoscenze di base di elettronica analogica e digitale, fondamenti di progettazione analogica (es. condizionamento di un segnale), conoscenze di base di informatica con particolare riferimento alle basi della programmazione in linguaggio C, conoscenze di base di controlli automatici, convertitori statici di energia ed azionamenti elettrici.

Programma del corso

1. Hardware/Software Co-design: Problematiche e metodologia di HW/SW co-design. Concetti di Platform-based design. Definizione dell'architettura di sistema e valutazione di alternative progettuali. Criteri di HW/SW partitioning (0.25 CFU)
2. Definizione delle Specifiche di Progetto e Model Based Design: Metodologie di progettazione, flusso di progettazione, modelli, metriche (0.25 CFU)
3. Microcontrollori: sviluppo firmware, programmazione C vs. programmazione grafica (1.5 CFU)
4. Introduzione al PCB design, concetti fondamentali : piste, vias, clearance, piani, packages, pads. (1 CFU)
5. Design schematico: entry, confronto con datasheet, creazione di libreria e schematico gerarchico (1.5 CFU)
6. Sbroglio : Piazzamento, connessioni, controllo lunghezza e impedenza, importazione di package commerciali e Bill of Materials (1.5 CFU)

In base al feedback degli studenti e/o eventuali attività integrative (es. seminari di approfondimento) potrebbero esserci variazioni sul tempo dedicato ai singoli contenuti, ma non sugli argomenti.

Metodi didattici

Il corso prevede sia lezioni teoriche di didattica frontale in aula che esercitazioni pratiche in laboratorio dedicate alla progettazione e realizzazione di un sistema embedded completo sia dal punto di vista hardware che software.
Durante il corso verranno utilizzate sia tecniche analitiche che software specifici come simulatori e CAD circuitali per la progettazione di sistemi elettronici ed ambienti di sviluppo ad hoc per la programmazione software/firmware di microcontrollori.
L’insegnamento è erogato in lingua inglese.
Le lezioni saranno in presenza.
La frequenza non è obbligatoria ma è consigliata.

Testi di riferimento

ITA: Oltre alle dispense del corso, ai manuali di riferimento e alle schede tecniche dei microcontrollori e di ogni altro strumento di progettazione utilizzato durante le attività di laboratorio, vengono suggeriti i seguenti libri di testo per l’approfondimento dei vari argomenti.
Dispense del corso, materiale di approfondimento e il codice sorgente degli esercizi mostrati e svolti durante le esercitazioni di laboratorio corso saranno disponibili su Moodle nella pagina riservata al corso.

ENG: The following textbooks are suggested in addition to the course handouts, reference manuals and datasheets of the microcontrollers and any other design tool used during the lab activities.
Course handouts, in-depth material and the source code of the exercises shown during the laboratory activities will be available on the course’s page on Moodle.

Embedded System Design; Peter Marwedel, Ed. Springer, 2011, ISBN-10: 9400702566, ISBN-13: 978-9400702561.

R. Aarenstrup, «Managing Model Based Designs», Published by The MathWorks, Inc.,
ISBN-13: 978-1512036138, ISBN-10: 1512036137, FREE DOWNLOAD

P. Schaumont, «A Practical Introduction to Hardware/Software Codesign», Springer, 2013, ISBN 978-1-4614-3736-9 ISBN 978-1-4614-3737-6

J. Beningo, «Reusable Firmware Development: A Practical Approach to APIs, HALs and Drivers», APress, 2017, ISBN 978-1-4842-3296-5

J. You, “The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors”, 3rd ed., 2014, ISBN 978-0-12-408082-9

T. Martin “The Designer’s Guide to the Cortex-M Processor Family”, 3rd ed., 2023, 978-0-323-85494-8

Verifica dell'apprendimento

Durante il corso, gli studenti si dividono autonomamente in gruppi di lavoro (3-4 studenti massimo per gruppo) con lo scopo di progettare e realizzare un prototipo funzionante di sistema embedded per un'applicazione a propria scelta o eventualmente assegnata dal docente.

La valutazione dell'apprendimento si compone di 3 parti.
Il voto finale è dato dalla somma dei punteggi ottenuti in ciascuna delle 3 parti come dettagliato di seguito.

Parte1: Valutazione di una relazione tecnica prodotta dal gruppo per valutare le abilità degli studenti di lavorare in gruppo, formulare giudizi e scelte informate e comunicare conoscenza e comprensione. I criteri di valutazione dell’elaborato riguardano: struttura e chiarezza del report (es. approccio top-down con descrizione generale del sistema e successiva descrizione della progettazione di dettaglio dei vari blocchi funzionali); correttezza (anche formale) di rappresentazione dei diagrammi di flusso e macchine a stati a corredo dei relativi firmware realizzati; motivazione delle scelte progettuali effettuate; struttura del codice C; implementazione di meccanismi di gestione errori relativi ad eventuali malfunzionamenti del sistema progettato, chiarezza nella definizione del protocollo di comunicazione, correttezza degli schemi elettrici e dei file gerber.

Parte 2: Una presentazione orale per gruppo con una discussione tecnica del progetto proposto e una dimostrazione dal vivo del corretto funzionamento del prototipo realizzato. Durante la presentazione ogni membro del gruppo presenta una parte dell'intero progetto allo scopo di valutare le sue capacità nel formulare giudizi e scelte consapevoli, nel comunicare conoscenza e comprensione (Durata totale 25-30 min).

Parte 3: Prova orale individuale riguardante gli aspetti più teorici del corso (Durata massima 20 min per studente).

Per ogni studente, il voto finale risulta dalla somma del voto comune ottenuto dal proprio gruppo nella parte 1 (fino a 25/30), voto individuale ottenuto nella parte 2 (± 1/30) e voto individuale ottenuto nella parte 3 (fino a ± 4/30).

Esempio di calcolo del voto finale per lo Studente 1 del Gruppo A.
Parte 1=> Progetto Gruppo A (report + verifica corretto funzionamento prototipo)=> voto +23/30; (comune a tutti i membri del gruppo)
Parte 2 => Presentazione/esposizione parte di progetto e discussione tecnica => voto -1/30; (individuale)
Parte 3 => Orale => voto +3/30 (individuale)
Voto finale per lo Studente 1 del Gruppo A = 23-1 + 3 = 25/30

Non sono previste prove intermedie e gli esami si terranno solo nelle date fissate, comunicate con largo anticipo attraverso i canali abituali. In base al numero di iscritti potranno eventualmente essere definiti per un appello dei turni d’esame
Presentazione e discussione tecnica del progetto, live demo del prototipo funzionante ed orale si terranno lo stesso giorno per tutti i membri del gruppo.
Il report e i relativi file di progetto (es. Codice C, schematici, ecc..) devono essere consegnati una settimana prima della data d’esame scelta, in coincidenza con il termine ultimo di iscrizione all’appello scelto.

Risultati attesi

Il corso si pone l’obiettivo di fornire gli strumenti necessari ad affrontare tutte le fasi di progettazione e sviluppo di un sistema embedded, dalla definizione delle specifiche dell'applicazione da realizzare fino alla realizzazione e al test del prototipo. Con riferimento ai descrittori di Dublino, i risultati di apprendimento attesi possono essere così riassunti:

Conoscenza e capacità di comprensione: comprendere e applicare i concetti base di HW/SW Co-design; comprendere e applicare metodologie di progettazione e definizione delle specifiche di un sistema embedded; comprendere e applicare metodologie di sviluppo firmware per un microcontrollore; comprendere e applicare tecniche di progettazione di circuiti stampati

Capacità di conoscenza e comprensione applicate: analizzare, valutare e definire le specifiche funzionali di un sistema embedded tramite opportune metodologie di progettazione; progettare e realizzare firmware per microcontrollori utilizzando ambienti di sviluppo specifici (IDE) e tool di programmazione grafica;
progettare circuiti elettronici e PCB utilizzando simulatori e CAD circuitali

Autonomia di Giudizio: analizzare e valutare alternative progettuali anche in caso di specifiche di progetto incomplete. Organizzare coerentemente con le valutazioni fatte le varie fasi di sviluppo di un progetto, anche complesso.

Abilità Comunicative: Comunicare in modo chiaro le conoscenze e le capacità di comprensione acquisite. Utilizzare in maniera corretta e appropriata linguaggio, concetti e modelli acquisiti per discutere efficacemente delle soluzioni relative a tutti gli aspetti di un progetto di sistema embedded (anche complesso) sia ad interlocutori specialisti che non specialisti. Essere in grado di lavorare in gruppo.

Capacità di apprendimento: Applicare una metodologia efficace di studio sia individuale che di gruppo che permetta di affrontare e risolvere problemi anche complessi. Aggiornare in autonomia le conoscenze e le capacità di comprensione relative ad aspetti specifici di un progetto o in risposta a cambiamenti legati all’evoluzione tecnologica.