Nous partons du principe que vous avez validé l’architecture du chronomètre de l’activité précédente.
Dans votre dossier CoCiNum/src/vhdl/StopWatch
, créez une copie du fichier StopWatch.vhd
et nommez-la StopWatch_WithProcess.vhd
:
cd $HOME/CoCiNum/src/vhdl/StopWatch
cp StopWatch.vhd StopWatch_WithProcess.vhd
C’est ce fichier que vous allez modifier au cours de cet exercice.
Si ce n’est pas déjà fait, démarrez Vivado :
cd $HOME/CoCiNum
./scripts/vivado
Ouvrez votre projet StopWatch
.
Dans le projet Vivado, ajoutez le fichier StopWatch_WithProcess.vhd
(Menu File → Add Sources → Add or create design sources → Add Files).
Désactivez le fichier StopWatch.vhd
en exécutant la commande suivante
dans la console Tcl :
set_property is_enabled false [get_files StopWatch.vhd]
Dans le fichier StopWatch_WithProcess.vhd
, votre travail consiste à remplacer
certaines instructions d’affectation concurrentes par des processus.
Le tableau ci-dessous donne des indications sur les instructions à utiliser.
Vous devez créer un processus différent pour chacun des signaux.
Signal à affecter | Nom du processus | Instructions |
---|---|---|
digit |
p_digit |
case |
disp_select_n_o |
p_disp_select_n_o |
for , if |
Reprenez les consignes de l’activité précédente pour effectuer la simulation et la synthèse du circuit.
Vérifiez que la nouvelle description produit exactement le même comportement que la version avec instructions d’affectations concurrentes.
Remplacez l’instruction d’affectation du signal leds_o
de manière à
n’affecter que les bits 9 et 10 :
leds_o(10 downto 9) <= "00";
Dans deux nouveaux processus, proposez une solution pour gérez l’allumage des
autres LED de manière à afficher la valeur des signaux digit_1sec
et digit_10sec
sous forme de bargraphs.
Signal à affecter | Nom du processus | Instructions |
---|---|---|
leds_o(15 downto 11) |
p_leds_o_10sec |
case |
leds_o(8 downto 0) |
p_leds_o_1sec |
for , if |
Le comportement souhaité est illustré par les deux tableaux ci-dessous :
digit_10sec |
leds_o(15 downto 11) |
---|---|
0 | "00000" |
1 | "00001" |
2 | "00011" |
3 | "00111" |
4 | "01111" |
5 | "11111" |
digit_1sec |
leds_o(8 downto 0) |
---|---|
0 | "000000000" |
1 | "000000001" |
2 | "000000011" |
3 | "000000111" |
⋮ | ⋮ |
8 | "011111111" |
9 | "111111111" |
Après avoir modifié le fichier StopWatch_WithProcess.vhd
, relancez la simulation,
puis la synthèse du circuit.
Vérifiez son fonctionnement sur la carte Basys3.