Professional Documents
Culture Documents
VHDL
VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuits
VHDL es un lenguaje de descripcin de hardware Es til para la sntesis y verificacin de circuitos digitales
Fernando Beltrn Dpto. Ingeniera Electrnica y Comunicaciones
VHDL
Historia
El VHDL nace por iniciativa del Departamento de Defensa de EE.UU. (comienzo de los 80) En julio de 1983 tres compaas (Texas Instruments, IBM e Internetics) reciben el encargo de desarrollarlo La primera versin se publica en agosto de 1985 En 1986 se convierte en un estndar del IEEE (IEEE 1076-1987)
Fernando Beltrn Dpto. Ingeniera Electrnica y Comunicaciones
VHDL
Historia
Posteriormente, con el estndar IEEE 1164 se le aaden nuevas caractersticas El estndar 1076 debe ser revisado cada cinco aos. Actualmente rige el 1076-1993
Fernando Beltrn
VHDL
Principales ventajas
Estndar pblico Independiente de la tecnologa Soporta diferentes metodologas de diseo Independiente del sistema de diseo Compatible
Fernando Beltrn
VHDL
Estructura bsica de un modelo VHDL
Entidad Arquitectura Configuraciones
Fernando Beltrn
VHDL
Un diseo complejo se suele subdividir en bloques La declaracin de entidad describe la forma de interconectar un bloque con los dems (entradas, salidas) La declaracin de arquitectura describe el comportamiento lgico del bloque
Fernando Beltrn
VHDL
Declaracin de entidad
Sentencia que define la especificacin externa de un circuito o subcircuito:
Nombre de la entidad Puertos de entrada y salida Modos de los puertos Tipos de los puertos
Fernando Beltrn
VHDL
Ejemplo de declaracin de entidad
Nombre de la entidad
entity latch is port (s,r: in bit; q,nq: out bit); end latch;
Modos
Tipos
Fernando Beltrn
VHDL
Declaracin de entidad
Modo de un puerto:
In: entradas al sistema; slo pueden ser ledos Out: salidas del sistema; slo se les puede asignar valor Inout: seales bidireccionales; se pueden leer y se les puede asignar valor Buffer: registro asociado a una salida
Fernando Beltrn
VHDL
Declaracin de entidad
El lenguaje predefine un conjunto de tipos para las seales del sistema Tipos predefinidos: boolean, bit, bit_vector, character, string, integer, real, time, positive, natural Es ilegal conectar seales que no son del mismo tipo
Fernando Beltrn
VHDL
Declaracin de arquitectura
Cada declaracin de entidad debe ir acompaada de, al menos, una declaracin de arquitectura Esta declaracin indica el comportamiento o la estructura interna del sistema El estndar VHDL permite definir ms de una arquitectura para la misma entidad
Fernando Beltrn
VHDL
El lenguaje estndar define un conjunto de operadores sobre los tipos de datos predefinidos
Aritmticos (+, -, *, /, mod,...) Lgicos (and, or, nand, nor, xor, not) Desplazamiento Relacin (=, /=, <, >, <=, >=) Signo Concatenacin
Dpto. Ingeniera Electrnica y Comunicaciones
Fernando Beltrn
VHDL
Declaracin de arquitectura
A cada arquitectura se le asigna un nombre arbitrario escogido por el usuario Dentro de una declaracin de arquitectura todas las sentencias son concurrentes (el orden textual no importa ya que se ejecutan en paralelo) Las dos formas ms habituales de declarar una arquitectura son:
Descripcin de la estructura Descripcin del comportamiento
Fernando Beltrn Dpto. Ingeniera Electrnica y Comunicaciones
VHDL
Declaracin de arquitectura
Ejemplo de descripcin estructural
S Q architecture structure of latch is component nor_gate port (a,b: in bit; c: out bit); end component; begin n1: nor_gate port map (r,nq,q); n2: nor_gate port map (s,q,nq); end structure;
Fernando Beltrn
VHDL
Asumimos que la puerta nor est definida en otra porcin de cdigo Es necesario que los puertos de la declaracin de componente coincidan con los puertos de la declaracin de entidad Un componente tiene que ser declarado una sola vez en una arquitectura, y puede ser empleado varias veces
Fernando Beltrn
architecture structure of latch is component nor_gate port (a,b: in bit; c: out bit); end component; begin n1: nor_gate port map (r,nq,q); n2: nor_gate port map (s,q,nq); end structure;
VHDL
Declaracin de arquitectura
Ejemplo de descripcin del comportamiento
S Q architecture dataflow of latch is signal qtemp, nqtemp: bit; begin --q y nq son de modo out, luego --no pueden ser ledos --definimos seales temporales q<=qtemp; nq<=nqtemp; qtemp<=r nor nqtemp; nqtemp<=s nor qtemp; end dataflow;
Fernando Beltrn
VHDL
Evaluacin de una expresin
qtemp<=r nor nqtemp;
expresin
seales
operador
Evaluar una expresin consiste en sustituir los valores de las seales en una expresin y calcular el resultado al aplicar el operador
Fernando Beltrn Dpto. Ingeniera Electrnica y Comunicaciones
VHDL
Modelo de retardo
qtemp<=r nor nqtemp after 1ns;
retardo
Fernando Beltrn
VHDL
Ejemplo: multiplexor 2 a 1
entity mux is port (a,b,selec: in bit; salida: out bit); end mux; architecture structure of mux is component and2 port (e1,e2: in bit; y: out bit); end component; component or2 port (e1,e2: in bit; y: out bit); end component; component inv port (e: in bit; y: out bit); end component;
Fernando Beltrn Dpto. Ingeniera Electrnica y Comunicaciones
signal ax,bx,nosel: bit; begin u0: inv port map (e=>selec, y=>nosel); u1: and2 port map (e1=>a, e2=>nosel, y=>ax); u2: and2 port map (e1=>b, e2=>sel, y=>bx); u3: or2 port map (e1=>ax, e2=>bx, y=>salida); end structure;
VHDL
La manera ms general de describir el comportamiento de una arquitectura es mediante sentencias tipo proceso Un proceso puede contener rdenes secuenciales, pero todos los procesos se ejecutan concurrentemente
Fernando Beltrn
VHDL
count: process (x) variable cnt : integer := -1; begin cnt:=cnt+1;
end process;
Ejemplo de proceso
Nombre del proceso Lista de sensibilidades Declaracin de variable Inicializacin de la variable La variable cnt se incrementa cada vez que se ejecuta el proceso Esto ocurre al comienzo de la simulacin y cada vez que cambia la seal x
Dpto. Ingeniera Electrnica y Comunicaciones
Fernando Beltrn
VHDL
Las acciones descritas en el cuerpo del proceso se ejecutan en orden, de la primera a la ltima Cuando se ejecuta la ltima accin se dice que el proceso queda suspendido Cuando ocurre un cambio en una seal de la lista de sensibilidades el proceso se inicia de nuevo, volviendo a ejecutar las acciones de la primera a la ltima
Fernando Beltrn Dpto. Ingeniera Electrnica y Comunicaciones
VHDL
Cada proceso se ejecuta una vez al comienzo de la simulacin para determinar el valor inicial de sus salidas Algunas sentencias slo pueden aparecer en un proceso porque implican ejecucin secuencial: estructural de ejecucin secuencial
Fernando Beltrn
VHDL
Otras estructuras de ejecucin secuencial:
Sentencia Sentencia Sentencia Sentencia de espera: wait condicional: if...then...else de seleccin: case de bucles: for y while
Fernando Beltrn
VHDL
Ejemplo de sentencia con if:
count: process (x) variable cnt : integer := 0 Begin if (x=1 and xlast_value=0) then cnt:=cnt+1; end if; end process;
Fernando Beltrn
VHDL
Ejemplo de sentencia con for
signal x : bit_vector (7 downto 0); ... process (x) variable p : bit; begin p:=0 for i in 7 downto 0 loop p:=p xor x(i); end loop; end process;
Fernando Beltrn
VHDL
Ejemplo: multiplexor 2 a 1
entity mux is port (a,b,selec: in bit; salida: out bit); end mux; architecture comportamental of mux is begin process(a,b,selec) begin if (selec=0) then salida<=a; else salida<=b; end process; end comportamental;
Fernando Beltrn Dpto. Ingeniera Electrnica y Comunicaciones
VHDL
Declaracin de configuracin
La configuracin es la construccin que permite seleccionar la arquitectura que se quiere utilizar para una entidad concreta La declaracin de configuracin es opcional
Fernando Beltrn
VHDL
Empaquetamientos y libreras
Los empaquetamientos contienen declaraciones y definiciones de objetos a usar en diferentes diseos Los diseos, una vez compilados, se almacenan en libreras
Fernando Beltrn
VHDL
Empaquetamientos y libreras
Existen libreras predefinidas:
STD: contiene los empaquetamientos standard y textio WORK: librera de trabajo del usuario IEEE: contiene los empaquetamientos STD_LOGIC_1164 y STD_LOGIC_ARITH
Estas declaraciones pueden ser importadas y utilizadas por otros diseos utilizando la clasula USE
Fernando Beltrn Dpto. Ingeniera Electrnica y Comunicaciones
VHDL
Ejemplo
library IEEE; use IEEE.std_logic_1164.all;
El empaquetamiento std_logic_1164 define tipos de datos para las seales que no contempla el VHDL original: Z (alta impedancia) y - (dont care)
Fernando Beltrn
VHDL
Tutoriales de VHDL en red:
http://www.gmvhdl.com/VHDL.html http://www.vhdl-online.de/~vhdl/tutorial/
Fernando Beltrn