Accueil🇫🇷Chercher

Microblaze

Le MicroBlaze est un cœur de processeur softcore 32 bits de la société Xilinx. Il est conçu pour être implémenté sur les FPGA de ce fabricant. Le code source de MicroBlaze est fermé[1].

Architecture

Architecture générale

Le MicroBlaze est un microprocesseur softcore RISC, d'architecture Harvard, entièrement 32 bits. En effet, il possède :

  • 32 registres internes de 32 bits,
  • un bus instructions interne (ILMB),
  • un bus donnĂ©es interne (DLMB),
  • un bus d'instructions externe (IOPB),
  • un bus de donnĂ©es externe (DOPB).

Le processeur comporte 70 options de configuration[2] permettant à l’utilisateur de sélectionner ou de paramétrer les composants internes selon ses besoins :

  • un pipeline Ă  3 ou 5 niveaux,
  • utilisation des multiplieurs câblĂ©s du FPGA (sauf sur Spartan II)
  • opĂ©rateur de division
  • opĂ©rateur de dĂ©calage (Barrel Shifter)
  • FPU (Floating Point Unit)
  • mĂ©moires cache instructions et donnĂ©es
  • logique de dĂ©bug (hardware breakpoints)

En 2006, il occupait entre 900 et 2600 'logic cells' et atteignait une fréquence maximale de 80 à 180 MHz selon la plateforme FPGA et les options sélectionnées.

FPGA Taille Fréquence Dhrystone 2.1
Virtex-4 (4VLX25-12) 1 269 LUTs 180 MHz 166 DMIPS 0.92 DMIPS/MHz
Virtex-II Pro (2VP20-7) 1 225 LUTs 150 MHz 138 DMIPS 0.92 DMIPS/MHz
Spartan-3 (3S1500-5) 1 318 LUTs 100 MHz 92 DMIPS 0.92 DMIPS/MHz

En 2009, MicroBlaze v7.10 peut atteindre une fréquence de 105 à 235 MHz selon la plateforme FPGA[3] :

FPGA Configuration Taille Fréquence Dhrystone 2.1
Spartan-3 (3SD1800A-5)pipeline Ă  5 niveaux 1 809 LUTs 105 MHz 125 DMIPS 1.19 DMIPS/MHz
Spartan-3 (3SD1800A-5)pipeline Ă  3 niveaux 1 324 LUTs 115 MHz 110 DMIPS 0.95 DMIPS/MHz
Virtex-5 (5VLX50)pipeline Ă  5 niveaux, sans MMU 1 027 LUTs 235 MHz 280 DMIPS 1.19 DMIPS/MHz

On-Chip Peripheral Bus (OPB)

Le bus OPB, conçu par IBM pour ses microcontrôleurs PowerPC, permet de lier plusieurs maîtres à plusieurs esclaves. Il autorise un maximum de 16 maîtres et un nombre d’esclaves illimité selon les ressources disponibles. Xilinx conseille néanmoins un maximum de 16 esclaves. Comme ce bus est multi maîtres, il a donc une politique d’arbitrage paramétrable. Ce bus permet donc d’ajouter des périphériques au MicroBlaze dont les besoins en communications seront faibles.

Local Memory Bus (LMB)

Le bus LMB est un bus synchrone utilisé principalement pour accéder aux blocks RAM inclus sur le FPGA. Il utilise un minimum de signaux de contrôle et protocole simple pour s’assurer d’accéder à la mémoire rapidement (un front d’horloge).

Le MicroBlaze comporte 8 liens entrĂ©es/sorties FSL. Le bus FSL est un moyen rapide de communication entre le processeur et une autre entitĂ©. Chaque lien FSL 32 bits est unidirectionnel (simplex) et met en Ĺ“uvre une FIFO (pour stocker les donnĂ©es) et des signaux de contrĂ´le (FULL, EMPTY, WRITE, READ, …). Il met aussi Ă  la disposition du dĂ©veloppeur plusieurs fonctions intĂ©ressantes dont les plus utilisĂ©es sont : “microblaze_bwrite_datafsl” et “microblaze_bread_datafsl”. Ces deux fonctions permettent d'Ă©changer des donnĂ©es entre diffĂ©rents microblazes, par exemple, en utilisant la FIFO dĂ©jĂ  intĂ©grĂ©e dans le bus FSL. Ces deux fonctions sont bloquantes; bwrite se bloque lorsque la FIFO du bus FSL est saturĂ©e et bread se bloque lorsque la FIFO est vide. Il doit y avoir un bwrite pour dĂ©bloquer la lecture. Les communications sur les liens FSL se font très simplement grâce Ă  des instructions prĂ©dĂ©finies. Elles peuvent atteindre les 300 Mo/s Ă  150 MHz.

Le lien XCL est un lien FSL particulier, dédié à la connexion d'un contrôleur mémoire externe avec la mémoire cache interne. Ceci permet au contrôleur de cache de ne pas être ralenti par la latence du bus OPB.

Périphériques

De nombreux périphériques sont fournis avec le MicroBlaze, afin de constituer un microcontrôleur complet et personnalisable. Il y a, entre autres :

  • contrĂ´leur mĂ©moire (SRAM, Flash)
  • contrĂ´leur mĂ©moire SDRAM
  • UART lite
  • Timer/compteur avec fonction PWM
  • interface SPI
  • contrĂ´leur d'interruptions
  • GPIO (entrĂ©es-sorties gĂ©nĂ©riques)
  • convertisseurs A/N et N/A Delta-Sigma
  • DMA

De plus, des périphériques payants sont proposés en version d'évaluation, qui ont la particularité de ne fonctionner que quelques heures :

Systèmes d'exploitation

Xilinx MicroKernel

Ensemble de bibliothèques permettant d'obtenir des fonctions basiques de système d'exploitation :

  • pilotes de pĂ©riphĂ©riques
  • sĂ©quencement de tâches
  • système de fichiers FAT
  • pile TCP/IP (avec le logiciel libre lwip)

uClinux

Portage réalisé par le Dr John Williams de l'université de Brisbane (Australie) et par la communauté d'utilisateurs. La société Petalogix assure le support commercial. L'absence de MMU ne permet pas d'utiliser le noyau Linux standard, mais µCLinux (Linux pour microcontrôleurs) est conçu pour contourner cette limitation.

FreeRTOS

Il existe un port du système temps réel FreeRTOS pour Microblaze (cf. liens externes), disponible comme FreeRTOS sous licence GPL modifiée. FreeRTOS est nettement plus léger que linux/uclinux mais a moins d'applications et de pilotes.

Systèmes commerciaux

  • Accelerated Technology Nucleus
  • Express Logic ThreadX
  • Micriµm µC/OS-II RTOS
  • eSOL µITRON4.0
  • RealFast AB Sierra RTOS

Outils de développement

Afin de créer des applications embarquées, Xilinx a développé un outil de développement appelé EDK (Embedded Development Kit). Il s'agit en fait d'une collection de scripts Tcl/Tk liant divers outils en ligne de commande, et d'une interface graphique couvrant l'ensemble.

Méthode de développement

Un processeur soft-core présente la particularité d'une programmation à deux niveaux :

  • configuration matĂ©rielle du FPGA pour associer un (ou des) processeur(s) et des pĂ©riphĂ©riques,
  • programmation logicielle sur ce(s) processeur(s).

Cette spécificité nécessite des outils de développement adaptés, et présente plusieurs avantages :

  • dĂ©marche de codesign,
  • homogĂ©nĂ©itĂ© entre matĂ©riel et logiciel (interfaces et mapping logiciels gĂ©nĂ©rĂ©s par les outils hardware),
  • possibilitĂ© de faire une simulation HDL du processeur et de ses pĂ©riphĂ©riques (bien que ce soit une opĂ©ration longue),
  • possibilitĂ© de prĂ©-chargement du code rĂ©sidant en RAM interne lors de la configuration du FPGA : lorsque le système se "rĂ©veille" Ă  la mise sous tension, une partie du code est dĂ©jĂ  prĂ©sente en mĂ©moire.
  • synchronisation entre le module de dĂ©bug (MDM) et l'"analyseur logique virtuel" ChipScope, afin de mener un dĂ©bug combinĂ© matĂ©riel/logiciel.

Bien que la chaîne de développement logiciel (outils GNU), et les outils de synthèse, placement-routage FPGA soient soit tout à fait standard, des outils spécifiques en amont et en aval sont proposés :

  • Assistant de configuration pour cartes existantes (choix de pĂ©riphĂ©riques et placement des entrĂ©es-sorties selon le routage de la carte)
  • sĂ©lection et assemblage des pĂ©riphĂ©riques
    • choix du processeur
    • connexion des pĂ©riphĂ©riques sur les diffĂ©rents bus, choix des adresses
    • configuration des pĂ©riphĂ©riques
    • dĂ©claration des routines d'interruptions, directement associĂ©es aux pĂ©riphĂ©riques
  • compilation des bibliothèques C en fonction des pĂ©riphĂ©riques et options du processeur (FPU, division) choisis
  • initialisation des mĂ©moires internes dans le fichier binaire de configuration du FPGA
  • tĂ©lĂ©chargement matĂ©riel et logiciel, ainsi que dĂ©bug logiciel, avec le mĂŞme lien JTAG

EDK

Cet environnement permet de développer une application complète à processeur embarqué et de l’intégrer à un FPGA. EDK donne accès à tous les réglages nécessaires pour l’application embarquée que l’on souhaite créer. Il permet la programmation d’un ou plusieurs MicroBlazes et de leurs périphériques. Il va s’occuper de placer les programmes des MicroBlazes en mémoire lors de la programmation du FPGA. Pour plus d’information sur EDK, reportez-vous à la documentation de Xilinx Embedded SystemTools Reference Manual.

EDK est compatible Linux depuis la version 6.2.

GNU

Les outils de programmation du MicroBlaze sont les outils libres et standard du GNU, personnalisés par Xilinx pour le MicroBlaze. On retrouve ainsi GCC, GDB, et les Binutils (ld, as, ar, objdump ...). On peut les utiliser en ligne de commande ou à partir de l'interface graphique. Comme ces outils sont conçus pour un environnement UNIX, en cas d'utilisation sous Windows EDK installe l'environnement Cygwin.

ModelSim

ModelSim est outil de simulation HDL de Mentor Graphics. Une version bridée, ModelSim XE Starter, est disponible gratuitement.

Chronologie des outils de développement

  • MDK 1.9 (fin 2001) Version bĂŞta
  • MDK 2.1 (2002) Première version utilisable, totalement en ligne de commande.
  • MDK 2.2
  • EDK 3.1 (2003) Première version avec interface graphique, commune avec outils PowerPC 405.
  • EDK 3.2
  • EDK 6.1 (2004) Apparition de la mĂ©moire cache et des liens FSL
  • EDK 6.2 Apparition de la FPU
  • EDK 6.3 Apparition des exceptions, dĂ©veloppement logiciel avec Eclipse (logiciel)
  • EDK 7.1 (2005) AmĂ©lioration de la logique de dĂ©bug, des pĂ©riphĂ©riques et mise Ă  jour du compilateur. Pile TCP/IP.
  • EDK 8.1 (2006) Nouvelle interface graphique basĂ©e sur Qt
  • EDK 8.2 (a paraĂ®tre en 2006) Support du Virtex5

Voir aussi

Articles connexes

Liens externes

Références

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.