show menu


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

Créer une IP avec Vivado

Posté par Florent - 03 Octobre 2017

Introduction

Ce tutoriel montre comment packager un projet RTL (VHDL) pour créer une IP dans Vivado 2017.2.

Créer le module

Ouvrir Vivado 2017.2 et créer un nouveau projet. Créer un nouveau fichier VHDL appelé logic_function.vhd.

Nous allons d’abord créer un AND logique avec des signaux 1-bit. Dans la fenêtre “Define Module”, définir 2 entrées 1-bit (A_inp et B_inp) et une sortie 1-bit (P_outp).

Vivado 2017.2 - Définir le module

Figure 1 - Définir le module

Dans la partie architecture du module, ajouter la ligne suivante:

P_outp <= A_inp AND B_inp;

Packager le module dans une IP

Cliquer sur “Tools > Create and Package New IP…” pour créer un nouveau projet afin de packager l’IP. Dans la pageCreate Peripherals, Package IP or Package a Block Design”, sélectionnerPackage your current project”.

Vivado 2017.2 - Page “Package your current project”

Figure 2 - Page “Package your current project”

Dans la page “Package your current project”, sélectionner l’emplacement de l’IP et sélectionner “Include .xci files”. Si vous utilisez un système de contrôle de révision (GIT, SVN etc…), l’UG1118 recommandes d’utiliser un dossier externe au projet initial et de placer le dossier de l’IP entier sous révision pour conserver to les fichiers nécessaire à l’IP et a son projet de packaging.

 

Vivado 2017.2 - Sélectionner l’emplacement du projet

Figure 3 - Sélectionner l’emplacement du projet

Cela crée un projet temporaire pour gérer la configuration de l’IP. Vous devriez avoir un onglet “Package IP – logic_function” ouvert avec différentes section pour configurer l’IP. Par exemple, la section “Identification” permet de changer la catégorie dans laquelle se trouvera l’IP dans le catalogue IPs de Vivado.

Vivado 2017.2 - Package IP – Section Identification

Figure 4 - Package IP – Section Identification

Si vous souhaitez conserver le projet IP après avoir packagé l’IP (par exemple si vous utilisez un système de révision), cliquez sur Edit Packaging settings (ou allez dans project settings > IP > Packager) et désactivez l’option Delete project after packaging.

Conserver le projet IP après avoir packagé l'IP

Figure 5 - Conserver le projet IP après avoir packagé l’IP

Nous ne ferons pas plus de changement pour l’instant. Aller dans la section Review and Package et cliquer sur Package IP. Vivado va vous demander si vous voulez quitter le projet, cliquer Yes.

Ensuite, dans votre projet initial, si vous aller dans le catalogue des IPs (Window > IP catalog), vous devriez voir l’IP logic_function sous UserIP.

Vivado 2017.2 - IP logic_fonction dans catalogue des IPs

Figure 6 - IP logic_fonction dans catalogue des IPs de Vivado

Note: Si vous créez un nouveau projet Vivado, vous ne verrez pas l’IP dans le catalogue des IPs car le dossier dans lequel elle est située n’est pas scanne par Vivado. Vous devez ajouter ce dossier dans les répertoires (“ IP repositories”) IP dans Project Settings (IP > Repository).

Si on sélectionne l’IP logic_function, on peut voir la fenêtre IP Properties avec les propriétés de l’IP. On peut voir que la version de l’IP est 1.0 avec la révision Rev. 1. La révision sera incrémentée automatiquement chaque fois que l’on packagera l’IP. La version peut être changée dans le projet packaging.

Paramétrer la taille des ports

Nous allons maintenant modifier l’IP pour faire un AND logique sur un bus (plus seulement sur des signaux 1-bit). Pour modifier l’IP

·        Si vous avez garde le projet IP packaging, ouvrez ce projet

·        Si vous n’avez pas gardé le projet, ouvrez le catalogue des IPs (IP catalog) et cherchez l’IP. Faites un clic droit sur l’IP et cliquez sur Edit in IP Packager.

Vivado 2017.2 - Edit in IP Packager

Figure 7 - Edit in IP Packager

Dans les sources du design, double-cliquer sur le fichier source (logic_function.vhd) pour le modifier.

Changer la partie entity en ajoutant une valeur générique pour la taille des ports

Ajout de valeurs generiques

Dans la fenêtre Package IP, on peut voir que certaines sections n’ont pas de check verts car nous avons fait des changements dans le fichier sources qui n’ont pas été pris en compte par le projet packaging. Pour actualiser le projet, aller dans la section Review and Package et cliquer sur Merge Changes sous Edit IP Project Changes.

Note: Si vous ne voyez pas l’onglet “Package IP” dans Vivado dans votre projet packaging, vous pouvez l’ouvrir en cliquant sur “Package IP” dans le “Flow Navigator”.

Vivado 2017.2 - Actualiser le projet packaging

Figure 8 - Actualiser le projet packaging

Ensuite, dans la section Customization Parameters, sous Hidden Parameters, double-cliquer sur DATA_SIZE. Dans la fenêtre Edit IP Parameter, activer Visible in customization GUI pour pouvoir changer la valeur dans l’IHM de configuration de l’IP.

Vivado 2017.2 - Onglet Customization Parameters

Figure 9 - Onglet Customization Parameters

Dans la fenêtre Edit IP Parameter, activer Specify Range et selectionner Range of Integer pour Type. Entrer 32 comme valeur maximum et cliquer sur OK.

Vivado 2017.2 - Fenêtre Edit IP Parameter

Figure 10 - Fenêtre Edit IP Parameter

Dans la section Customization GUI, déplacer le paramètre Data Size sous Page 0.

Vivado 2017.2 - Section Customization GUI

Figure 11 - Section Customization GUI

Re-packager l’IP dans la section “Review and Package”.

Nous pouvons voir que la révision de l’IP a été incrémentée (Rev. 2).

Si on double-clique sur l’IP dans le catalogue des IPs de Vivado, on peut voir qu’il est désormais possible de changer la taille des bus dans l’IHM.

Vivado 2017.2 - IHM de l’IP

Figure 12 - IHM de l’IP

Ajouter de nouvelles functions

Nous allons maintenant ajouter de nouvelles fonctions à notre IP: OR logique, NOR logique et NAND logique. L’utilisateur pourra choisir la fonction dans l’IHM lors de l’ajout de l’IP au projet.

Nouvelles fonctions

Ouvrir l’IP dans le projet IP Packager, ouvrir le code source et le modifier avec le code suivant :

 

Sauvegarder le fichier source et cliquer sur merge changes dans la fenêtre Package IP. Dans Customization parameters éditer le paramètre FUNC_SEL:

·        aciver Visible in customization GUI

·        Specify range

o   Pairs

o   Key: And, Value: 0

o   Key: Or, Value: 1

o   Key: Nor, Value: 2

o   Key: Nand, Value: 3

Vivado 2017.2 - Personnalisation du paramètre FUNC_SEL

Figure 13 - Personnalisation du paramètre FUNC_SEL

Dans la page Customization GUI, déplacer le paramètre Func Sel sous Page 0 et re-packager l’IP.

Nous pouvons maintenant sélectionner la fonction dans l’IHM.

Vivado 2017.2 - Selection de la function dans l’IHM

Figure 14 - Selection de la function dans l’IHM

Désactiver une entrée non-utilisé

Nous allons ajouter une nouvelle fonction à notre IP: un NOT logique. Pour cela, nous avons besoins d’une seule entrée. La seconde ne sera pas utilisée. Nous allons donc la désactiver de l’IP lorsque la fonction NOT sera sélectionnée.

Ouvrir le projet et ajouter les lignes suivantes au code source:

Ajout de la founction NOT

Sauvegarder le fichier source et cliquer sur merge changes dans la fenêtre Package IP. Editer le paramètre en ajoutant une nouvelle paire (key: Not, Value: 4).

Dans la section Ports and Interfaces, double-cliquer sur B_inp pour ouvrir la fenêtre Edit Port. Si l’utilisateur veut utiliser la fonction NOT logique, l’entrée sera inutilisée. Nous devons donc la désactiver en changeant l’option Port Presence en Optional, configurant Driver Value a “0” et en écrivant “$FUNC_SEL != 4” dans l’entrée texte bas comme montrée sur la Figure 13.

Vivado 2017.2 - Re-packager l’IP

Figure 15 - Modifier l’entrée B_inp

Re-packager l’IP.

Nous pouvons maintenant voir que si l’on sélectionne la fonction NOT, l’entrée B_inp sera désactivée de l’IP.

Vivado 2017.2 - Entrée B désactivée

Figure 16 - Entrée B désactivée



Poster un commentaire

Seuls les utilisateurs connectés peuvent poster des commentaires