0% ont trouvé ce document utile (0 vote)
5 vues38 pages

Tutoriel sur la conception d'additionneur FPGA

Premier projet

Transféré par

ndoh moise
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues38 pages

Tutoriel sur la conception d'additionneur FPGA

Premier projet

Transféré par

ndoh moise
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Module 1

Premier projet

1.1 Introduction
Dans ce tutoriel, un additionneur complet est conçu à l'aide de demi-additionneurs. Nous allons
apprendre les méthodes suivantes pour créer/implémenter les conceptions numériques en utilisant
le logiciel Altera-Quartus,
 Conception numérique à l'aide de " schémas de principe ",
 Conception numérique à l'aide de "codes VHDL",
 Affectation manuelle des broches pour l'implémentation,
 Affectation des broches à l'aide d'un fichier '.csv',
 Chargement de la conception sur le FPGA.
 Convertir le 'design VHDL' en 'Symboles'.
 Conversion du 'Schéma de principe' en 'Code VHDL' et 'Symboles'.

1.2 Création du projet


 Pour créer un nouveau projet, ouvrez d'abord le Quartus et allez dans File->New Project
Wizard, comme le montre la Fig. 1.1.
 La fenêtre 'Introduction' apparaît ensuite, cliquez sur 'Next' et remplissez les détails du
projet comme indiqué dans la Fig. 1.2.
 Après cela, la fenêtre Projcet Type apparait là vous choisissez ‘Empty Project’ (voir
Fig1.3). Il est suivie par la page 'Add files' montré à la Fig. 1.4, ou nous n’allons rien
ajouté, cliquez sur 'Next'.
 Ensuite, la page 'Family and Device settings' (Paramètres de famille et du dispositif)
apparaît, sélectionnez le paramètre du dispositif approprié en fonction de votre carte FPGA
(dans notre cas la famille c’est Cyclone IV E et le dispositif disponible c’est
EP4CE6E22C8) voir Fig. 1.5 et cliquez sur 'Next', puis sur 'Next' et sur 'Finish' comme
indiqué dans la Fig. 1.6.
 Après avoir cliqué sur 'Finish', le nouvel assistant de projet sera créé comme indiqué dans
la Fig. 1.7.

1
Fig. 1.1 : Créer un nouveau projet

2
Fig. 1.2 : Nom et emplacement du projet

3
Fig. 1.3 choix d’un projet vide

4
Fig. 1.4 Ajout de fichiers additionnels

5
Fig. 1.5 : Paramètres du dispositif

6
Image intermédiaire pour spécifié l’utilisation de ModelSim-Altera

7
Figure 1.6 Résumé des étapes de création d’un projet dans Quartus

Fig. 1.7 : Paramètres du dispositif mis à jour

8
1.3 Conception numérique à l'aide de "blocs de schémas".
La conception numérique peut être créée à l'aide de deux méthodes, à savoir l'utilisation de "blocs
schématiques" et d'un langage de programmation, par exemple VHDL.
Dans cette section, nous allons créer un démi additionneur (half_adder) en utilisant la méthode des
blocs-schémas, comme indiqué ci-dessous,
 Pour cela, cliquez sur File->New->Block diagram/ Schematics files, comme le montre la
Fig. 1.8 ; et un fichier vierge sera créé.

Image intermédiaire de la Fig. 1.8

9
Fig. 1.8: Créer un nouveau bloc de schémas de principe

 Ensuite, faites un clic droit sur la porte 'and' et cliquez sur 'Generate Pins for Symbol Ports',
comme le montre la Fig. 1.9.
 Maintenant, connectez les ports d'entrée de la porte 'xor' avec la porte 'et' (à l'aide de la
souris) ; ensuite, faites un clic droit sur la porte 'et' et cliquez ensuite sur 'Generate Pins for
Symbol Ports'. Enfin, renommez les ports d'entrée et de sortie (c'est-à-dire x, y, somme et
retenue) comme indiqué dans la Fig. 1.10.
 Enfin, enregistrez la conception sous le nom de 'half_adder_sch.bdf'. Il est préférable
d'enregistrer la conception dans un dossier distinct, afin de pouvoir distinguer les fichiers
définis par l'utilisateur et ceux générés par le système (Quartus), comme le montre la Fig.
1.11 où les codes VHDL sont enregistrés dans le dossier 'VHDL_Code1', qui se trouve
dans le répertoire principal du projet.
 Puisque le nom du projet est 'full_adder', alors que le nom de la conception du demi-
additionneur est 'half_adder_sch.bdf' (c'est-à-dire différent du nom du projet), nous devons
donc définir cette conception comme entité de niveau supérieur pour compiler le projet.
Pour cela, allez dans le navigateur du projet et faites un clic droit sur 'half_adder_sch.bdf'
et définissez-le comme entité de niveau supérieur, comme indiqué dans la Fig. 1.12.

10
Image intermédiaire de la Fig. 1.9 : Sélectionnez la porte 'et'.

Fig. 1.10 Sélectionnez la porte 'xor'.

11
Image de l’ajout des ports d’entrées / sorties

Image de Réaliser des connexions

12
Fig. 1.11 : Sauvegarder le projet dans un répertoire séparé, c'est-à-dire VHDL_Code1 et non
Projet1

Fig. 1.12 Définition de half_adder_sch.bdf comme Entité de niveau supérieur

13
Image de l’analyse du fichier half_adder_sch.bdf (Processing > Analyze Current File)

Image du rapport de l’analyse du design

14
1.4 Affectation manuelle des broches et compilation
Veuillez saisir l'emplacement correct des broches en fonction de votre carte FPGA, comme indiqué
dans cette section.
Une fois la conception analysée, l'étape suivante consiste à affecter l'emplacement correct des
broches aux ports d'entrée et de sortie. Dans cette section, nous allons assigner les broches
manuellement. Suivez les étapes ci-dessous pour l'affectation des broches,
 Ouvrez d'abord le 'Pin Planner' en cliquant sur Assignments->Pin Planner comme indiqué
dans la Fig. 1.13.

Fig. 1.13 : Procédé d’ouverture du Planificateur de broches

 Ensuite, tapez les noms des ports d'entrée et de sortie ainsi que les emplacements des
broches sur la carte, comme le montre la Fig. 1.14. Les détails de l'emplacement des

15
broches sont fournis dans le manuel des cartes FPGA, par exemple, sur la carte RZ-
EasyFPGA A2.2, la broche 'PIN_88' est connectée au commutateur S1. En assignant cette
broche à 'x', nous connectons le port 'x' au commutateur S1. De même la broche 'PIN_89'
est connectée au commutateur S2. En assignant cette broche à 'y', nous connectons le port
'y' au commutateur S2. Dans la même logique les ports de sorties sum et carry sont
connectées aux broches PIN_87 et PIN_86 respectivement.

Image avec une vue global sur notre dispositif EP4CE6E22C8 dans le Pin Planner

Fig. 1.14 : Affectation des broches

16
 Après avoir assigné la broche, analysez à nouveau la conception (voir Image de
l’analyse du fichier half_adder_sch.bdf ). Après cela, nous pouvons voir les numéros
de broches dans le fichier '.bdf', comme le montre la Fig. 1.15.
 Enfin, compilez la conception en utilisant le bouton 'ctrl+L' (ou en cliquant sur
Processing->Start compilation, comme indiqué dans la Fig. 1.16).

Fig. 1.15 : Broches assignées aux ports

Fig. 1.16: Démarrer la compilation

17
Image du rapport de compilation
 Après une compilation réussie, si nous voyons à nouveau l'assignation des broches, nous
constaterons que la direction des broches est maintenant assignée, comme le montre la Fig.
1.17 (qui étaient définies comme 'inconnues' pendant l'analyse comme dans la Fig. 1.14).

Fig. 1.17 : Direction des ports

18
1.5 Conception numérique à l'aide de "codes VHDL".
Dans cette section, le demi-additionneur est implémenté en utilisant des codes VHDL. Pour cela,
cliquez sur Fichier->Nouveau->Fichiers VHDL, comme indiqué dans la Fig. 1.18 ; un fichier
vierge sera créé. Saisissez la fiche complète de half_adder_vhdl' dans ce fichier et enregistrez-le
sous le nom de 'half_adder_vhdl.vhd'.
Maintenant, définissez cette conception comme "entité de niveau supérieur" (Fig. 1.10). Nous
pouvons maintenant analyser la conception.

Fiche complète 1.1 : Code VHDL pour un demi-additionneur (half_adder_vhdl.vhd)


-- half_adder_vhdl.vhd

library ieee;
use ieee.std_logic_1164.all;

entity half_adder_vhdl is
port(
a, b : in std_logic;
sum, carry : out std_logic
);
end half_adder_vhdl;

architecture logic of half_adder_vhdl is


begin
sum <= a xor b;
carry <= a and b;
end logic;

19
Image de procédé de création du fichier de saisir du code VHDL du demi-additionneur

Fig. 1.18 Feuille vierge ([Link]) en attente de saisie d’un code VHDL du demi-additionneur

20
Image de la feuille [Link] comportant le code VHDL du demi-additionneur

Image du processus de d’enregistrement du code VHDL du demi-additionneur


(half_adder_vhdl.vhd) dans le dossier utilisateur et non le dossier du projet principal

21
Image de la définition de half_adder_vhdl.vhd comme entité de niveau supérieur

Image de l’analyse du fichier courant (half_adder_vhdl.vhd) de notre demi-additionneur

22
Image de fin d’analyse du fichier courant de half_adder_vhdl.vhd du demi-additionneur

Image intermédiaire du rapport de compilation du code VHDL de notre demi-additionneur

23
1.6 Conversion de la conception VHDL en symbole
Le code VHDL peut être converti en format de schéma de blocs, ce qui est très utile pour connecter
divers modules entre eux. Dans cette section, le fichier VHDL du demi-additionneur est converti
en schéma, puis deux demi-additionneurs sont connectés pour former un additionneur complet.
Suivez les étapes ci-dessous pour créer un additionneur complet en utilisant cette méthode,
 Cliquez avec le bouton droit de la souris sur le fichier 'half_adder_vhdl.vhd' et cliquez sur
'Create symbol files for current file' (Créer des fichiers symbole pour le fichier actuel),
comme le montre la Fig. 1.19. Cela créera un symbole pour la conception de l'additionneur.

Fig. 1.19 Création des fichiers symbole pour le fichier courant

Image du rapport de création d’un fichier symbole à partir du fichier courant

24
 Maintenant, créez un nouveau 'fichier de schéma de bloc' montré à la Fig. 1.20 (Fig. 1.8).
 Ensuite, double-cliquez sur ce fichier et ajoutez le symbole du demi-additionneur comme
indiqué dans les Fig. 1.21 et Fig. 1.22 et pour ajouter la porte ou voir Fig. 1.23.
 Enfin, l’additionneur complet est montré à la Fig. 1.24.

Image de création d’un nouveau bloc de schémas de principe

25
Fig. 1.20 Création d’un nouveau 'fichier de schéma de bloc

Fig. 1.21 Ajouter un symbole de demi-additionneur

26
Fig. 1.22 Ajoutez un autre demi-additionneur dans le 'fichier de schéma de bloc'

Fig. 1.23 Ajoutez une porte ou dans le 'fichier de schéma de bloc'

27
Fig. 1.24 : Additionneur complet utilisant des demi-additionneurs
 Puisqu'un port supplémentaire (i.e. z) est ajouté à la conception, modifiez donc le Pin
Planner comme le montre la Fig. 1.25
 Enregistrez la conception sous le nom de 'full_adder_sch.bdf' comme le montre la Fig.
1.26.

Fig. 1.26 Enregistrement de notre additionneur complet

28
Image de l’additionneur complet déjà enregistré dans le fichier schéma blocs

Image de la définition de ‘full_adder_sch.bdf’ comme entité de niveau supérieur

29
Image obtenu dès que full_adder_sch.bdf est été défini comme entité de niveau supérieure

Fig. 1.25 Assignation manuelle de z dans le Pin Planner

30
Image intermédiaire obtenu dans le fichier schéma blocs de full_adder_sch.bdf après
l’assignation manuelle de z dans le Pin Planner

Image intermédiaire du rapport de compilation de la conception schématique de l’additionneur


complet full_adder_sch.bdf

31
Image intermédiaire de la bonne affectation des noms des nœuds (node) suivant les directions
(Input ou Output) et leurs locations après placement & routage sur leurs broches respectives.

Nous pouvons voir les nouvelles affectations de broches dans le Pin Planner (Ctrl+Shift+N)
comme indiqué ci-dessus. (Si les affectations ne sont pas correctes, vérifiez si la conception VHDL
est définie comme entité de niveau supérieur).

1.7 Convertir le schéma de bloc en 'code VHDL' et 'symbole'.


Nous pouvons également convertir le fichier '.bdf' en code VHDL. Dans cette section, la
conception de l'additionneur complet est convertie en code VHDL. Pour cela, ouvrez le fichier
'full_adder_sch.bdf'. Ensuite, allez à File->Create/Update->Create HDL Design File comme
indiqué dans la Fig. 1.27 et sélectionnez le type de fichier 'VHDL' et appuyez sur OK ; le fichier
sera enregistré dans le dossier VHDL_Code1 (voir Fig. 1.28). Le contenu du fichier 'VHDL' généré
est présenté dans le Listing full_adder_sch.vhd'.

32
Fig. 1.27 Procédé d’ouverture de la fenêtre de création du fichier de conception HDL à partir du
fichier courant full_adder_sch.bdf

Fig. 1.28 Création du fichier de conception HDL à partir du fichier courant full_adder_sch.bdf

33
Image du rapport de création du fichier full_adder_sch.vhd comportant le code en langage VHDL de
notre additionneur complet généré par Quartus à partie de full_adder_sch.bdf

Image du procédé d’ouverture du fichier full_adder_sch.vhd dans lequel est saisi le code VHDL
de notre additionneur complet proposé par Quartus Prime (version 18.0) Lite Edition

34
Image du code de l’additionneur complet (full_adder_sch.vhd) proposé par Quartus à partie de
full_adder_sch.bdf que nous avons réalisé au paravent.
Fiche complète 1.2 : Code VHDL de l’additionneur complet (full_adder_sch.vhd)
LIBRARY ieee;
USE ieee.std_logic_1164.all;

LIBRARY work;

ENTITY full_adder_sch IS
PORT
(
b : IN STD_LOGIC;
a : IN STD_LOGIC;
c : IN STD_LOGIC;
sum : OUT STD_LOGIC;
carry : OUT STD_LOGIC
);
END full_adder_sch;

ARCHITECTURE bdf_type OF full_adder_sch IS

35
COMPONENT half_adder_vhdl
PORT(a : IN STD_LOGIC;
b : IN STD_LOGIC;
sum : OUT STD_LOGIC;
carry : OUT STD_LOGIC
);
END COMPONENT;

SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC;


SIGNAL SYNTHESIZED_WIRE_1 : STD_LOGIC;
SIGNAL SYNTHESIZED_WIRE_2 : STD_LOGIC;

BEGIN

b2v_inst : half_adder_vhdl
PORT MAP(a => a,
b => b,
sum => SYNTHESIZED_WIRE_0,
carry => SYNTHESIZED_WIRE_1);

b2v_inst1 : half_adder_vhdl
PORT MAP(a => c,
b => SYNTHESIZED_WIRE_0,
sum => sum,
carry => SYNTHESIZED_WIRE_2);

carry <= SYNTHESIZED_WIRE_1 OR SYNTHESIZED_WIRE_2;


END bdf_type;

36
Image des vues du navigateur de projet selon que nous sommes dans Hiérarchie, Fichiers, Unités
de Conception et Révisions à la fin de la réalisation de notre additionneur complet à partir de
deux (half_adder_sch.bdf) démi additionneurs et d’une porte ou dans le fichier de schéma de blocs
full_adder_sch.bdf et de la génération automatique de son code VHDL (full_adder_sch.vhd) par
Quartus.

Maintenant, nous pouvons convertir ce code VHDL en symbole, nous le verrons dans le prochain
module
Note : Notez que, si nous pouvons convertir le fichier '.bdf' en symbole, nous devons d'abord le
convertir en code VHDL, et ensuite nous pouvons convertir le code VHDL en fichier symbole.

37
1.8 Conclusion
Dans ce chapitre, nous avons appris à implémenter la conception en utilisant les méthodes de
schématique et de codage. Nous avons également effectué l'affectation des broches manuellement.
Enfin, nous avons appris à convertir le code VHDL en fichier de symboles et la conception
schématique en code VHDL.

38

Vous aimerez peut-être aussi