note d`application du bloc IP VGA
Transcription
note d`application du bloc IP VGA
Note d'application Créer un bloc IP modifié, projet B1 2007-08, Projet B1 CoDesign Conception d'une chaîne de traitement d'image numérique Pour Xilinx EDK V9.1 Sommaire Sommaire - - - - - - - - - 2 I) Créer un projet avec le wizard d'EDK - - - - - - - 3 II) Comment créer un bloc IP - - - - - - 7 III) Comment modifier votre bloc IP 1) Modification de user_logic.vhd 2) led_switch_pushb.vhd 3) led_switch_pushb_v2_1_0.mpd 4) Importer ce nouveau bloc IP avec ses modifications 5) Intégration du bloc IP et création des signaux extérieurs 6) répertoire_du_projet/data/system.ucf 7) Synthèse du hard 8) Génération du soft - - - - 8 9 10 12 13 14 16 17 17 IV) Contact - - - - 19 - - - - - - - - - - - I) Créer un projet avec le wizard d'EDK Choisir un répertoire pour votre projet : Choisir si vous voulez un processeur gravé en HARD (PowerPC) ou un processeur en logique programmé (MicroBlaze). next next next next Le système créé un rapport de synthèse de votre projet : Suivant vos besoin, vous pouvez insérer plusieurs modules dans votre système. Dans le cadre de cette exemple de projet, il vous faudra choisir : −UART pour avoir une communication simple avec l'extérieurpar liason serie en utilisant la fonction «xil_printf » −La RAM DE 256 MB pour mémoriser les images arrivant de la camera et les images à afficher sur l'écran −Dans nos bibliothèques nous avons déjà créé un bloc spécial communiquant avec les LEDs, les switchs et les push boutons placé sur la plaque, nous verrons comment l'insérer dans notre projet. −Vous pouvez rajouter des blocs de timer, il y en a 3 types : Un compteur cyclique qui délivre une impulsion à chaque fin de comptage ,un compteur qui compte, un watchdog. −Le bloc IP Camera −Le bloc IP Master_I2C −Le bloc d'affichage VGA II) Comment créer un bloc IP Exemple avec un bloc IP gérant les push buttons, les switchs et les LEDs. Sélectionner les options du bloc IP que vous desirez : Pour notre exemple, nous utiliserons 3 registres : 1 pour les LED, 1 pour les switchs, 1 pour les push button puis next/next/next/finish Ca y est votre bloc IP est créé. III) Comment modifier votre bloc IP EDK vous génère plusieurs fichier, dans le répertoire −pcores, les fichiers relatifs à la partie Hard, −drivers, les fichiers relatifs à la partie Soft Nous modifierons les fichiers situé dans : pcores/led_switch_pushb_v1_00_a/hdl/vhdl Plan pour la modification du bloc IP : Pour modifier un bloc IP et le réutiliser, il vous faudra respecter les étapes suivantes. 1) user_logic.vhd est le fichier dans lequel vous incorporez votre code VHDL (ou verilog) 2) led_switch_pushb.vhd est le lien entre votre bloc IP et l'extérieur (IO de la carte ou du système). dans pcores/led_switch_pushb_v1_00_a/data/ 3) led_switch_pushb_v2_1_0.mpd est le fichier dans lequel on donne la nature des signaux d'entrée et de sortie de notre bloc IP. 4) Importer ce nouveau bloc IP avec ses modifications 5) Dans l'interface graphique, intégration du bloc IP et création des signaux extérieurs (make external) 6) répertoire_du_projet/data/system.ucf Sont écrites toutes les liaisons physiques des entrées/ sorties du système final. 7) Synthèse du hard 8) Génération du soft Modification du bloc: Pour modifier votre bloc IP, vous avez 2 solutions : − celle où l'on est sur de soi et l'on ne fait pas d'erreur (modification des fichiers par éditeur de texte, compilation et synthèse donc détection d'erreur au final, temps de compilation et simulation assez conséquent. − celle ou l'on préfère s'assurer de ses résultats (syntaxe et synthèse) et simuler son bloc, en utilisant Xilinx ISE, projet ISE créé dans : pcores/led_switch_pushb_v1_00_a/devl/projnav 1) Modification de user_logic.vhd Nous allons rajouter les entrées sorties que l'on veut dans notre bloc IP: avant modification : Apres modification : Nous allons modifier le code, pour utiliser : −le registre 0 pour écrire sur les LEDs (logique inverse), −le registre 1 pour écrire sur les switchs, −le registre 2 pour écrire sur les push buttons (logique inverse), Rappel, le PowerPC est en little indian (0 to 7) Il existe plusieurs façons différentes de modifier et d'intégrer un bloc IP, nous utiliserons une technique simpliste pour pouvoir prendre en main facilement les outils EDK. 2) led_switch_pushb.vhd Ce bloc permet de faire le lien entre le bus OPB, un bloc VHDL appelé IPIF qui gère le protocole du bus OPB et notre user_logic.vhd . Tout d'abord, il faut créer les entrées sorties du bloc. Pour simplifier la prise en main, nous utiliserons les mêmes noms entre le user_logic et ce bloc. Vous remarquerez qu'il y a des emplacements réservé pour la personalisation des blocs IP et simplifier le travail. Pour vous repérer utiliser les numéros des lignes. Maintenant il faut relier nos sorties entre l'extérieur et notre user_logic, dans le port map. (repairez vous avec le numéro des lignes). Vous avez maintenant créé la partie hard de votre bloc IP. 3) led_switch_pushb_v2_1_0.mpd avant : On rajoute nos entrées sorties : 4) Importer ce nouveau bloc IP avec ses modifications Dans la barre de menu de XPS : hardware/create or import peripheral Il existe plusieurs façon de créer ses nouveaux bloc, de les modifier et de les incorporer. Nous n'en présenterons qu'une seule dans cette démonstration. Next to XPS project, next Cliquer sur HDL source files(*.vhd ,...) Next next, next, next, next, next, next, finish Votre bloc IP modifié a été créé. 5) Dans l'interface graphique, intégration du bloc IP et création des signaux extérieurs (make external) Dans la fenêtre : Project Information Area (initialement à droite de l'écran), cliquer sur l'onglet IP Catalog, puis dans la partie, Project Local pcores, Pour insérer le bloc IP 3 solutions : − double cliquer dessus − clique droit « add IP » − cliquer glisser sur la fenêtre System Assembly View1 Dans la fenêtre System Assembly View1; Cliquer sur l'onglet Bus Interface. Relier le sur le bus 2 solutions : −on clique sur le rond vert pour relier le bloc IP (le rond vert doit devenir plein) −on développe le menu popup du bloc IP, dans SOPB on choisi OPB Dans la fenêtre System Assembly View1; Cliquer sur l'onglet Ports. Dérouler le menu de votre bloc IP: Vous devriez voir vos entrées/ sorties apparaître dans ce menu déroulant, sinon vérifiez que vous avez suivi toutes les étapes précédentes. Maintenant, vous devez créer les entrées sorties (eh oui, encore une fois) de votre bloc IP, en utilisant make external, dans le menu déroulant, sinon si vous ne faite pas make external, votre bloc IP ne sera pas relié avec son environnement. Après le make external : Dans la fenêtre System Assembly View1; Cliquer sur l'onglet Addresses. 2 Solutions : −si vous avez bien compris comment le système gère les adresses, vous pouvez lui attribuer une adresse manuellement, mais attention au subtilité des modes d'adressages. −(0x00 0000 0000 -> 0x0F00 000 000) pour la DDR RAM −(0x40 0000 0000 -> 0x7F FFFF FFFF) pour l'OPB −(0x80 0000 0000 -> 0xCF 0000 0000) pour le PLB −(0xFF FFFF C000 -> 0xFF FFFF FFFF) pour les instructions et les données du programme soft. −Autres (gestion interrupton, ...) - cliquer sur Generate Addresses et le système va automatiquement attribuer une adresse à votre bloc IP. (beaucoup plus simple et plus sûr). 6) répertoire_du_projet/data/system.ucf Sont toutes les entrées/ sorties du système final. Dans ce fichier vous devrez relier vos signaux logiques aux pattes physiques du FPGA et vous devrez régler le type du signal utilisé(IOSTANDART: TTL, CMOS,...), son emplacement (LOC), le front du signal : slew (fast ou slow) et son drivers. Avant Après 7) Synthèse du hard hardware/ Generate Netlist hardware/ bitstream 8) Génération du soft Software/Generate libraries and BSPs pour générer les différentes librairies des blocs IP Intégrer la bibliothèque du bloc IP ./drivers/led_switch_pushb_v1_00_a/src/led_switch_pushb.h Utilisation du soft: Création des variables temporaires, des entiers 8 bits non signés : en variable globale avant le main : volatile Xuint8 val0,val1,val2; Partie du programme testant les LEDs, switchs et les pushbuttons. IV) Contact Pour toutes questions concernant cette application note, vous pouvez contacter : [email protected] ou [email protected] (ref : Polytech'Clermont-Ferrand projet B1 2007/2008)