show menu


Les utilisateurs connectés peuvent télécharger ce tutoriel en pdf

Première utilisation de la partie Programmable Logic d'un Zynq-7000

Posté par Florent - 23 Septembre 2016

Introduction

Dans ce tutoriel, nous allons configurer (i.e. programmer) la partie Programmable Logic (PL) d’un Zynq-7000 d’une Zynq Board. Pour ce tutoriel, j’ai utilisé une carte Xilinx ZC702  mais il peut également être facilement réalisé sur un autre carte possédant un FPGA Xilinx 7series (ex : ZYBO, ZedBoard, ARTY…). Les équivalences pour le réaliser sur une ZedBoard ou une ZYBO sont données (mais non validées).

Controler les LEDs depuis les interrupteurs

Dans cette partie, nous allons créer un projet Vivado RTL afin de contrôler les LEDs depuis les switches de la carte Xilinx ZC702.

Ajouter les fichiers de la carte à Vivado (ZYBO, Basys3, Nexys4…)

Si vous utiliser une carte Xilinx ZC702 ou une Digilent ZedBoard, cette étape ne devrait pas être nécessaire (vous deviez voir la carte apparaitre dans la liste des cartes de Vivado lorsque vous choisissez la cible).

Si vous utilisez une ZYBO, une basys3 ou une nexys4 (ou éventuellement une ZedBoard), téléchargez le fichier de configuration de la carte depuis le git de Digilent (https://github.com/Digilent/vivado-boards/archive/master.zip). Décompressez le dossier et copier le fichier <empalcement_du_zip_exrait_>\vivado-boards-master\new\board_files\<nom_de_la_carte> dans C:\Xilinx\Vivado\<version>\data\boards\boards_files.

Créer un nouveau projet RTL dans Vivado

Ouvrez Vivado et créez un nouveau projet RTL. Dans la fenêtre “Default Part”, sélectionnez the “ZYNQ-7 ZC702 Evaluation Board” (ou la carte que vous utilisez si différente).

Xilinx Vivado - Choix de la carte cible

Figure 1– Choix de la carte cible dans la fenêtre “Default Part”

Créer un nouveau fichier VHDL

Créez un nouveau fichier VHDL (top_level.vhd). Dans la fenêtre “Define Module”, ajoutez deux entrées (SW1_inp, SW2_inp) et deux sorties (LED1_outp, LED2_outp).

Xilinx Vivado - Fenêtre “Define Module”

Figure 2 - Fenêtre “Define Module”

Ouvrez le fichier VHDL dans l’éditeur de texte de Vivado et écrivez le code VHDL pour connecter SW1_inp à LED1_outp et SW2_inp to the LED2_outp comme montré dans la Figure 3.

Xilinx Vivado - Connecter les signaux

Figure 3 – Connecter les signaux

Ensuite cliquez sur “Run Synthesis” dans le “Flow Navigator”.

Créer les contraintes physiques

Nous devons informer Vivado à quel pin du FPGA correspond chaque entrée/sortie de notre design. Pour les deux entrées, nous allons utiliser les deux petit interrupteurs du groupe d’interrupteur ZW12 de la carte Xilinx ZC702 (ou les interrupteurs SW0 et SW1 de la ZedBoard/ZYBO).

ZC702 - GPIO DIP Switches

Figure 4 - GPIO DIP Switches (source: Xilinx UG850)

Dans la Figure 4 (tirée de la documentation Xilinx UG850) on peut voir que les deux interrupteurs sont connectes aux pins W6 et W7 du Zynq (à partir du manuel de référence ZYBO (https://reference.digilentinc.com/reference/programmable-logic/zybo/reference-manual), SW0 et SW1 sont connectes aux pins G15 et P15 et à partir du guide utilisateur de la ZedBoard(http://zedboard.org/sites/default/files/documentations/ZedBoard_HW_UG_v2_2.pdf), SW0 et SW1 sont connectes aux pins F22 et G22).

SW12, DS19 et DS20 sur la carte Xilinx ZC702

Figure 5 - SW12, DS19 et DS20 sur la carte Xilinx ZC702

Pour les deux entrées, nous allons utiliser les LEDs DS19 et DS20 (LD0 et LD1 pour la ZYBO/ZedBoard). Dans la Figure 5 (source: Xilinx UG850) on peut voir que les deux LEDs sont connectes aux pins E15 et D15 du Zynq (M14 et M15 pour la ZYBO, T22 et T21 pour la ZedBoard).

ZC702 - User LED Connections

Figure 6 - User LED Connections (source: Xilinx UG850)

Lorsque la synthèse est terminée, cliquez sur “Open the synthesized design” dans la fenêtre “Synthesis completed” (le design synthétisé peut également être ouvert depuis le “ Flow Navigator ”. Vous deviez avoir la fenêtre “package” ouverte comme montre dans la Figure 7. Sinon assurez-vous que le layout soit “I/O planning” (également montre dans la Figure 7) ou cliquez sur “layout > I/O planning” depuis la barre de menu.

Xilinx Vivado - Fenêtre “package”

Figure 7 – Fenêtre “package”

Créez un fichier de contraintes en cliquant sur “Add Sources” dans le “Flow Navigator” puis en sélectionnant “Add Or Create constraints” dans la fenêtre “Add Sources”. Nommez le fichier phys_const.

Xilinx Vivado - Créer un fichier de contraintes

Figure 8 – Créer un fichier de contraintes

Dans la fenêtre “I/O Ports”, dans la colonne “Package Pin” entrez E15 (M14 pour la ZYBO, T22 pour la ZedBoard) pour LED1_outp, D15 (M15 pour la ZYBO, T21 pour la ZedBoard) pour LED2_outp, W6 (G15 pour la ZYBO, F22 pour la ZedBoard) pour SW1_inp et W7 (P15 pour la ZYBO, G22 pour la ZedBoard) pour SW2_inp.

Xilinx Vivado - Contraintes des port E/S

Figure 9 – Contraintes des port E/S

Entrez LVCMOS25 pour le paramètre “I/O Std” pour chacune des lignes (LVCMOS33 pour LED1_outp et LED2_outp sur la Zedboard). Appuyer sur Ctrl+S pour enregistrer les contraintes. Si une fenêtre “Out of Date Design” apparait, cliquez OK. Ensuite, une fenêtre “Save Constraints” doit apparaître. Sélectionnez “Select an existing file” ainsi que le fichier de contraintes (phys_const.xdc) que nous avons créez précédemment et cliquez sur OK.

Xilinx Vivado - Fenêtre “Save Constraints”

Figure 10 - Fenêtre “Save Constraints”

Si on ouvre le fichier phys_const.xdc (depuis la fenêtre “Sources”), on peut voir que Vivado a enregistré dans ce fichier les contraintes que nous avons entrées dans la « I/O ports ».

Xilinx Vivado - Fichier phys_const.xdc

Figure 11 - Fichier phys_const.xdc

 

Générer le Bitstream et programmer le FPGA

Cliquez sur “Run Implementation” dans le “Flow Navigator”. Lorsque l’implémentation est terminée, cliquez sur “Generate Bitstream”.

Xilinx Vivado - Fenêtre implementation Completed

Figure 12 - Fenêtre implementation Completed

Lorsque la génération du Bitstream est terminée, cliquez sur “Open Hardware Manager”.

Xilinx Vivado - Fenêtre Bitstream Generation Completed

Figure 13 - Fenêtre Bitstream Generation Completed

Alimentez la carte et assurez-vous qu’elle est connectée au PC. Cliquez sur “Open Target > Open New Target…”. Choisissez “Local Server” dans “Hardware Server Setting”.

Xilinx Vivado - Open New Target

Figure 14 - Open New Target

L’outil devrait trouver le FPGA comme montré sur la Figure 15.

Xilinx Vivado - Fenêtre Open New Hardware Target

Figure 15 - Fenêtre Open New Hardware Target

Ensuite, cliquez sur “Program Device” pour programmer le FPGA.

Test sur la carte

Sur la carte vous devriez avoir deux LEDs INIT et DONE. Ces deux LEDs vous indiquent si la configuration du FPGA s’est bien passée. Si la LED INIT est rouge, l’initialisation du FPGA est toujours en cours (il peut y avoir un problème faisant qu’elle ne peut pas se terminer) et si elle est verte, l’initialisation du FPGA s’est terminée avec succès. La LED DONE doit être verte si le FPGA a été configuré avec succès.

ZC702 - INIT and DONE status LEDs

Figure 16 - INIT and DONE status LEDs

Si le FPGA a été correctement configuré, l’état des LEDs DS19 et DS20  doit changer lorsque vous changez l’état des interrupteurs de SW12.



Poster un commentaire

Seuls les utilisateurs connectés peuvent poster des commentaires