M2

CM n°1

Outils de conception des systèmes embarqués

Elements de base

Quelques composants matériels

Il est composé de centaines de coeurs tournant à une vitesse nettement inférieure à celle du CPU.

Ils utilisent des architectures mémoires capables d'extraire plusieurs données ou instructions en même temps.

Il est configuré en écrivant des programmes avec des langages de description matériel (HDL : Hardware Description Language) comme le VHDL, Verilog ou SystemC.

Il consomme peut d'énergie par rapport à un CPU ou un GPU

Comparaison de FPGA et ASIC

ASIC est destiné pour une application spécifique tant dis que FPGA est un circuit programmable.

De ce fait, ASIC ne peut plus être modifié une fois créé alors qu'un FPGA le peut.

Note : FPGA est la plateforme de prototypage de ASIC.

FPGA est meilleur que ASIC lorsqu'il s'agit de construire des circuits de production a faible volume.

En résumé

System on Chip (SoC)

Un SoC est un système complet embarqué sur une seule puce.

Le système peut comprendre de la mémoire, un ou plusieurs micro-processeurs, des périphériques d'interface ou tout autre composant nécessaire pour la fonction attendue.

Exemple : Xilinx Zynq (CPU + FPGA), Texas Instrument 66 AK2Hxx (CPU + DSP)

Choix de la technologie

En plus de l'avantage de chaque composant, il faut prendre en compte d'autres facteurs qui entrent en compte pendant la réalisation :

Composant Programmabilité Temps de dev Coût de dev MOps/mW
FPGA ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗
FPGA + CPU
DSP + CPU
CPU ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

Partitionnement logiciel / matériel

Le diagramme de flux de données (Data Flow Diagram) est une représentation graphique utilisé comme outil préliminaire permettant de réaliser un aperçu d'un système avant sa réalisation.

Il est également utilisé pour visualiser le traitement des données (quelles sont les entrées et comment elles sont traitées).

Note: C.f diapo 33 pour un exemple de diagramme

Exploration de l'espace de solutions

Note: C.f. diapo 35 à 40 pour un exemple d'exploration d'espace de solutions avec le sac à dos et spécifiquement le 40 pour la technique des points de Pareto.

A partir du flux d'une application, on :

  1. Détermine les combinaisons de partitionnement
  2. Ordonnance l'exécution en fonction de dépendances
  3. Estime le temps d'exécution
  4. Calcul l'équation de l'objectif
  5. Refait un nouveau partitionnement

Exemples de méthodes de partitionnement :

FPGA et Xilinx Tools

Une architecture FPGA est composé de plusieurs éléments dont :

CLB : Configurable Logic Block

Ils contiennent deux portions ou plus et sont connectés à une matrice de commutation pour se connecter aux autres ressources de l'architecture FPGA.

Une portion de CLB

Une portion de CLB est composée de :

Une Lookup table est juste un tableau contenant toutes les combinaisons possibles entre différentes variables et le résultat de ces combinaisons, à la manière d'une table de vérité. Il s'agit d'un cache (comme pour les gâteaux de ma grand mère jeune homme !).

Par exemple, pour une fonction booléenne entre 3 variables :

A B C Sortie
0 0 0 0
1 0 0 0
... ... ... ...

BRAM : Block RAM

Il s'agit d'un composant mémoire sur la puce permettant de construire la mémoire / FIFO avec un port simple ou double. Il est organisé en un bloc de 36kb ou deux blocs de 18kb.

DSP Slice

Ils sont utilisés pour les opérations de multiplications ou divisions ainsi que pour les opérations de multiplication/accumulation (MAC). Ces dernières sont utiles dans les applications de traitement de signaux (comme vu plus haut).

FPGA Design Flow

Pour réaliser un composant FPGA, on passe par plusieurs étapes :

La phase de synthèse synthétise les fichiers HDL pour créer des fichiers netlist :

Après l'étape de synthèse, arrive l'étape d'implémentation qui se décompose en trois phases :

Une fois l'implémentation terminé, il faut générer un fichier de bitstream avec l'extension .bit qui sera ensuite téléchargé sur le composant FPGA.

Evolution du développement

Logiciel

On a dans un premier temps le langage machine, celui du processeur, qui est représenté sous forme binaire. Le langage assembleur permet de représenter le langage machine dans un format compréhensible par un humain même s'il reste de très bas niveau. Par dessus ce langage assembleur, les langages de plus hauts niveaux peuvent être implémentés comme le C par exemple.

Matériel

On part des schémas avec les portes logiques pour arriver à un langage plus compréhensible des humains permettant de décrire le fonctionnement matériel d'un système comme le VHDL par exemple. Par dessus ces langages de description du matériel (HDL : Hardware Description Language), on retrouve des outils d'analyse (HLS tools : High-Level Synthesis tools)