Présentation du programme
Ce programme est un programme utilisé pour faire la somme de deux variables en binaire. Nos sorties seront le résultat et le reste, reste que nous pourrons utiliser si nous imbriquons plusieurs additionneurs pour permettre une addition entre plus de variables.
Le programme fonctionnera donc de la sorte
- Si a=0 et b=1, le résultat sera 1 et le reste 0.
- Si a=0 et b=0, le résultat sera 0 et le reste 0.
- Si a=1 et b=1, le résultat sera 0 et le reste 1.
- Si a=1 et b=0, le résultat sera 1 et le reste 0.
Le programme utilise une XOR et une AND car une addition revient à utiliser ses portes logiques là.
Nous avons ici bien un additionneur binaire (appelé en TP additionneur élémentaire).
Explication ligne par ligne
Ces trois lignes son essentielles au fonctionnement de votre programme car il permet d’appeler les librairies pour que vous puissiez vous en servir.
LIBRAIRY IEE; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all;
Ensuite vous devez créer l’entité de votre programme, c’est la partie où vous allez renseigner au programme les variables d’entrée et de sortie.
Là toutes les variables sont de type « STD_LOGIC », c’est le type pour les variables d’un seul byte.
Pour les variables composées de plusieurs bytes, il faut utiliser le type « STD_LOGIC_VECTOR(6 downto 0) », ce type va permettre d’avoir une variable composée de 7 bytes.
Ici nous avons a et b qui sont en « IN », donc en entrée, et R et S en « OUT » donc en sortie.
Vous devez aussi nommer votre entité, il est préférable de lui donner le même nom que votre fichier vhdl (ici « projet »).
ENTITY projet IS PORT( a, b : IN STD_LOGIC; R,S : OUT STD_LOGIC <-- important ne pas mettre de point virgule à votre dernière déclaration. ); END projet;
Passons maintenant à l’architecture de votre programme, c’est la partie où vous allez coder comment les sorties réagissent en fonction des entrées.
Lorsque vous déclarez votre architecture il est important de lui renseigner le nom de votre entité après le « OF ».
Pour commencer à écrire dans l’architecture vous devez écrire « BEGIN », et ensuite vous pouvez écrite vos équations.
Ici la variable S sera vraie lorsqu’il y aura a XOR b et R quand a AND b.
ARCHITECTURE Arch_projet OF projet IS BEGIN S <= a XOR b; R <= a AND b; END Arch_projet;
Voici le programme complet :
LIBRAIRY IEE; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY projet IS PORT( a, b : IN STD_LOGIC; R,S : OUT STD_LOGIC <-- important ne pas mettre de point virgule à votre dernière déclaration. ); END projet; ARCHITECTURE Arch_projet OF projet IS BEGIN S <= a XOR b; R <= a AND b; END Arch_projet;
Vidéo de test
Voici la vidéo du test physique du programme une fois que nous l’avons transféré vers la carte.