Application de composition d'images

Introduction

Nous voulons construire un SoC permettant de réaliser, en temps réel, la composition de textures graphiques. Ces textures (objets graphiques rectangulaires) pourront subir des transformations affines, avoir un certain degré de transparence et avoir une forme définie par un pochoir (masque binaire). De plus l'opération de composition pourra (à la demande) être accompagnée d'un filtrage pour éviter des effets de crénelage sur les bords d'objets .

Au moins une de ces texture sera un flux vidéo, c'est à dire une succession de textures subissant la même transformation.Une application potentielle d'un tel circuit est l'affichage de menus et logos sur un écran de télévision conjointement à l'affichage de la vidéo. 

Des explications plus poussées se trouvent dans les transparents de présentation, ainsi que dans la documentation de l'application de composition.

Un modèle logiciel de l'application de composition

Vous le trouverez dans le dépot  GIT de l'application

git clone elec342@git.comelec.enst.fr:application

Il s'agit d'un modèle en C, pouvant servir de référence pour une intégration rapide dans SocLib. Le code a été structuré pour bien distinguer le rôle du processeur (préparation d'une description d'une scène graphique) du rôle de l'accélérateur de composition (réaliser effectivement la composition).

Vous pouvez tester l'application,  elle génère 2 images png correspondant par exemple à deux images vidéo consécutives envoyées en sortie du SoC.

Travail demandé (rapport à fournir)

Le premier travail demandé est un travail d'architecture et d'évaluations de performances. 

Il vous est demandé de fournir un premier rapport comportant :

  1. Une architecture générale du SoC faisant apparaitre clairement les flux de données entre les différents maîtres et esclaves du système
  2. Une évaluation quantitative des flux de données transitants sur le bus pour chaque image générée
  3. Une évaluation qualitative de la puissance de calcul nécessaires aux différentes unités du système de composition (CPU / coprocesseur)
  4. Une définition des rôles et taille des structures de données stockées dans la mémoire SDRAM externe
  5. Une évaluation quantitative des blocs de mémoire interne nécessaires dans chaque bloc de traitement matériel
  6. Une évaluation qualitative de la marge de sécurité disponible sur le bus du système (taux d'utilisation)

Le document, plus qu'un simple tableau de chiffres doit:

  • être argumenté et en "bon français" sans dépasser quelques pages pour le moment.
  •  servir de document de référence par la suite, et sera éventuellement amendé et enrichi à mesure de l'avancement des travaux. 

Toute  modification devra pouvoir être clairement identifiée dans le document final.

Spécifications techniques à respecter 

Scénario

Nous considérerons un  scénario typique:

  • Un flux vidéo VGA /60Hz  en niveau de gris entrant/sortant
  • Une moyenne de 2 textures composées par pixel généré dans l'image sortante

Le CPU

Le LM32 est un processeur ralelativement simple. Il dispose d'un multiplieur entier cablé mais pas d'unité de calcul flottant. Sa fréquence d'horloge est de 100Mhz.

L'accès à la SDRAM depuis le bus Wishbone

Le bus a une fréquence de 100Mhz. Pour tenir compte des problèmes de latence on utilisera les chiffres suivants pour les estimations de débit:

  • En écriture : une donnée 32 bits par cycle.
  • En lecture  : une donnée 32 bits tous les deux cycles.

Ces débits ne peuvent être garantis que si les lectures et écritures se font par  paquets (4 à 8 mots).

L'arbitre étant round-robin, c'est aux maître d'être "fair play" : il ne faut pas monopoliser le bus pendant de longues séquences de transferts.

Les mémoires internes au Soc

Les SRAM (mémoires statiques) peuvent être utilisées dans les éléments du  SoC. Elles sont,par exemple; utilisées dans les caches du processeur. Gardez à l'esprit qu'elles sont très coûteuses en terme de surface et de consommation. En d'autre termes, vous pourrez stocker dans le SoC des blocs de quelques Koctets de données, quelques lignes d'images, mais EN AUCUN CAS, une image vidéo entière.