Vivado, Basys 3 et premier projet¶
Informations essentielles¶
La Digilent Basys 3 utilise un FPGA AMD/Xilinx Artix-7.
| Propriété | Valeur |
|---|---|
| Composant FPGA | xc7a35tcpg236-1 |
| Oscillateur système | 100 MHz |
| Broche d'horloge | W5 |
| Période | 10 ns |
| Programmation | USB-JTAG |
| Périphériques | 16 interrupteurs, 16 LED, 5 boutons, afficheur quatre chiffres |
Le fichier de contraintes dépend de la révision de la carte. Utilisez le XDC maître officiel Digilent et confirmez la révision.
Rôle des étapes Vivado¶
| Étape | Question traitée |
|---|---|
| Projet | Quelles sources, contraintes, langage et composant vont ensemble ? |
| Conception élaborée | Quelle hiérarchie et quel RTL décrivent les sources ? |
| Simulation comportementale | La logique satisfait-elle la spécification ? |
| Synthèse | Quelles primitives FPGA peuvent l'implémenter ? |
| Implémentation | Où placer les primitives et comment les router ? |
| Analyse temporelle | Chaque chemin contraint respecte-t-il son délai ? |
| Génération du bitstream | Peut-on coder la configuration du FPGA ? |
| Programmation | Peut-on charger cette configuration par JTAG ? |
Une simulation réussie ne garantit ni la synthèse ni le timing.
Créer un projet VHDL¶
- Lancer Vivado 2026.1.
- Choisir Create Project.
- Sélectionner RTL Project.
- Ajouter ou créer les sources VHDL.
- Choisir VHDL comme langage cible.
- Sélectionner
xc7a35tcpg236-1. - Ajouter le XDC Basys 3.
- Créer une source de simulation VHDL.
- Vérifier les sommets de conception et de simulation dans Sources.
La sélection de la carte dans Boards est pratique si ses fichiers sont installés. Sélectionner directement le composant reste parfaitement valide.
Activer VHDL-2008¶
- Sélectionner les fichiers dans Sources.
- Ouvrir Source File Properties.
- Choisir VHDL 2008 comme File Type.
En ligne de commande :
Premier circuit : interrupteur vers LED¶
library ieee;
use ieee.std_logic_1164.all;
entity switch_led is
port (
switch_i : in std_logic;
led_o : out std_logic
);
end entity;
architecture rtl of switch_led is
begin
led_o <= switch_i;
end architecture;
XDC minimal :
set_property PACKAGE_PIN V17 [get_ports switch_i]
set_property IOSTANDARD LVCMOS33 [get_ports switch_i]
set_property PACKAGE_PIN U16 [get_ports led_o]
set_property IOSTANDARD LVCMOS33 [get_ports led_o]
Les noms de ports XDC doivent correspondre exactement aux ports de l'entité supérieure.
Première simulation auto-vérifiante¶
library ieee;
use ieee.std_logic_1164.all;
use std.env.finish;
entity tb_switch_led is
end entity;
architecture sim of tb_switch_led is
signal switch_s : std_logic := '0';
signal led_s : std_logic;
begin
dut : entity work.switch_led(rtl)
port map (switch_i => switch_s, led_o => led_s);
stimulus : process
begin
switch_s <= '0';
wait for 1 ns;
assert led_s = '0' severity failure;
switch_s <= '1';
wait for 1 ns;
assert led_s = '1' severity failure;
report "PASS: switch_led";
finish;
end process;
end architecture;
Même ce petit test applique la bonne méthode : le résultat attendu est exécutable et non vérifié à l'œil.
Programmer la carte¶
- Générer le bitstream après synthèse et implémentation.
- Relier le port USB-JTAG et allumer la carte.
- Ouvrir Hardware Manager.
- Choisir Open Target → Auto Connect.
- Sélectionner l'Artix-7 détecté.
- Choisir Program Device et le fichier
.bit.
Une configuration chargée par JTAG est normalement volatile. La mémoire non volatile suit une procédure différente.
Organisation recommandée¶
project/
├── src/ # Entités et paquetages synthétisables
├── tb/ # Bancs de test et vecteurs
├── constraints/ # Fichiers XDC
├── sim/ # Scripts, sorties générées ignorées
├── docs/ # Exigences, diagrammes, notes
└── vivado/ # Fichiers de projet si nécessaire
Gardez les sources hors des répertoires générés afin de simplifier Git, les sauvegardes et la recréation du projet.
Liste de contrôle¶
- Composant correct :
xc7a35tcpg236-1. - VHDL-2008 activé.
- Bons sommets pour conception et simulation.
- Noms XDC identiques aux ports VHDL.
- Banc de test réussi automatiquement.
- Aucun avertissement de synthèse inexpliqué.
- Timing d'implémentation respecté.
- Bitstream issu des dernières sources.