Está en la página 1de 21

VHDL: su organización y arquitectura.

Ing. Diego Barragán Guerrero


http://www.decom.fee.unicamp.br/~diego/
FPGA: arquitectura.
 Slice:
 LUT: multiplicadores,
sumadores, funciones
booleanas.
 SRL: contadores, conversores
S-P y P-S
 RAM: bancos de memoria.
 Macros:
 Multiplicadores.
 MAC.
 Memorias.
 DCM.
 Procesadores (PowerPc, Picoblaze).
VHDL
 VHDL: VHSIC Hardware Description Languaje.
 Lenguaje orientado a la descripción o
modelado de sistemas digitales.
 Fines: describir, analizar y evaluar el
comportamiento de un sistema electrónico
digital.
Unidades básicas de diseño
 * 1.Declaración de entidad.
 * 2. Arquitectura.
 3. Configuración .
 4. Declaración del paquete.
 5. Cuerpo del paquete.

 * Indispensables.
Entidad
 Declaración de las entradas y salidas de un modulo.

ENTITY Nombre_entidad IS
PORT ( Nombre de señal: modo tipo de señal; . . .
Nombre de señal: modo tipo de señal ) ;
END nombre_entidad ;

entity ejem_1 is
port ( A, B, C, D: in STD_LOGIC;
F : out STD_LOGIC );
end ejem_1 ;
Entidad: puertos de I/O
 Puerto (port): señal de entrada y/o salida.
 Todos los puertos deben tener: nombre, modo y tipo de
dato.
Entidad: modos
Modo Descripción
IN En este modo las señales solo entran en la entidad
OUT Las señales salen de la entidad
BUFFER Este modo se utiliza para las señales que además de salir de la
entidad pueden usarse como entradas realimentadas

INOUT Este modo se utiliza para señales bidireccionales. Se emplea en


salida con tres estados. Se puede asignar como sustituto de los
tres modos anteriores, pero no se aconseja pues dificulta la
comprensión del programa.
Entidad: tipos de datos
 Bit: En este tipo las señales solo toman los valores de "1" y "0"
 Boolean: En este tipo las señales solo toman los valores de True
y False.
 Std_logic: En este tipo las señales toman 9 valores, entre ellos
tenemos: "1", "0", "Z", "U", "X" ,.
 Integer: En este tipo las señales toman valores enteros. Los 1 y
los 0 se escriben sin “
 Bit_vector: En este tipo los valores de las señales son una
cadena de unos y ceros. Ejemplo: “1000”
 Std_logic_vector: En este tipo los valores de las señales son
una cadena de los nueve valores definidos para el tipo std_logic.
 Character: Contiene todos los caracteres ISO de 8 bits, donde
los primeros 128 son los caracteres ASCII (LCD).
Declaración de entidades

ENTITY dff IS
PORT(d,clk,rst: IN std_logic;
q: OUT std_logic);
END dff;
Entidad: identificadores
 Los identificadores son los nombre válidos para referir
variables, constantes, señales, procesos, etc.
 No tienen longitud máxima.
 Puede contener caracteres del a ‘A’ a la ‘Z’, de la ‘a’ a la ‘z’,
caracteres numéricos de ‘0’ al ‘9’ y el carácter subrayado ’_’.
 No se diferencia entre mayúsculas y minúsculas
(CONTADOR, contador y ConTadoR son el mismo
identificador).
 Debe empezar por un carácter alfabético, no puede terminar
con un subrayado, ni puede tener dos subrayados seguidos.
 No puede usarse como identificador una palabra reservada.
Diseño de entidades mediante
vectores
 Conjuntos de palabras de varios bits.
 A = [A3,A2,A1,A0];
 A=[0101];
 Definidos con la sentencia std_logic_vector.
Port (
a, b: in std_logic_vector(7 downto 0);
sel: in std_logic_vector (1 downto 0);
c: out std_logic_vector (7 downto 0)
);
Declaración de entidades mediante
librerías y paquetes
 Librerías IEEE y WORK.
 IEEE: paquete
std_logic_1164
 WORK: numeric_std,
std_arith. Lugar donde se
almacenan los programas que
el usuario va generando.
 Paquete: contiene
algoritmos preestablecidos.
Declaración de librerías
 Al declarar una librería, son necesarias dos líneas
de código: una que contenga el nombre de la
librería y otra con la sentencia USE, como se
muestra:

LIBRARY nombre_libreria;
USE nombre_libreria.paquete;
Paquete std_logic_1164
 Está dentro de la librería IEEE.
 Contiene todos los tipos de datos que se emplean en VHDL.

Use std_logic_1164.all

Paquete Descripción

Numeric_std Define funciones para realizar


operaciones entre los diferentes tipos de
datos.
Numeric_bit Define tipos de datos binarios

Std_arith Funciones y operadores aritméticos


(=,<,>…)
Paquete std_logic_1164
2 library ieee;
3 use ieee.std_logic_1164.all;
4 Entity comparador is
5 port (a,b: in bit_vector (1 downto 0);
6 C : out bit ); ao
7 end comparador; a1
bo COMPARADOR c
8 architecture D_funcional of comparador is
9 begin b1
10 Compara : process (a,b)
11 begin
12 If a = b then
13 c<=‘1’;
14 else
15 c<= ‘0’;
16 end if;
17 end process compara;
18 End D_funcional;
Arquitecturas
 Es la estructura que define el funcionamiento de
una entidad.

Estilos de programación para Arquitecturas

Estilo por flujo de datos


Estilo estructural
Estilo funcional
Arq: Estilo funcional
• Expone la forma en que trabaja el sistema, relación que hay entre las
entradas y salidas del circuito, sin importar como esté organizado en
su interior.
2 library ieee;
3 use ieee.std_logic_1164.all;
ao
4 Entity comparador is
a1
5 port (a,b: in bit_vector (1 downto 0);
bo COMPARADOR c
6 C : out bit );
7 end comparador;
b1
8 architecture D_funcional of comparador is
9 begin
10 Compara : process (a,b)
11 begin • Basada en el uso de
12 If a = b then procesos y
13 c<=‘1’; declaraciones
14 else secuenciales.
15 c<= ‘0’;
16 end if;
17 end process compara;
18 End D_funcional;
Arq: Estilo por flujo de datos.

 Indica la forma en que los datos se pueden


transferir de una señal a otra.
 Se utilizan:
 Instrucciones when – else.
 Ecuaciones booleanas.
Flujo de datos: when - else
ao
a1
bo COMPARADOR c
b1

1 --comparador flujo de datos when-else • Basada en el uso de


2 library ieee; declaraciones
3 use ieee.std_logic_1164.all;
concurrentes.
4 Entity comparador is
5 port (a,b: in std_logic_vector(1 downto 0);
6 C : out std_logic);
7 end comparador;
8 architecture D_flujo_datos of comparador is
9 begin
10 c<=‘1’ when (a=b) else ‘0’;
11 end D_flujo_datos;
Ecuaciones booleanas
1 --comparador flujo de datos – ecuaciones
booleanas
2 library ieee;
3 use ieee.std_logic_1164.all;
4 Entity comparador is
5 port (a,b: in std_logic_vector(1 downto 0);
6 C : out std_logic);
7 end comparador;
8 architecture booleano of comparador is
9 begin
10 c<= (a(1) xnor b(1)
11 and a(0) xnor b(0));
12 end booleano;
Referencias:
 Volnei A. Pedroni. 2004. Circuit Design with VHDL. MIT
Press, Cambridge, MA, USA.

 Maxinez, D.G., Alcalá, J. 2003. VHDL: el arte de programar


sistemas digitales. Compañía Editorial Continental.

También podría gustarte