You are on page 1of 4

Investigación, librerias y paquetes

En VHDL
Ballinas Aguilar Josue, Ortiz Ortega José Ignacio, González Ahuactzin Mauricio
Facultad de Ciencias de la Computación, Benemérita Universidad Autónoma de Puebla,
Puebla, México
jhosepaguilar@hotmail.com, ig_ortiz_ort@hotmail.com, mauga96@gmail.com
nos da acceso a cualquier entidad y arquitectura previamente
INTRODUCCIÓN almacenadas en la librería. Por ejemplo:

Se hablará sobre la importancia que tienen las librerias y Library IEEE; hace referencia a las definiciones estándar
paquetes en el lenguaje de descripción de hardware (VHDL), IEEE
definiremos ambos conceptos, y nos adentraremos al uso de
estas librerias dentro de un ISE de desarrollo, explicaremos Esto no nos da acceso a las definiciones de tipos y
cuales son las respectivas declaraciones que incluiran semejanzas, lo cual se hace a través de la función “paquetes” y
determinadas librerias o paquetes. “cláusulas use”.
Se hará una recapitulación sobre las diferentes librerias que
existen en VHDL y sus respectivos paquetes, haciendo 2. Paquetes VHDL
particular enfasis en las librerias estandar, IEEE y Work . Con
respecto a los paquetes se investigaran en profundidad algunos
especificos como: iee.std_logic_1164, ieee.std_logic_arith, y se Se refiere a un archivo que contiene definiciones de objetos
dará una breve explicación de otros paquetes estandares que son que pueden ser usados en otros programas.
escenciales para el desarrollo en el lenguaje de descripción de
hardware. De igual manera se agregara información a la Un paquete incluye declaraciones de señal, tipo, constante,
investigación sobre paquetes no estandar, como crearlos y como función, procedimiento y componentes. Y se definen señales
utilizarlos. globales disponibles para cualquier entidad que haga referencia
al mismo, a saber:

DESARROLLO DEL TEMA o Los tipos y constantes definidos son conocidos en


cualquier archivo que los mencione.
1. Librerías
o Las funciones y procedimientos pueden ser llamados en
archivos que utilicen el paquete.
La libreria de VHDL se trata de un lugar especifico donde el o Los componentes pueden ser ejemplificados en
compilador VHDL almacena información acerca de un arquitecturas que hacen uso del paquete.
proyecto de diseño particular, incluyendo archivos intermedios
que se utilizan en el analisis, simulación y sintesis de diseño. La Hay paquetes escritos por el usuario (no estándares) y
ubicación de la librería depende estructuralmente de la estándares.
implementación, y se trata de un sistema de archivos.
Considerando un diseño determinado, el compilador VHDL Los escritos por el usuario, pueden ser de dos tipos
crea y utiliza en forma automática una librería llamada “work”. universales y locales.
Un diseño completo VHDL tiene muchos archivos, donde
cada uno guarda diferentes unidades del diseño; incluyendo a) Los universales son visibles en cualquier archivo de
entidades y arquitecturas. El compilador analiza cada archivo diseño que use dicho paquete, y tienen la sintaxis
de diseño y coloca el resultado en la librería “work”. Package nombre-paquete is
No toda la información necesaria puede estar en la librería declaración de tipo
“work”, pero se puede usar la librería de otro proyecto haciendo declaración de señales
mención del mismo. Los proyectos modestos pueden hacer uso
declaración de constantes
de alguna librería estándar, y en cuyo caso el diseñador hace
declaración de componentes
referencia a través de la cláusula library al comienzo del archivo
declaración de funciones
de diseño. La cláusula “library work” está incluida en forma
definición de procedimiento
implícita al principio de todo archivo de diseño. Caso contrario
end nombre-paquete;
se define específicamente , y en cuyo caso, esa especificación
Algunos de los paquetes que incluye la biblioteca IEEE
b) Los locales son visibles solo en el archivo que se  IEEE.std_logic_1164
está tratando, y tienen la sintaxis:  IEEE.std_logic_textio
 IEEE.std_logic_arith
Package body nombre-paquete is  IEEE.numeric_bit
declaración de tipo  IEEE.numeric_std
declaración de constantes  IEEE.std_logic_signed
definición de funciones  IEEE.std_logic_unsigned
definición de procedimiento  IEEE.math_real
end nombre-paquete;  IEEE.math_complex

La definición de función completa está determinada en el 4. Std_logic_textio


cuerpo del paquete y no es visible para los usuarios de la
función.
LA biblioteca permite tanto escribir como leer datos
formateados de ficheros.
La declaración de función es: En ella existe el tipo básico FILE:
function nombre-función (
nombre-señal : typo-señal ; FILE infile: TEXT IS IN “fichero.in”
nombre-señal:typo-señal; FILE outfile: TEXT IS OUT “fichero.out”
................................................. La linea se declara como una variable del tipo line.
nombre-señal : typo-señal ;
) return tipo-retorno 5. Numeric_bit
Este paquete contiene funciones de operaciones aritmeticas
para vectores con y sin signo
El uso de un paquete específico se realiza a través de la Type UNSIGNED is array (NATURAL range <>) of BIT
cláusula use al comienzo del archivo de diseño. Type SIGNED is array (NATURAL range <>) of bit
Los paquetes estandares están definidos de antemano por
alguna entidad específica. Por ejemplo: 6. Std_logic_signed
-- Especifica el nombre de la librería, IEEE en este caso, del La biblioteca extiende a la biblioteca std_logic_arith para
cual se usaran definiciones específicas. manejar valores de enteros con signo std_logic_vector.
Library IEEE Es una extensión de Synopsys.
Esta biblioteca defina las mismas operaciones aritméticas (+,
-- Permite usar las definiciones del paquete standard -, *), comparación (<, <=, >, >=, =, /=) y operaciones de
IEEE1164. El sufijo .all le sentencia al compilador que use desplazamiento (shl, shr) tal como la biblioteca std_logic_arith.
todas la definiciones de este archivo. La diferencia es que toman los valores como argumentos y
use IEEE.std_logic_1164.all; los tratan como enteros con signo complementados a 2.

Se pueden usar otras alternativas para acotar más el uso de 7. Std_logic_unsigned


partes de alguna librería, por ejemplo.
Esta biblioteca extiende a la biblioteca std_logic_arith para
-- Permite usar sólo las definiciones del paquete std_ulogic, manejar valores como enteros sin signo std_logic_vector
sin todos los tipos y funciones relacionadas. (unsigned integers).
IEEE.std_logic_1164.std_ulogic; Es una extensión de Synopsys.
Esta biblioteca defina las mismas operaciones aritméticas (+,
-, *), comparación (<, <=, >, >=, =, /=) y operaciones de
3. IEEE desplazamiento (shl, shr) tal como la biblioteca std_logic_arith.
La diferencia es que toman los valores como argumentos y
los tratan como enteros sin signo.
Una de las bibliotecas más utilizadas es la llamada IEEE, la La función conv_integer también está definida en
cual contiene algunos tipos y funciones que completan a las que std_logic_vector y trata el valor como un entero sin signo.
viene por defecto en el propio lenguaje
8. Std_logic_arith
 The to_stdulogic function
Define algunos tipos y operaciones básicas aritmeticas para  The to_bitvector function
representar enteros de una forma estándar. Es una extensión de  The to_stdlogicvector function
Synopsys  The rising_edge function
 The falling_edge function
 The unsigned type  The is_x function
 The signed type
 The arithmetic functions
 The comparison functions El estándar IEEE 1164 ( Sistema de lógica multivalor para la
 The shift functions: shl, shr interoperabilidad del modelo VHDL ) es un estándar técnico
 The conv_inteher función publicado por IEEE en 1993. Describe las definiciones de
 The conv_unsigned function valores lógicos que se utilizarán en la automatización del diseño
 The conv_signed function electrónico, para el lenguaje de descripción de hardware
VHDL. Fue patrocinado por el Comité de estándares de
 The conv_std_logic_vector_function
automatización del diseño del Instituto de ingenieros eléctricos
y electrónicos (IEEE). El esfuerzo de estandarización se basó
en la donación de la declaración de tipo Synopsys MVL-9.
9. Std_logic_1164
La libreria estandar “ieee” contiene paquetes
Este paquete define los siguientes tipos de datos y funciones “std_logic_1164” que aunque no es parte del lenguage es tan
utilizado que es casi como si lo fuera.
 The std_ulogic type Describe los tipos:
- Std_logic
Este tipo es usado para representar el valor de una señal - Std_logic_vector
digital en un cable. Para un uso general es recomendado usar el
tipo std_logic. Tipos std_logic y std_logic_vector
Una señal o variable de este tipo puede tomar los siguientes
valores: Definidos en el paquete IEEE.standard_logic_1164. Son un
•'U': uninitialized. This signal hasn't been set yet. estandar industrial. Los emplearemos SIEMPRE para definir
•'X': unknown. Impossible to determine this value/result. los puertos de las entidades
•'0': logic 0
•'1': logic 1 Tipo Std_logic: valor presente en un cable de 1 bit
•'Z': High Impedance Tipo Std_logic_vector: para definir buses (array de
•'W': Weak signal, can't tell if it should be 0 or 1. std_logic)
•'L': Weak signal that should probably go to 0
•'H': Weak signal that should probably go to 1 '0' Salida de una puerta con nivel lógico bajo
•'-': Don't care. '1' Salida de una puerta con nivel lógico alto
las operaciones lógicas definidas en éste tipo son: and, nand, 'U' No inicializado, valor por defecto.
or, nor, xor, xnor, not 'X' Desconocido. Debido a un CORTOCIRCUITO
'Z' Alta Impedancia
 The std_logic_type • Tiene más valores posibles, como: 'W','L','H','-'
Es un subtipo de std_ulogic corresponde a la versión Para poder utilizarlos se escribe:
"resuelta" de ésta. Library ieee;
Este paquete contiene funciones de operaciones aritméticas Use ieee.std_logic_1164.all; - Lógica estándar
para vectores con y sin signo
sign changing operators Conversiones de tipo (Librerias no estandar)
abs, -
arithmetic operators VHDL es un lenguaje FUERTEMENTE TIPADO
+,-,*,/,rem,mod.
– Las operaciones aritméticas estándares están definidas para
>,<,<=,>=,=,/= los tipos SIGNED y UNSIGNED pero los puertos de las
 The std_ulogic_vector_type entidades se definen SIEMPRE para los tipos STD_LOGIC y
 The std_logic_vector_type
 The to_bit_function
STD_LOGIC_VECTOR por tanto hay que hacer
CONVERSIONES entre tipos.

– Existen librerías NO ESTÁNDARES que permiten hacer


operaciones directamente con el tipo std_logic_vector

 std_logic_signed,
 std_logic_unsigned,
 std_logic_arith

BIBLIOGRAFIA

[1] http://dea.unsj.edu.ar/sda/EjercPaquetes.htm
[2] http://www1.frm.utn.edu.ar/tecnicad1/_private/Apuntes/VHDL.pdf

GLOSARIO
Posibles preguntas al grupo
1. En qué librería y paquete es definido el tipo de datos bit?
2. Cual(es) librería(s) y paquete(s) son siempre visibles?
3. Qué declaraciones pueden estar presente en un paquete?
4. Especifique en qué partes (declarativas) puede ser
declarada una función. Cuáles de estos tres lugares facilita el re-
uso de la función?
6. Qué significa que el tipo std_logic sea "resuelto"?
7. Dentro de los archivos correspondientes a ISE, busque y
encuentre el cuerpo (body) del paquete std_logic_1164. Dentro
del body encuentre la función resolved y detalle precisamente
como funciona esta función.
8. Siguiendo el mismo procedimiento que el punto 7
encuentre la(s) función(es) and . Determine cuantas funciones
and existen dentro del paquete. Explique porqué pueden existir
más de una función con el mismo nombre y detalle el
funcionamiento de la función and definida para el tipo
std_logic_vector.
9. Siguiendo el mismo procedimiento que en el punto 7
encuentre el paquete std_logic_arith. Determine qué tipos son
declarados, qué funciones son declaradas, qué funciones son
sobrecargadas (overloaded), cuál es el propósito del paquete y
como podría Ud. usarlo.
10. Declare un paquete conteniendo declaraciones de
constantes, señales y sub-tipos. Indique como se accede a esos
objetos declarados.
11. Cuáles operadores de desplazamiento fueron definidos en
el standard VHDL'93?. Es posible diseñar un registro de
desplazamiento sin usar estos operadores?
12. Cuál es la diferencia fundamental entre procedimientos y
funciones?
13. Porqué en una función/procedimiento la longitud de un
vector no debe ser definida en la declaración de la misma?
14. Qué es sobrecarga (overloading)?

You might also like