Logiciels Libres et Systèmes Embarqués


2.2. FPGA et PowerPC 405

Un "Field-Programmable Gate-Array" (FPGA) est une puce comprenant des cellules logiques programmables[3] composées (selon leurs programmations) de bascules D, de RAM, ou de "Look-Up Table" (LUT). Configurer un FPGA est le fait d'interconnecter ces cellules logiques et de les programmer, afin de créer un circuit intégré contenant la logique souhaitée.

Cette puce permet de concevoir un ou plusieurs "System-on Chip" (SoC) dont les périphériques sont réalisés grâce aux cellules logiques programmables. En ce qui concerne le logiciel, il existe deux types de processeurs pour les FPGA Xilinx :

  • MicroBlaze, qui comme les périphériques est composé des cellules logiques programmables
  • PowerPC 405, qui est fondu dans la puce

Les FPGA Xilinx Virtex-II Pro et Virtex-4 FX contiennent un ou plusieurs PowerPC 405 [5]. Ce sont des processeurs IBM 32 bits de type Harvard, c'est-à-dire qu'ils sont munis d'un cache d'instructions séparé du cache de données pour permettre la pseudo-parallélisation[4] des instructions. Ils possèdent chacun leur propre "Memory Management Unit" (MMU), capable de gérer des pages de tailles variables (de 1 Ko à 16 Mo), afin de séparer l'espace d'adressage des processus, apportant ainsi une protection matérielle lors des accès mémoire. Même s'il y a plusieurs PowerPC 405 sur certains modèles de FPGA Xilinx, il n'est pas possible de faire une architecture multi-processeurs puisqu'ils ne possèdent pas d'espion de cache pour assurer la cohérence des données. Il est toutefois possible de les faire interagir entre eux et même de leur faire partager certaines portions de code (voir chapitre B).

Les périphériques communiquent avec le processeur PowerPC 405 selon l'architecture CoreConnect d'IBM. Cette architecture se compose de trois bus :

Processor Local Bus (PLB)

bus principal à haut débit permettant d'interfacer directement les périphériques à haute-vitesse avec le processeur

On-chip Peripheral Bus (OPB)

bus secondaire à plus faible débit permettant d'interfacer les périphériques à basse-vitesse avec le bus PLB

Device Control Register bus (DCR)

ce bus permet de configurer les périphériques tout en économisant la bande passante des bus PLB et OPB

Il existe un autre bus qui se connecte directement au PowerPC 405, mais qui ne fait pas partie de l'architecture CoreConnect, il s'agit du bus "On-Chip Memory" (OCM). Celui-ci permet de connecter directement au processeur la mémoire présente dans la puce. Pour cette démonstration, les blocs de RAM du FPGA (BRAM) seront utilisés avec ce bus OCM.

Figure 2.3. Illustration de l'architecture CoreConnect dans les FPGA Xilinx

Illustration de l'architecture CoreConnect dans les FPGA Xilinx



[3] "Configurable Logic Block" (CLB) en anglais.

[4] "pipeline" en anglais.