« Very High Speed Integrated Circuit Hardware Description Language/Travail pratique/TP 2 » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
m Robot : Remplacement de texte automatisé (-(<|</)source([ \t>]) +\1syntaxhighlight\2)
 
Ligne 36 :
}}
Ce problème à résoudre correspond à une entité (entity) VHDL :
<sourcesyntaxhighlight lang="VHDL">
entity tp1 is
port (
Ligne 43 :
aff : out std_logic_vector(3 downto 0)); -- 4 selecteurs d'afficheur
end tp1;
</syntaxhighlight>
</source>
On peut remarquer que :
* les quatre interrupteurs d'entrées sont regroupés dans une variable que l’on appelle entrees
Ligne 65 :
 
L'entité VHDL complète correspondante à la figure ci-dessus sera donc :
<sourcesyntaxhighlight lang="VHDL">
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
Ligne 74 :
aff : out std_logic_vector(3 downto 0)); -- 4 selecteurs d'afficheur
end tp1;
</syntaxhighlight>
</source>
qu’il vous faudra compléter avec son architecture correspondante. Il s'git naturellement d'un problème purement combinatoire qui peut être résolu avec un style "with select when" écrit directement à partir d'une [[w:Table_de_vérité|table de vérité]].
 
{{Solution|contenu=
<sourcesyntaxhighlight lang="VHDL">
library IEEE;
use IEEE.std_logic_1164.all;
Ligne 116 :
aff <= "1110";
end seg7_arch;
</syntaxhighlight>
</source>
}}
 
Ligne 132 :
Un compteur {{Unité|20|bits}} est destiné à réaliser un signal "lent" (Q19) à partir de l'horloge {{Unité|50|{{abréviation|Mhz|mégahertz}}}} de la carte. Un mutliplexeur permet d'envoyer alternativement les quatre bits de poids fort et les quatre bits de poids faible sur le décodeur sept segments. Ceci doit être synchronisé avec le signal qui sélectionne l’[[w:Afficheur_7_segments|afficheur 7 segments]] sur lequel on affiche. Comme il n'y a que deux afficheurs, le bit Q19 inversé/non inversé suffit pour alterner cette sélection d'afficheur : quand on envoie le poids faible on sélectionne l'afficheur droit etc. Le décodeur sept segments de l'exercice 1 peut être utilisé encore ici. Le travail à réaliser peut être caractérisé par l'entité (entity) suivante :
 
<sourcesyntaxhighlight lang="VHDL">
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
Ligne 142 :
aff : out std_logic_vector(3 downto 0)); -- sélection des afficheurs
end tp1;
</syntaxhighlight>
</source>
 
qu’il vous suffit de compléter par son architecture correspondante. Avant de dérouler la solution, essayez de réfléchir par vous-même.
{{Solution|contenu=
Voici sans autres explications une solution du TP1 :
<sourcesyntaxhighlight lang="VHDL">
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
Ligne 259 :
end process;
end seg7_arch;
</syntaxhighlight>
</source>
Et voici le fichier ucf :
<pre>
Ligne 302 :
 
L'entité VHDL correspondant au schéma est :
<sourcesyntaxhighlight lang="VHDL">
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
Ligne 313 :
aff : out std_logic_vector(3 downto 0)); -- sélection des afficheurs
end tp1b;
</syntaxhighlight>
</source>
 
{{remarque|contenu=Le registre à décalage se fait facilement avec l'opérateur de concaténation. Quelque chose comme
<sourcesyntaxhighlight lang="VHDL">
-- reset asynchrone
if reset = '1' then
Ligne 323 :
qs <= qs(0) & qs(3 downto 1); --decalage circulaire droite
end if;
</syntaxhighlight>
</source>
devrait convenir. On vous laisse trouver le process autour, l'entité les signaux ...
}}
Ligne 343 :
 
En résumé, votre travail consiste à implanter les composants suivants :
<sourcesyntaxhighlight lang="VHDL">
component lent
port(horloge : in std_logic;
Ligne 363 :
q : out STD_LOGIC_VECTOR (3 downto 0));
END COMPONENT;
</syntaxhighlight>
</source>
Certains sont utilisés dans TP1.