Está en la página 1de 29

Lenguaje VHDL

Circuitos Lógicos Secuenciale


Que es VHDL

 VHDL como lenguaje de alto nivel permite:


1. El modelado de ensambles electrónicos complejos.
2. La simulación de los modelos de componentes.
3. La síntesis lógica.
4. La portabilidad entre herramientas de síntesis y entre arquitecturas.
Para que VHDL
Que Permite VHDL

 Definir los “ports” de entrada y salida del conjunto lógico descripto


(entity).
 Definir una arquitectura usando el juego de instrucciones soportado por
las herramientas de síntesis (escritura RTL).
 Unir los diferentes módulos descritos separadamente (VHDL estructural)
Entidad y Arquitectura
Puertos de una Entidad
Modos de un Puerto
Declaración de una Entidad
Estructura de un Diseño en VHDL
Resumen Arquitectura y Entidad
Tipo de Datos
Tipo de Datos
Tipo de Datos
Asignación de Señales
Tipos SIGNED Y UNSIGNED
Operadores definidos en VHDL
Operadores definidos en VHDL
Instrucciones en Procesos IF – THEN – ELSE
Instrucciones en Procesos CASE
Instrucciones en Procesos FOR
Instrucciones en Procesos BUCLE WHILE
Instrucciones en Procesos BUCLE WHILE
EJEMPLO1

 Utilizando VHDL implementar un Sumador Completo:


EJEMPLO 1

 Utilizando VHDL implementar un Sumador Completo:


library IEEE;
EJEMPLO 1
use IEEE.STD_LOGIC_1164.ALL;

entity sumador_completo is
Port (
a : in STD_LOGIC;
b : in STD_LOGIC;
cin : in STD_LOGIC;
f : out STD_LOGIC;
cout : out STD_LOGIC);
end sumador_completo;

architecture Behavioral of sumador_completo is


begin
f <= a xor b xor cin;
cout <= (a and b) or (cin and (a xor b));
end Behavioral;
EJEMPLO 2

 Utilizando VHDL implementar un Contador Mod 4.


architecture arch_CONTA of CONTA is
library IEEE;
signal aux,D: std_logic_vector(1 downto 0); EJEMPLO 2
use ieee.std_logic_1164.all;
begin
use ieee.numeric_std.all;
process(CLK_I)
use ieee.std_logic_arith.all;
begin
use ieee.std_logic_unsigned.all;
if(CLK_I'event and CLK_I='1') then
entity CONTA is
if(RST_I='1')then
port (
aux <= (others => '0');
CLK_I : in std_logic;
else
RST_I : in std_logic;
aux <= D;
Q : out std_logic_vector(1 downto 0)
end if;
);
end if;
end CONTA;
end process;
D <= aux + 1;
Q <= aux;
end arch_CONTA;
EJEMPLO 2

 Utilizando VHDL implementar un Contador Mod 4.


architecture arch_CONTA of CONTA is
library IEEE; signal aux: std_logic_vector(3 downto 0):="0000"; EJEMPLO 2
use ieee.std_logic_1164.all; begin
use ieee.numeric_std.all; process(CLK_I)
use ieee.std_logic_arith.all; begin

use ieee.std_logic_unsigned.all; if CLK_I'event and CLK_I='1' then


if RST_I='1' then
entity CONTA is
for i in 0 to 15 loop
port (
Q <= aux;
CLK_I : in std_logic;
aux <= aux + 1;
RST_I : in std_logic; end loop;
Q : out std_logic_vector(3 downto 0)); else
end CONTA; aux <=(others =>'0');
Q <= aux;
end if;
end if;
end process;
end arch_CONTA;

También podría gustarte