Está en la página 1de 17

• VHDL (Hardware Description Language) es un

lenguaje orientado a la descripción o


modelado de sistemas digitales; es decir, se
puede describer, analizar y evaluar el
comportamiento de un sistema electrónico
digital.
• Lenguaje poderoso que permite la
integración de sistemas digitales sencillos,
elaborados o ambos en un dispositivo lógico
programable como una GAL, CPDL o FPGA.
Unidades Primarias Unidades Secundarias
Declaración de entidad* Arquitectura*
Declaración del paquete Cuerpo del paquete
Configuración

* Obligatoria
• Bloque electrónico elemental (sumador, contador,
compuerta, flip-flop, etc.) que forma de manera
individual o en conjunto un sistema digital.

Cin Suma
A Entidad Sumador
B Cout

Cin Medio Y Suma


Sumador
X
A Medio Cout
B Sumador Z
• Cada una de las señales de entrada y salida de
una entidad. Similar a un pin de un
esquemático.
• Todos los puertos declarados deben tener un
nombre, modo (dirección de la información) y
tipo de dato (clase de información).
• Define la dirección en la cual el dato es transferido
a través de un puerto.
• in: entrada.
• out: salida.
• inout: bidireccional. Permite retroalimentación
tanto interna como externa a la entidad.
• buffer: para retroalimentación interna dentro
de la entidad.
• Son valores que el diseñador establece para los puertos
de entrada y salida de una entidad. Algunos tipos son:
• Bit: puede tomar valores de 0 y 1 lógicos.
• Boolean: define valores de verdadero o falso.
• Bit_vector: representa un conjunto de bits para una
variable de entrada o salida.
• Integer: representa un número entero.
Cin Suma
A Entidad Sumador
B Cout

-- Declaración de la entidad de un circuito sumador


entity sumador is
port (A, B, Cin: in bit;
Suma, Cout: out bit);
end sumador;
a2
b2
a1
Circuito f
b1
a0
b0

-- Declaración de la entidad de un circuito.


entity circuito is
port (a2, b2, a1, b1, a0, b0: in bit;
f: out bit);
end circuito;
Nombres o etiquetas que se utilizan para referir
variables, constantes, señales, procesos, etc. Pueden
ser números, letras y guiones bajos, sin restricción en la
longitud.
Regla Incorrecto Correcto
El primer caracter siempre es una letra 6variable variable6
mayúscula o minúscula
El segundo caracter no puede ser un guión v_suma v1_suma
bajo
Dos guiones juntos no son permitidos suma__1 suma_1_
Un identificador no puede utilizar símbolos variable#1 variable_1
• Vector: conjunto de bits.
Cin Suma[3:0]
A[3:0] sumador_V
Cout
B[3:0]

-- Declaración de entidad de un circuito sumador con vectores.


entity sumador_V is
port (A, B: in bit_vector (3 downto 0);
Cin: in bit;
Cout: out bit;
Suma: out bit_vector (3 downto 0));
end sumador_V;
• Es la estructura que describe el funcionamiento de una
entidad, de tal forma que permita el desarrollo de los
procedimientos que se llevarán a cabo con el fin de que
la entidad cumpla las condiciones de funcionamiento
deseadas.
• Estilos de programación:
• Funcional.
• Flujo de datos.
• Estructural.
Expone la forma en que trabaja el sistema; es decir, las
descripciones consideran la relación que hay entre las
entradas y las salidas del circuito, sin importar como esté
organizado en su interior.
2
a
Comparador
2 c
b

si a=b entonces c=1


si a≠b entonces c=0
-- Declaración descripción funcional.
library ieee;
use ieee.std_logic_1164.all
entity comparador is
port (a, b: in bit_vector (1 downto 0);
c: out bit);
end comparador;
architecture funcional of comparador is
begin
compara: process (a,b)
begin
if a = b then
c <= ‘1’;
else
c <= ‘0’;
end if;
end process compara;
end funcional;
Indica la forma en que los datos se pueden tranferir de
una señal a otra sin necesidad de declaraciones
secuenciales (if-then-else). Se pueden utilizar dos formas:
instrucciones when-else o ecuaciones booleanas.
-- Declaración descripción flujo de datos mediante when-else.
library ieee;
use ieee.std_logic_1164.all
entity comparador is
port (a, b: in bit_vector (1 downto 0);
c: out bit);
end comparador;
architecture flujo_datos of comparador is
begin
c <= ‘1’ when (a = b) else ‘0’;
end flujo_datos;
El interior del
circuito comparador
puede representarse
por medio de
compuertas básicas -- Declaración flujo de datos ecuaciones booleanas.
library ieee;
y este circuito puede use ieee.std_logic_1164.all
describirse mediante entity comparador is
port (a, b: in bit_vector (1 downto 0);
sus ecuaciones c: out bit);
booleanas. end comparador;
architecture booleana of comparador is
begin
c <= (a(1) xnor b(1)) and (a(0) xnor b(0));
end booleana;
-- Declaración estructural.
• Basa su comportamiento library ieee;
use ieee.std_logic_1164.all
en modelos lógicos entity comparador is
port (a, b: in bit_vector (1 downto 0);
establecidos (compuertas, c: out bit);
sumadores, contadores, end comparador;
use work.compuerta.all;
etc.). architecture estructural of comparador is
• Se debe descomponer signal x: bit_vector (1 downto 0);
begin
logicamente el modelo en U0: xnor2 port map (a(0), b(0), x(0));
pequeños submódulos. U1: xnor2 port map (a(1), b(1), x(1));
U2: and2 port map (x(0), x(1), c);
end estructural;

También podría gustarte