TP4 - Systèmes embarqués / FPGA (HW/SW verification) Comme la densité des composants FPGA ne cesse de croître, il devient impossible d y attacher les sondes des testeurs industriels. Or le test matériel est une étape indispensable dans la chaine de fabrication des systèmes électroniques. «Xilinx» fournit une solution de rechange avec son outil «ChipScope» qui possède toutes les clés nécessaires pour en faire un analyseur logique robuste. Un peu de logique sera forcément sacrifiée pour embarquer les outils nécessaires dans le composant pour servir d interface entre le composant et la fenêtre graphique. «Chipscope» possède quatre outils : 1. Icon (Integrated Controller) : bloc de contrôle qui peut commander jusqu à 15 ILA ou VIO 2. ILA (Integrated Logic Analyzer) : analyseur logique 3. VIO (Virtual Input Output) : pour piloter et lire certains signaux d entrées/sorties virtuelles 4. ATC2 (Agilent Trace Core 2) : module spécialement dédié au branchement d un vrai analyseur logique du fabricant «Agilent» Ce TP a pour objectif de mettre en œuvre cet analyseur logique «ChipScope» sur la plateforme matérielle et le soft du TP précédent (tp3). La partie matérielle va subir un léger «lifting» puisqu il faut embarquer un minimum de logique pour accéder aux signaux internes et mémoriser les échantillons souhaités. Les blocs suivants seront ajoutés à la plateforme, avant d être configurés. Le Trigger sera initialisé de façon à déclencher l enregistrement quand une certaine valeur apparaît sur les bus de données, d adresses ou de contrôle. 1
Partie matérielle 1. Créer une copie du répertoire tp3 et le renommer tp4. 2. Effacer le répertoire SDK qui est sous tp4, un nouveau sera généré. 3. Démarrer XPS 13.2 et ouvrir le projet tp4. 4. Debug >> Debug configuration : pour configurer les outils de «Debug». 5. Faire Add Chipscope Peripheral : pour ajouter les blocs nécessaires à l analyse 6. Choisir l option to monitor PLB bus signals : pour capturer les signaux des bus 7. Cocher Bus Write Data Signals et fixer le nombre d échantillons à 1024 2
8. Dans le volet Advanced, choisir la configuration suivante : Match Unit Type = basic. Ce qui signifie que l on choisit un comparateur de type basic : (Basic comparator : Performs = and <> comparisons) 9. Dans la rubrique PLB data, choisir le type extended dans la case Match unit type for the write data bus. Faire la même chose dans la rubrique PLB Adresses. Ce qui signifie que l on choisit un comparateur de type étendu : (Extended comparator : Performs =, <>, >, >=, <, and <= comparisons) 10. On finit par la connexion suivante dans XPS 11. Hardware >> Generate bitstream : pour compiler la plateforme matérielle. 12. Une fois le fichier system.bit généré, exporter la plateforme matérielle vers SDK (Eclipse). 3
Paramétrage SDK et ChipScope 1. Normalement un projet sera ouvert avec les 3 répertoires (sources, drivers, hardware) 2. Xilinx Tools >> Program FPGA : pour charger le fichier «system.bit» dans le composant 3. Run >> Debug : pour ouvrir la fenêtre de «Debug», le «Debugger» pointe la première instruction de la fonction main() et attend. 4. C est le moment où il faut lancer l analyseur logique ChipScope : Démarrer >> Programmes >> Xilinx ISE 13.2 >> ChipScope Pro >> Analyzer 5. Clic sur Open Cable/Search JTAG Chain 6. File >> Import : pour importer le fichier de définition et de connexion de ChipScope (.cdc). Ce fichier contient les signaux associés au module ChipScope qui a été choisi. 7. Dans la fenêtre «waveform» ne garder que les signaux suivants 8. Pour inverser le sens des bus : clic droit >> reverse Bus order 4
Vérification «Hardware/Software» 1. Paramétrer le Trigger pour qu il déclenche la saisie de 32 échantillons lorsque le CPU écrit une valeur supérieure à 7 dans le Gpio LED : a. Mettre le bit PLB_RNW de TRIG0 à 0 b. Changer le «Radix» de M1 et M2 en mode Hexa c. Fixer la valeur de TRIG1 = adresse de LED (xparameters.h) et TRIG2 > 0000_0007 d. Dans Trigger Condition Equation enter la condition : M0 & M1 e. Dans Storage Qualification enter la valeur : M0 & M1 & M2 f. Fixer le nombre d échantillons à 64 2. Trigger Setup >> run : pour armer le Trigger (il attend que les conditions soient favorable) 3. Retourner dans SDK et faire run (F8) pour lancer l exécution 4. Basculer immédiatement sur Chipscope pour voir le début de la capture 5. Rechercher dans le fichier «xuart_l.h» l adresse du registre de transmission. Configurer Chipscope pour déclencher l enregistrement dès le début d écriture sur le port série. Visualiser le message transmis sur le bus de données. Comparer au message envoyé dans le programme «main». 6. Debug >> Debug configuration : pour reconfigurer l analyseur de bus (Integrated Bus Analyser) pour valider «Bus read data signals». Faire les étapes suivantes jusqu à l analyse sous ChipScope. 7. Modifier la boucle sans fin de la fonction main() pour lire et afficher l état des switchs sur les LED. Configurer les Trigger de Chipscope pour déclencher l enregistrement lorsque la valeur «0101» est lue sur les switchs. 5
8. Retourner à la plateforme matérielle et ajouter un analyseur de logique (Integrated Logic Analyser) et choisir les signaux logiques à sonder. Sous ChipScope, on aura deux sondes (IBA et ILA). On pourra basculer de l une à l autre 6