Démarrer avec le développement FPGA : Construction d'un additionneur 4 bits sur Xilinx Artix‑7
Note de l'éditeur : Alors que les algorithmes avancés continuent d'évoluer, les concepteurs embarqués peinent souvent à répondre aux exigences de traitement des applications modernes. Les Field‑Programmable Gate Arrays (FPGA) fournissent la performance nécessaire, et les avancées récentes en matériel et outillage ont rendu le développement FPGA accessible à un public plus large. Cet article, le quatrième d'une série tirée de Architecting High‑Performance Embedded Systems par Jim Ledin, offre une visite pratique pas à pas de la construction d'un projet FPGA simple mais complet.
Développement de votre premier projet FPGA
Nous allons construire un additionneur binaire 4 bits sur un FPGA Xilinx Artix‑7 logé dans une carte de développement Digilent Arty A7. Deux variantes de carte sont disponibles : le modèle 35T économique (129 $ US) et le modèle 100T plus puissant (249 $ US). La seule distinction est la variante FPGA, qui influence les ressources logiques disponibles. Le 100T est préférable pour les futurs projets exigeant plus de ressources, comme l'exemple d'oscilloscope numérique dans les chapitres suivants.
Options d'achat : Digilent Store, Amazon, et autres revendeurs.
Pour ce tutoriel, nous nous concentrerons sur le cœur FPGA, quatre interrupteurs utilisateur, quatre boutons-poussoirs, et cinq LEDs. Les étapes ci-dessous couvrent l'installation de la suite d'outils Vivado, la création d'un projet, l'écriture de code VHDL, et le chargement d'un bitstream sur la carte — à la fois en mémoire de configuration volatile et en flash embarqué pour un fonctionnement persistant.
Vue d'ensemble du projet
Le design implémente un additionneur 4 bits. Quatre interrupteurs fournissent le premier opérande 4 bits, quatre boutons-poussoirs fournissent le second. Le FPGA additionne continuellement ces opérandes et affiche la somme 4 bits sur quatre LEDs, avec une cinquième LED indiquant la retenue de sortie. Ce design simple nous permet de nous concentrer sur le flux de la chaîne d'outils plutôt que sur une logique complexe.
Installation de Vivado
Nous utiliserons Xilinx Vivado, disponible gratuitement pour Windows et Linux. Les instructions suivantes supposent Windows ; les étapes d'installation Linux sont analogues.
- Créez un compte utilisateur Xilinx : https://www.xilinx.com/registration/create-account.html
- Connectez-vous sur https://xilinx.com et accédez à la page de téléchargement.
- Téléchargez l'installeur unifié Xilinx (Windows Self‑Extracting Web Installer). Pour la cohérence avec ce livre, sélectionnez la version 2020.1 ; sinon, utilisez la dernière version.
- Exécutez l'installeur (ex. Xilinx_1_0602_1208_Win64.exe). Si Windows bloque le téléchargement, choisissez « Installer quand même ».
- Cliquez Suivant sur l'écran d'accueil.
- Entrez vos identifiants Xilinx et cliquez Suivant.
- Acceptez les accords de licence et cliquez Suivant.
- Choisissez Vitis comme produit (Vitis regroupe Vivado et des outils additionnels). Cliquez Suivant.
- Acceptez les sélections de composants par défaut et cliquez Suivant.
- Sélectionnez un répertoire de destination (ex. C:\Xilinx) et cliquez Suivant.
- Vérifiez le résumé et cliquez Installer. L'installation peut prendre plusieurs minutes.
Une fois installé, lancez Vivado depuis le raccourci bureau ou le menu Démarrer.
Création du projet
- Ouvrez Vivado et cliquez Créer un projet dans le volet Quick Start.
- Entrez ArtyAdder comme nom de projet, choisissez un répertoire (ex. C:\Projects), et cochez Créer un sous-répertoire pour ce projet. Cliquez Suivant.
- Sélectionnez Projet RTL et cochez Ne pas spécifier les sources pour l'instant. Cliquez Suivant.
- Sous l'onglet Cartes, recherchez « Arty » et choisissez Arty A7-100 ou Arty A7-35 selon votre matériel. Cliquez Suivant.
- Terminez l'assistant pour créer un projet vide.
Ajout des fichiers sources VHDL
- Dans le volet Sources, clic droit Sources de conception → Ajouter des sources….
- Choisissez Ajouter ou créer des sources de conception et cliquez Suivant.
- Sélectionnez Créer un fichier, nommez-le FullAdder.vhdl, et cliquez OK.
- Répétez pour créer Adder4.vhdl, puis cliquez Terminer.
- Ignorez la boîte de dialogue Définir les modules ; cliquez OK et confirmez avec Oui.
- Ouvrez FullAdder.vhdl et collez le code suivant :
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity FULL_ADDER is port ( A : in std_logic; B : in std_logic; C_IN : in std_logic; S : out std_logic; C_OUT : out std_logic ); end entity FULL_ADDER; architecture BEHAVIORAL of FULL_ADDER is begin S <= (A XOR B) XOR C_IN; C_OUT <= (A AND B) OR ((A XOR B) AND C_IN); end architecture BEHAVIORAL;
- Ouvrez Adder4.vhdl et remplacez son contenu par :
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity ADDER4 is port ( A4 : in std_logic_vector(3 downto 0); B4 : in std_logic_vector(3 downto 0); SUM4 : out std_logic_vector(3 downto 0); C_OUT4: out std_logic ); end entity ADDER4; architecture BEHAVIORAL of ADDER4 is component FULL_ADDER is port ( A : in std_logic; B : in std_logic; C_IN : in std_logic; S : out std_logic; C_OUT : out std_logic ); end component; signal c0, c1, c2 : std_logic; begin FULL_ADDER0 : FULL_ADDER port map ( A => A4(0), B => B4(0), C_IN => '0', S => SUM4(0), C_OUT => c0 ); FULL_ADDER1 : FULL_ADDER port map ( A => A4(1), B => B4(1), C_IN => c0, S => SUM4(1), C_OUT => c1 ); FULL_ADDER2 : FULL_ADDER port map ( A => A4(2), B => B4(2), C_IN => c1, S => SUM4(2), C_OUT => c2 ); FULL_ADDER3 : FULL_ADDER port map ( A => A4(3), B => B4(3), C_IN => c2, S => SUM4(3), C_OUT => C_OUT4 ); end architecture BEHAVIORAL;
Prochaines étapes
L'article suivant vous guidera à travers la simulation de ce design, sa synthèse pour la carte Arty, et la programmation du bitstream résultant sur le FPGA.
Réimprimé avec la permission de Packt Publishing. Copyright © 2021 Packt Publishing
Jim Ledin est le PDG de Ledin Engineering, Inc. Il se spécialise dans la conception, le développement et le test de logiciels et matériels embarqués, et possède une expertise en cybersécurité des systèmes embarqués, tests de pénétration et hacking éthique. Jim a obtenu un B.S. en génie aérospatial de l'Iowa State University et un M.S. en génie électrique et informatique du Georgia Institute of Technology. Il est ingénieur électricien licencié en Californie, titulaire CISSP, CEH et CPT.
Contenu connexe
- Conception embarquée avec FPGA : Ressources matérielles
- Conception embarquée avec FPGA : Langages d'implémentation
- Conception embarquée avec FPGA : Processus de développement
- Outils open-source simplifient la programmation FPGA
- Implémentation d'algorithmes à virgule flottante dans FPGA ou ASIC
- Exploiter les FPGA pour l'apprentissage profond
- Outils logiciels migrent le code GPU vers FPGA pour applications IA
- FPGA remplacent ASIC dans la vision ADAS Subaru Eyesight
Abonnez-vous à la newsletter hebdomadaire d'Embedded pour plus d'informations.
Embarqué
- Fabrication additive liquide : créer des objets 3D avec des matériaux liquides
- Conception de Systèmes Embarqués : Étapes, Principes et Applications Réelles
- Arrow Electronics annonce le concours européen de design FPGA — Gagnez une carte de développement gratuite et prix excitants
- MAXREFDES220# : surveillance tension artérielle sans brassard par capteurs optiques
- Microchip lance PolarFire SoC FPGA grade défense avec programme d'accès anticipé
- Construire un robot avec Raspberry Pi et Python : Guide complet
- Construire un Segway auto‑équilibré avec Raspberry Pi
- Étendre GoPiGo v2 sur Windows 10 IoT Core pour Raspberry Pi 3
- Maximiser la production avec les logiciels avancés de fabrication additive