Systèmes embarqués
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
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.1 Zoom sur les familles de processeur RISC1.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é