Vous êtes sur la page 1sur 18

Année Universitaire : 2022-2023

Département : Génie électrique

TP conception VHDL

LP Electronique des Systèmes Embarqué


Semestre : 6
MODULE : Conception VHDL
Réalise par : OUBARDAN MAROUANE
Encadre par P.LACHEHAB A
Année Universitaire : 2022-2023

Département : Génie électrique

Définition
VHDL est un langage de description matériel destiné à représenter le comportement ainsi
que l'architecture d’un système électronique numérique. Son nom complet est VHSIC
Hardware Description Language.
L'intérêt d'une telle description réside dans son caractère exécutable : une spécification
décrite en VHDL peut être vérifiée par simulation, avant que la conception détaillée ne soit
terminée. En outre, les outils de conception assistée par ordinateur permettant de passer
directement d'une description fonctionnelle en VHDL à un schéma en porte logique ont
révolutionné les méthodes de conception des circuits numériques, ASIC ou FPGA.

Programme VHDL Additionneur complet


Table de vérité et logigramme
Le programme simule un additionneur complet. Établir sa table de vérité (déterminer l'état
de chaque sortie de porte en fonction de l'état de ses entrées). Vérifier que ce dispositif
réalise effectivement l'addition binaire des bits A et B avec prise en compte des retenues.

library ieee;
Année Universitaire : 2022-2023

Département : Génie électrique

use ieee.std_logic_1164.all;
entity fadd3 is
port (a,b,r : in std_logic;
s,rs : out std_logic);
end fadd3;
architecture arfadd3 of fadd3 is
begin
s<='1' when (a='0' and b='0' and r='1')
or (a='0' and b='1' and r='0')
or (a='1' and b='0' and r='0')
or (a='1' and b='1' and r='1')
else'0';
rs<='1' when (a='0' and b='1' and r='1')
or (a='1' and b='0' and r='1')
or (a='1' and b='1' and r='0')
or (a='1' and b='1' and r='1')
else'0';
end arfadd3;

Programme VHDL additionneur avec vecteur

library ieee;
use ieee.std_logic_1164.all;
entity faddv is
port (v : in std_logic_vector(2 downto 0);
Année Universitaire : 2022-2023

Département : Génie électrique

s,rs : out std_logic);


end faddv;
architecture arfaddv of faddv is
begin
s<='1' when (v=o"1")or(v=o"2")or(v=o"4")or(v=o"7")
else'0';
rs<='1' when (v=o"3")or(v=o"5")or(v=o"6")or(v=o"7")
else'0';
end arfaddv;

Programme VHDL exercice de machine cour

library ieee;
use ieee.std_logic_1164.all;
entity mac is
port (a : in std_logic_vector(3 downto 0);
s,r,l : out std_logic);
end mac;
architecture armac of mac is
begin
s<='1' when (a=o"3")or(a=o"5")or(a=o"6")
else'0';
r<='1' when (a=o"1")or(a=o"4")or(a=o"2")
else'0';
Année Universitaire : 2022-2023

Département : Génie électrique

l<='0' when (a=o"0")or(a=o"7")


else'1';

end armac;

Comparateur

Un comparateur numérique est un circuit logique qui compare deux nombres binaires. Le
comparateur peut être utilisé pour déterminer si un nombre donné est inférieur, égal ou
supérieur à un autre nombre.

library ieee;
Année Universitaire : 2022-2023

Département : Génie électrique

use ieee.std_logic_1164.all;
entity comp1 is
port (a : in std_logic;
b : in std_logic;

s,i,e : out std_logic);


end comp1;
architecture arcomp1 of comp1 is
begin
s<='1' when (a>b)
else'0';
i<='1' when (a<b)
else'0';
e<='1' when (a=b)
else'0';
end arcomp1;

Programme VHDL comparateur 4 bit

library ieee;
use ieee.std_logic_1164.all;
entity comp is
port (a : in std_logic_vector(3 downto 0);--pour 2 bit a : in std_logic_vector(1 downto 0)
Année Universitaire : 2022-2023

Département : Génie électrique

b : in std_logic_vector(3 downto 0);

s,i,e : out std_logic);


end comp;
architecture arcomp of comp is
begin
s<='1' when (a>b)
else'0';
i<='1' when (a<b)
else'0';
e<='1' when (a=b)
else'0';
end arcomp;

Programme VHDL d’un transcodeur binaire-- gray


Table de vérité
Année Universitaire : 2022-2023

Département : Génie électrique

library ieee;
use ieee.std_logic_1164.all;
entity tra is
port (b: in std_logic_vector(3 downto 0);
g0,g1,g2,g3: out std_logic);

end tra;
architecture archtra of tra is
begin
g0<='1' when
(b=x"1")or(b=x"2")or(b=x"5")or(b=x"6")or(b=x"9")or(b=x"A")or(b=x"D")or(b=x"E")
else'0';
g1<='1' when
(b=x"2")or(b=x"3")or(b=x"4")or(b=x"5")or(b=x"A")or(b=x"B")or(b=x"C")or(b=x"D")
else'0';
Année Universitaire : 2022-2023

Département : Génie électrique

g2<='1' when
(b=x"4")or(b=x"5")or(b=x"6")or(b=x"7")or(b=x"8")or(b=x"9")or(b=x"A")or(b=x"B")
else'0';
g3<='1' when
(b=x"8")or(b=x"9")or(b=x"A")or(b=x"B")or(b=x"C")or(b=x"D")or(b=x"E")or(b=x"E")
else'0';
end archtra;

Programme VHDL multiplexeur 4->1

Les multiplexeurs sont des fonctions logiques combinatoires qui permettent d'aiguiller une
entrée parmi 2n vers une sortie en fonction d'entrée de sélection. Ainsi un multiplexeur 4
vers 1, permet d'orienter à l'aide de deux entrées de sélection, 4 entrées d'information vers
une sortie

Equation de sortie
Année Universitaire : 2022-2023

Département : Génie électrique

library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity mux_4to1 is
port(
A,B,C,D : in STD_LOGIC;
S0,S1: in STD_LOGIC;
Z: out STD_LOGIC
);
end mux_4to1;
architecture bhv of mux_4to1 is
begin
process (A,B,C,D,S0,S1) is
begin
if (S0 ='0' and S1 = '0') then
Z <= A;
elsif (S0 ='1' and S1 = '0') then
Z <= B;
Année Universitaire : 2022-2023

Département : Génie électrique

elsif (S0 ='0' and S1 = '1') then


Z <= C;
else
Z <= D;
end if;
end process;
end bhv;

Programme VHDL multiplexeur 8->1

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY MUX8_1 IS
PORT ( SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
A,B,C,D,E,F,G,H :IN STD_LOGIC;
MUX_OUT: OUT STD_LOGIC );
END MUX8_1;
ARCHITECTURE BEHAVIORAL OF MUX8_1 IS

BEGIN
Année Universitaire : 2022-2023

Département : Génie électrique

PROCESS (SEL,A,B,C,D,E,F,G,H)

BEGIN

CASE SEL IS

WHEN "000" => MUX_OUT <= A;


WHEN "001" => MUX_OUT <= B;
WHEN "010" => MUX_OUT <= C;
WHEN "011" => MUX_OUT <= D;
WHEN "100" => MUX_OUT <= E;
WHEN "101" => MUX_OUT <= F;
WHEN "110" => MUX_OUT <= G;
WHEN "111" => MUX_OUT <= H;
WHEN OTHERS => NULL;

END CASE;
END PROCESS
END BEHAVIORAL;

Programme VHDL full adder avec signal

library ieee;
use ieee.std_logic_1164.all;
entity signadd is
port (a,b,c : in std_logic;
s,rs : out std_logic);
end signadd;
architecture arsignadd of signadd is
Année Universitaire : 2022-2023

Département : Génie électrique

signal temp1,temp2,temp3: std_logic;


begin
temp1<= a xor b;
temp2<= a and b;
temp3<= temp1 and c;
rs<=temp2 or temp3;
s<= temp1 xor c;
end arsignadd;

Programme VHDL full adder avec case

library ieee;
use ieee.std_logic_1164.all;
entity fulladd is
port (--a,b,c : in std_logic;
V: in std_logic_vector(2 downto 0);
s,rs : out std_logic);
end fulladd;
architecture arfulladd of fulladd is
begin
process (V)
begin
case v is
Année Universitaire : 2022-2023

Département : Génie électrique

when "001" => s<='1';


when "010" => s<='1';
when "100" => s<='1';
when "111" => s<='1';
when others => s<='0';
end case;
end process;
process (V)
begin
case v is
when "011" => rs<='1';
when "101" => rs<='1';
when "110" => rs<='1';
when "111" => rs<='1';
when others => rs<='0';
end case;
end process;
end arfulladd;

Programme VHDL bascul D

Pour rester dans le simple ou plutôt pour faire encore plus simple, nous allons parler de la
bascule D
Année Universitaire : 2022-2023

Département : Génie électrique

library ieee;
use ieee.std_logic_1164.all;
entity bascul is
port (d,clk: in std_logic;
s: out std_logic);
end bascul;
architecture arbas of bascul is
begin
process (clk)
begin
if (clk' event and clk='1') then
s<=d;
end if;
end process;
end arbas;
Année Universitaire : 2022-2023

Département : Génie électrique

Programme VHDL bascul D avec set et reset

library ieee;
use ieee.std_logic_1164.all;
entity basculs is
port (d,clk,s,r: in std_logic;
q: out std_logic);
end basculs;
architecture arbass of basculs is
begin
process (s,r,clk)
begin
if(s='1') then
q<='1';
elsif( r='1') then
q<='0';
elsif (clk' event and clk='1') then
q<=d;
end if;
end process;
end arbass;

Programme VHDL bascul jk


Année Universitaire : 2022-2023

Département : Génie électrique

La plus utilisée des bascules "maître-esclave" est la bascule JK. La bascule JK comporte trois
entrées de commande, une entrée horloge et deux sorties complémentaires. L'entrée RaZ
permet la remise à zéro de la bascule, les entrées J et K permettent de placer la bascule dans
un état stable défini.

library ieee;
use ieee.std_logic_1164.all;
entity basculjk is
port (j,k,clk: in std_logic;
q: out std_logic);
end basculjk;
architecture arbasjk of basculjk is
signal qa: std_logic;
begin
process (clk,j,k)
begin
if (clk' event and clk='1') then
if j='0' and k='0' then qa<=qa;
elsif j='0' and k='1' then qa<='0';
elsif j='1' and k='0' then qa<='1';
else qa<= not qa;
end if;
end if;
Année Universitaire : 2022-2023

Département : Génie électrique

end process;
q<=qa;
end arbasjk;

Vous aimerez peut-être aussi