You are on page 1of 20

VHDL: su organizacin y arquitectura.

Ing. Ing Diego Barragn Guerrero http://www.matpic.com

FPGA
FPGA Bloque lgico configurable (CLB configurable logic block). Compuesto por varios mdulos lgicos. Mdulo lgico :se configura para implementar lgica l i combinacional o l i registrada. bi i l lgica i t d Dentro del mdulo lgico tenemos un LUT (look Up table) memoria programable que genera funciones lgicas combinacionales = PLA / PAL. Interconexiones. Bloques de entrada/salida.

Introduccin
VHDL: Hardware D i ti L VHDL H d Description Languaje. j Lenguaje orientado a la descripcin o g j p modelado de Sistemas Digitales. Fines: d F describir, analizar y evaluar el b l l l comportamiento de un sistema electrnico p digital.

Unidades bsicas de diseo


* 1.Declaracin de entidad (p). 1 Declaracin (p) * 2. Arquitectura (s). 3. Configuracin (p). 4. 4 Declaracin del paquete (p) (p). 5. Cuerpo del paquete (s). * Indispensables Indispensables.

Entidad
Declaracin de las entradas y salidas de un modulo.
ENTITY Nombre_entidad IS PORT ( Nombre de seal: modo tipo de seal; . . . Nombre de seal: modo tipo de seal ) ; END nombre_entidad ;

entity AOI is port ( A, B, C, D: in STD_LOGIC; F : out STD_LOGIC ); end AOI;

Entidad: puertos de I/O


Puerto: seal de entrada o salida salida. Todos los puertos deben tener: nombre, modo y tipo de dato. dato

Entidad: modos
Modo IN OUT BUFFER Descripcin En este modo las seales solo entran en la entidad Las seales salen de la entidad Este modo se utiliza para las seales que adems de salir de la entidad pueden usarse como entradas realimentadas p p Este modo se utiliza para seales 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 comprensin del programa.

INOUT

Entidad: tipos de datos


Tipo Bit Boolean Std_logic Integer Bit_vector Std_logic_vector Character Caracterstica En este tipo las seales solo toman los valores de "1" y "0" En este tipo las seales solo toman los valores de True y False En este tipo las seales toman 9 valores, entre ellos tenemos: "1", "0", "Z" (para el 3er estado), "-" (para los opcionales). En este tipo las seales toman valores enteros. Los 1 y los 0 se escriben enteros sin En este tipo los valores de las seales son una cadena de unos y ceros. Ejemplo: 1000 Ej l En este tipo los valores de las seales son una cadena de los nueve valores g permisibles para el tipo std_logic. Contiene todos los caracteres ISO de 8 bits, donde los primeros 128 son los caracteres ASCII.

Declaracin de entidades

ENTITY dff IS PORT(d,clk,rst: IN BIT; q: OUT BIT); END dff

Entidad: identificadores Los identificadores son los nombre vlidos para referir variables, constantes, seales, procesos, etc procesos etc.
No tienen longitud mxima. Puede contener caracteres del a A a la Z, de la a a la z, caracteres A Z, a z, numricos de 0 al 9 y el carcter subrayado _. No se diferencia entre maysculas y minsculas (CONTADOR, contador y ConTadoR son el mismo identificador ) identificador.) Debe empezar por un carcter alfabtico, no puede terminar con un subrayado, ni puede tener dos subrayados seguidos. Existen l id ifi d E i los identificadores extendidos (VHDL93): admiten cualquier did (VHDL93) d i l i carcter y diferencian maysculas de minsculas si se encuentran entre dos caracteres \. No N puede usarse como identificador una palabra reservada. d d f d lb d

Diseo de entidades mediante vectores


Conjuntos de palabras de varios bits bits. A = [A3,A2,A1,A0] Definidos con la sentencia BIT_VECTOR.
Port (a, b: in bit_vector (7 downto 0); sel: in bit vector (1 downto 0); bit_vector c: out bit_vector (7 downto 0) );

Declaracin de entidades mediante libreras y paquetes


Libreras IEEE y WORK. IEEE: paquete std_logic_1164 WORK: numeric_std, std_arith. Lugar donde se almacenan los programas que el usuario va generando. l i d Paquete: contiene algoritmos preestablecidos. l bl d

Declaracin de libreras
Al declarar una librera son necesarias dos lneas librera, de cdigo: una que contenga el nombre de la librera l b y otra con l sentencia USE, como se la muestra:

Paquete std_logic_1164
Est dentro de la librera IEEE. . Contiene todos los tipos de datos que se emplean en VHDL.
Use std_logic_1164.all Paquete Numeric_std Descripcin Define funciones para realizar funciones entre l dif t los diferentes ti d d t t tipos de datos. Define tipos de datos binarios p Funciones y operadores aritmticos (=,<,>)

Numeric_bit Std_arith

Paquete std_logic_1164
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 --comparador descripcin funcional p p 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 D funcional of comparador is D_funcional begin Compara : process (a,b) g begin If a = b then c<=1; else c<= 0; end if; end process compara; End D funcional; D_funcional;

ao a1 bo b1 COMPARADOR c

Arquitecturas
Es la estructura que define el funcionamiento de una entidad.
Estilos de programacin para Arquitecturas

Estilo por flujo de datos Estilo estructural Estilo funcional

Arquitecturas: Estilo funcional


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 --comparador descripcin 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 D_funcional of comparador is begin Compara : process ( b) C (a,b) begin If a = b then c<=1; else c<= 0; end if; end process compara; End D_funcional;

Expone la forma en que trabaja el sistema, relacin que hay entre las

, p g entradas y salidas del circuito, sin importar como est organizado en su interior.
ao a1 bo b1 COMPARADOR

Basada en el uso de procesos y declaraciones secuenciales.

Arquitecturas: Estilo por flujo de datos.


Indica la forma en que los datos se pueden transferir de una seal a otra. Se utilizan: Instrucciones when else. Ecuaciones booleanas.

Flujo de datos: when - else


ao a1 bo b1 1 2 3 4 5 6 7 8 9 10 11 --comparador flujo de datos when-else library ieee; use ieee std logic 1164 all; ieee.std_logic_1164.all; Entity comparador is port (a,b: in bit_vector (1 downto 0); C : out bit ); end comparador; architecture D_flujo_datos of comparador _ j _ p is begin c<= 1 c<=1 when (a=b) else 0 0 end D_flujo_datos; COMPARADOR c

Basada en el uso de declaraciones concurrentes.

Ecuaciones booleanas
1 2 3 4 5 6 7 8 9 10 11 12 --comparador flujo de datos ecuaciones d fl j d d i booleanas library ieee; use ieee.std_logic_1164.all; Entity comparador is port (a,b: in bit vector (1 downto 0); bit_vector C : out bit ); end comparador; architecture b l hi booleano of comparador i f d is begin c<= (a(1) xnor b(1) ( ( ) ( ) And a(0) xnor b(0)); end booleano;