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)