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.
Recherche sur Google Images :
Source image : eece.unm.edu Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur. |
Page(s) en rapport avec ce sujet :
- Le MicroBlaze est un "Soft" processeur destiné aux familles Virtex et Spartan de .... Ce dernier est connecté au bus OPB du MicroBlaze et fonctionne à une..... frequency as 50 MHz, and On-chip HIW debug module as the debug interface.... (source : archipel.uqam)
- Le MicroBlaze est un microprocesseur RISC que.... (Rc+S) : Le MicroBlaze réalise une lecture sur le bus à l'adresse du registre de ...... (9 et 100 MHz respectivement). Ils sont intégrés comme sub-NoC1 et sub-NoC2.... (source : tel.archives-ouvertes)
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 choisies.
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, sert à lier plusieurs maîtres à plusieurs esclaves. Il autorise un maximum de 16 maîtres et un nombre d'esclaves infini selon les ressources disponibles. Xilinx conseille néanmoins un maximum de 16 esclaves. Comme ce bus est multi maîtres, il a par conséquent une politique d'arbitrage paramétrable. Ce bus permet par conséquent 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é essentiellement 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).
Fast Simplex Link (FSL)
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 quand la FIFO du bus FSL est saturée et bread se bloque quand la FIFO est vide. Il doit y avoir un bwrite pour débloquer la lecture. Les communications sur les liens FSL se font particulièrement simplement grâce à des instructions prédéfinies. Elles peuvent atteindre les 300 Mo/s à 150 Mhz.
Xilinx Cache Link (XCL)
Le lien XCL est un lien FSL spécifique, 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 apportés avec le MicroBlaze, pour former un microcontrôleur complet et personnalisable. Il y a, entre autres :
|
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 dispositif 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 license 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
Pour créer des applications embarquées, Xilinx a développé un outil de développement nommé EDK (Embedded Developpement 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 la totalité.
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 : quand le dispositif 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, pour 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 particulièrement 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 suivant les 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, mais aussi débug logiciel, avec le même lien JTAG
EDK
Cet environnement sert à développer une application complète à processeur embarqué et de l'intégrer à un FPGA. EDK donne accès à l'ensemble des réglages nécessaires pour l'application embarquée qu'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, complètement 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
Liens externes
- MicroBlaze sur le site web Xilinx (page officielle du Microblaze)
- æMB (clone libre du Microblaze, hébergé sur OpenCores. org)
- OpenFire (clone libre du Microblaze, rédigé par Stephen Craven)
- MicroblazeSim (Simulateur SystemC libre pour Microblaze, hébergé sur sourceforge. net)
- (en) Site officiel de FreeRTOS
- (en) port Microblaze de FreeRTOS
- (en) port Microblaze de Linux
- Open Source TCP/IP stack avec pour exemple un Webserver sur une Xilinx Spartan
Références
- ↑ Code source fermé (7ème question) http ://www. xilinx. com/products/design_resources/proc_central/microblaze_faq. pdf
- ↑ Les 70 options de configuration http ://www. xilinx. com/tools/microblaze. htm
- ↑ Performances http ://www. xilinx. com/products/design_resources/proc_central/microblaze_per. htm
- ↑ Code source fermé (7ème question) http ://www. xilinx. com/products/design_resources/proc_central/microblaze_faq. pdf
- ↑ Les 70 options de configuration http ://www. xilinx. com/tools/microblaze. htm
- ↑ Performances http ://www. xilinx. com/products/design_resources/proc_central/microblaze_per. htm
Recherche sur Amazone (livres) : |
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 07/04/2010.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.