Systèmes embarqués

Ref: 3SQ1040

Description

L'objectif de ce cours est de permettre aux étudiants d'appréhender la complexité de la conception des systèmes embarqués dans son ensemble en partant des bases et en développant les connaissances jusqu'aux technologies récemment développées

La thématique des systèmes embarqués est très vaste mais ce cours va essayer de s'organiser autour de 3 idées principales :

1- Tout d'abord d'un point de vue technologique : quelles sont les technologies qui sont utilisées et quelles sont leurs différences principales et dans quel cas utiliser l'une ou l'autre de ces technologies. Il s'agira ici des aspects dits "Matériel"

2- Le 2nd axe est celui des outils et de l'environnement de développement : quand et comment choisir un outil ou un environnement de développement adapté à un cas d'usage spécifique. Nous traiterons principalement ici des aspects dits "Software"

3- enfin le 3e axe est une ouverture vers l'avenir où nous allons appréhender de nouvelles plateformes de développement et de nouvelles approches de conception. Nous allons pour cela se focaliser sur 2 aspects:

a- le premier sont les plateformes matériellement hybride

b- le 2nd aspect est l'utilisation de l'intelligence artificielle mais non plus seulement d'un point de vue logiciel mais surtout d'un point de vue matériel afin d'en optimiser les performances.


Période(s) du cours

SD9

Prérequis

Ce cours requiert un minimum de prérequis :

1- Connaissance minimum en électronique numérique

2- Connaissance minimum en programmation

Syllabus

Ce cours est composé de deux grandes parties:

A- La programmation en langage C

1- Théorie du langage

2- Mise en pratique par approche Projet



B- Les systèmes Embarqués

1 - Les Processeurs: CPU et GPU [Pour n'ayant pas fait l'électif 2A "Architecture des Systèmes Numériques" ]

1.1 Les CPUs: Les éléments constitutifs de base, les architectures majoritairement utilisées en embarqué, le jeux d'instruction, ouverture vers d'autres architectures

1.2 Le compilateur: comment un code "écrit" permet de programmer un processeur ?

1.3 Les processeurs graphiques: Les architectures NVIDIA, le calcul parallèle


1- Le professeur RISC V [Pour ayant fait l'électif 2A "Architecture des Systèmes Numériques" ]

1.1 Zoom sur les familles de processeur RISC
1.2 Le RISC V: Architecture et Spécificités


2 - Les composants spécialisés: FPGA et ASIC

2.1 ASIC et FPGA: Définitions et différences

2.2 Le Flow de conception: comment concevoir et simuler ?

2.3 Optimisation: Etude cas - Contraintes et comparaison


3 - Environnement et outil de développement

3.1 CPU et GPU: Quand, comment et quel langage utiliser avec quelles conséquences? a.k.a Python vs C/C++

3.2 FPGA et ASIC: Les approches de conception et leurs évolutions (HDL vs HLS). Les outils de conception ASIC VS FPGA


4 - Les System on Chip

4.1 Les architecture hybride SoC: définition, philosophie et usages

4.2 Etude cas: le Zynq Book


5 - L'intelligence Artificielle Matérielle ou comment rendre vraiment efficient l'IA dans le monde de l'embarqué

Composition du cours

1- Cours
2- Etude de cas en classe
3- Travail personnel

Ressources


L'apprentissage du langage C  sera fait via une approche de type Projet
Le reste cours sera fait avec une approche d'enseignement classique mais favorisant l'échange durant les séances.


Résultats de l'apprentissage couverts par le cours

1- Acquisition de la connaissance de la programmation en langage C
2- Compréhension de la conception et programmation dans le monde de l'embarqué
3- Acquisition de la vision de l'évolution des technologies et de son impact sur le travail de concepteur actuel
4- Savoir choisir les bons outils de développement en fonction de la situation et du niveau de performance souhaité
5- Aborder l'intelligence artificielle suivant un prisme matériel et non plus seulement logiciel

Support de cours, bibliographie

Les System on Chip: Book and Tutorial
http://www.zynqbook.com/