1
Introduccin
VHDL (Hardware Description Language)
Lenguaje orientado a la descripcin o modelado de
sistemas digitales.
Permite:
1. Describir
2. Analizar
3. Evaluar
el comportamiento de un sistema electrnico digital.
2
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Introduccin
3
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Unidades bsicas de diseo
La estructura general de un programa en VHDL est formado
por mdulos o unidades de diseo; cada uno est compuesto
por un conjunto de declaraciones e instrucciones que:
Definen
Describen
Estructuran
Analizan
Evalan
el comportamiento de un sistema digital.
4
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Tipos de unidades en VHDL
5
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Unidades de diseo
indispensables
7
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Un programa en VHDL
8
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Definiciones elementales
Concurrencia si se da algn cambio en una
parte del circuito, se produce una variacin (en
algunos casos casi instntanea) de otras seales.
9
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Concurrencia y Secuencial
Construcciones concurrentes del lenguaje por
ejemplo una arquitectura tiene una naturaleza
eminentemente concurrente (es decir que est
activo todo el tiempo)
Seales
11
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Variables, Constantes y Seales
13
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Process
De ejecucin secuencial, las variables evaluan su
valor dentro del cuerpo del proceso de forma
inmediata, sin consumir tiempo de ejecucin,
pero como estn dentro de un process, que es
una estructura concurrente, este valor no ser
asumido, sino hasta el final de la ejecucin de
dicho process.
14
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Ejemplo
w<= not a;
x <= a and
b;
y <= c and
w;
z <= x or
Al producirse
y; un cambio en la parte derecha de la
estructura de asignacin (<= a;) de alguna de las
sentencias, la expresin es evaluada de nuevo en su
totalidad, y asignado el nuevo valor a la seal de la
izquierda. Mltiples asignaciones en el cuerpo de una
arquitectura se activan simultneamente.
15
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Entity (Entidad)
En la declaracin de una entidad (entity) se definen
las entradas y salidas del chip, especificando:
16
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Declaracin de una Entidad
(entity)
Ejemplo
entity programa Cabecera del programa
is
port( Se indica que a continuacin viene los
puertos (o grupos seales) de entrada
y/o salida
-- puertos de Aqu se declaran las entradas y/o
salidas. Las lneas empezadas por dos
entradas
guiones marcan comentarios. El
-- puertos de compilador no distingue las maysculas
salidas de las minsculas
-- puertos de
I/O
-- puertos de
17 buffers
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Se indica que se ha acabado la
Entity
18
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Declaracin de puertos
El tipo de puerto.
El modo, describe la direccin en la cual la
informacin es transmitida a travs del puerto.
stos slo pueden tener cuatro valores: in, out,
buffer e inout.
Si no se especifica nada, se asume que el puerto
es del modo in.
20
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Modos
Modo in: Un puerto es de modo in si la informacin
del mismo, solamente debe entrar a la entidad,
soliendo ser usado para relojes, entradas de control
(como las tpicas load, reset y enable), y para datos
de entrada unidireccionales.
21
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Modos
Modo buffer: Es usado para una realimentacin interna
(es decir, para usar este puerto como un driver dentro de
la entidad). Este modo es similar al modo out, pero
adems, permite la realimentacin. Este puerto no es
bidireccional, y solo puede ser conectado directamente a
una seal interna, o a un puerto de modo buffer de otra
entidad. Una aplicacin muy comn de este modo es la de
salida de un contador, ya que debemos saber la salida en
el momento actual para determinar la salida en el
momento siguiente.
Modo inout: Es usado para seales bidireccionales, es
decir, si necesitamos que por el mismo puerto fluya
informacin tanto hacia dentro como hacia afuera de la
entidad. Este modo permite la realimentacin interna. Este
modo puede reemplazar a cualquiera de los modos
anteriores, pudindose usar este modo para todos los
puertos, pero reduciremos la lectura posterior del cdigo
22 porL otra persona, y reduciendo losInstituto
recursos disponibles
Dr. Oscar Prez Castaeda Tecnolgico de Tehuacn de
la cpsula.
Modos
23
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Modos, norma IEEE 107693
La norma internacional IEEE 1076/93 define cuatro
tipos que son nativos para VHDL como son:
26
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Norma IEEE 1164
Ante la necesidad de ampliar la operatividad del
tipo bit, la norma IEEE 1164, definicin un nuevo
tipo llamado std_logic, std_ulogic, y sus
derivados tales como std_logic_vector y
std_ulogic_vector.
27
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Norma IEEE
1164
A continuacin se incluye la declaracin de entidades
de un multiplexor de 2x1 de cuatro bits, con entrada
de habilitacin o enable. El multiplexor necesita las
entradas de informacin, la seal de seleccin, la
de enable y las salidas de informacin.
enable
28
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Ejemplo
entity multi is port ( multi es el nombre de la entidad
29
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Ejemplo de un comparador
ent_a(3..0)
comparador
igual
ent_b(3..0)
31
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Ejemplo de sumador de 4 bits
Cin
Cout
A[3:0]
Entidad sumador
B[3:0] SUMA[3:0]
32
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Consideraciones sobre los nombres
33
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Arquitectura (architecture)
34
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Declaracin de una arquitectura
architecture archpro of Cabecera de la arquitectura. archpro
es un nombre cualquiera (suele
programa is
empezar por "arch", aunque no es
necesario) y programa es el nombre
de una entidad (entity) existente en
el mismo fichero.
-- declaracin de seales Declaraciones de apoyo, que se vern
en la pgina siguiente.
y otros accesorios
begin Inicio del programa.
35
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Ejemplo de un multiplexor
architecture archimulti Cabecera de la arquitectura. En esta ocasin el
of multi is nombre de la arquitectura es archimulti, y el de
la entidad es multi, la cual est definida
anteriormente.
-- seales En este programa no vamos a necesitar seales.
begin Se da comienzo al programa.
process(enable,in1,in2) Sentencias que hacen que la entidad definida
begin como multiplexor hagan la funcin propia de su
if enable='0' then nombre. Slo hay que entender la estructura de
out1<="1111"; las arquitecturas en estos momentos, por lo que
elsif enable='1' then este cdigo no debe ser objeto de preocupacin.
if(selec = '0') then
out1<=in1;
elsif(selec = '1') then
out1<=in2;
end if;
end if;
end process;
end archimulti; Fin del programa
36
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Seales y variables
38
Seales y variables
--Uso correcto de las seales
--Uso incorrecto de las seales
ARCHITECTURE ejem1 OF entidad IS
ARCHITECTURE ejem1 OF entidad IS
SIGNAL a, b, x, y : INTEGER;
SIGNAL a, b, c, x, y : INTEGER;
BEGIN
BEGIN
P1: PROCESS (a,b)
P1: PROCESS (a,b,c)
VARIABLE c: INTEGER;
BEGIN
BEGIN
c<= a; --Se ignora
c:= a; --Inmediato
x<=c+2;
x<=c+2;
c<=b; --Se mantiene
c:=b; --Inmediato
y<=c+2;
y<=c+2;
END PROCESS p1;
END PROCESS p1;
END ejem1
END ejem1
39
Programacin de Estructuras Bsicas
Diseo (Programacin) de una
Estructura Bsica Combinatoria
Biblioteca (s)
Sintaxis:
Declaracin ARCHITECTURE nombre_arquitectura OF nombre_entidad IS
Entidad {Declarativas de Bloque} Se analizarn posteriormente
BEGIN
Declaracin
Arquitectura {Enunciados Concurrentes}
END [nombre_arquitectura]
Enunciado Concurrente.
Unidad de Cmputo/Clculo que realiza lo siguiente:
Lectura de Seales.
Realiza clculos basados en los valores de las Seales.
Asigna los valores calculados a Seales especficas.
Enunciados Concurrentes
Tipos de Enunciados Concurrentes.
Asignacin de Seal Permite asignar un valor calculado a una seal o
puerto.
Proceso (process) Permite definir un algoritmo secuencial que lee
valores de Seales y calcula nuevos valores que son
asignados a otras Seales.
Bloque (block) Grupo de enunciados concurrentes.
Asignacin de Seales
Tipos:
Asignaciones Condicionales de Seales La construccin when-else
Asignaciones de Seales mediante Ecuaciones Booleanas
Asignaciones de Seales por Seleccin La construccin with-select-when
Ejemplos:
La construccin when-else permite definir paso a paso el comportamiento de un sistema. Para esto, es necesario
declarar los valores que se le deben asignar a una determinada seal (o grupo) en funcin de las diferentes
condiciones de entrada posibles. El orden en el que se declaren las condiciones de entrada, no es importante.
when-else
A B C D F
L Ejemplo N 2 - Uso de la construccin when-else
0 0 0 0 1
1 library ieee;
0 0 0 1 0
2 use ieee.std_logic_1164.all;
0 0 1 0 0
3 entity funcion is
0 0 1 1 0 4 port (A,B,C,D: in std_logic;
0 1 0 0 0 5 F: out std_logic);
0 1 0 1 1 6 end funcion;
0 1 1 0 1 7 architecture a_func of funcion is
0 1 1 1 0 8 begin
9 F <= 1 when (A = 0 and B=0 and C=0 and D=0) else
1 0 0 0 0
10 1 when (A = 0 and B=1 and C=0 and D=1) else
1 0 0 1 0
11 1 when (A = 0 and B=1 and C=1 and D=0) else
1 0 1 0 0 12 1 when (A = 1 and B=1 and C=1 and D=1) else
1 0 1 1 0 13 0;
1 1 0 0 0 14 end a_func;
1 1 0 1 0
1 1 1 0 0
1 1 1 1 1
Asignaciones de Seales mediante Ecuaciones Booleanas
a x1
b
c x2
d
x3
e
f
L Ejemplo N 3 Asignaciones de Seales Uso de Ecs. Booleanas
1 library ieee;
2 use ieee.std_logic_1164.all;
3 entity logica is
4 port (a,b,c, d, e, f: in std_logic;
5 x1, x2, x3: out std_logic);
6 end logica;
7 architecture booleana of logica is
En este tipo de
asignaciones, cada
8 begin
funcin de salida es 9 x1 <= a xnor b;
descrita mediante su
ecuacin booleana 10 x2 <= ((c and d) or (a xnor b)) nand ((e xor f) and (c and d));
correspondiente, lo
cual implica el uso de 11 x3 <= (e xor f) and (c and d);
operadores lgicos.
12 end booleana;
Asignaciones de Seales mediante Ecuaciones Booleanas
La estructura with-select-when se utiliza para asignar un valor (de varios posibles) a una seal o grupo de seales con base a los
diferentes valores de otra seal o grupo de seales previamente seleccionada(o).
Por lo general, un grupo de seales forman un vector, como en el ejemplo descrito a(1) y a(0) forman el vector a.
Procesos (process)
Tipos de Enunciados Concurrentes.
Asignacin de Seal Permite asignar un valor calculado a una seal o
puerto.
Proceso (process) Permite definir un algoritmo secuencial que lee
valores de Seales y calcula nuevos valores que son
asignados a otras Seales.
Bloque (block) Grupo de enunciados concurrentes.
Proceso (process)
SINTAXIS
case expression is
when choices => { sequential_statement }
when choices => { sequential_statement }
end case;
DESCRIPCION
expression: evala a un entero, o tipo enumerado.
sequential_statement: uno o mas enunciados secuenciales.
choices: opciones.
La ltima opcin puede ser others (valor por omisin del resto de
las opciones).
Procesos (process)
Operadores Relacionales
Caractersticas.
Uso: Para fines de comparacin de datos.
Operadores incluidos en los paquetes: std_numeric y std_logic_arith
Los operadores de Igualdad y Desigualdad (= , /=) utilizan todos los tipos
de datos.
Los operadores (<, <=, >, >=) son definidos para los tipos escalar y
arreglos unidimensionales de tipos de datos enumerados o enteros.
Operador Significado
= Igual
/= Diferente
< Menor
<= Menor o Igual
> Mayor
>= Mayor o Igual
Procesos (process)
La construccin: if-then-else
L Ejemplo N 7 - La construccin if-then-else
Comparador de dos palabras con long. de 2-bits
1 library ieee;
2 use ieee.std_logic_1164.all;
La construccin if-then-else sirve para 3 entity comp is
seleccionar una operacin con base al
anlisis (evaluacin lgica Cierto o Falso) 4 port (a,b: in std_logic_vector (1 downto 0);
de una condicin.
5 c: out std_logic);
6 end comp;
a
c 7 architecture funcional of comp is
b Comparador 8 begin
9 compara: process (a,b)
10 begin
11 if a = b then
12 c <= 1;
Lista-Sensitiva
13 else
Seales (incluyendo puertos) ledas por el proceso.
14 c <=0;
15 end if;
16 end process compara;
17 end funcional;
Procesos (process)
La construccin:if-then-elsif-then- L Ejemplo N 8 - La construccin if-then-elsif-then-else
else Comparador de Magnitud 2-Words de 4-bits
1 library ieee;
2 use ieee.std_logic_1164.all;
La construccin if-then-elsif-then-else se
3 entity comp4 is
utiliza cuando se requiere analizar ms de 4 port (a,b: in std_logic_vector (3 downto 0);
una condicin de entrada.
5 x,y,z: out std_logic);
6 end comp4;
a=b x
a[3:0] 7 architecture arq_comp4 of comp4 is
8 begin
y
a>b 9 process (a,b)
z 10 begin
b[3:0] a<b 11 if (a = b) then
12 x <= 1;
13 elsif (a > b) then
Qu circuito es inferido?
Qu valores tienen las otras 14 y <=1;
salidas en este instante?
15 else
16 z <=1;
17 end if;
18 end process;
19 end arq_comp4;
Procesos (process)
Ejemplo N 9 - La construccin if-then-elsif-then-else
A1 A0 B1 B0 Z1 Z0 Comparador de Magnitud 2-Words de 2-Bits / Salida Codificada
0 0 0 0 1 1 library ieee;
0 0 0 1 0 1 use ieee.std_logic_1164.all;
0 0 1 0 0 1 entity comp is
0 0 1 1 0 1 port (A,B: in std_logic_vector (1 downto 0);
Z: out std_logic_vector (1 downto 0));
0 1 0 0 1 0
end comp;
0 1 0 1 1 1
architecture a_comp of comp is
0 1 1 0 0 1 begin
0 1 1 1 0 1 process (A,B)
1 0 0 0 1 0 begin
1 0 0 1 1 0 if (A = B) then Operacin deseada:
Z <= 11;
1 0 1 0 1 1 Si: A = B entonces Z = 11
elsif (A < B) then
1 0 1 1 0 1 Si: A < B entonces Z = 01
Z <= 01;
1 1 0 0 1 0 else Si: A > B entonces Z = 10
1 1 0 1 1 0 Z <= 10; Ecs. Booleanas:
1 1 1 0 1 0 end if; Z1 A0 A1 B0 B1 A1B0 A1B1 A0 B1
1 1 1 1 1 1 end process; Z0 A0 A1 B0 B1 A0B1 A1B1 A1B0
end a_comp;
Otras Estructuras Bsicas
Buffer-Salida de 3-Estados
Ejemplo N 10 Buffer Salida de 3-Estados
habilitar (enable) library ieee;
use ieee.std_logic_1164.all;
entrada salida entity tri_est is
port (enable, entrada: in std_logic;
salida: out std_logic);
end tri_est;
Tipos Lgicos Estndares
architecture arq_buffer of tri_est is
U Valor No-Inicializado begin
X Valor Fuerte Desconocido process (enable, entrada)
0 0 Fuerte begin
1 1 Fuerte if (enable = 0) then El tipo de dato bit no soporta el valor
Z, por lo que se debe utilizar el tipo
salida <= Z;
Z Alta Impedancia std_logic, que si lo soporta.
else
W Valor Dbil Desconocido
salida <= entrada;
L 0 Dbil end if;
H 1 Dbil end process;
- No Importa (Dont Care) end arq_buffer;
Otras Estructuras Bsicas
Multiplexores: Mux 4 a 1 (2-Bits)
Ejemplo N 11 Multiplexor 4 a 1 / Uso de with-select-when
library ieee;
use ieee.std_logic_1164.all;
entity mux is
a[1:0] port (a, b, c, d: in std_logic_vector (1 downto 0);
00
b[1:0] s: in std_logic_vector (1 downto 0);
01 Mux z[1:0]
c[1:0] z: out std_logic_vector (1 downto 0));
10 end mux;
d[1:0] architecture arqmux of mux is
11
begin
s[1:0] with s select
z <= a when 00,
b when 01,
c when 10,
d when others;
end arqmux;
Otras Estructuras Bsicas
Multiplexores:Mux 4 a 1 (2-Bits)
Ejemplo N 12 Multiplexor 4 a 1 / Uso de Ecs. Booleanas
library ieee;
a[1:0] use ieee.std_logic_1164.all;
00
b[1:0] entity mux_eb is
01 Mux z[1:0]
c[1:0] port (a, b, c, d: in std_logic_vector (1 downto 0);
10 s: in std_logic_vector (1 downto 0);
d[1:0]
z: out std_logic_vector (1 downto 0));
11
end mux_eb;
s[1:0] architecture arqmux_eb of mux_eb is
begin
z(1) <= (a(1) and not s(1) and not s(0)) or
(b(1) and not s(1) and s(0)) or
(c(1) and s(1) and not s(0)) or
(d(1) and s(1) and s(0));
z(0) <= (a(0) and not s(1) and not s(0)) or
(b(0) and not s(1) and s(0)) or
(c(0) and s(1) and not s(0)) or
(d(0) and s(1) and s(0));
end arqmux_eb;
Otras Estructuras Bsicas
Sumadores: Sumador Paralelo 4-Bits
Ejemplo N 15 Sumador Paralelo 4-Bits
S0 library ieee;
A0 use ieee.std_logic_1164.all;
C0
B0 entity suma is
port (A, B: in std_logic_vector (3 downto 0);
S1 S: out std_logic_vector (3 downto 0);
A1 Cout: out std_logic);
C1
B1 end suma;
architecture arqsuma of suma is
S2 signal C: std_logic_vector (2 downto 0);
A2 begin
C2
B2 S(0) <= A(0) xor B(0);
C(0) <= A(0) and B(0);
S3 S(1) <= (A(1) xor B(1)) xor C(0);
A3
Cout C(1) <= (A(1) and B(1)) or (C(0) and (A(1) xor B(1)));
B3 S(2) <= (A(2) xor B(2)) xor C(1);
C(2) <= (A(2) and B(2)) or (C(1) and (A(2) xor B(2)));
Declaraciones de Seales (signal): Especifican seales que S(3) <= (A(3) xor B(3)) xor C(2);
permiten conectar los diferentes tipos de enunciados
concurrentes (asignacin de seales, bloques, procesos y Cout <= (A(3) and B(3)) or (C(2) and (A(3) xor B(3)));
llamadas a componentes o procedimientos) de que consta
una arquitectura. end arqsuma;
Estilos de arquitectura
Para describir una arquitectura existen cuatro estilos,
teniendo cada uno, su propio nivel de abstraccin. Los
estilos son:
Estilo behavioral o comportamiento: Este estilo se
caracteriza por incluir las sentencias y rdenes tpicas de
un lenguaje de programacin (if, then, case,...), sin
importarnos cmo quedar la distribucin de puertas
lgicas. Es necesario un proceso (process) al ser una
estructura secuencial. El siguiente fragmento de cdigo
describe un comparador (usando una entidad descrita en
este mismo tutorial)escrito con el estilo behavioral o
de comportamiento.
60
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Comparador estilo behavioral
61
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Estilo dataflow
62
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Ejemplos en estilo dataflow
architecture Esta arquitectura es del
dataflow1 of compa estilo dataflow porque se
especifica cmo la
is
informacin pasar a la
begin
salida sin usar sentencias
igual<='1' when secuenciales
(a=b) else '0';
end dataflow1;
64
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Ejemplo de estilo netlist
architecture struct of Aqu slo se interconexionan salidas
compa is con entradas de componentes. La
signal x: bit_vector(0 to salida viene dada por la
operatividad de los componentes, la
3);
cual no se puede saber si no
begin conocemos el paquete del cual ha
u0: xnor2 port map sido leda.
(a(0),b(0),x(0));
u1: xnor2 port map
(a(1),b(1),x(1));
u2: xnor2 port map
(a(2),b(2),x(2));
u3: xnor2 port map
(a(3),b(3),x(3));
u4: and4 port map
(x(0),x(1),x(2),x(3),igual)
;
end struct;
65
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Estilo mixto
Estilo mixto: Es el estilo que est compuesto en mayor o
menor medida de dos o ms de los estilos descritos
anteriormente.
66
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Conclusiones sobre estilos
El cdigo de VHDL que se escribe no siempre va a describir una
funcin optimizada, la cual no siempre va a poder ser reducida por
la herramienta de compilacin, que se traduce en un poco
aprovechamiento de los recursos de las PLD's. Por lo tanto,
diferentes diseos producen diferentes, aunque equivalentes,
ecuaciones de diseo, pudindose dar, sin embargo, disposiciones
diferentes de los recursos.
Es habitual usar el estilo structural para descomponer un diseo
en unidades manejables, para ser creado por partes por equipos de
trabajo distintos. el estilo structural se usa adems para tener un
grado de control alto sobre la sntesis.
Para concluir el apartado dedicado a las arquitecturas, recordar
que tanto la entity y la architecture deben ir unidas en el
mismo fichero, ya que una parte carece de sentido sin la otra.
67
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Package (paquete)
Los packages (paquetes) permiten agrupar un
conjunto de declaraciones para que puedan ser usadas
por varios dispositivos sin ser repetidas en la declaracin
de cada uno.
68
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Estructura bsica de un package
La estructura bsica en la declaracin de un paquete est
dividida en dos partes claramente diferenciadas:
1. La declaracin del paquete, package: donde se obtiene
una visin externa y simplista del componente. La
declaracin del paquete va precedida por la palabra
reservada package y finaliza con end. En el cuerpo de
la declaracin nos encontramos con procedures,
funciones, componentes, etc. tal y como apareceran en
la parte de la declaracin de una entidad.
2. La declaracin del cuerpo del paquete, package body:
especifica el funcionamiento y cualidades que permiten
su implementacin, de forma similar a la arquitectura.
Debe llevar las palabras reservadas package body.
69
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Ejemplo de declaracin de un package
package body Esta parte se corresponde
nombre_del_package con una arquitectura.
is
-- definicin de
procedures
-- definicin de
funciones
-- definicin de
tipos, etc.
end
nombre_del_package;
71
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Habilitacin de todos los componentes
Cuando se desea habilitar todos los componentes
declarados en un paquete, ya sea por comodidad o por
no saber exactamente donde se encuentra el recurso que
se desea usar utilizar la palabra all de la siguiente
forma:
73
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Lista de componentes
74
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Lista de componentes
Nombre del paquete Nombre del componente
MADD_SUB Mdulo de
sumadores/restadores
MCOMPARE Mdulo de comparadores
MMULT Mdulo de multiplicadores
MCOUNTER Mdulo de contadores
MLATCH Mdulo de latches
MFF Mdulo de flip-flops
MSHFTREG Mdulo de registros
Consultar el manual de la librera lpmpkg, para conocer que entradas y salidas necesita cada
mdulo.
76
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
Ejemplo library ieee;
use
ieee.std_logic_1164.all; Llama a lpmpkg
use work.lpmpkg.all;
Multiplicar a y b
entity multi_lpm is port( Sumar s
a,b: in El resultado es p
std_logic_vector(3 downto
0);
s: in std_logic_vector(7
downto 0);
p: out std_logic_vector(7 Llama a lpmpkg
downto 0)
);
Usa el mdulo mmult
end multi_lpm;
use work.lpmpkg.all;
architecture archimulti of
multi_lpm is
begin
a0: mmult generic
map(4,4,8,8)
77 port map(a,b,s,p);
Dr. Oscar L Prez Castaeda Instituto Tecnolgico de Tehuacn
end archimulti;
FIN DEL CURSO
Agradezco su asistencia y participacin a
este curso, esperando les sea de utilidad.
Instituto
Tecnolgico
Tehuacn
78 E L E CT R N I C A