Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Paquetes y componentes
10.1 Introduccin
De la figura 10.1, hemos cubierto en detalle todo necesario para construir el tipo de cdigo del lado izquierdo.
Nuevos bloques de construccin para la asignacin de biblioteca, lado derecho.
Estas unidades se localizan en el cdigo principal
(lado izquierda).
Propsito principal: permitir que piezas comunes de
cdigo que se puedan reutilizar y compartir, se
coloquen en una biblioteca.
Conduce a cdigo de particin, til en cdigos largos.
Piezas de uso frecuente de cdigo se pueden escribir
en forma de componentes, FUNCIONES o
procedimientos, a continuacin, dentro de un
paquete, que es compilado en la biblioteca de
destino.
3 bibliotecas son generalmente necesarias en un diseo: (ieee, std, work).
10.2 PAQUETE
Las piezas de uso frecuente de cdigo VHDL se escriben en forma de componentes, funciones o procedimientos.
Estos cdigos son entonces colocado dentro de un paquete y compilado en la biblioteca de destino. la
importancia de esta tcnica es que permite que el cdigo de particin, cdigo compartido, y el cdigo reutilizar.
Comenzamos con la descripcin de la estructura de un paquete.
Adems COMPONENTES, Funciones y procedimientos, sino que tambin pueden contener TYPE y CONSTANTE
definiciones, entre otros.
Sintaxis: se compone de dos partes:
1. Package
2. Package Body
La primera es obligatoria y contiene todas las
declaraciones
La segundo es necesaria slo cuando uno o ms
subprogramas (funcin o procedimiento) se declaran en la
parte superior, en ese caso debe contener las descripciones (cuerpo) de los subprogramas.
Package y Package Body debe tener la el mismo nombre.
La lista de declaraciones puede contener: COMPONENTE, FUNCIN, PROCEDIMIENTO, TIPO, CONSTANTE, etc.
Cualquiera de los paquetes anteriores (ejemplo 10.1 o 10.2 ejemplo) ahora puede
haber compilado, convirtindose en la parte de nuestro trabajo de la biblioteca (o
cualquier otro). Para hacer uso de la misma en un cdigo VHDL, tenemos que aadir
una nueva clusula USO al cdigo principal (USO work.my package.all), como se
muestra a continuacin.
10.3 COMPONENTE
Para crear una instancia de un componente se requiere una etiqueta, seguido por el nombre del componente y una
declaracin PORT MAP.
Por ltimo, Port_list es slo una lista relativa a los puertos del circuito real a los puertos del componente pre-diseado
que est siendo instanciado.
Queremos implementar el circuito de la figura 10.3 empleando slo COMPONENTES (inversor, nand_2 y nand_3), pero
sin crear un paquete especfico para declarar ellos, as como en la figura 10.2 (a). Entonces se necesitan cuatro piezas de
cdigo VHDL: un para cada componente, ms uno para el proyecto (cdigo principal). Todos los cuatro archivos se
muestran a continuacin. Tenga en cuenta que, dado que no hemos creado un paquete, el COMPONENTES debe ser
declarado en el cdigo principal (en la parte declarativa de la arquitectura). Resultados de la simulacin se presentan en
la figura 10.4.
Ejemplo 10.4: Componentes Declarado en un paquete
As, ahora cinco piezas de cdigo VHDL son necesarios: una para cada componente, uno para el paquete, y finalmente,
una para el proyecto.
A pesar de tener un archivo adicional (PAQUETE), existe el fichero adicional necesita ser creado slo una vez, evitando
as la necesidad de declarar los componentes en el cdigo principal cada vez que se crean instancias.
Observe que una clusula adicional USO (USO work.my_components.all) ahora es necesario, con el fin de hacer el
paquete my_components visible para el diseo. Los resultados de la simulacin son obviamente las mismas que las de la
figura 10.4
10.4 PUERTO MAPA
Hay dos formas de asignar los puertos de un componente durante su ejemplificacin: mapeo de posicin y cartografa
nominal. Consideremos lo siguiente ejemplo: Inversor COMPONENTE ES PORT (a: EN std_logic; b: OUT std_logic);
COMPONENTE END;... U1: inversor PORT MAP (x, y);
En ella, el mapeo es posicional; es decir, empalmes X e Y corresponden a a y b, respectivamente. Por otra parte, un
mapeo nominal sera la siguiente:
U1: inversor MAPA DEL PUERTO (x => a, y => b); Mapeo posicional es ms fcil de escribir, pero mapeo nominal es
menos propenso a errores. Los puertos tambin se pueden dejar sin conectar (utilizando la palabra clave OPEN). Por
ejemplo:
U2: my_circuit MAPA DEL PUERTO (x => a, y => b, w => OPEN, z => d);
10.5 MAPA GENRICO
En el ejemplo 5.5, el diseo de una ALU (unidad aritmtica lgica) se present (diagrama repetido en la figura 10.7). En
ese ejemplo, el cdigo era autnomo (es decir, Ningn componente externo, funcin o procedimiento se llama). en el
ejemplo presente, sin embargo, vamos a suponer que nuestra biblioteca contiene los tres componentes (logic_unit,
arith_unit, y mux) con el que la ALU se puede construir. En el cdigo que se muestra a continuacin, adems del cdigo
principal (alu.vhd), tambin hemos incluido el diseo de los tres componentes mencionados anteriormente. Como
puede verse, los componentes fueron declarados en el propio cdigo principal. Resultados de la simulacin se muestran
en la figura