VHDLPR PDF
VHDLPR PDF
VHDLPR PDF
TP conception VHDL
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.
library ieee;
Année Universitaire : 2022-2023
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;
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
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
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
use ieee.std_logic_1164.all;
entity comp1 is
port (a : in std_logic;
b : in std_logic;
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
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
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;
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
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
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
PROCESS (SEL,A,B,C,D,E,F,G,H)
BEGIN
CASE SEL IS
END CASE;
END PROCESS
END BEHAVIORAL;
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
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
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
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
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;
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
end process;
q<=qa;
end arbasjk;