occid¿nt¡ l8frr4¡rflffirryrrl seccron 02?546
TRANSCRIPT
DISEÑO E IMPLEMENTACION DEL CURSO ELECT¡VO'DISEÑO DIGITAL
AVANZADO UTILIZANDO DISPOSITIVOS LOGICOS PROGMMABLES Y
LENGUAJES DE DESCRIPCION HARDWARE'
DANIEL FRANCO ARBELAEZ
JHON EDUARD POSSO
r]J.'i'Z 4O
l8frr4¡rflffirryrrlUn¡Yüs¡dad Autóno¡na de Occid¿nt¡
sEccroN I Brl0f t,cA
02?546CORPORACION UNIVERSITARIA AUTONOMA DE OCCIDENTE
DIVISION DE INGENIERIAS
DEPARTAMENTO DE INGENIERIA ELECTRONICA
SANTIAGO DE CALI
1997
DISEÑO E IMPLEMENTACION DEL CURSO ELECTIVO "DISEÑO DIGITAL
AVANZADO UTILIZANDO DISPOSITIVOS LOGICOS PROGRAMABLES Y
LENGUAJES DE DESCRIPCION HARDWARE"
DANIEL FRANCO ARBELAEZ
JOHN EDUARD POSSO
Monografia para optar al título deI ngeniero Electrónico.
DirectorZEIDA MARIA SOLARTElngeniero en Electrónica
CORPORACION UNIVERSITARIA AUTONOMA DE OCCIDENTE
DIVISION DE INGENIERIAS
DEPARTAMENTO DE INGENlERIA ELECTRONICA
SANTIAGO DE CALI
1997
a/" ? /-rf tlr/
€./^lN
l
s\
Nota de aceptación
Aprobado por el com¡té de grado en
cumplimiento de los requisitos exigidos
por la Corporación Universitaria Autónoma
de Occidente para optar al título de
I ngeniero Electrónico.NNñ
\N
\\
N\R
r!\
$N\N
ñ
-.V
.N\\t\\
ñSantiago de Cali, Diciembre de 1997
A mi familia quienes siempre me
apoyaron, en especial a mi padre. A
Zeida y a Daniel.
John E.
A mis padres y hermanos por su
colaboración durante todo el tiempo
que estudie y a Zetda por su
amistad.
Daniel
AGRADECIMIENTOS
Los autores expresan sus agradecimientos a:
Zeida María solarte, Jefe del Area de Sistemas Digitales y Computadores y
directora de la tesis por su constante apoyo, comprensión y confianza.
Todas las personas vinculadas con el programa de Ingeniería Electrónica,
profesores y secretaria, que de alguna forma tuvieron que ver con el desanollo de
este trabajo.
Neftalí por su continuo estimulo, sostén, paciencia y comprensión. Dicha tarea no
hubiera sido posible sin su infinito amor y fé en mi.
CONTENIDO
INTRODUCCION
1. DISPOSITIVOS LOGICOS PROGRAMABLES
1.1 DEFtNtCloN
1.2 ELEMENTOS BASICOS DE PROGRAMACION
1.2.1 Fusibles
1.2.2 Antifusibles
1.2.3 Celdas UV EPROM
1.2.4 Celdas EE CMOS
1.3 NOTACTON
1.4 ARQUITECTURAS
1.4.1 Memoria de solo lectura programable (pROM)
1.4.2 Aneglo lógico programable (PLA)
1.4.3 Lógico de arreglo programable (PAL)
1.4.3.1 Dispositivos PAL combinacionales
1.4.3.2 Dispositivos PAL con registros
pá9.
1
4
4
6
6
9
I
11
12
13
13
15
16
18
19
1.4.4 Otros tipos de PLD's
1.4.4.1 Aneglo de compuertas programables en el campo (FPGA)
1.4.4.2 Dispositivo lógico programable bonable (EPLD)
1.4.4.3 Lógica de aneglo genérica (GAL)
1.4.4.4 Lógica borrable eléctricamente programable (PEEL)
1.4.4.5 Circuito integrado de aplicación específica bonable (ERASIC)
1.4.4.6 Secuenciadores programables (PROSE)
1.4.4.7 Controladores de fusibles programables (FPC)
1.4.5 Macrocelda de salida
1.5 FAMILIAS DE PLD'S
1.5.1 lntroducción
1.5.2 Altera
1.5.2.1 Nomenclatura
1.5.2.2 PLD's de propósito general
1.5.2.2.1 MAX 7000
1.5.2.2.1.1 Descripción funcional
1.5.2.2.1.2 Bloques de aneglos lógicos
1 .5.2.2.1.3 Macroceldas
1 .5.2.2.1.4 Arreglo de interconecciones programables
1.5.2.2.1.5 Bloques de control l/O
1.5.2.2.2 MAX 9000
1.5.2.2.3 FLEX 8000
20
20
20
21
21
21
21
21
22
23
23
26
27
27
28
29
30
31
33
33
33
33
1.5.2.2.4 MAX 5000
1.5.2.2.5 FLEX LOGTC
1.5.2,2.6 CLASICA
2. LENGUAJES DE DESCRIPCION HARDWARE
2.1 VHDL
2.1.1 Historia
2.1.2 Ventajas
2.1.3 Caracterlsticas del modelamiento del lenguaje
2.1.3.1 Terminología
2.1.3.2 Elementos básicos del lenguaje
2.1 .3.2.1 ldentificadores
2.1.3.2.2 Datos objetos
2.1.3.2.3 Declaración de constantes
2.1.3.2.4 Declaración de variables
2.1.3.2.5 Declaración de señales
2.1.3.3 Declaración de entidad
2.1.3.4 Cuerpo de la arquitectura
2.1.3.4.1 Estilo de modelamiento estructural
2.1.3.4.2 Estilo de modelamiento de flujo de datos
2.1.3.4.3 Estilo de modelamiento de comportamiento
2.1.3.4.3.1 Declaración de entidad
2.1.3.4.3.2 Cuerpo de la arquitectura
34
34
34
36
37
38
39
40
40
41
41
42
44
44
45
45
47
47
52
54
54
55
2.1.3.4.3.3 Declaración de proceso
2.1.3.4.3.4 Declaración de asignación de variables
2.1.3.4.3.5 Declaración de asignación de señales
2.1.3.4.3.6 Drivers de señal
2.1.3.4.3.7 Declaración WAIT
2.1.3.4.3.8 Declaración lF
2.1 .3.4.3.9 Declaración CASE
2.1.3.4.3.10 Declaración LOOP
2.1.3.4.3.11 Declaración EXIT
2.1.3.4.4 Estilo de modelamiento mezclado
2.1 .3.4.5 Declaración de configuración
2.1.3.4.6 Declaración de paquete
2.2 AHDL
2.2.1 Introducción
2.2.2 Estructura de un archivo de diseño
2.2.2.1 Declaración TITLE
2.2.2.2 Declaración PARAMETERS
2.2.2.3 Declaración INCLUDE
2.2.2.4 Declaración CONSTANT
2.2.2.5 Declaración DEFINE
2.2.2.6 Declaración FUNCTION PROTOTYPE
2.2.2.7 Declaración OPTIONS
56
56
57
59
60
60
62
62
M
69
70
73
75
75
76
76
76
77
78
78
79
80
2.2.2.8 Declaración ASSERT
2.2.2.9 Sección SUBDESIGN
2.2.2.10 Sección VARIABLE
2.2.2.10.1 Declaración INSTANCE
2.2.2.10.2 Declaración NODE
2.2.2.1 0.3 Declaración REGISTER
2.2.2.1 0.4 Declaración STATE MACHINE
2.2.2.11 Sección lógica
2.2.2.1 1.'l Ecuaciones booleanas
2.2.2.11.2 Ecuaciones de control booleanas
2.2.2.11 .3 Declaración CASE
2.2.2.1 1 .4 Declaración DEFAULT
2.2.2.11.5 Declaración lF THEN
2.2.2.11.6 Declaración lF GENERATE
2.2.2.11.7 Declaración FOR GENERATE
2.2.2.11 .8 Declaración TRUTH TABLE
3. CONCLUSIONES
BIBLIOGRAFIA
ANEXOS
80
81
82
83
84
84
85
86
87
88
89
90
91
92
93
95
97
101
102
FIGURA 1.
FIGURA 2.
FIGURA 3.
FIGURA 4.
FIGURA 5.
FIGURA 6.
FIGURA 7.
FIGURA 8.
FIGURA 9.
FIGURA 10.
FIGURA 11.
FIGUM 12.
FIGUM 13.
FIGURA 14.
FIGUM 15.
FIGURA 16.
FIGURA 17.
LISTA DE FIGURAS
Diagrama general de un PLD
Fusible vertical
Estructura de un fusible
Estructura de una celda EPROM
Celda EE
Notación
Línea producto programada
Arquitectura de una PROM
Arquitectura de un PLA
Arquitectura PAL combinacional
Arquitectura PAL con registros
Macrocelda de salida
Nomenclatura
Diagrama en bloques de los dispositivos EpM7032,EPM7064 y EPM7096
Diagrama en bloques de los dispositivos MAX 7000Ey MAX 7000S
Macrocelda para los dispositivos EPMZ032, EpM7064y EPM7096
Macrocelda de los dispositivos MAX 7000E y MAX ZO00S
pá9.
5
7
8
I
11
12
13
14
16
18
19
22
27
29
30
31
32
FIGURA 18.
FIGURA 19.
FIGURA 20.
FIGURA 21.
FIGURA 22.
FIGURA 23.
FIGUM 24.
FIGURA 25.
Circuito sumador de dos bits (Half-adder)
Circuito de un decodificador de 2 a 4
Contador con flip-flops T y compuertas AND
Forma de ondo de reloj con perfodo constante
Gráfica de retardo inercial
Gráfica de retardo de transporte
Forma de onda de reloj con diferente período alto y bajo
Full adder de 1 bit
46
46
51
54
58
59
68
70
RESUMEN
En el presente trabajo se dan pautas
son:
. PLD's
. Lenguajes de descripción hardware
en dos temas de electrónica digital como
En cuanto a PLD's se da una explicación de lo que son, como funcionan y como
están formados, se mencionan los diferentes tipos de elementos básicos de
programación, los cuales permiten la configuración del dispositivo para que
efectúen una función deseada; se explican las diversas clases de arquitecturas y
las desigualdades que hay entre ellas. Por último se nombran los fabricantes que
existen y se habla en forma detallada de la familia ALTERA.
En los lenguajes de descripción hardware se dan bases para trabajar gon VHDL y
AHDL, entre los cuales existe mucha similitud. Para dichos lenguajes se dio una
introducción y se explicaron las características del modelamiento del lenguaje de
cada uno.
Por último se elaboraron 4 ejercicios que muestran la aplicación de estos temas
amparados en el software de simulación ALTERA MM+PLUS ll .
INTRODUCCION
Desde la creación de los primeros circuitos digitales, en la década de los años 30,
desarrollados con relés, la electrónica digital ha tenido notables avances como
fueron la invención de los tubos de vaclo y posteriormente los dispositivos
semiconductores (diodos y transistores ) los cuales fueron un paso fundamental
que permitió la construcción de sistemas de menor consumo, más pequeños,
más rápidos y fiables. Luego se realizaron circuitos sólidos más adelante llamados
circuitos integrados. Esta tecnologla hace posible la construcción en un solo
bloque semiconductor, de un circuito que realice una función electrónica compleja,
en el cual los distintos elementos quedan conectados directa e inseparablemente.
El costo de un sistema digital puede estar dominado por las tarjetas de circuitos,
las fuentes de alimentación, las interconexiones y el empaque, así como por los
costos de diseño y verificación y otros costos de producción. Con frecuencia los
dispositivos lógicos digitales solo representan una fracción del costo total de un
sistema. En consecuencia, los diseñadores de sistemas digitales intentan
minimizar la cantidad total de paquetes de circuitos, lo que a su vez minimiza los
costos de espacio en las tarjetas de circuitos, energía y otros costos.
El comportamiento de circuitos de lógica digital se logró analizar y describir
utilizando el álgebra de Boole, la cual fue creada para darle expresión a las leyes
fundamentales del razonamiento en el lenguaje simbólico del cálculo. De aquí se
pudo establecer que todo circuito lógico podía expresarse como suma de
productos o como producto de sumas. Esta característica permitió el surgimiento
de nuevos chips LSI con estructuras regulares formadas por arreglos AND y OR
conocidos con el nombre de Dispositivos lógicos programables ( PLD's ), los
cuales le permitían al diseñador adecuarlo para una función específica.
Los PLD's han sido una herramienta muy útil en el diseño digital gracias a que
simplifican la tarea del diseñador, ahorran espacio y potencia, también con la
aparición de los EPLD's ( dispositivos bonables ) que permiten la reutilización de
estos cuantas veces sea necesario.
Las formas para programar estos dispositivos son múltiples, pero se destacan
principalmente los lenguajes de descripción hardware. El VHDL se crea con el fin
de homogeneizar y volver compatibles las henamientas de simulación, debido a la
aparición de gran cantidad de lenguajes que no permitían el intercambio de
diseños. Así se logra un lenguaje con un amplio rango de posibilidades de
descripción que podía trabajar en cualquier simulador y que fuera independiente
de la tecnologfa o metodología del diseño.
La aplicación práctica se realiza haciendo uso del software de desarrollo ALTERA
MAX+PLUS ll el cual permite hacer el diseño en tres modos diferentes: modo
esquemático, utilizando lenguajes de descripción hardware ( VHDL y AHDL,
lenguaje de descripción de altera ) y edición por formas de onda. El programa
contiene un simulador que tiene en cuenta los tiempos de retardo y también da la
posibilidad de programar el dispositivo a través de una MPU ( Unidad maestra de
programación ).
El presente trabajo muestra las caracterlsticas principales de los PLD's y de los
lenguajes de descripción hardware, con el fín de que esta información sea
transferida a otras personas para que puedan utilizar esta henamienta para el
desarrollo de diseños lógicos en la materia electiva "Diseño digital avanzado
utilizando dispositivos lógicos programables y lenguajes de descripción hardware".
1. DISPOSITIVOS LOGICOS PROGRAMABLES ( p L D's )
1.1 DEFtNtCtON
El término dispositivo lógico programable o PLD (Programmable Logic Device) se
aplica de manera general a los circuitos integrados que tienen un conjunto base
de componentes, como conmutadores, compuertas o celdas más complejas, pero
cuyas interconexiones se pueden configurar de acuerdo a la aplicación para
convertirlos en componentes de diseño de propósito general. Un PLD en forma
general, consiste de un aneglo de compuertas lógicas AND conectadas a un
aneglo de compuertas OR a través de elementos básicos de programación (EBp).
Los EBP's pueden ser fusibles o celdas basados en los elementos de
almacenamiento de los diferentes tipos de memoria, los cuales permiten alterar el
estado de una conexiÓn, sea que abran o cierren la intersección a la que se
encuentran asociados.
Dependiendo de que sea programable el arreglo AND, el arreglo OR o ambos, se
consideran tres tipos fundamentales de PLD's:
- PLA's: El arreglo AND y el aneglo OR son programables.
PRoM's: consiste de un aneglo AND fijo y de un arreglo oR programable.
PAL's: Este dispositivo consta de un aneglo AND programable seguido por un
aneglo OR frjo.
Los pines de entrada del circuito integrado (lC) van hacia el arreglo AND, mientras
que los de salida parten del arreglo OR. Esta arquitectura permite implementar
cualquier función que se pueda expresar mediante suma de productos. La
mayoría de PLD's contienen además, bloques de entrada y salida con elementos
que facilitan dlsenos secuenciales, tales como: Registros, enganchadores,
caminos de realimentación, etc.
ARREGLOS
PROGRjI{ABLES
AND YOR
BLOQUE
DE
ENTRJDA
BLOQUE
DE
SAIIDA
FIGURA 1. Diagrama general de un PLD.
6
Las interconexiones de un PLD para una aplicación específica se produce en dos
formas principales. La primera requiere uno o dos pasos especiales en el proceso
de fabricación del chip del lC y en este caso se dice que el PLD ha sido
programado en fábrica o con mascara. El segundo método permite que el
diseñador o el usuario final lleve a cabo el proceso de configuración del lC
encapsulado, inyectándole señales eléctricas a través de un equipo especializado,
conocido como unidad de programación de un PLD. Estas señales abren o
cierran los EBP's para establecer los patrones de conexión deseados entre los
componentes. Los lC's que se configuran en esta forma se denominan
programables sobre el campo. En algunos casos, un lC programable sobre el
campo también es borrable, de manera que se puede programar en repetidas
ocasiones.
1.2 ELEMENTOS BASICOS DE PROGRAMACION
1.2.1 Fusibles. Los fusibles son enlaces generalmente metálicos que se
programan haciéndoles pasar una elevada corriente. El material y la tecnología
usada en la fabricación de los fusibles debe garantizar una apertura confiable, sin
salpicaduras y con un mínimo de posibilidades de unirse nuevamente
(GROWBACK), problema frecuente que presentaban las primeras versiones. Los
fusibles se dividen en dos grupos:
- Fusibles Laterales
- Fusibles Verticales
I
El fusible vertical consta de un transistor con la base abierta conectado a dos
líneas (una línea de entrada y una línea producto). Debido a la alta impedancia del
transistor, la línea de entrada no esta conectada a la línea producto mientras este
elemento no sea programado. La programación produce un corto equivalente
entre la juntura colector emisor. La programación se efectúa mediante el proceso
de migración inducida por avalancha (AlM), que se logra fozando a pasar una
corriente a través del emisor con lo cual se produce una ruptura por avalancha de
la juntura emisor - base. El calor generado localmente hace que el aluminio se
difunda desde el emisor hasta la juntura emisor - base, lo cual causa un corto
circuito permanente.
Fusible vertical no programado.
Fusible veftical programado.
FIGURA 2. Fusible vertical.
Srü¡tr¡io P
8
Los fusibles laterales están constituidos generalmente por filamentos metálicos de
diferentes materiales dentro de los cuales los mas populares son los de: Nicromo,
Titanio-Tungsteno (TlW) y Silicato de Platino (PtSi). Estas tecnologías de fusibles
han sido usadas por varios años y son ampliamente aceptadas por los fabricantes
debido en gran parte a su alta confiabilidad.
Cuando se aplica un pulso rápido de coniente, el voltaje del fusible sube
abruptamente al valor determinado por su resistencia térmica, luego baja
rápidamente a un valor aproximado de 2 voltios, este valor es casi independiente
de la corriente aplicada. Durante el periodo de tiempo en que el fusible es fundido
la corriente cae rápidamente a cero indicando la separación o apertura del metal
en dos secciones diferentes. La separación ocurre en el centro del fusible ya que
por su forma la energía se concentra en ese punto.
I Aluminio
E Area de contacto
FIGURA 3. Estructura de un fusible
9
1.2.2 Antifusible. Son estructuras de materiales que pueden cambiarse
eléctricamente desde un estado de alta impedancia, hasta formar un enlace de
conducción de baja resistencia. Tienen la forma básica de un emparedado de
película metálica y dieléctrico. El dieléctrico generalmente utilizado es el (SiO2), o
una composición de elementos de este tipo como por ejemplo el SILICATO
AMORFO. Al aplicarles voltajes del orden de los 10 a los 20 voltios ocurre un
rompimiento del dieléctrico, con esto se forma un enlace conductor permanente
con una resistencia del orden de los 300 a los 1000 ohmios.
1.2.3 Celdas UV EPROM. Algunas tecnologías de fabricación de PLD usan
celdas EPROM para realiza¡ la programación, a estos dispositivos se les
denomina comúnmente EPLD's.
Oxido de puerta
PC = Puerta de control
PF = Puefta flotanteE oxido de campo
I Substrato P
üntr¡lsld¡d tulonoma dc occithntr
stüclofi ¡ ErloltcA
+vg
FIGURA 4. Estructura de una celda EPROM
10
Una celda EPROM tiene una capa de polisilicio llamada puerta flotante, la cual
esta literalmente entenada en las capas de óxido.
Durante la operación de programación o en el ciclo de escritura, un alto voltaje (13
a 14 voltios) es aplicado a la compuerta de control y otro (12 voltios generalmente)
al transistor de puerta flotante. La puerta flotante es acoplada capacitivamente al
voltaje aplicado bajo condiciones de polarización, esto permite que los electrones
calientes conducidos en la región del canal sean inyectados a la puerta flotante,
donde son atrapados por un potencial de banera de 3.1 eV en la interfaz de
polisilicio-oxido. Las cargas electrónicas negativas presentes en la puerta flotante
interna tienden a proteger el canal de voltaje positivo en el tope de la compuerta
de control formado entre la fuente y el drenador.
El estado de la puerta flotante es permanente, esto se debe a que la puerta está
enterrada en un óxido de extremadamente alta calidad y es eléctricamente aislada
con un camino diferente a tierra. Sin embargo con la exposición a rayos
ultravioleta con una longitud de onda menor de 4000 amstrong (típicamente del
orden de los 2500 amstrong) con energía mayor a 3.1 eV (típicamente una
intensidad de 1200 uWcm2) a través de una ventana transparente colocada en el
dispositivo, las cargas atrapadas pueden ser removidas descargando la puerta
flotante, esta exposición normalmente debe ser entre 15 y 20 minutos, pero
algunos dispositivos necesitan exponerse hasta por una hora.
ll
1.2.4 Celdas EE CMOS. Los EBP's en los PLD's también suelen ser fabricados
usando una tecnología avanzada basada en CMOS EEPROM, por tanto posee las
ventajas de CMOS como son baja disipación de potencia y alta densidad entre
otras.
El proceso de prueba y producción CMOS emplea reglas de díseños actuales,
usando litografía escalonada en todos los niveles críticos con un tamaño mínimo
característico de 1.5 micras. El grosor del óxido de la puerta del transistor es
aproximadamente 300 amstrong. Este desarrollo resulta en una disminución
considerable de las dimensiones y de la densidad del empaquetamiento, además
de circuitos mas rápidos y de menor costo.
Las celdas EE las cuales pueden ser eléctricamente borrables y reprogramadas,
contienen una estructura de transistores de puerta flotante (dos capas de
polisilicio) con una región de óxido de menos de 100 amstrong a través de la cual
los electrones pueden "tunelea/' para cargar o descargar la celda.
Linea metálica
IOxido depositado Puerta de control
Puerta de selección
Drenadordifuso
Fuentedifusa
Región de tuneleo
FIGURA 5. Celda EE
T2
Se ha adicionado un transistor en serie a la celda de almacenamiento para
prevenir fugas a las celdas descargadas no seleccionadas durante un ciclo de
verificación de carga.
1.3 NOTACTÓN
La notación para una compuerta AND standard de tres entradas frente a la
notación de una compuerta AND PLD es la siguiente:
A h ,rIB-l r ABCC- +++F*C
ESTA}.TDAR
ABCPLD
FIGURA 6. Notación estándar Vs PLD
La representación PLD para las entradas de una compuerta AND se denomina
línea o término producto, puesto que si se expresan en forma de ecuaciones
Booleanas aparecen formando productos matemáticos.
Las entradas A, B y C se conectan a la compuerta mediante EBPs ubicados en la
intersección entre una entrada y una línea producto. Una intersección cerrada se
expresa por una X, mientras que la ausencia de esta indica el caso contrario.
l3
]NTERSECCIONPROGRÁlrdADAEN FABRICA
]NTERSECCIONABIERTA
-fv
J]-ll-l-¿-eINTERSECCION +l I I t''/CERR-ADA ---''"'ABC
FIGURA 7 . Línea producto programada
1.4 ARQUITECTUMS
1.4.1 Memoria de Solo Lectura Programable (PROM). La memoria programable
exclusiva para lectura (PROM) es el más antiguo PLD (data de 1970) debido a su
uso en aplicaciones de memoria de computadora, aunque por varios años, esta
arquitectura no fue considerada como un PLD, habiéndose usado muchas
PROM's pequeñas como elementos lógicos.
Las PROM diseñadas como dispositivos lógicos se conoce normalmente como
elementos lógicos programables (PLE). La arquitectura básica consiste de un
arreglo AND ftjo para decodificar las direcciones de memoria seguido de un
arreglo OR programable. Para cada una de las combinaciones de entrada
(direcciones) se genera un valor que ha sido programado en el dispositivo para
cumplir una función determinada.
Una PROM se caracleriza por el hecho de generar los 2 a la n minterminos de n
variables en su plano AND. Esta estructura permite que cada columna de salida
t4
en el plano OR produzca cualquier función de hasta n variables, si se expresa en
forma canónica de suma de minterminos. Puesto que las funciones AND están
predeterminadas, no es necesario que el plano AND sea programable, de manera
que toda la programación se limita a los puntos de cruce en el plano OR.
FIGURA 8. Arquitectura de una PROM
En el arreglo AND, cada combinación de entrada esta disponible, sea que se
necesite o no. En estos dispositivos no es posible realizar minimización lógica de
ARREGLO ORPROGRAMABLE
ARREGLO AND FIJO
l5
comb¡naciones de entrada por que el aneglo AND esta fijo. La salida puede
compartir líneas producto por que cada compuerta OR esta conectada a cada una
de ellas. Cada término producto mrresponde a una de sus direcciones y las
compuertas OR programables corresponden a los bits de datos.
La ventaja de las PROM's es que cada combinación de entrada puede ser
decodificada. La desventaja es que el número de pines de entrada está
restringido, ya que el tamaño del arreglo aumenta al doble por cada pin de
entrada adicional.
1.4.2 Aneglo Lógico Programable (PLA). En estos dispositivos tanto el aneglo
AND como el arreglo OR son programables. Por tanto, esta arquitectura es la más
flexible de las arquitecturas básicas. Un PLA es un PLD mas general ya que
cualquier término producto puede ser conectado a cualquier compuerta OR de
salida.
En esta arquitectura normalmente se habla de términos producto compartidos por
que las salidas pueden compartir una misma entrada. Pero, la flexibilidad de
programación de ambos arreglos disminuye el rendimiento del dispositivo (se
pierde velocidad y aumenta el consumo de potencia ) y del tamaño de la pastilla
de silicio.
l6
ARREGLO ORPROGRAMABLE
ARREGLO ANDPROGRAMABLE
FIGURA 9. Arquitectura de un PLA
Cuando a un PLA se le adicionan flip-flops se obtiene un secuenciador lógico
programable o PLS, utilizado principalmente para implementar máquinas de
estado complejas y secuenciadores.
1.4.3 Lógica de Arreglo Programable (PAL). Monolithic Memories lnc introdujo los
dispositivos PAL a finales de la década de los 70s, como un sustituto de bajo
costo de las compuertas lógicas discretas, las PROM y los PLA.
t7
Comúnmente no es necesario tener disponible todas las posibles combinaciones
de entrada, ya que en muchas aplicaciones no se necesita la flexibilidad del
arreglo OR programable. Estadísticamente en una ecuación se requiere
solamente un número limitado de términos producto y este número puede
reducirse aun mas con técnicas de minimización lógica.
Un dispositivo PAL consta de un aneglo AND programable seguido por un aneglo
OR fijo. El primer arreglo permite que el dispositivo pueda tener muchas entradas,
mientras que el segundo facilita que el dispositivo sea rápido y pequeño.
En esta arquitectura se tiene la posibilidad de programar únicamente las
combinaciones de entrada que se deseen, pero teniendo en cuenta que solo
algunas líneas producto están unidas a salidas específicas sobre el arreglo OR de
acuerdo a un patrón fijo. Típicamente se tiene I líneas producto por cada
compuerta OR de salida.
Las principales ventajas son la reducción en el tamaño y por ende menor costo
que un PLA, como también pueden ser mas rápidos y fáciles de programar. A las
PAL también se pueden incorporar líneas de entrada - salida bidireccionales,
control de polaridad de salida y realimentación al plano AND.
Dentro de los PAL se tiene una gran variedad de opciones dependiendo de : El
número de entradas, número de salidas, número de caminos de realimentación,
l8
pines de l/O programables, números de registros de salida y otros. Sin embargo
se pueden diferenciar claramente dos tipos: Aquellos orientados a diseños
combinacionales y aquellos orientados a diseños secuenciales.
1 .4.3.1 Dispositivos PAL Combinacionales.
LINEAS DE ENTRADA (0 - 7 )
0123 4567
LINEASPRODUCTO(0-15)
0
1
¿
3
45
6
I
II
101112
1374TJ
PIN 5
LINEAPRODUCTOPARACONTROLTRES ESTADOS
BUFFER DESALIDA
FIGUM 10. Arquitectura PAL combinacional.
l9
Están formados solamente por compuertas. Se utiliza en aplicaciones donde
se necesita almacenar estados anteriores tales como multiplexores
decodificadores.
1.4.3.2 Dispositivos PAL con Registros. A diferencia de los anteriores, estos
disponen de registros (flip-flops) en sus salidas que se realimentan al aneglo
AND. Esta realimentación hace posible la implementación de lógica secuencial y
máquinas de estado.
LTNEAS DEE¡,TTRADA ( 0 - 7 )
RELOJ 0123456-l
no
v
LINEASPRODUCTO(0-16)
0
1
o¿
3
4
5
61
I
10
11
12
13
14
15
FLIP-FLOPTIPO D
BUFEERREAIIMENTACIONDEREGfSTRO
PIN 5
BUEFERDESAIIDA
PIN 6
PIN?HABILITADORDE SAIIDA
Untnrsldrd rut6nom¡ dc 0cclthnh
sEcclott B,Btloltcr
FIGURA 11. Arquitectura PAL con registros.
20
La mayoría de familias con registros a sus salidas utilizan flip-flop tipo D; mientras
que aquellas familias que poseen macroceldas de salida permiten programar el
tipo de flip-flop a partir de una descripción de un alto nivel.
1.4.4 OTROS TIPOS DE PLD's.
1.4.4.1 Arreglo de Compuertas Programables en el Campo. Esta es otra clase
general de PLD's conocida como FPGA (Field Programmable Gate Anays).
Consisten en arreglos bidimensionales de circuitos lógicos a nivel de registro
llamado celdas, separados por canales de cableado. Los canales de cableado
tienen conexiones programables que permiten enlazar las celdas en forma
esencialmente arbitrarias. Los tipos de celdas pocas veces están limitados a
compuertas, a pesar del nombre "arreglo de compuertas". Por lo general, son
pequeños circuitos combinacionales de varias funciones, capaces de realizar
varias funciones Booleanas de unas cuantas variables dependiendo de la manera
en que se programen sus conexiones entrada-salida. Una celda también puede
contener algunos fl ip-fl ops.
1.4.4.2 Dispositivo Lógico Programable Borrable (EPLD). Son PLD's que pueden
ser borrados y reprogramados como ocurre con las memorias EPROM.
Internamente tienen las mismas estructuras AND-OR-registros de los PAL y las
PLA. La sigla EEPLD se usa para referirse a los EPLD bonables eléctricamente.
2l
1.4.4.3 Lógica de Aneglos Genérica (GAL). Es una familia de dispositivos
eléctricamente bonable del tipo PAL pero un poco mas flexibles y densos.
1.4.4.4 Lógica Eléctricamente Borrable Programable (PEEL). Al igual que los
anteriores, estos dispositivos PLD's usan tecnología eléctricamente bonable. Sus
arquitecturas son similares a las encontradas en los EPLD's.
1.4.4.5 Circuito Integrado de Aplicación Especifica Borrable (ERASIC). Estos
PLD's incluyen un aneglo generalmente AND que se realimenta hacia las
entradas con el fin de permitir la implementación de lógica multinivel.
1.4.4.6 Secuenciadores Programables (PROSE). Son PLD's cuya arquitectura se
ha óptimizado para el diseño de máquinas de estado de alta complejidad.
Combina en un mismo dispositivo un arreglo AND y una PROM utilizando la
eficiencia de ambos en el diseño de máquinas de estado.
1.4.4.7 Controladores de Fusibles Programables (FPC). Es un chip diseñado
para permitir la implementación de complejas máquinas de estado y
controladores, mediante la programación de una secuencia adecuada de
microinstrucciones en una memoria interna del chip.
22
1.4.5 Macroceldas de salida. Son estructuras que tiene algunos PLDs. Estas
reemplazan compuertas oR simples y flip-flops por circuitos que pueden
programarse para funcionar de formas diferentes.
Globsl Goct(One Per l-AB)
Pmgrutnnfun6gbbr
UO Fce<bactaaa aaa aaa
8or20D€dcat€d
Inputs
24 ProgrammableIntercorh€ct Signab
(Muhl-t-AB Devi:€s Orúy)
32 o.64Ég8nd€r
ProductTems
FIGURA 12. Macroceldas de salida
Una salida puede programarse con cualquier polaridad (activa baja o activa alta).
El registro de salida, puede programarse como un flip-flop tipo D, T, J-K, ó S-R, o
también puede programarse para que sea transparente (salida combinacional). En
esta configuración el término producto realimentado puede conectarse al registro,
creando una salida combinacional con realimentación de registro. El reloj del
registro puede programarse para ir hacia un pin extemo o hacia un término
producto interno. También son programables las entradas det flip-flop SET y
23
RESET, los modos de operación asíncrono o síncrono y los habilitadores de
salida. La entrada del flip-flop puede ser la salida de una compuerta OR excluslva
en la cual sus entradas son términos producto.
1.5 FAMILIAS DE PLD's
1.5.1 Introducción. A continuación se da una muestra de la clase de dispositivos,
arquitecturas y PLD's especializados ofrecidos actualmente por importantes
fabricantes como son: ALTERA, Advanced Microdevice, National Semiconductor e
Intel.
Los diversos fabricantes de PLD's basan la evolución de sus productos de
acuerdo a las necesidades del mercado y los avances en las tecnologías de
fabricación, las cuales permiten cr,da vez mayores densidades de integración y
mayores velocidades, aumentando la capacidad funcional de los dispositivos y por
ende ampliando sus campos de aplicación.
En particular los usuarios requieren mayor flexibilidad y funcionalidad de los
dispositivos, para lo cual se han involucrado ciertas características tales como:
registros de entrada intemo, uso más eficiente de los términos producto, manejo
mas flexible de las salidas, y señales de control (habilitadores, relojes y reset's)
los cuales no se encuentran disponibles en las arquitecturas PAL estándar.
24
Dentro del grupo de PLD's los dispositivos PAL de 2O y 24 pines poseen las
arquitecturas estándar mas populares que constan básicamente de un aneglo
AND programable y un arreglo OR fijo con salidas combinacionales a través de
registros. Estos dispositivos PAL son usados básicamente como reemplazos para
lógica MSI/SSI estándar en la implementación de diseños lógicos digitales.
Por otra parte los PLD de más de 24 pines son predominantemente usados en la
implementación de máquinas de estado.
Uno de los mayores inconvenientes que ha surgido para los PLD's, es la
implementación de la lógica de interconexión y control entre un microprocesador y
un dispositivo periférico. Esto ha sido posible debido al crecimiento en la densidad
de los PLD's, permitiendo implementar bloques funcionales completos, tales
como: controladores de buses, unidades de control de intem.¡pción y dispositivos
orientados a la implementación de diseños complejos con máquinas de estado.
Un problema con la arquitectura PAL es que ordinariamente se usa un bajo
porcentaje del número total de compuertas disponibles (30% al 40%). Aumentar
mas el número de compuertas en esta arquitectura agrava este inconveniente,
además, el aumento en la complejidad hace crecer exponencialmente la cantidad
de EBP's (celdas o fusibles de programación). En su lugar, los fabricantes han
adoptado estrategias tales como: integración de bloques funcionales MSI
arreglos lÓgicos y adopción de nuevas arquitecturas tales como arreglos
@n
de
25
compuertas en donde se hace una partición del diseño en cuadrantes que provee:
mayor flexibilidad, eficiencia y evita el crecimiento desmedido de EBP's.
La integración de partes MSI estándar en los PLD's es una herramienta poderosa
para disminuir el número de partes alrededor de una CPU, creando así
dispositivos que desempeñan funciones estándar y con un buen nivel de
flexibilidad.
Una evolución consecuente es la integración de PLD's en nuevos chips
soporte para microprocesadores, brindando mayor versatilidad a este tipo
dispositivos.
National semiconductor utiliza tecnologías TTL, EECMOS y ECL en la fabricación
de sus dispositivod. Estos están soportados por el software PLAN, además existe
una gran variedad y disponibilidad de henamientas de desanollo y equipos de
programación compatibles.
Advanced micro devices posee una gran variedad de dispositivos lógico, los
cuales se encuentran clasificados según su funcionalidad en dispositivos PAL
estándar, PAL universales, PAL asóncronos, dispositivos MACH, secuenciadores,
dispositivos PAL programados y PAL militares.
de
de
26
Intel tiene dispositivos lógicos con la arquitectura basada en un arreglo AND
programable y uno OR fijo ó configurable con tecnología EPROM que permite que
los dispositivos sean probados en fábrica para garantizar su eficacia.
1.5.2 Altera. Altera proporciona el mas amplio rango de soluciones de lógica
programable, con un rango de densidades entre 300 y 100000 compuertas, con
una variedad de encapsulados entre 20 y 560 pines, desde los equivalentes
PAUGAL de alta velocidad para las alternativas programables de la industria
hasta los aneglos de compuertas. ALTERA tiene una solución para cualquier
requerimiento de diseño lógico programable.
Con velocidades superiores a los 200 MHz. y retardos lógicos pin a pin de 5 ns ,
Altera ofrece los mas rápidos dispositivos lógicos programables de alta densidad
disponibles.
Los dispositivos lógicos programables de ALTERA cubren un amplio rango de
densidades con aplicaciones desde decodificadores de direcciones hasta
subsistemas completos. El último prototipo ALTERA que revoluciono los arreglos
de compuertas fue el EPF8050M el cual proporciona 50000 compuertas usables
(100000 disponibles) en un solo dispositivo.
27
1.5.2.1 Nomenclatura
ft Clod(FI R¡IMm ntllc¡kFit t{ x50ü,t x7m,il x9o0FC Gir*nErüfúREüm
*, nf,lgtrúgllú¡12,t2lt¡10¡lu,9l0tld,lll0ú, rÜzt tl¡2rú2 y Íttw9524"t4t2,8úló lr20A
It20¡ | ||ta,|| ru¡¡lO¡Yil 5m¡09FÉ 20.7t0.fl60F * 5qn 50óaJr 2rJr2¡AJ¡lJ 1925192A
78l'úfi ¡oÚ4nfr I tüt | fr I tf?f tT!#.9320,9tüt 9{80,9560
FC: l0ó1,10ülV,¡213
t{üÉ.. d p¡! Ér lT X 90m, ilü 7m, ffÍofÉi flq m ord C¡r$¡rdil Ef0tddd dtl.
D Cü*dd¡F¡DFd!¡.|Cfin ño*¿il+.F&¡rm¡ C¡d3lb¿óleúi|l¡Cllj frdicJ{odd+o¡icleCrd.Éryldagrltrll: !{gldmyFcrl
llr(ntqrodfttF¿KlrlA th*qudfotpot FAFIr: Íüqdla¡od[üt iqñq¡d2i¡ffi1g tldc¡dqtr¡¡qtdftrFdq
c cmrürqrnp'c57üq H$*t hd!td¡pñürl-{0'Cb$'q li:lt fÉotl+Í.nf55' C lo 125' q
Éü:ptn ru¡rq|rbol *tFlemdlb¡iüdc,r¡"dEtD¡ 5fólL,
r*o ct kc*i¡ l¡ l*tl
^¿ú lA¡ AA b l@.¡h € ñ *i?Jipñi. drll
trs¿ b ll.slDtt3, ¡Íf ñii:tü €qb rtt d¡rift e b ll-ll D{13,orrrrrdúr lmrÍllrc ¡tüddú+Fcs*rmryOr*¡6t9.
FIGURA 13. Nomenclatura
1.5.2.2 PLD's de propósito general. Están disponibles en una gran variedad de
densidades de integración, ofreciendo desde reemplazos PAL hasta dispositivos
de alta densidad que integran cientos de compuertas TTL y de otros tipos de
lógica. Este grupo de EPLD's se encuentra formado por: La familia CLASICA, la
familia FLEXLOGIC, la familia MAX5000, la familia MAX 7000, la familia FLEX
8000 y la familia MAX 9000.
Para las prácticas en la univers¡dad se utilizará la familia MAX 7000 y por lo tanto
se dará una explicación mas completa de su estructura intema, aunque la
diferencia con las otras familias es muy po€ y solo varían la cantidad de
compuertas y de macroceldas de salida.
28
1.5.2.2.1 Max 7000. La familia MAX 7000 considerada de dispositivos de alta
velocidad y alto desarrollo, está basada en la segunda generación de arquitectura
de matrices de arreglos múltiples, y están fabricados con tecnología CMOS.
Características:
. Dispositivos lógicos programables basados en tecnología EEPROM.
o Familia con densidades lógica que varía desde 600 a 5000 compuertas
usables.
. 5 ns de retardo lógico pin a pin con frecuencias de contadores de hasta 178.6
MHz.
. Los flipflops de las macroceldas son programables con control individual de
clear, preset, clock y clock enable.
o Tiene un modo programado de ahorro de potencia del 50 % o mas en cada
macrocelda.
. Expansor configurable de términos producto, permitiendo hasta 32 términos
producto por macrocelda.
. Disponibilidad de empaques cuadrados planos de 1mm delgado , cuadrados
planos, j-lead desde 44 pines hasta 208 pines.
. Bit de seguridad programable para la protección de diseños propios.
. Operación a 3.3 v o 5.0 v
29
Feature EPM7fl32
EPM7032VEPMTIB2S
EPM7|l64EPM706{S
EPfit7o96
EPM7096S
EPM7128E
EPIftIl28SEPM7128SV
EPM716flE
EPm7160S
EPM7192E
EPil7l92SEPfit7250EEPM7256S
Usablegates
600 1,250 1.800 2,500 3,200 3,750 5,000
Macrocells 32 64 96 128 160 192 256
Logic arrayblocks
2 4 6 I l0 12 16
Max, userl/O plns
36 68 76 't00 104 124 164
tpo (ns) 5 (12) 5 o 6 (10) 6 7.5 7.5
tsu (ns) 4 (10) 4 5 s (7) 5 6 6
tps¡ (ns) 2.5 (-) 2.5 2.5 2.s (3) 2.5 3 3
tcor (ns) 3.5 (7) 3.5 4 4 (5) 4 4.5 4.5
fs¡r (MHz) 178.6 (90.9) 178.6 151.5 151.5 (100) 151.5 125 125
1.5.2.2.1.1 Descripción funcional. La arquitectura del MAX 7000 incluye cuatro
entradas dedicadas que pueden ser usadas como entradas de propósito general o
como señales de control global de alta velocidad ( clock, clear, y 2 señales output
enable ), para €da macrocelda y pines de entrada y sal¡da.
INPUT/@LKINPUT/@LRn
INPUTiOEIINPUTOEz
ffiEi
aaa
UO -ffil*'i,';i3ffi ffi
uo
MacrocollsItoB 36 36
Macrocalls17 to24 t,,".,.
aaaBlock Macrocells
9to16 l6
PIA
t6
Macroceüs25to32 ffi Blod(
ffiffito 16
@
Eto16
aaa
uo
lliffi ,irji:lidH
3EH
ffiffiuo
aaaru
Mao33
ocells Iro¿o I 36
lMacrocellat'"g tuElock Macrocollg4l to 48 't6 18
Macrocslls57 to E4
Bloct
8to16
E@
aa
8tol6Oa
Elol6UO Cns
StolS!O plrr8
6to16todu
8to181/O ptsE
FIGURA 14. Diagrama en bloques de los dispositivos EPM7032,EPM7064 y EPM7096
Unho¡¡idrd Autónoma dc 0ccidcntrS[Lcr0N B.ErtOttCA
30
lNruT/GCLRn
a8to12l¡OPkE.
a 6to12UO
a0lo 1210 .
a3 eroreloa
FIGURA 15. Diagrama en bloques de los dispositivos MAX 7000E y MAX 70005
1.5.2.2.1.2 Bloques de aneglos lógicos ( LAB's ). La arquitectura de los
dispositivos MAX 7000 está basada en el enlace de módulos de aneglos lógicos
de alto desarrollo llamados bloques de arreglos lógicos ( LAB's ) Un LAB consiste
de un aneglo de 16 macroceldas y se encuentran enlazados con otros LAB's a
través de los aneglos de interconexión programable ( PIA ).
Cada LAB está alimentado por las siguientes señales:
. 36 señales de la PIA que son usados por entradas lógicas generales.
¡ Control global que es usado para funciones de registro secundarios.
. Caminos de entrada directos desde los pines de | / O a los registros que son
usados para fijación rápida de tiempos en los MAX 7000E y MAX 70005.
Iaa
3l
1.5.2.2.1.3 Macroceldas. La macrocelda del MAX 7000 puede ser configurada
individualmente para operación combinacional o secuencial La macrocelda
consiste de tres bloques funcionales: El arreglo lógico, la matriz de selección de
término producto y el registro programable.
La lógica combinatoria es implementada en el aneglo lógico, el cual provee 5
términos producto por macrocelda. La matriz de selección de términos producto
localiza esos términos que se usarán como entradas lógicas primarias para
impfementar funciones combinatorias o como entradas secundarias para las
funciones de clear, preset, clock y clock enable en los registros de la macrocelda.
l-AB Locel A¡Tay
Parellol LogicExpandels(ftom oth€rmacrocelb)
3E Slgnals 16 Expanderfrom PIA ProduciT€m3
Global GlobalClear Cbc*
WlcFtrlíricl
Sharsd LogbExpsndera
F|GURA 16. Macrocelda para los dispositivos EPM7032, EPM 7064 y EPM Z096
32
LAg locsl AnayGlobal GlobalCbar 'ClodG
l?oílr¡o p|nParallsl Loglc
Expander3(from othermacrooells)
Fast lwUlSot6cf
fuoÚatrürptlaRs0ktc¡
RegisbrBypa!s
36 Signale 16 ExPandarfiom PIA PtodudTems
FIGURA 17. Macrocelda de los dispositivos MAX 7000E y MAX 7000S
Se disponen de dos tipos de expansores de término producto para suplementar
los recursos lóg¡cos de la macrocelda:
1. Expansor compartible, el cual está formado por los términos producto invertidos
que están real¡mentados en el arreglo lógico.
2. Expansor paralelo, los cuales son térm¡nos producto ped¡dos de macroceldas
adyacentes.
Para funciones con registros, cada flipflop de la macrocelda puede
individualmente programado para implementar operación D, T, JK o SR
control de reloj programable.
b l¡oConüolElocl(
Shared LogicExpandors
33
1.5.2.2.1.4 Arreglo de interconexion programable ( PIA ). La lógica entre los
LAB's está enrutada a través de la lógica de interconexión programable ( PIA ) .
Este bus global es un camino programable que conecta una señal fuente a algún
destino en el dispositivo. Todas las entradas dedicadas, pines llO , y salidas de la
macrocelda alimentan la PIA , la cual hace que las señales estén disponibles a
través de todo el dispositivo. Solo las señales requeridas por cada LAB son
enrutadas desde la PIA hacia el LAB.
1.5.2.2.1.5 Bloques de control de l/O. Los bloques de control de l/O permiten
que cada pin l/O sea individualmente configurado como entrada, salida o en
operación bidireccional. Todos los pines l/O tienen un buffer tri-state que es
individualmente controlado por una señal global de output enable o directamente
conectados a WC O GND .
1.5.2.2.2 MAX 9000. Es un PLD de alta densidad basado en los términos
producto con dispositivos desde las 320 a 560 macroceldas, con salidas dual y
registros l/O. Están basados en tecnologfa EEPROM.
1.5.2.2.3 FLEX 8000. Son PLD's con características como gran cantidad de
registros, alta densidad, baja potencia y reconfigurables en circuito. Combinan los
beneficios característicos de las FPGA'S con el alto desanollo, los predecibles
retardos en las interconexiones y facilidad de usar de un EPLD. Se encuentran
basados en tecnología de 0.6 micrones .
34
La familia FLEX 8000 es ideal para aplicaciones que requieren un gran número de
registro y pines | / O. Los dispositivos varlan en una densidad de 2500 hasta
50000 compuertas usables , eon 282 hasta 4752 registros y de 78 a 360 pines | /
O. Los dispositivos FLEX 8000 basados en tecnología SRAM requieren bajo
poder en standby y son reconfigurables en circuito, haciéndolos ideales para
aplicaciones como tarjetas en PC , instrumentos alimentados por baterías , y
tarjetas multipropósito para telecomunicaciones.
1.5.2.2.4 MAX 5000. Son EPLD's de bajo costo que solucionan tareas de diseño
con integrados que varlan desde los 20 pines hasta los 100 pines. Proporcionan
soluciones para diseños que requieren un alto nivel de lógica combinatoria, con
densidades que varlan desde las 300 hasta las 3800 compuertas usables.
1.5.2.2.5 Flex logic. Es una familia de EPLD's de mediana densidad y alta
velocidad. Es un innovado acople de poderosa arquitectura con dos tecnologías
líderes ( SRAM y FLASH ) que la hace la familia mas común.
1.5.2.2.6 Clasica. Son los EPLD's estándar de la industria que ofrecen
soluciones a alta velocidad e integración lógica de baja potencia. Tienen
frecuencias en los contadores internos tan altas como 115 MHz . Posee entre I y
48 macroceldas programables y entre 150 y 900 compuertas usables. Se
encuentran en pastillas de 20 a 68 pines.
35
Está compuesta de aneglos simples de lógica interconectada globalmente, la
familia clásica estándar de la industria ofrece soluciones a bajo costo para
aplicaciones de baja densidad. Esta familia ofrece un modo único (Zero-Power )
el cual permite que el dispositivo consuma solo microamperios de coniente en
standby, haciéndolo ideal para aplicaciones de bajo poder. Su construcción está
basada en tecnología EPROM.
2. LENGUAJES DE DESCRIPCION HARDWARE
Debido a la necesidad de predecir la conecta operación de circuitos complejos,
cuya descripción es bastante complicada, se creó un,lenguaje estructurado, para
lograr descripciones eficientes y concisas del diseño y funcionamiento de tales
sistemas.
En un lenguaje de descripción hardware se hace una explicación de lo que el
sistema hace en términos de secuenciación de operaciones y del flujo de
información desde un punto a otro en el sistema.
Las ventajas que trae realizar diseños con los lenguajes de descripción hardware
son:
o Posibilidad de diseñar en niveles altos de abstracción.
. Reducir la complejidad.
o División entre flujo y control de datos.
o Independencia del hardware.
o Estructurar las técnicas de diseño.
. Analizar los tiempos y la concunencia.
r Capturar las especificaciones.
37
o Verificar y simular.
2.1 VHDL
VHDL es un acrónimo para Lenguaje de Descripción Hardware VHSIG (Circuitos
Integrados de Muy Alta Velocidad). Es un lenguaje de descripción hardware que
puede ser usado para modelar un sistema digital en muchos niveles de
abstracción, variando desde el nivel de algoritmo al nivel de compuerta. La
complejidad del sistema digital a ser modelado puede variar desde una simple
compuerta a un sistema electrónico digital complejo y puede ser descrito
jerárquicamente, incluyendo el modelamiento de la temporización en la misma
descripción.
Este lenguaje permite expresar el comportamiento concurente o secuencial de un
sistema digital, con o sin temporización, también permite modelar el sistema
como una interconexión de componentes.
Un archivo de diseño en VHDL puede ser creado utilizando el editor de texto del
MAX+PLUS ll, donde hay la necesidad de llamar una librerla que contiene las
estructuras que permiten la compilación de archivo de este tipo, ó con cualquier
editor de texto.
38
2.1.1 Historia. El proceso de desanollo del VHDL comienza formalmente en junio
de 1981 con un grupo de trabajo patrocinado por el programa VHSIC del gobiemo
de los Estados Unidos, cuyas metas eran:
. Avanzar en las áreas de diseño, proceso y tecnologla de producción.
Proveer medios para que la modificación de sistemas operacionales
avanzados se hiciera de manera rápida ( inserción de nuevos componentes
microelectrónicos ).
Mejorar la comunicación entre y dentro de las compañías para perfeccionar los
procesos de desanollo.
La conclusión de este grupo de trabajo fue que se debía establecer una meta
para desanollar un nuevo lenguaje de descripción hardware estándar en la
industria, independiente de la tecnología y que llenara las necesidades de los
miembros de la comunidad microelectrónica.
En julio de 1983 el grupo de Intermetrics, lBM, y Texas Instruments ganó el
contrato para desanollar el nuevo lenguaje y para implementar el software
necesario para usarlo. La versión final del lenguaje desanollado, conocido como
VHDL versión 7.2 , estuvo disponible en agosto de 1985, y en febrero de 1987
estuvo disponible el conjunto de henamientas revisado completamente.
39
En marzo de 1986 la IEEE crea un grupo de análisis con el fin de realizar la
estandarización del VHDL y surge el IEEE - 1076 el cual fue aprobado en
diciembre de 1987. Como un estándar de la IEEE, VHDL debe ser sometido a
revisión cada 5 años para asegurar se relevancia en la industria. La primera de
tales revisiones se completó en septiembre de 1993.
2.1.2 Ventajas. VHDL es un lenguaje jerárquico, esto es, un sistema digital
puede ser modelado como un conjunto de mmponentes interconectados; y a su
vez cada @mponente puede modelarse como un conjunto de subcomponentes
interconectados.
Soporta modelos de temporización sincrónica y asincrónica.
Usando este lenguaje se pueden realizar varias técnicas de modelamiento
digital tales como descripción de máquinas de estado finitas, descripciones de
algoritmos y ecuaciones Booleanas.
Este lenguaje soporta tres estilos de descripciones básicas diferentes:
estructural, de flujo de datos y de comportamiento. Un diseño también puede
ser expresado con cualquier combinación de estos tres estilos descriptivos.
Este lenguaje no tiene limitaciones para el tamaño de los diseños.
Soporta un amplio rango de niveles de abstracción, variando desde
descripciones de comportamiento abstracto hasta descripciones muy precisas
al nivel de compuerta.
40
o El lenguaje tiene elementos que facilitan el modelamiento, por ejemplo,
componentes, funciones procedimiento y paquetes.
2.1.3 Características de modelamiento del lenguaje.
2.1.3.1 Terminologla. VHDL es un lenguaje de descripción hardware que puede
ser usado para modelar un sistema digital. Una abstracción hardware de este
sistema es llamada una entidad. Para describir una entidad, VHDL proporciona 5
diferentes tipos de construcciones primarias llamadas unidades de diseño. Ellas
son:
1. Declaración de entidad.
2. Cuerpo de la arquitectura.
3. Declaración de configuración.
4. Declaración de paquete.
5. Cuerpo del paquete.
Una entidad se modela usando una declaración de entldad y al menos un cuerpo
de arquitectura. La declaración de entidad describe la mirada extema de la
entidad, por ejemplo, los nombres de las señales de entrada y salida. El cuerpo de
arquitectura contiene la descripción interna de la entidad, por ejemplo, un conjunto
de componentes interconectados que representan la estructura de la entidad, o un
41
conjunto de sentencias secuenciales o concunentes que representan su
comportamiento.
La declaración de configuración es usada para crear una configuración para una
entidad. Esta declaración relaciona con la entidad un cuerpo de arquitectura de
los muchos que pueden estar asociados con ella. También puede especificar la
relación con otras entidades de los componentes usados en el cuerpo de
arquitectura seleccionado. Una entidad puede tener cualquier cantidad de
configu raciones d iferentes.
Una declaración de paquete enciena un conjunto de declaraciones relacionadas
tales como declaraciones de tipo, declaraciones de subtipo y declaraciones de
subprograma que pueden ser compartidas por dos o mas unidades de diseño. Un
cuerpo de paquete contiene las definiciones de subprogramas declarados en la
declaración de paquete.
2.1.3.2 Elementos básicos del lenguaje. Se describen los elementos básicos del
lenguaje. Esto incluye datos objeto los cuales almacenan valores de un tipo dado,
literales que representan valores constantes, y operadores que operan sobre los
datos objeto. Cada dato objeto pertenece a un tipo específico.
2.1.3.2.1 ldentificadores. Un identificador en VHDL esta compuesto de una
secuencia de uno o más caracteres. Un caracter legal es una letra mayúscula
--
42
(4...2), o una letra minúscula (a...2), o un dígito (0...9) o el caracter de subrayado
O. El primer caracter en un identificador debe ser una letra y el último no puede
ser una raya. Las letras mayúsculas y minúsculas son consideradas iguales
cuando son usadas en un identificador. Tampoco, dos caracteres de subrayado
pueden aparecer consecutivamente. Algunos ejemplos de identificadores son:
DRIVE_BUSSET-CK-HIGH
SelecfSignalcoNsTS2_59
RAM_addresr2d2
Los comentarios en una descripción deben ser precedidos por dos guiones
consecutivos C-); el comentario se extiende hasta el final de la línea. Los
comentarios pueden aparecer en cualquier lugar dentro de una descripción.
-Esfe es un comentario, y termina en el final de esta línea-Para continuar un comentario sobre una segunda línea,--se debe comenzar como si fuera un comentario independienteentity UART is end; -Esfe comentario empieza después de la
* declaración de entidad
2.1.3.2.1 Datos Objetos. Un dato objeto retiene un valor de un tipo especifico.
Es creado para darle significado a una declaración. Una declaración de objeto es
usada para declarar un objeto, su tipo, su clase, y asignar opcionalmente un
valor. Un ejemplo es:
variable COUNT: INTEGER;
43
Esto resulta en la creación de un dato objeto llamado COUNT el cual puede
retener valores enteros. El objeto COUNT es también declarado para ser de tipo
variable. Todo dato objeto pertenece a una de las tres clases siguientes:
. CONSTANTE: Un objeto de clase constante puede retener un valor único de un
tipo dado. Este valor es asignado al objeto antes de que empiece Ia simulación
y no puede ser cambiado durante el curso de la misma.
o VARIABLE: Un objeto de clase variable puede también retener un solo valor de
un tipo dado. Sin embargo, en este caso, se le pueden asignar distintos valores
al objeto en tiempos diferentes usando una declaración de asignación de
variable.
. SEÑAL: Un objeto perteneciente a la clase señal tiene una historia pasada de
valores, un valor actual, y un conjunto de valores futuros. Los valores futuros
pueden ser asignados a una señal objeto usando una declaración de
asignación de señal.
Los objetos señales pueden ser considerados como cables en un circuito,
mientras objetos variables y constantes son análogos a su contraparte en un
lenguaje de programación de alto nivel como C o Pascal. Los objetos señales son
típicamente usados para modelar cables y flip-flops mientras que objetos variables
y constantes son usados para modelar el comportamiento del circuito.
44
2.1.3.2.3 Declaración de Constantes. Ejemplos:
constant RISE_TIME: TIME := 10 ns;constant BUS_WIDTH: INTEGER := 8;
La primera sentencia declara el objeto RISE_TIME que puede retener un valor de
tipo TIME (un tipo predefinido en el lenguaje) y el valor asignado a el objeto en el
arranque de la simulación es 10 ns. La segunda sentencia de constante declara
una constante BUS_WIDTH de tipo INTEGER con un valor de 8.
2.1.3.2.4 Declaración de Variables. Ejemplos de declaración de variables son:
variable CIRL_SIAIUS; BIT_VECTOR (10 to 0);variable SUM_INTEGER range 0 to 100 := 10;variable FOU N D, DONE.' BOOLEAN ;
La primera declaración especifica una variable objeto CTRL_STATUS como un
arreglo de 11 elementos, con cada elemento del aneglo de tipo BlT. En la
segunda declaración, se asignó un valor inicial a la variable SUM. Cuando
empieza la simulación, SUM deberá tener un valor inicial de 10. Si el valor inicial
no se especifica para una variable objeto, se usa un valor por defecto como valor
inicial. Este valor por defecto es T'LEFT donde T es de tipo objeto y LEFT es un
atributo predefinido de un tipo que da el primer valor en el conjunto de valores
perteneciente al tipo. En la tercera declaración, el valor que se asigna a FOUND y
DONE en el inicio de la simulación es FALSE (FALSE es el primer valor del tipo
45
predefinido Boolean). El valor inicial de todos los elementos del aneglo de
CTRL STATUS es'0'.
2.1.3.2.5 Declaracion de Señales.
signal CLOCK: BIT;signal DATA_BUS: BIT_VECTOR (0 to 7);signal GATE_DELAY: TIME :=10 ns;signal VCC : BIT :='1';
La interpretación de estas declaraciones de señal es muy similar a las
declaraciones de variable. La primera declaración de señal declara el objeto señal
CLOCK de tipo BIT y da un valor inicial de '0'( siendo '0' el primer valor de tipo
BIT). La tercera declaración de señal declara una señal objeto GATE_DELAY de
tipo TIME que tiene un valor inicial de 10 ns. La última señal será VCC de tipo BIT
y con un valor de '1'.
2.1.3.3 Declaración de Entidad. La declaración de entidad especifica el nombre
de la entidad a ser modelada y lista el conjunto de puertos de interfaz. Los puertos
son señales a través de las cuales la entidad se comunica con otros modelos en
su ambiente extemo. Ejemplo:
Declaración de entidad para el sumador de dos bits mostrado en la figura 18.
46
CARRY
FIGURA 18. Circuito sumador de dos bits (HALF-ADDER)
entity HALF-ADDER isport (4, B: in BIT; SUM, CARRY: out BIT);
end HALF_ADDER;
La entidad llamada HALF-ADDER, tiene dos puertos de entrada, A y B (el modo in
especifica puerto de entrada), y dos puertos de salida, SUM y CARRY (el modo
out especifica puerto de salida). BIT es un tipo predefinido del lenguaje, es un tipo
de enumeración que contiene los caracteres'0'y'1'.
El siguiente es un ejemplo de una declaración de entidad para un circuito
decodificador mostrado en la figura 19.
B
=NABLE
z(o)
z(11
z(2)
z(3)
FIGUM 19. Circuito de un decodificador de2 a 4
47
entity DECODER 2*4 isport (4, B, ENABLE: in BIT; Z: out BIT_VECTOR (0 to 3));
end DECODER 2.4;
Esta entidad llamada DECODER 2*4, tiene tres puertos de entrada y cuatro
puertos de salida. BIT_VECTOR es un arreglo de tipo BIT predefinido. El rango "0
to 3" para el puerto Z especifica el tamaño del aneglo.
2.1.3.4 Cuerpo de Arquitectura. Los detalles intemos de una entidad están
especificados por un cuerpo de arquitectura usando cualquiera de Ios siguientes
estilos de modelamiento:
1. Como un conjunto de componentes interconectados ( para representar
estructura).
2. Como un conjunto de sentencias de asignación concutrentes ( para representar
flujo de datos ).
3. Como un conjunto de sentencias de asignación secuenciales (para representar
comportamiento).
4. Cualquier combinación de los tres anteriores.
2.1.3.4.1 Estilo de Modelamiento Estructural. En este estilo, una entidad se
describe como un conjunto de componentes interconectados.
48
Una representación estructural para la entidad del decodificador 2*4, mostrado en
la figura 19, es la siguiente:
architecture DEC_SIR of DECODER 2*4 iscomponent INV
port (A: in BIT;Z: out BIT);end component;component NAND3
port (4, B, C: in BIT; Z: out BIT);end component;signal ABAR, BBAR: BIT;
beginlO: INV port map (A, ABAR);11: INV port map (8, ABAR);NO;NAND3 port map (ABAR, BBAR, ENABLE, Z(0));Nl:NAND3 port map (ABAR, B, ENABLE, Z(1));N2:NAND3 port map (A, BBAR, ENABLE, Z(2));NO:NAND3 port map (A, B, ENABLE, Z(3));
end DEC_SIR;
En donde:
archit*ture DEC SIR of DECODER 2*4 is
lndica que el nombre del cuerpo de arquitectura es DEC_STR y está asociado con
la decfaración de entidad DECODER 2*4; por lo tanto, hereda la lista de puertos
de interfaz de esta declaración de entidad.
component INVport (A: in BIT; Z: out BIT);
end component;component NAND3
port (4, B, C: in BIT;Z: out BIT);end component;
49
En este grupo de sentencias se declaran los dos componentes (lNV y NAND3)
utilizados.
signal ABAR, BBAR: BIT;
El cuerpo de arquitectura contiene una declaración para las dos señales, ABAR y
BBAR de tipo BlT. Estas señales, que representan cables, son usadas para
conectar los diferentes componentes que forman el decodificador. El alcance de
estas señales está restringido al cuerpo de arquitectura, y por lo tanto, estas
señales no son visibles fuera de é1, a diferencia de los puertos de una declaración
de entidad que están disponibles para cualquier cuerpo de arquitectura asociado
con la declaración de entidad.
beginlO: INV port map (A, ABAR);11: INV port map (8, ABAR);NO:NAND3 port map (ABAR, BBAR, ENABLE, Z(0));N1:NAND3 port map (ABAR, B, ENABLE, Z(1));
N2:NAND3 port map (A, BBAR, ENABLE, Z(2));NS;NAND3 port map (A, B, ENABLE, Z(3));
end DEC_SIR,'
Con las sentencias de instanciación de componentes anteriores se describe una
interconexión de componentes (vistos como cajas negras) sin implicar cualquier
comportamiento de sus componentes, ni de la entidad que ellos colectivamente
representan. Las señales A, B y ENABLE, son los puertos de entrada declarados
en la declaración de entidad DECODER 2*4. En la instanciación de componente
Unlüarsidtd autónoma de Occ¡drnta
sEuclot{ B ELloItcA
50
etiquetada N3, el puerto A está conectado al puerto de entrada A del componente
NAND3, el puerto B está conectado al puerto de entrada B del componente
NAND3, el puerto ENABLE está conectado al puerto de entrada C, y el puerto de
salida Z del componente NAND3 está conectado al puerto Z(3) de la entidad
DECODER 2*4. El comportamiento de los componentes NAND3 e INV no es
aparente, tampoco lo es el comportamiento de la entidad del decodificador que el
modelo estructural representa.
Declaración Generate. La declaración Generate consiste de un esquema de
generación y un conjunto de declaraciones concunentes. La forma general de
una declaración Generate es:
nombre identificador: esquema de generación generated e cl a ra cio n e s co n c u ne nte s
end generate identificador ;
Existen dos tipos de esquemas de generación: El esquema if y el for. Para el
esquema if, la declaración generate especifica una creación condicional del
conjunto de las declaraciones concunentes que contenga. Mientras que para el
for se especifica una creación repetitiva.
El esquema for declara un parámetro generate y un rango discreto, definiendo tos
valores que el parámetro generate tomará.
5l
for identificador in rango discreto
El esquema if se utiliza cuando se tienen estructuras irregulares. Es decir, cuando
existen estructuras repetitivas que en ciertas partes de la arquitectura cambia su
forma. Esto se puede ver claramente en el ejemplo de un contador que consiste
de flip-flops T y compuertas AND. Donde los flip-flops internos van conectados de
la misma forma, pero los externos tienen conexiones diferentes.
FIGUM 20. Contador con flip-flops T y compuertas AND
entity Counter isport (
CLK: Bit;Carry: Bit;Dout : buffer Bit_vector (7 downto 0));
end counter;architecture Counter of Counter is
component TFFport (CLK : Bit ; T : Bit ; Q : buffer Bit) ;
end component;
component AND2port (11, 12 : Bit ; 01 : out Bit) ;end component;
signal S: Bit_vector (7 downto 0) ;signal Tied_high : Bit :='1' ;
begin
Gl : for I in 7 downto 0 generate
52
G2:ifl=TgenerateTFF_7 : TFF port map (CLK, S(l -1), Dout() ;
end generate ;
G3:ifl=0generateTFF_O : TFF port map (CLK, Tied_high, Dout(l) ;S(, <- Dout(l) ;
end generate ;
G4 : if I > 0 and I < 7 generateAnd_1 : And2 port map lsl - 1), Dout(t), S(t)) ;TFF_1 : TFF port map (CLK, S(l - 1), Dout(l)) ;
end generate;end generate;
end Counter;A diferencia de las declaraciones if secuenciales, el if generate no puede tener
else o ramas elsif .
2.1.3.4.2 Estilo de Modelamiento de Flujo de Datos. En este estilo de
modelamiento, el flujo de datos a través de la entidad se expresa usando
declaración de asignación de señales. La estructura de la entidad no está
especificada expllcitamente en este estilo de modelamiento, pero puede ser
implícitamente deducida. Aquí esta un modelo de ffujo de datos para la entidad del
DECODER 2*4:
architecture DEC_DATFLOW of DECODER 2*4 issignal ABAR, BBAR: BIT;
beginZ(3) <= not (A and B and ENABLE); -fnse 1
Z(0) <- not (ABAR and BBAR and ENABLE); -fmse 2BBAR <= not Bi -fiiase 3Z(3) <- not (A and BBAR and ENABLE); -frcse 4
53
ABAR <= not A;Z(1) <= not (ABAR and B and ENABLE);
end DEC_DATAFLOW;
-frase 5-fnase 6
El cuerpo de arquitectura consiste en una declaración de señal y seis
declaraciones asignadas de señales concurrentes. La declaración de señal
declara las señales ABAR y BBAR para ser usadas localmente dentro de la
cuerpo de arquitectura. En cada declaración de asignación de señal, la cláusula
after no fue usada para especificar retardo. En tales casos, se asume un retardo
por defecto de 0 ns. Este retardo es también conocido como un retardo delta, y
representa un retardo infinitesimalmente pequeño. Este pequeño retardo
corresponde a un retardo cero con respecto al tiempo de simulación y no a un
tiempo de simulación real.
La cláusula after puede ser usada para generar una señal de reloj como se
muestra en la siguiente declaración de asignación de señales:
CLK <= not CLK after 10 ns;
Esta declaración crea una forma de onda periódica sobre la señal CLK con un
periodo de 20 ns.
54
at10 Z0 30 40 S0 0O ZO ns
FIGURA 21. Forma de onda de reloj con periodo constante
2.1.3.4.3 Estilo de Modelamiento de Comportamiento. En contraste con los
estilos de modelamiento descritos anteriormente, el estilo de modelamiento de
comportamiento especifica el comportamiento de una entidad como un conjunto
de declaraciones que son ejecutadas secuencialmente en el orden especificado.
Este conjunto de declaraciones secuenciales, que son especificadas en el interior
de la declaración de un proceso, no especifican explícitamente la estructura de la
entidad pero especifican meramente su funcionalidad. Una declaración de
proceso es una declaración concurrente que puede aparecer dentro de un cuerpo
de arquitectura.
2.1.3.4.3.1 Declaracion de entidad. Una declaración de entidad describe la
interfaz interna de la entidad y la muestra como una caja negra. Aqul se especiftca
el nombre de la entidad, los nombres de los puertos de interfaz, sus modos y el
tipo de puerto.
entity Nombre De La Entidad isport ( nombres de /os puertos : tipo de puerto );
end nomb¡e de la entidad ;
55
cada puerto de interfaz puede tener alguno de los siguientes modos:
1. lN : El valor del puerto de entrada solo puede ser leído en el modelo de la
entidad
2. OUT : El valor del puerto de salida solo puede ser actualizado dentro del
modelo de la entidad; el no puede ser lefdo
3. INOUT : El valor de un puerto bidireccional puede ser leldo y actualizado dentro
del modelo de la entidad.
4. BUFFER : El valor de un puerto buffer puede ser leldo y actualizado dentro del
modelo de la entidad. Sin embargo, difiere del modo INOUT en que no puede
tener más de una fuente y la clase de señal que le puede ser conectada puede
ser de otro puerto buffer o una señal con al menos una fuente.
2.1.3.4.3.2 Cuerpo de arquitectura. Un cuerpo de arquitectura describe la vista
interna de una entidad. También describe la funcionalidad o la estructura de la
entidad. La sintaxis de un cuerpo de arquitectura es:
architecture nombre de la arquitectura of nombrc de la entidad isbegin
d e cl a ra ci o n e s co n cu ne nte s ;end nombre de la arquitectura;
Las declaraciones concurrentes describen la composición intema de una entidad.
Todas las declaraciones son ejecutadas en paralelo y por lo tanto su orden textual
de aparición dentro del cuerpo de arquitectura no tiene impacto sobre el
comportamiento implicado.
56
2.1.3.4.3.3 Declaracion de proceso. Una declaración de proceso contiene las
sentencias secuenciales que describen la funcionalidad de una porción de una
entidad.
I etiqueta del proceso: ] process [ ( lista sensitiva ) ]begin
declaraciones secuencialesend process [etiqueta del proceso ];
La lista sensitiva es un conjunto de señales las cuales cuando un evento ocure
sobre alguna de ellas, hacen que se ejecuten las sentencias secuenciales que se
encuentran dentro del proceso en el orden en que aparecen. El proceso se
suspende después de ejecutar la última declaración y espera hasta que otro
evento ocurra sobre una de las señales de la lista.
2.1.3.4.3.4 Declaración de asignación de variables. Las variables pueden ser
declaradas y usadas dentro de una declaración de proceso. Para asignarle un
valor a una variable se hace de la siguiente forma:
variable-object := expresion ;
Las variables son creadas al tiempo de la elaboración y retienen sus valores
durante toda la simulación.
57
process ( A )variable EYENIS_ON_A : INTEGER := 0 ;
beginEYENIS_ ON_A:= EYENIS_ ON_A + 1 ;
end process;
La variable EVENTS_ON_A empieza inicializada en cero (0), cuando algún evento
ocurre sobre la señal A, la variable es incrementada en uno (1). Al finalizar la
simulación la variable de eventos en A contendrá el número de eventos que
ocunieron sobre la señal A.
2.1.3.4.3.5 Declaración de asignación de señales. La forma más simple de hacer
asignación de señales es:
signahobj*t 1= expresion I after delay-value ] ;
Una declaración de asignación de señal puede aparecer dentro o fuera de un
proceso. Cuando es ejecutada, el valor de la expresión es computado y su valor
es programado para ser asignado a la señal después de un retardo específico. Si
no se especifica la cláusula after el retardo es asumido por defecto. Algunos
ejemplos de declaración asignada de señal son:
COUNTER <= COUNTER + '0010';PAR <- PAR xor DIN after 12 ns;
58
Cuando se hace asignación de señales existen tres tipos de retardos, el delta, el
de transporte, y el inercial. El retardo delta modela el hardware donde se necesita
una mínima cantidad de tiempo para que un cambio ocurra. Este tipo es usado
por defecto cuando no se especifica el retardo en la asignación de señal.
El retardo inercial representa el tiempo durante el cual un valor de entrada debe
ser estable antes de que el valor sea propagado a la salida. Además el valor
aparece a la salida después del retardo especificado. Si la entrada no es estable
durante eltiempo especificado, no habrá cambio en la salida.
Z <= A after 10 ns;
A fr Z 5 I 10 252830 45 48
--- z
F|GURA 22. Gráfic.a de retardo inercial
El retardo de transporte representa retardos de propagación puros, es decir,
cualquier cambio en una señal, no importa que tan pequeña sea, es propagado a
la salida después del retardo especificado.
59
A rr L 5 810 252830 4518
-_- z r-rr-r r-l l-ll l_l | |
15 1820 35ffi40
FIGURA 23. Gráfica de retardo de transporte
2.1.3.4.3.6 Drivers de señal. Toda asignación de señal en un proceso crea un
driver para esa señal. Este driver mantiene su valor actual y todos sus futuros
valores como una secuencia de una o mas transacciones, donde cada transacción
identifica el valor con el que aparecerá la señal y el tiempo en el cual lo hará.
Z <= transport A after 10 ns;
processbegin
resef <= 3 after 5 ns, 21 after 10 ns, 14 after ns;end process;
Todas las transacciones en un driver se ordenan en el orden de incremento del
tiempo. Un driver contiene al menos una transacción la cual puede ser el valor
inicial de la señal. Si una señal se encuentra dentro de un proceso solo puede
tener un driver, si hay más de uno las transacciones de la segunda asignación de
señal modifican las transacciones que están presentes en el driver dependiendo
de si se usa el modelo de retardo inercial o de transporte.
Univ¡lsirlad Autónoma de (hgoontl
stuct0at 8 Brt0f tüA
60
2.1.3.4.3.7 Declaración WAIT. Un proceso puede ser suspendido de tres formas
básicas diferentes.
wait on lista sensitiva;wait until exprcsión Booleana;waitfor exprcsión de tiempo;
Algunos ejemplos son:
wait on A, B, C;
La ejecución de esta declaración causa que el proceso se suspenda y espera a
que un evento ocurra sobre alguna de las señales. Una vez que esto pasa el
proceso continua con la ejecución de la próxima declaración.
waituntil(A=B);
El proceso se suspenderá hasta que la condición especifica se vuelva verdadera.
wait for 10 ns;
Cuando se ejecuta esta declaración en un tiempo t, el proceso se suspende por
10 ns, y cuando el tiempo de la simulación avanza a t+10 ns el proceso continua
con la siguiente sentencia.
2.1.3.4.3.8 Declaración lF. Una sentencia if selecciona una secuencia de
declaraciones para ejecución basada en el valor de una condición. La condición
puede ser alguna expresión que evalúa a un valor Booleano.
6l
if expresion booleana thend e cl a ra ciones secue n ci al e s
I elsif exp¡esion booleana thendeclaraciones secue nciales l
I elsedeclaraciones secue nciales lend if;
La sentencia if es ejecutada por el chequeo de cada condición secuencialmente
hasta que la verdadera sea encontrada. Después el conjunto de declaraciones
secuenciales asociadas con esa condición serán ejecutadas. La declaración if
puede o no tener cláusulas elsif y una cláusula opcional else. Aqul están algunos
ejemplos.
if SUM <= 100 thenSUM := SUM + 10i
end if;
if CTRL ='1'thenif CTRL2 ='0'then
MUX_OUT <= "0010"'else
MUX_OUT <= "0001";end if;
elseif CTRL2 ='0'then
MUX_OUT <= "1000";else
MUX_OUT <= "0100";end if;
end if;
62
2.1.3.4.3.9 Declaración CASE. El formato para una declaración case es:
case exprcsion iswhen opción => declaraciones secuencialeswhen opción => declanciones secuencialesI when others => declaraciones secuencailes ]
end case;
La declaración case selecciona una de las ramas para la ejecución basada en el
valor de la expresión. Este valor debe ser de tipo discreto o de tipo de aneglo de
una dimensión. Las opciones pueden ser expresadas como valores simples, como
un rango de valores, usando | ( bana vertical: representa una 'o/' ), o usando la
cláusula others. Todos los posibles valores de la expresión deben ser cubiertos
en la declaración. La cláusula others puede ser usada como una opción para
cubrir los valores innecesarios y debe ser la última rama de la declaración.
PMUX: process (A, B, C, D, CTRL)variable TEMP: BIT;
begincase CIRI ,b
when u00" => TEMP := A;
when "07'=> TEMP := B;when "70'=) TEMP := C;when "7 7 " => TEMP := D;
end case,'
end MUX_BEHAVIOR;
2.1.3.4.3.10 Declaración LOOP. La declaración loop es usada para iterar a
través de un conjunto de declaraciones secuenciales.
63
I nombre del lazo : ] esquema de iteración loopd e cl a ra ciones secue n ci a le s
end loop I nombre del lazo ];
Hay tres tipos de esquemas de iteración. El primero es el esquema de iteración
for que tiene la forma:
for identificador in rango
Ejemplo:
Upg HEXL is ( '0', '7', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' );
for NUM in HEXA ('9') downto HEXA ('0') loop-NUM tomañ valores en tipo hexadecimal de '9' hasta '0'Declarcciones secue ncíales
end loop;for CHAR in HEXA loop
-CHAR tomará valores en tipo hexadecimal de '0' hasta 'F'
end loop;
Cuando las señales NUM y CHAR tomen algún valor de los especificados en el
rango, se ejecutarán las declaraciones secuenciales que se encuentran dentro del
lazo.
La segunda forma de iteración es el esquema while:
while expresion booleana
Un ejemplo de un esquema de iteración while es
J:=0;SUM := 10;
64
WH_LOOP: while J < 20 loopSUM := SUM * 2;J:=J+3;
end loop;
Las declaraciones dentro del cuerpo del lazo son ejecutadas secuencial y
repetidamente tantas veces como la condición, J < 20, sea verdadera. De lo
contrario la ejecución continua con la sentencia siguiente a la declaración del lazo.
La tercera y última forma de iteración es una donde no se especifica un esquema.
Aqul todas las declaraciones en el cuerpo del lazo son ejecutadas repetidamente
hasta que alguna acción lo haga salir del lazo. Estas acciones pueden ser
causadas por una declaración exit, next, o return. Ejemplo:
SUM := 1; J := 0;L2:loop
J:=J+21;SUM := SUM * 10;exit when SUM > 100:
end loop L2;
En este ejemplo la declaración exit causa la ejecución de un salto fuera del lazo
L2 cuando la SUM se vuelva más grande.
2.1.3.4.3.11 Declaración EXIT. La sentencia Exit es una declaración secuencial
que puede ser usada solo dentro de un lazo. Causa la ejecución de un salto fuera
del lazo en que se encuentra o del lazo que especifica la etiqueta. La sintaxis es:
65
exit I etíqueta ] [ when condición ]
Si se usa la cláusula when solo se ejecutará el salto cuando la condición se
cumpla.
Todas estas declaraciones, que pueden ser usadas en el estilo de modelamiento
de comportamiento, deben seguir un patrón básico cuando se van a utilizar
dentro de un cuerpo de arquitectura, por ejemplo, considere el siguiente modelo
para la entidad del DECODER 2.4.
architecture DEC_SECUENTIAL of DECODER 2*4 isbegin
process (A, B, ENABLE)variable ABAR, BBAR: BIT;
beginABAR := not A;BBAR:= not B;if (ENABLE ='1') then
Z(3) t- not (A and B);z(0) <= not (ABAR and BBAR);z(2) <= not (A and BBAR);z(1) <= not (ABAR and B);
elseZ<=ul111";
end if;end process;
end;
66
Una declaración de proceso tiene una parte declarativa (entre las palabras claves
process y begin), y una parte de declaración (entre las palabras claves begln y
end process). Las sentencias que aparecen dentro de la parte de la declaración
son ejecutadas secuencialmente.
process (4, B, ENABLE)
La lista de señales especificada dentro del paréntesis después de la palabra clave
process constituyen una lista sensitiva y la declaración del proceso es invocada
siempre que allí haya evento sobre cualquier señal en la lista. En el ejemplo
previo, cuando un evento ocure sobre las señales A, B o ENABLE, las
declaraciones que apareoen dentro del proceso de declaración son ejecutadas
secuencialmente.
variable ABAR, BBAR: BIT;
La declaración de variable (comienza con la palabra clave variable) declara dos
variables llamadas ABAR y BBAR. Una variable es diferente de una señal en que
ella siempre es asignada a un valor instantáneamente y el operador usado es el
símbolo compuesto .'= .En contraste con una señal que es asignada a un valor
siempre después de un cierto retardo (especificado por el usuario o el retardo
delta por defecto), y el operador usado para asignar un valor a la señal es el
símbolo compuesto <=. También, las variables pueden ser declaradas dentro de
67
un proceso y su €mpo de aplicación es limitado a ese proceso (las variables
pueden ser también declaradas dentro de un subprograma).
beginABAR := not A;BBAR:= not B;
if (ENABLE = '1') thenZ(3) <- not (A and B);Z(0) <- not (ABAR and BBAR);z(2) <= not (A and BBAR);z(1) <= not (ABAR and B);
elseZ<="1111";
end if;
-f¡ase I-f¡ase 2-fiiase 3-frase 4
-frase 5-fiase 6-f¡ase 7
-fiase 8
En el anterior cuerpo de arquitectura, si un evento ocune sobre cualquier señal, A,
B, o ENABLE, la frase 1 la cual es una declaración de asignación de variable, es
ejecutada, luego frase 2, y así sucesivamente. La ejecución de la tercera frase, en
la declaración if, permite saltar a la rama apropiada basándose en el valor de la
señal, ENABLE. Si el valorde ENABLE es'1', las próximas cuatro declaraciones
asignadas de señales, 4 hasta 7, son ejecutadas independientemente de si A, B,
ABAR, o BBAR cambian de valor, y la señal objetivo es programada para dar su
respectivo valor después de un retardo delta. S¡ ENABLE tiene un valor '0', un
valor de'1'es asignado a cada uno de los elementos de salida del aneglo Z.
cuando la ejecución alcanza el fin del proceso, el mismo se suspende, y espera
que otro evento ocura sobre una señal en una lista sensitiva.
68
Es posible usar las declaraciones case o loop dentro de un proceso. La
semántica y estructura de estas declaraciones son muy similares a las de un
lenguaje de alto nivel de programación como C o Pascal.
Una declaración expllcita wait puede también ser usada para suspender un
proceso, para esperar una cierta cantidad de tiempo, hasta que una condición se
cumpla, o hasta que un evento ocurra sobre una o más señales. Aquí hay un
ejemplo sobre la declaración de un proceso que genera un reloj con diferente
periodo de alto y bajo.
proGessbegin
CLK <= '0';wait for 20 ns;CLK <='1';wait for 12 ns;
end process;
.5 10 2025 3540 50 55
FIGURA 24. Forma de onda de reloj con diferente período alto y bajo
Este proceso no tiene una lista sensitiva ya que una expllcita declaración wait
está presente dentro del proceso. Es importante recordar que un proceso nunca
termina. Siempre se estará ejecutando o estará en un estado suspendido. Todos
los procesos son ejecutados una vez durante la fase de inicialización de
69
simulación hasta que ellos logran suspenderse. Por lo tanto, un proceso con una
lista no sensitiva y sin una declaración explícita wait nunca será suspendido por si
mismo.
2.1.3.4.4 Estilo de modelamiento mezclado. Es posible mezclar los tres estilos de
modelamiento que nosotros hemos visto en un solo cuerpo de arquitectura. Eso
es, dentro de un cuerpo de arquitectura, nosotros podemos usar declaración de
instanciación de componentes (que representa estructura), declaraciones de
asignación de señales concurrentes (que representa flujo de datos), y
declaraciones de proceso (que representa comportamiento). A continuación un
ejemplo de un estilo de modelamiento mezclado para un full-adder.
entity FULL_ADDER isport (A, B CIN: in BIT; SUM, COUT: out BIT);
end FULL_ADDER;
architecture FA_MIXED of FULL_ADDER is
component XOR2port (A, B: in BIT;Z: out BIT);
end component;
signal 31: BIT;begin
Xl: XOR2 port map (A, B, S1); -+structu¡aprocess (A, B, CIN) -compoñamiento
variable T1, 72, T3: BIT;begin
T1 := A and B;T2:= B and CIN;T3 := A and CIN;COUT <=71 orT2orT3;
endprocess,'SUM <= Sl xor CIN; -flujo de datos
end FA_MIXED;
Unlr¡r¡klrd rul&toot¿ dr Occtdrntlsfcc,on &SLtottcA
70
AB
ctN
FIGURA 25. Full-Adder de un bit
El full-adder representado esta usando una declaración de instanciación de
componente, una declaración de proceso y una declaración de asignación de
señal. Todas estas declaraciones son concurrentes, y por !o tanto, el orden de
aparición dentro del cuerpo de arquitectura no es importante. Note que en una
declaración de proceso es ella misma es una declaración concurrente; sin
embargo, las sentencias dentro de una declaración de proceso son siempre
ejecutadas secuencialmente. 51 es una señal localmente declarada dentro del
cuerpo de arquitectura y es usada para pasar el valor de la salida del componente
X1 a la expresión para la señal SUM.
2.1.3.4.5 Declaración de configuración. Una declaración de configuración es
usada para seleccionar uno de los muchos posibles cuerpos de arquitectura que
una entidad puede tener, y para unir componentes. Una declaración de
configuración es una unidad separada de diseño y permite que la unión sea
desanollada después que el cuerpo de arquitectura sea escrito. También es
Flujo de datos
7l
posible tener más de una declaración de configuración por entidad. Considere la
siguiente declaración de configuración para la entidad FULL ADDER.
library CMOS_LIB;configuraüon FA_BINDING of FULL_ADDER is
for FA_MIXEDfor X1:XOR2
u se e ntity C M O S_L I B. XO R_G AT E ( DATA F LOIU ;end for;
end for;end FA_BINDING;
Iibrary CMOS_LI B, MY_LIB;configuration FA_BINDING of FULL_ADDER is
Esta declaración es una cláusula de contefo de librería que hace el nombre
CMOS_LIB visible dentro de la declaración de configuración. El nombre de la
configuración es FA_BINDING, y el especifica una configuración de la entidad del
FULL_ADDER.
for FA_MIXEDfor Xl:XOR2
u se entity C M O S_Ll B.XO R_c ATE ( D ATA F LOVU ;
end for;end for;
La sentencia especifica que el cuerpo de arquitectura FA_MIXED (descrito en el
estilo de modelamiento mezclado) es seleccionada para esta configuración. La
declaración (for X1: ...end for) liga la instanciación de componentes, con nombre
72
X1, a la entidad XOR-GATE y la cuerpo de arquitectura DATAFLOW, que residen
en la librerfa de diseño CMOS LlB.
No hay semántica de comportamiento o de simulación asociada con una
declaración de configuración. Simplemente especifica una unión que es usada
para construir una configuración pa'a una entidad. Estas uniones son
desanolladas durante la fase de la simulación en la que el diseño está siendo
ensamblado. Teniendo definida una configuración para la entidad, la configuración
puede luego ser simulada.
Cuando un cuerpo de arquitectura no contiene alguna instanciación de
componentes, por ejemplo, cuando se usa el estilo de flujo de datos, cada cuerpo
de arquitectura también puede seleccionarse para crear una configuración. Por
ejemplo, el cuerpo de arquitectura del DEC_DATAFLOW se puede seleccionar
para la entidad del DECODER 2*4 usando la siguiente declaración de
configuración.
configuration DEC_CONFIG of DECODER 2*4 isfor DEC_DATAFLOWend for;
end DEC_CONFIG;
DEC_CONFIG define una configuración que selecciona el cuerpo de arquitectura
DEC_DATAFLOW para la entidad DECODER 2.4.
2.1.3.4.6 Declaración de paquete. Una declaración de paquete se usa para
almacenar un conjunto de declaraciones comunes como componentes, tipos,
procesos y funciones. Estas declaraciones pueden luego se importadas dentro de
otra entidad de diseño usando una cláusula de contexto. A continuación
miraremos un ejemplo de declaración de paquete:
package EXAMPLE_PACK istype SUMMER is (MAY, JUN, JUL, AUG, SEP);component D_FLIP_FLOP
port (D, CK: in BIT; Q, QBAR; out BIT);end component;constant PIN?_DELAY: TIME := 125 ns;function lNT2BlT VEC (INT_VALUE: INTEGER)
return etÚecroa;end EXAMPLE_PACK;
El nombre del paquete declarado es EXAMPLE_PACK. El contiene declaraciones
de tipos, componentes, constantes y funciones. Nótese que el comportamiento de
la función |NT2B|T_VEC no aparece en la declaración de paquete; solo aparece
en fa función de interfaz. La definición o cuerpo de la función aparece en un
cuerpo de paquete. Si el paquete ha sido compilado dentro de una librerla de
diseño llamada DESIGN_LIB el modelo sería el siguiente:
library DESIGN_LIB;use DES/ G N _Ll B. EXA M P LE_PAC K. a I I ;entity RXis....
La cláusula de contexto library hace que el nombre de la librerla de diseño
DESIGN_LIB sea visible dentro de esta descripción. Esto es seguido por el uso de
74
la cláusula de contexto use que importa todas las declaraciones del paquete
EXAMPLE_PACK dentro de la declaración de entidad de RX.
Es también posible importar declaraciones selectivamente de una declaración de
paquete en otras unidades de diseño. Por ejemplo:
library DESIGN_LlB;use DES/ G N_Ll B. EXAM P LE_PAC K. D_F Ll P_F LOP ;use DES/ G N _L I B. EXA M P LE_P AC K. P I N 2P I N _D E LAY ;archit*ture RX STRUCTURE of RX is ...
Las dos cláusulas de contexto use hacen que la declaración de componentes
para D_FLIP_FLOP y la declaración de constante para PlN2PlN_DELAY, sean
visibles dentro del cuerpo de arquitectura.
Cuerpo de paquete. Un cuerpo de paquete es principalmente usado para
almacenar las definiciones de funciones y procedimientos que fueron declarados
en la declaración de paquete correspondiente. Por lo tanto, un cuerpo de paquete
está siempre asociado con una declaración de paquete; además, una declaración
de paquete puede tener máximo un cuerpo de paquete asociado con el. En
comparación con un cuerpo de arquitectura y una declaración de entidad donde
múltiples cuerpos de arquitectura pueden ser asociados con una sola declaración
de entidad.
Cuerpo de paquete para el paquete EXAMPLE_PACK
75
package body EXAMPLE_PACK isfuncüon I NTZBIT_VEC (l NT_VALU E : I NTEG ER)
return BIT VECTORbegin
-El compo¡tamiento de la función se descnbe aqufend |NT2B|T_VEC;
end EXAMPLE_PACK;
El nombre del cuerpo de paquete debe ser el mismo que el de la declaración de
paquete con el cual esta asociada. Es importante notar que el cuerpo de paquete
no es necesario si la correspondiente declaración de paquete no tiene
declaraciones de funciones ni de procedimiento.
2.2 ALTERA HARDWARE DESCRIPTION LANGUAGE
2.2.1 lntroducción
El lenguaje de descripción hardware de ALTERA ( AHDL) es un lenguaje modular
de alto nivel que está completamente integrado para trabajar en el sistema de
desanollo ALTERA MAX+PLUS ll Permite desanollar diseños de lógica
combinacional compleja, operaciones de grupo, máquinas de estado, tablas de
verdad y lógica parametrizada. Para crear los archivos de diseño de texto en
AHDL se puede utilizar el editor de texto del MAX+PLUS ll o cualquier editor de
texto.
76
Las declaraciones AHDL son poderosos, versátiles y fáciles de usar. Se pueden
crear proyectos jerárquicos con AHDL o mezclado con otro tipo de archivos de
diseño.
2.2.2 Estructura de un archivo de diseño. La estructura del AHDL consta de
varias secciones y declaraciones, algunas son opcionales y otras son necesarias.
2.2.2.1 Declaración TITLE . La declaración TITLE permite proveer comentarios
para el archivo de reporte generado por el compilador.
TITLE " Cont¡olador del display ";
La declaración title tiene las siguientes características:
o La declaración comienza con la palabra TITLE , seguida por un texto encenado
en comillas. La declaración termina con un punto y coma.
. La cadena de caracteres debe tener un máximo de 255 caracteres.
o Las declaración debe colocarse fuera de las otras secciones AHDL.
2.2.2.2 Declaración PARAMETERS. La declaración PAMMETERS permite
declarar uno o más parámetros que controlan la implementación de funciones
parametrizada.
PARAMETERS(
FILENAME = " myfile.mif u,
77
WIDTH,AD_WDTH = 8,NUMWORDS = 2^AD WIDTH
La declaración parameters tiene las siguientes caracterlsticas:
o Una declaración comienza con la palabra PARAMETERS , seguida por una
lista de parámetros y valores de omisión, encenados en paréntesis.
. Los parámetros están separados por comas ( , ). Los nombres de parámetros
están separados de los valores de omisión por el slmbolo igual ( = ¡.
. Los valores de los parámetros pueden consistir de una cadena de texto
encenado en comillas ( " ). Cuando el parámetro no está encenado el
compilador lo toma como una expresión aritmética.
. La declaración termina con un punto y coma ( ; ).
2.2.2.3 Declaración INCLUDE . La declaración INCLUDE permite importar texto
de un archivo "include" en el archivo corriente.
INCLUDE " Const.inc "
La declaración tiene la siguiente característica:
o La declaración include comienza con la palabra INCLUDE , seguida por el
nombre del archivo a ser incluido, encenado en comillas ( " ).
o Si no se especifica la extensión del archivo el compilador asume .inc.
. La declaración termina mn un punto y coma ( ; ).
);
78
. Se puede generar un arch¡vo "include" con CREATE DEFAULT INCLUDE FILE
del menú de archivo.
2.2.2.4 Declaración CONSTANT. La declaración CONSTANT permite sustituir
un nombre simbólico significante por un número o una expresión aritmética. El
nombre simbólico simplemente representará ese número.
CO^rSfA^rT UPPER_LIMIT = 130;COirSfA^rf BAR = 1+2D|V3+LOG 2(256);
características:
o La declaración constant comienza con la palabra GONSTANT, seguida por un
nombre simbólico, un slmbolo igual, y un numero o una expresión aritmética.
o La declaración termina con un punto y coma ( ; ).
. Una vez la constante ha sido declarada, se puede usar a través de todo el
archivo.
2.2.2.5 Declaración DEFINE. La declaración DEFINE permite definir una
función evaluada, la cual es una función matemática que retoma un valor que está
basado en argumentos opcionales.
DEFINEMAX(a,b) = (a>b) ?a:b;SUBDES'G'V( dataa[MAX(WlDTH,0)...0]: input;
datab[MAX(WlDTH,0)...0]: output; )
79
BEGINdatab[] = dataaq;
END;
La declaración tiene las siguientes características:
o La declaración define comienza con la palabra DEFINE , seguida por un
nombre simbólico y una lista de uno o mas argumentos encerrados entre
paréntesis.
o Los argumentos deben estar separados por comas. Un signo igual separa la
lista de argumentos de una expresión aritmética.
o La declaración termina con un punto y coma ( ; ).
2.2.2.6 Declaración FUNCTION PROTOTYPE La declaración FUNCTTON
PROTOryPE tienen la misma función que los símbolos en los diseños
esquemáticos. Ambos proporcionan una descripción corta de una función lógica,
listando su nombre, entradas salidas y puertos bidireccionales. Un puerto de
máquina se puede usar para funciones que importan o exportan máquinas de
estado.
FUNCTION Compare (a[3..0], b[3..0] );RETURN ( Less, equal, greater );
Características:
o La palabra FUNcrloN está seguida por el nombre de ra función.
Unlrrrsid¡d Autónoma cle ftcithnttStccroN 8 BLtotf.c^
80
. Una lista de los puertos de entrada para la función le siguen al nombre.
. Las entradas y las salidas están encenadas en paréntesis. Los nombres de los
puertos individuales están separados por comas.
o La palabra RETURN es seguida por una lista de las salidas y puertos
bidireccionales de la función.
o La declaración termina con un punto y coma ( ; ).
2.2.2.7 Declaración OPTIONS. La declaración OPTIONS fija la opción BlT0 para
especificar si el bit mas bajo de un grupo es el mas o el menos significativo
(MSB, LSB ).
La declaración inicia con la palabra oPTloNs , seguida por Blr0 y su
especificación. La declaración termina con un punto y coma ( ; ).
OPTIONS BlT0 = MSB
2.2.2.8 Declaración ASSERT . La declaración ASSERT permite probar la validez
de una expresión arbitraria que usa parámetros , números, funciones evaluadas o
los puertos usados o sin usar.
ASSERT (WTDTH >0)REPORT WIDTH (%o) must be a positive integer ,\tidth,,
SEVERITY ERRORHELP_ID INTVALUE;
81
La declaración tiene las siguientes características:
o La palabra ASSERT es seguida por una expresión aritmética que está
opcionalmente encenada en paréntesis. Cuando la expresión es falsa, la
afirmación es activada y el mensaje que sigue la palabra REpoRT es
desplegada en el procesador de mensajes.
. La palabra REPORT es seguida por un mensaje ( opcional ). El mensaje está
encerrado en comillas, y puede incluir un caracter % ( porcentaje ), que se
sustituye con el valor de la variable de mensaje. Si no hay un reporte se activa
un mensaje genérico con el siguiente formato:
<SEVERITYI : Line <Numero de línea), File <Nombre archivo>: afirmaci6n
fallada
La palabra SEVERIW es seguida por un nivel de severidad de error,
precaución o información.
o La declaración termina con un punto y coma ( ; ).
2.2.2.9 Sección SUBDESIGN. La sección SUBDESIGN declara las entradas,
las salidas y puertos bidireccionales.
SUBDES'GN TOP
( F, BAR, CLK : INPUT =40, A1, A2, A3 : OUTPUTBtz..Ol : BIDIR;
VCC ;,
)La sección tiene las siguientes características:
82
. La palabra SUBDESIGN está seguida por el nombre del subdiseño. El nombre
debe ser el mismo nombre del archivo.
o La lista de los puertos de entrada y salida está encenada en paréntesis.
o Los nombres de las señales están representados por nombres simbólicos y se
les asigna un tipo de puerto ( INPUT, OUTPUT, BlDlR, MACHINE INPUT,
MACHTNE OUTPUT).
. Se puede opcionalmente asignar valores de omisión de GND ó VCC después
de especlficar el tipo de puerto.
2.2.2.10 Sección VARIABLE . La sección VARIABLE es usada para declarar ylo
generar algunas variables usadas en la sección lógica, La sección variable puede
incluir una o mas declaraciones:
r Declaración INSTANCE
t Declaración NODE
r Declaración REGISTER
r Declaración STATE MACHINE
La sección variable tiene las siguientes características:
. La palabra VARIABLE inicia la sección variable.
o Los nombres simbólicos definidos por el usuario están separados por comas, y
estos a su vez están separados del tipo de variable por dos puntos. El tipo de
83
variable puede se nodo, nodo tri-state, funciones, declaraciones de maquinas
de estado.
. La sentencia termina con un punto y coma.
2.2.2.10.1 Declaración INSTANCE. Cada ejemplo de una función lógica
particular puede ser declarado como una variable con una declaración INSTANCE
en la sección variable. Después que se haya declarado, se pueden usar los
puertos de entrada y de salida de cada función lógica como puertos en la sección
lógica.
VARIABLEComp : Comparc;Adder : Lpm_add_sub WITH ( Lpm_Wdth = 8)
Teniendo en cuenta que las entradas de la función "Comparen son a[3..0], b[3..0]
y las salidas "less", uequal", "greate/' se pueden usar los siguientes puertos de
"Comp" en la sección lógica:
Comp.a[, Comp.b[, Comp.less, Comp.equal, Comp.greater.
El uso de los puertos debe cumplir el siguiente formato:
< Nombre Ejemplo > . < Nombre Puerto >
Estos puertos pueden ser usados en una declaración de comportamiento del
mismo modo que los nodos.
84
2.2.2.10.2 Declaración NODE. Existen dos tipos de nodos: NODO Y NODO TRI-
STATE. Ambos son usados para almacenar señales que no han sido declaradas
en la sección subdesign ó en la sección variable. Además un nodo o un nodo tri-
state son similares para los tipos de puerto INPUT, OUTPUT, BlDlR, en que
representan un simple cable que propaga señales.
VARIABLEb : NODE;t : TRI_STATE_NODE;
2.2.2.10.3 Declaración REGISTER. Una declaración REGISTER se usa para
declarar registros de tipo D, T, J-K y S-R , flipflops ( DFF, DFFE, TFF, TFFE,
JKFF, JKFFE, SRFF, SRFFE ) Y Latches.
VARIABLEff : TFF;
El nombre de este ejemplo de flipflop es ff . Después de hacer está declaración se
puede usar los puertos de entrada y salida del ejemplo de ff basados en el
siguiente formato:
< Nombre Ejemplo > . < Nombre Pueño >
ff.t, ff.clk, ff.clrn, ff.q .
85
2.2.2.10.4 Declaración STATE MACHINE. Se utiliza parc crear una máquina de
estados declarando el nombre de la máquina, sus estados, y opcionalmente, sus
bits en la sección variable.
VARIABLESS .' MACHINE OF BITS (q1, q2, q3)
uflTH STAIESI Sf = 8"000",
52= 8"010",53 = B " 111 " ) ;
El nombre de la máquina de estados es ss. Los bits de estado q1, q2, q3 son
saf idas de los registros para esta máquina. Los estados son 51, S2 y 53 , eada
uno de los cuales tiene asignado un valor numérico de estado para los bits q1, q2,
q3.
Una declaración de máquina de estado tiene las siguientes características:
. Un nombre simbólico. Este nombre va seguido por dos puntos y por la palabra
MACHINE.
. La declaración debe incluir una lista de estados y puede incluir una lista de los
nombres de los bits.
. Los bits de estado son opcionales y están especificados con la palabra OF
BITS, seguido por una lista de los nombres simbólicos de los bits, separados
por comas. La lista debe estar encenada en paréntesis.
86
. Los estados están espec¡ficados con la palabra WITH STATES , seguido por
una lista de los nombres simbólicos de los estados separados por comas y
encerados entre paréntesis.
o Los nombres de los estados pueden estar opcionalmente asignados a un valor
con un símbolo igual seguido por un valor numérico.
. Un punto y coma termina la declaración.
2.2.2.11 Sección lógica. La sección lógica especifica las operaciones lógicas del
archivo de texto y se considera el cuerpo de un diseño de este tipo. Una o mas de
las siguientes sentencias o construcciones pueden ser usadas en esta sección:
I Ecuaciones Booleanas
r Ecuaciones de control Booleanas
I Declaración CASE
r Declaración DEFAULT
r Declaración lF THEN
I Declaración lF GENERATE
r Declaración FOR GENERATE
I Declaración TRUTH TABLE
Las palabras BEGIN y END encierran la sección Lógica. Un punto y coma ( ; ) le
siguen a la palabra END para finalizar esta sección.
87
2.2.2.11.1 Ecuaciones Booleanas. Las ecuaciones Booleanas se usan en la
sección lógica para representar la conexión de los nodos de flujo de las entradas y
salidas.
El siguiente ejemplo muestra una ecuación booleana:
a[] = ((c[] & -8"001101" + e[6..1])# ( p, q, r, s, t,u ) ;
El lado izquierdo de la ecuación puede ser un nombre simbólico de grupo , o
puerto. Se puede usar el operador NOT ( ! ) para invertir un item a la izquierda. El
lado derecho consiste de una expresión booleana.
El símbolo igual es usado para indicar que el resultado de la expresión booleana
es la fuente del nodo simbólico o grupo a la izquierda. El simple slmbolo igual (=)
difiere del doble slmbolo igual (==) en que el segundo es usado como
comparador.
r El número binario está negado debido al operador menos ( - ).
r El número binario -8"001 101" hará una AND con el grupo c[.
r El resultado de esta AND se sumara al grupo e[6..1]
r El resultado de la operación anterior entrará en una OR con el grupo ( p, q, r, s,
t,v).
r El resultado final se asigna al grupo a[.
r Un punto y coma finaliza cada ecuación.
88
2.2.2.11.2 Ecuaciones de Control Booleanas. Las ecuaciones de control son
ecuaciones booleanas usadas en la sección lógica para fijar las señales de ctock,
reset, y clock enable de la maquina de estados.
ss.clk = clkl;
ss.reset=a&b;
ss.ena = clkl ena ;
Las ecuaciones booleanas de controltienen las siguientes características:
r Se pueden definir las entradas clock, reset, y clock enable de cada maquina de
estados en el siguiente formato:
< Nomb¡e Máquina de Estados >. < Nomb¡e Puerto >
En el ejemplo anterior las entradas están definidas para la maquina de
estados ss.
r Se puede usar el nombre declarado de la máquina de estados como el nombre
de la máquina de estados de la ecuación de control.
r La señal de reloj debe estar siempre asignada a un valor.
r Si el estado de inicio de una máquina se asigna a un valor diferente de cero, se
requiere de una señal de reset.
r La asignación de la señal clock enable es opcional.
r Un punto y coma finaliza la ecuación.
89
2.2.2.11.3 Declaración CASE. La declaración CASE relaciona las altemativas
que pueden ser activadas dependiendo del valor de la variable, grupo, o expresión
que le sigue a la palabra CASE.
CASE F[].q ,sWHEN H "00" =)
addr[] = g's = a&b,'
WHEN H "07" =>Countfl.d = Count[].Q + 1;
WHEN H ',02", H "03", H "04" =>f[3..0].d = addr[4..1] ;
WHEN OIHERS =>f[].d = f].q;
END CASE;
La declaración tiene las siguientes características:
r Las palabras CASE e lS encierran una expresión booleana, grupo, o máquina
de estado.
r La declaración se termina con la palabra END CASE y un punto y coma.
r Una o más alternativas únicas son listadas en la cláusula WHEN en el cuerpo
de la declaración.
r En cada cláusula altemativa WHEN, uno o mas valores constantes separados
por comas estás seguidas por un slmbolo ( => ).
r Si la expresión booleana seguida por la palabra CASE evalúa una altemativa
específica, todas las declaraciones de comportamiento que le siguen a la flecha
se activan.
Un¡Yü¡ldtd autónoma de occidcntr
sE0croil I Ertoltri^
90
r Cuando no hay otra altemativa verdadera, Las palabras opcionales WHEN
OTHERS define las altemativas de omisión.
r La declaración de omisión define el comportamiento por defecto cuando no se
usa WHEN OTHERS.
r Si la declaración de caso es usada para definir las transiciones de una maquina
de estados, Las palabras WHEN OTHERS no pueden ser usadas para recubrir
los estados ilegales de una maquina de estados de n bits al menos que la
maquina contenga exactamente 2^n estados.
r Cada declaración de comportamiento termina con un punto y coma ( ; ).
2.2.2.11.4 Declaración DEFAULT. La declaración DEFAULT permite especificar
los valores por defecto para las variables usadas en las tablas de verdad,
declaraciones lF THEN y CASE. Las señales activas altas automáticamente por
defecto toman GND. Estas declaraciones son requeridas solo para señales
activas bajas.
BEGINDEFAULTS
a = VCC;END DEFAULTS;IF Y &Z THEN
a=GND;END IF;
END;
La declaración default tiene las siguientes caracterlsticas:
91
r Está encerrado por las palabras DEFAULT y END DEFAULT y termina con un
puntoy coma(;).
r El cuerpo del a declaración consiste de una o mas ecuaciones booleanas que
asignan valores constantes a variables.
r Cada ecuación finaliza con un punto y coma ( ; ).
r La declaración se activa si la variable que le sigue está indefinida para ciertas
condiciones. En el ejemplo la variable a es indefinida cuando Y OR Z es un
cero lógico, por lo tanto la ecuación ( a= VCC ) se activa en la declaración
default
r Solo se permite una declaración default en la sección lógica, y debe ser la
primera sentencia después de la palabra BEGIN.
r Si una variable se asigna a un valor más de una vez, todas las asignaciones
son ignoradas excepto la última.
r Una declaración default no puede ser usada para fijar un valor de X ( DON'T
CARE).
2.2.2.11.5 Declaración lF THEN. La declaración lF THEN lista una serie de
declaraciones de comportamiento que se activarán después de la evaluación
positiva de una o mas expresiones booleanas.
IF a[] -= b[] THENC[8.-1] = H'77";addr[S..1] = f[3..1].q +t;f[].d=addr[]+1;
EtSrF 93 $ 94 THENf[].d = addr[];
92
EtSEd = VCC;
END IF ;
Características de la declaración:
Las palabras lF y THEN encienan la expresión booleana a ser evaluada y está
seguida por una o mas declaraciones de comportamiento, cada una de las
cuales termina con un punto y coma ( ; ).
Las palabras ELSIF y THEN encienan algunas expresiones booleanas
adicionales a ser evaluadas, y son también seguidas por una o mas
declaraciones de comportamiento. Estas pueden repetirse.
Las declaraciones de comportamiento siguientes a la palabra THEN son
activadas para la primera expresión que evalúa la verdad.
La palabra ELSE seguida por una o mas declaraciones de comportamiento es
similar a WHEN OTHERS para las declaraciones CASE. Si ninguna de las
ecuaciones booleanas evaluadas previamente es verdadera, entonces la
declaración de comportamiento que le sigue a ELSE se activara.
La palabra END lF y un punto y coma finaliza la declaración.
2.2.2.11.6 Declaración lF GENERATE. La declaración lF GENEMTE relaciona
una serie de declaraciones de comportamiento que son activadas después de la
evaluación positiva de una expresión aritmética.
93
lF DEVICF_FAMILY == "FLEX8K" GENERATECú = SKadder ( a0, b[], cin) ;
ELSE GENERATEC0 - otheradder (a0, b[], cin ) ;
END GENERATE;
La declaración tiene las siguientes características:
I Las palabras lF y GENERATE encierran la expresión aritmetica a ser evaluada
y está seguida por una o mas declaraciones de comportamiento, coda una de
las cuales termina con un punto y coma ( ; ) . Estas declaraciones son
activadas sl la expresión es verdadera.
r Las palabras ELSE GENERATE están seguidas por una o mas declaraciones
de comportamiento, cada una de las cuales finaliza con un punto y coma, Estas
declaraciones son activadas si la expresión aritmética es falsa.
r La palabra END GENERATE y un punto y coma terminan la declaración
r La declaración lF GENEMTE puede ser usada tanto en la sección lógica
como en la sección variable.
2.2.2.11.7 Declaración FOR GENERATE.
COilSfAwT NUM = 8;SUBDESTGN 4gents(
a[NUM..1], B[NUM..1], CIN : INPUT ;C[NUM..l] , COUT : OUTPUT ;
)VARIABLE
carryout[(NuM+1)..1] : NODE ;BEGIN
carryout[l] = CIN l
94
FOR ¡ IN 1 TO NUM GENERATEcfrl = a4l $ bftl $ carryoutfl;carryoutfi+1] = a[i] & bfrl # carryoutq| & @t0 $ bFI);
END GENERATECOUT = carryout[NuM + 1] ;
END;
La declaración FOR GENERATE tiene las siguientes caracterlsticas:
I Las palabras FOR y GENEMTE endenan los siguientes items:
1. Un nombre de variable temporal, la cual consiste de un nombre simbólico que
se usa sólo en el contexto de la declaración FOR GENERATE. En el ejemplo
anterior la variable es i. Este nombre de variable no puede ser una constante,
un parámetro o el nombre de un nodo que se use en cualquier parte del
proyecto.
2. La palabra lN , está seguida por un rango delimitado por dos expresiones
aritméticas. Las expresiones aritméticas están separadas por la palabra TO. En
el ejemplo las expresiones aritméticas son I y NUM .
r La palabra GENERATE está seguida por una o mas declaraciones lógicas,
cada una de las cuales finaliza con un punto y coma.
I Las palabras END GENEMTE y un punto y coma terminan la declaración.
95
2.2.2.11.8 Declaración TRUTH TABLE. La declaración TRUTH TABLE se usa
para especificar lógica combinatoria o el comportamiento de maquinas de estado.
En una tabla de verdad AHDL, cada entrada contiene una combinación de
valores de entrada que producirán valores específicos de salida. Estos valores de
salida pueden usaese como realimentación para especificar los estados de
transición y las salidas de las maquinas de estado.
TABLEa0, f[4..1].q0, B'0000"0, B "0100'1, B "o)O(X"x, B'1111',
END TABLE ;
=>=>=>=>=>
f[4..1].dB'0001',B "0010",B "0100",B "0101",
control ;1;0;0;1;
La declaración de tabla de verdad tiene las siguientes caracterlsticas:
r El encabezamiento de la tabla de verdad consiste de la palabra TABLE,
seguido por una lista de entradas de la tabla separadas por coma, un slmbolo
de flecha ( => ), y una lista de salidas separadas también por comas. El
encabezado termina con un punto y coma.
I Las entradas de la tabla de verdad son expresiones booleanas; las salidas son
variables. En el ejemplo las entradas son a0 y f[4..1].q y las salidas f[4..1].d y
control.
r El cuerpo de la tabla consiste de una o más entradas, las cuales están
separadas por comas y una o más salidas también separadas por comas. Las
entradas y salidas están separados por un slmbolo ( => ).
96
r Cada señal tiene una correspondencia una a una con los valores de cada
entrada. Para la primera entrada en el ejemplo anterior si a0 = 0 y f[4..i¡.q = g
"0000'entonces f14..1].d = B'0001" y control = 1.
r Los valores de entrada y salida pueden ser números, constantes predefinidas
VCC O GND, constantes simbólicas, o grupos de números o constantes.
r Las palabras END TABLE, seguidas por un punto y coma finalizan la tabla de
verdad.
r El número de ltems separados por coma en una columna de la tabla de verdad
debe ser igual al del encabezamiento.
3. CONCLUSIONES
Desde el surgimiento de la electrónica como ciencia siempre se ha planteado la
duda de como reducir un circuito en cuanto a su tamaño, su cableado y a mejorar
su velocidad de respuesta, esto en la parte digital se ha logrado mediante técnicas
como son el uso de mapas de kamaugh, máquinas de estado, etc. En la
actualidad el uso de los PLD's permite la optimización de un circuito que cumpla
determinada función, dicha optimización incluye tamaño y cableado, siendo esto
favorable en circuitos que requieren muchos componentes, básicamente por dos
razones:
Ahono de espacio
Costos
El uso y funcionamiento de los lenguajes de descripción hardware, siendo estos
otra henamienta que ayuda a solucionar problemas de tipo digital, en muchos
casos mejoran un circuito, ya que no se manejan dispositivos estándar sino que
simplemente se ejecuta una instrucción que cumple la misma función y que en
algunos casos resulta mas simple y favorable dentro de un diseño.
Estas formas de diseño pueden implementarse utilizando el software de desanollo
ALTERA MAX+PLUS ll el cual es una henamienta que permite la programación
98
de los PLD's, ya sea que se halla simulado desde un circuito esquemático
(Componentes TTL o LS ), de un lenguaje de programación ( VHDL o AHDL ) , o
de la mezcla de ambos, lo cual es una ventaja muy poderosa para los
diseñadores de circuitos digitales, porque permite la elaboración de un diseño
según sea la necesidad.
Durante el desanollo de algunos diseños se nos presentaron ciertos problemas,
los cuales daremos a conocer con su respectiva solución con el fin de que no se
tengan los mismos inconvenientes cuando se hagan futuros ejercicios.
Si se está realizando un diseño en VHDL donde se tenga múltiples asignaciones a
las variables, ejemplo :
a:=b;
c:=a;
se crean problemas debido a la rápida ejecución del programa en comparación
con los retardos de asignación, aunque se sabe que estas son declaraciones
secuenciales y se ejecutarán como tales. Por lo tanto se debe evitar hacer este
tipo de asignación.
Es importante también conocer que el VHDL en ALTERA tiene una serie de
librerías en las cuales se incluyen operadores lógicos, matemáticos, tipos de
puertos y otros parámetros que para ser usados dentro de un diseño es necesario
haber llamado la librería anteriormente, como por ejemplo la librerla IEEE en la
99
cual se encuentra el arch¡vo "std_logic_arith" el cual define operadores
matemáticos y lógicos.
Cuando se realiza un diseño que tiene puertos bidireccionales y que por tal razón
es necesario utilizar tres estados para evitar las colisiones, se debe tener en
cuenta que siempre hay que colocarlos en el nivel superior del diseño sin importar
que se encuentren en etapas inferiores sobre los mismos puertos.
A parte de los problemas de tipo de diseño se tuvo un gran inconveniente que fue
que en nuestro medio prácticamente nadie manejaba el software ALTERA
MAX+PLUS ll. Cuando habían erores lo que se hacía era buscar en la ayudas
alguna guía que nos mostrara que se había hecho mal, o se escribía a los
ingenieros de ALTEM para que nos ayudaran a solucionar el problema.
En algunas ocasiones cuando se cometen ciertos erores de diseño el programa
cae en operaciones invalidas que obligan a cerrar la aplicación inmediatamente
(esto como resultado de una compilación). Para solucionar esto, si el diseño se ha
hecho paso a paso, se puede conegir la última parte del desanollo hasta
encontrar la causa del enor, si de este modo es imposible se recomienda utilizar
el correo electrónico de ALTERA ([email protected]) donde hay un grupo de
ingenieros disponibles para resolver cualquier duda que se tenga.
U¡lrls¡drd rulóflom¡ da Occirl¡¡tr
sEccloii I &torÉc^
100
Para comprobar el funcionamiento del software como henamienta para programar
PLD's se desanollaron algunas prácticas y se les hizo el montaje flsico
lográndose establecer que si un diseño funciona conectamente en la simulación,
se obtendrán los mismos resultados sobre el dispositivo programado. También se
comprobó que al realizar estos diseños con este método solo se necesitaría un
solo dispositivo, mientras que si se hace de manera discreta (con productos
estándar) se usaría una gran cantidad de integrados.
BIBLIOGRAFIA
CARTER, John W.. Digital designing with programable logic devices. New Jersey
: Prentice-hall, 1997.
HAYES, John P.. Introdución el diseño lógico digital. Wilmington : Addison-wesley
lberoamericana, S.4., 1 996.
NELSON, Victor P., NAGLE, H. Troy, CARROLL, Bill D., lRWIN, J. David. Análisis
y diseño de circuitos lógicos digitales. México : Prentice-hall, 1996.
i INSTITUTO COLOMBIANO DE NORMAS TECNICAS Y CERTIFICACION. Tesis
y otros trabajos de grado. Bogotá : icontec, 1996.
ALTERA. MAX+PLUS ll Getting started. San jose : Altera corporation. 1995.
ALTERA. MAX+PLUS ll AHDL. San jose : Altera corporation, 1995.
BHASKER, Jayaram. A VHDL primer. New Jersey : Prentice-hall, 1992.
WAKERLY, John f.. Diseño digital principios y prácticas. México : Prentice-hall,
1992.
MANO, M Monis. Lógica digital y diseño de computadores. México : Prentice-hall,
1982.
ANEXO A
A continuación, se presentará el manual de usuario básico para el manejo del
software ALTERA MM+PLUS ll, con el cual las personas interesadas pueden
empezar a conocer la forma de realizar diseños utilizando esta henamienta.
ALTERA MM+PLUS II
MANUAL DE USUARIO
El ALTERA MAX+PLUS ll es un sistema de desanollo el cual permite a los
diseñadores la libertad para escoger el método de entrada del diseño y las
henamientas. Soporta dispositivos con diferentes arquitecturas, core en múltiples
plataformas, proporciona una intertaz fácil de usar y ofrece también un amplio
rango de características.
MODOS DE ENTMDA DEL DISEÑO
MAX+PLUS ll provee tres editores de entrada de diseño: El gráfico, el de texto, y
el de formas de onda. Incluye además dos editores auxiliares: El floorplan y el de
slmbolos.
Para crear un archivo nuevo se escoge "NEW" del menú de archivo, se
selecciona el tipo de editor deseado ( Gráfico, sfmbolos, texto o formas de onda )
y se escoge la extensión del archivo de la lista.
GQraphic Editor file
figmtd Editor file
ñ Text Edito¡ file(i, ![,avefom Editor file
Lsdrm
l.'"rrel
iffi:ffi
Para salvar el archivo se escoge " SAVE AS " del menú de archivo y se escribe el
nombre del archivo.
Directo¡ies:
ft' c:\man2rork
Si se desea trabajar sobre algún diseño previamente hecho, para hacerle cambios
o complementarlo, se debe seleccionar "OPEN" del menú de archivo y escribir o
seleccionar el nombre del diseño sobre la caja de diálogo corespondiente.
compl-gdfcompl2-gdfcont.gdfcontador-gdfdani-gdfddd.gdfeiem-qdfmctlo-gdfmono.gdfmotor-gdfn¡nn n¡lf
trw
ffi*il¿'
:ffi
f-', Eraphic Edito¡ files
fi'symbol Edito¡ files
ñle¡¡t Editor file¡(?llawform Edito¡ filcs
li'All f¡les
@f'-¡ynl
Frdrrelf '*dfBl['-'l
eiem-wü ft' c:\ma*2work
6c:
En ALTERA MAX+PLUS ll se debe espec¡f¡car un archivo de diseño como un
proyecto concurrente antes de compilar o desafrollar otro procesamiento como la
simulación. Para especificar el nombre del proyecto, que debe tener el mismo
nombre del archivo, se debe selecc¡onar " PROYECT NAME " del menú de
arch¡vo y escr¡b¡r en ¡a cas¡lla correspondiente.
jl Directory i¡: c:\ma¡2no¡h\tutodal
Drive¡:
fJ Shon Only Tops of Hie¡archie¡
comp.pofcomp-vhdcompl-gdfcompl-iedcompl-pofcompl2-gdfcompl2-iedcompl2-pofcont-gdfcont-iedcont-pofcontad-oof
rffi¡tr
ry
iÍ)iiffi
[irectorie::ffic:\
ma*2work
EDITOR GRAFICO
El editor gráf¡co perm¡te que la entrada de diseños esquemáticos sea rápida y
fácil. La edición se hace arrastrando y soltando uno o mas objetos dentro de un
área de diseño. El diseñador puede hacer un diseño mas compacto con la
conex¡ón de primitivas con buses para crear arreglos de símbolos.
MAX+PLUS ll proporc¡ona símbolos para una gran var¡edad de funciones lógicas
que se pueden usar en el editor gráfico.
Para entrar un símbolo se define un punto de inserción y se escoge " ENTER
SYMBOL " del menú de símbolos. La caja de dialogo proporciona cuatro librerías
que contienen una lista de símbolos que pueden ser usados.
La librería ' PRIM " contiene una gran variedad de compuertas ( normales,
negadas a la salida, negadas en la entrada ), los pines de entrada y salida, niveles
lógicos 'VCC" y "GND", primitivas de buffers y diferentes tipos de registros. La
librería " MF " , tiene elementos de la lógica TTL y algunos multiplexores. La
librería " MEGA-LPM " ofrece una gran variedad de funciones lógicas
prediseñadas tales como decodificadores, multiplexores, sumadores, registros y
contadores. La librería "EDIF "contiene elementos de lógica TTL con otras
características y algunas compuertas de gran tamaño.
Symbol[ama:
$¡mbol Lib¡a¡ier:
c: \maxplus2\manZib\pdnc: \marplu*2\nu¡fl ib\mfc: \ma*phnAmaxZib\mega_lpmc: \ma*pluc2\ma¡¡fl ib\edif
Directory h: ctma*2wo*\tuto¡iolSymbol filer:
@ c:\H max2rork
rtlDilgesil
conp $conpl fficonl ,#conlado¡ iffidb iffidcry
dd iiiddd ,"?:l
taj.ieiem
Para conectar los símbolos se coloca el puntero de selección 1R ) en el p¡n de
uno de los símbolos. El puntero de selección se convierte en un puntero de líneas
I
ortogonales ( T). Con el mouse presionado se anastra hasta el pin del elemento
que se quiere conectar y se suelta el mouse.
Cuando se van a conectar buses se debe seleccionar del menú de opciones
"LINE STYLE " y escoger la línea gruesa.
La conexión entre dos símbolos se puede hacer por nombre, marcando la línea o
las líneas de los pines a conectar con el mismo nombre.
EDITOR DE TEXTO
El software MAX+PLUS ll contiene un editor de texto ideal integrado para la
entrada y edición de lenguajes de descripción hardware ( HDL ) para archivos de
diseños escritos en VHDL, Verilog HDL, o el lenguaje de descripción hardware de
ALTERA ( AHDL ).
Cada uno de estos lenguajes pueden implementar máquinas de estado, tablas de
verdad, lógica condicional y ecuaciones booleanas. El sofiware provee dos tipos
de plantillas (una para VHDL y otra para AHDL ) con las cuales se pueden
sefeccionar diferentes formatos para realizar un diseño.
Si ef diseño se va a realizar en VHDL se debe colocar inicialmente la siguiente
librería:
library IEEE ;
use IEEE.STD_LOGIC_1 1 64.ALL ;
EDITOR DE FORMAS DE ONDA
El editor de formas de onda MAX+PLUS ll es usado para crear y editar archivos
de diseño de formas de onda y también para crear vectores de entrada para la
simulación que permite probar la funcionalidad del diseño, donde el diseñador
puede utilizarlo como un analizador lógico para ver el resultado de la simutación.
La entrada por diseño de formas de onda es mejor.usarla para diseños de lógica
secuencial y funciones repetitivas.
f,ode ilame:
Defadt falue:l/O fype(-a fnput Pin(? Ogtput Pinll Buried l.lode
Fo¡ Ufaveform Design File [trIDFl OnlyHode lypcC¡Pin lnput(-*,ftcgi*tared
fi EombinEtorial{},lfachine
flock:
Ee*et:
Preget;
Para colocar los nodos de entrada y de salida para un diseño de este tipo se debe
escoger " INSERT NODE " del menú de nodo. seguido se le da el nombre en la
casilla correspondiente y se selecciona eltipo ( entrada, salida o nodo enterrado).
Para la edición de las entradas se selecciona cada una y se les da el nivel
deseado ( alto, bajo, tipo reloj, etc.).
CHEQUEO DE ERRORES DE S¡NTAXIS Y CREACION DE SIMBOLO
Después de realizar un diseño es necesario revisar que el archivo no tenga
errores de sintaxis para asegurarse que fue editado correctamente. Para realizar
esto se debe escoger "PROYECT SAVE & CHECK " del menú de archivo.
Para crear un símbolo que contenga todo el diseño pero que solo muestre los
pines de entrada y salida se selecciona " CREATE DEFAULT SYMBOL " y
automáticamente se genera un símbolo con el mismo nombre del archivo.
COMPILACION DEL PROYECTO
La labor del compilador es probar que el proyecto este libre de errores, sintetiza
la lógica, adapta el proyecto en un dispositivo ALTERA, genera los archivos de
salida para la simulación y programación y actualiza la ventana del display de
jerarquía.
Para compilar el proyecto escoja "PROYECT SAVE & COMPILE" del menú de
archivo. Cualquier mensaje de información, eror precaución aparecerá en la
ventana del procesador de mensajes que se abre automáticamente.
SIMULACION
La simulación se realiza para verificar que el proyecto funciona conectamente. Es
decir nos permite probar completamente el proyecto, para asegurar que responde
correctamente a todas las posibles situaciones, antes de programarlo en un
dispositivo. Durante la simulación se alimentan los vectores de entrada al
simulador. El simulador usa estas entradas para crear las señales de salida que
un dispositivo programado produciría bajo las mismas condiciones.
Para crear un archivo canal simulador ( ScF ) se escoge "NEW" del menú de
archivo, se selecciona'WAVEFORM EDITOR FILE" escogiendo la extensión.scf.
ffiffiffiffitrilmv.:
el archivo con los y grupos seleccionados. Todos los nodos de entrada
Se puede elegir el
del menú de archivo
unidades.
Para ingresar los nodos
SNF" del menú de nodos
]lode / Group:
AgailaHe ]lodcr t
Type
de finalización de la simulación escogiendo "END TIME"
escribiendo el tiempo deseado con las respectivas
entrada y salida se escoge 'ENTER NODES FROM
17 E¡e¡erve Erirtirg ilode:
f: Shos All Hode llann S¡rnolqrm
'ffiiW
lTlnputs
E Olrtput¡
l7 E¡oup
f: atl
nnffiHWX
WwwwSe presiona "LIST" paral sacar una lista de los nodos de entrada y de salidas
disponibles en el . Se seleccionan los nodos deseados, con la flecha (=>¡
se transfieren a la caja dQ nodos y grupos seleccionados ( SELECTED NODES &
GROUPS ) y finalmente pe escoge "OK". El editor de formas de onda sobrescribe
Salactcd Hode* t Groupc:
tienen por defecto un nivel lógico de cero (0), y todos los nodos de salida y nodos
enterrados tiene por defecto un nivel lógico indefinido (X).
Name: 50.0ns 100.0ns 15U.0ns
rn¡ LD
r*- ENA
r*- CLK
,ñ5 DA[3..0]
iff D[3..0]
i@¡r o[3..0]
dp oA[3..0]
ii} Our
Si se desea colocar nodos o grupos adicionales se hace con el comando "INSERT
NODES" del menú de nodos.
0
[ode ]'lame:
Default falue:l/0 Type
t[nput Pin
G Olrtput Pin(i Ewied llode
ilodgilGroup:
For Simulator Channcl File ISCFI OnlyT
Hogler t Groups from SilF:
Primero se debe marcar el tipo de nodo que se desea insertar ( INPUT, OUTPUT,
BURIED NODE ) y presionar 'LIST" para que aparezca la lista de los nodos
disponibles, se selecciona y se pres¡ona "OK".
Para organizar las entradas, sal¡das y nodos en un orden deseado se pres¡ona el
mouse sobre el símbolo que ¡nd¡ca el tipo de nodo (entrada n-, salida ilff,
nodo dF ) en el editor de formas de onda.
La edición de las entradas se realiza marcando cada una de ellas y escogiendo
'OVERWRITE" del menú de edición o con los botones de niveles lógicos que se
encuentran en la columna a la izquierda de la pantalla. Si solo se desea camb¡ar
tffiiffi
lTllnputE lJBegi¡tered
H Oug¡uts lf Coubinatodal
Mgroup ffiHemnn Bit
nAll ffiHemcryhlord
flj Show All ilode Hame S¡rnoryrr
el nivel en una parte del nodo de entrada se selecciona con el mouse y se sobre
escribe con el nivel lógico deseado.
La simulación del proyecto se lleva acabo escogiendo "PROYECT SAVE&
SIMULATE" del menú de archivo. Al finalizar la simulación aparece un cuadro
donde descrimina si la simulación fue exitosa o no, el tiempo de estabilización del
circuito, el tiempo de finalización de simulación, y el porcentaje de cubrimiento de
la simulación , los errores y las advertencias.
Se puede crear un archivo tabla que contendrá la misma información del archivo
SCF pero en forma de texto, aquí se muestran Ias entradas y salidas como una
tabla. Se escoge'CREATE TABLE FILE" del menú de archivo y automáticamente
se muestra un cuadro con un nombre de archivo xxx.tbl, se presiona "OK" para
crear el archivo.
Para ver el contenido de este archivo se selecciona "OPEN" del menú de archivo y
se escoge del archivo editor de texto la extensión ".tbf . Automáticamente se abre
fa ventana de editor de texto y se visualiza el archivo seleccionado.
PROGRAMACION DE UN DISPOSITIVO
Cuando se compila un proyecto se crea el archivo objeto del programador (.pof)
que es el que se usará para programar el dispositivo.
Para abrir la ventana del programador se selecciona "PROGRAMMER" del menú
MAX+PLUS II .
ll Security Bit I
File: regd2.pof l
Device: EPM7064LC4{-7
Checksum: 000D2624
Si el archivo .pof no es mostrado, use el comando "SELECT PROGMMMING
FILE" del menú de archivo, para seleccionar el archivo deseado para utilizarlo
como archivo de programación.
MAX+PLUS ll opcionalmente graba todas las acciones y mensajes del
programador en un archivo bitácora (.pl|.Para crear un archivo de este tipo se
selecciona "INPUT/OUTPUT'del menú de archivo, se marca la opción "Log (.plf)"
y el nombre del archivo aparecerá con esta extensión, presiona'OKo.
Finalmente para programar el dispositivo insértelo en la base y seleccione el botón
"PROGRAM".
ANEXO B
Este anexo contiene la documentación de las prácticas desanolladas, y los
enunciados de las prácticas propuestas para efectuarse durante el desarrollo del
curso.
Unlw¡l@ lut6oorn¡ dc Occirhnb
sEcctolt I &t0rf,c^
PRACTICAS REALIZADAS
MULTIPLICADOR DE CORRIMIENTO
La siguiente práctica consiste de una unidad la cual multiplica dos númenrs A y B
de cuatro bits cada uno usando corrimiento.
A continuación se dará un ejemplo numérico para comprender como trabaja dicho
multiplicador:
A=0011(3H)
B=0101(5H)
00000101 Como el ultimo bit de B es 1, sumo A con unacumulador que arranca en 0 y desplazo.
=>0100110101=>0100011010 Como el ultimo bit de B es cero simplemente
desplazo.
=>01001 11101 Como el ultimo bit de B es 1, sumo con A ydesplazo.
+
001 1
=>0100011110 Como el ultimo bit de B es 0, simplementedesplazo.
0100001111 Este es el resultado final = 15 ( 0F H ).
Como se puede apreciar todo es basado siempre mirando el ultimo bit de B y se
empieza a desplazar, también teniendo en cuenta el carry generado, que es el bit
de mayor peso ( l0 ).
La parte anterior es la parte de control, la cual se realizo mediante un controlador
de Richard, y cuyo diagrama de flujo es el siguiente:
donde:
ST0 : Estado 0, es el de ananque o start.
ST1 : Estado l, en este estado es donde se mira como está el último bit de
BO
ST2 : Estado 2, este estado siempre está anclado a un uno lógico (Vcc).
ST3 : Estado 3, en este estado se está mirando continuamente si un
contador que se cargo con el numero tres binario ha llegado a cero.
FA
FB
FC
FD
FE
FF
Cargar B, y cargar el contador de tres.
Cargar A más lo del acumulador.
Despfazar A más lo del acumulador y desplazar B.
Desplazar A más lo del acumulador y desplazar B.
Decrementar el contador de tres.
Fin.
FA, FB, FC, FD y FE, se usaron en una tabla de verdad para que estos dieran los
valores conectos a los selectores de unos registros donde se manejan B y el
resultado de A mas lo del acumulador.
El circuito del controlador de Richard es el siguiente:
Circuito contolador de Richard
El circuito completo es el siguiente:
El mismo multiplicador de conimiento se implemento en VHDL cuyo algoritmo se
hizo basado en el diagrama de flujo del controlador de Richard. El programa es el
siguiente:
PROGRAMA EN VHDL
LIBRARY IEEE;USE IEEE.STD_LOGIC_1 1 64.ALL;USE I EEE.STD-LOGIC-ARITH.ALL;
ENTITY SUMAS ISPORr (
A, B : lN UNSIGNED (3 DOWNTO 0);R : OUT UNSIGNED (7 DOWNTO 0));
END SUMAS;
ARCHITECTURE RAPIDO OF SUMAS ISBEGIN
PROCESS(4, B)VARIABLE AA, S : UNSIGNED (8 DOWNTO 0);VARIABLE C : UNSIGNED (3 DOWNTO O);
BEGINC := "0000";S := "000000000";ArA'='0'& A(3 DOWNTO 0) & C(3 DOWNTO 0);FORKINOTO3LOOP
lF B(K) = '1'THENS:_M+S;
END IF;S := '0' & S(8 DOWNTO 1);
END LOOP;R <= S(8 DOWNTO 1);
END PROCESS;END RAPIDO;
donde :
C : Variable que toma el valor de cero originalmente.
S : Variable que toma el valor de cero originalmente, y la cual va a retener
en ultimas el valor de la multiplicación.
AA : Variable que originalmente toma el valor de cero, y queda de nueve
bits donde el bit mas significativo es cero, la parte intermedia es el
numero A y la parte menos significativa es la variable C.
La instrucción nueva es la siguiente:
S : ='0' & S ( I DOWNTO 0 ), la cual lo único que hace es desplazar el
valor que tiene S en ese momento.
RELOJ CUAO
El reloj CUAO se encarga de activar una alarma cada vez que haya un cambio de
clase.
La parte de los minutos esta formada por dos contadores BCD conectados en
cascada que realizan la secuencia de 0 hasta 59. El diseño de este bloque se hizo
utilizando el modo esquemático.
El bloque de las horas se realizo en el lenguaje de descripción de ALTERA
(AHDL) diseñando un contador de cuatro bits para las unidades y utilizando un
flip-flop JK para las decenas.
Otro modulo se encarga de comparar la hora actual con una tabla que contiene
las horas en que se debe activar la alarma. Esto se hizo en VHDL.
7:00 AM7:50 AM8:40 AM8:50 AM9:40 AM
10:30 AM10:40 AM11:30 AM12:20 PM2:00 PM2:50 PM3:40 PM3:50 PM4:40 PM5:30 PM6:20 PM7:10 PM8:00 PM8:50 PM9:40 PM
000000001
1
1
1
1
1
1
1
1
1
1
1
01110111100010001001000000000001001000100010001 1
001 1
0100010101100111100010001001
00000101010001010100001 1
0100001 1
001000000101010001010100001 I00100001000001010100
00000000000000000000000000000000000000000000000000000000000000000000000000000000
07000750084008500940103010401 13032202200225023r'¡023502MO253026202710280028502940
El periodo de reloj de un pulso por minuto se logro utilizando la frecuencia de la
red de energía ( 60 Hz ) con el siguiente circuito:
Unlüütld¡d rutóoom¡ ¡t¡ 0ccrtJgttr
SEtclOt 8,$l0IECA
R1 = 22RR2 = 220KVCC=5V
Estos 60 pulsos por segundo se pasaron por dos divisores por diez y dos por seis
dando como resultado un pulso por minuto. Esta señal es la que se colocaba en
los relojes de los contadores de las horas y minutos.
Circuito de las unidades y decenas de los minutos:
11....F!!l!.?-....:
Algoritmo de las unidades y las decenas de la hora:
SUBDESIGN HORA( CLK, CLR, ENA :INPUT;
HU[3..0], HD, R :OUTPUT;)VARIABLE
COUNT[3..0], DD, DF : DFF;Y, HD, CR : NODE;FF : JKFF;
BEGINCOUNTI.CLK = CLK;COUNTI.CLRN = CLR;FF.CLK = !COUNT3;FF.CLRN = DF.Q;FF.J = VCC;FF.K = VCC;DD.CLK = !CLK;DD.PRN = HD;DD.D=!(!Y&ENA);DF.CLK = CLK;DF.PRN = HDiDF.D = DD.Q;IF CR & ENA THEN
COUNTI.D = H"0";ELSIF !Y & ENA THEN
COUNTI.D = H"1";ELSIF ENA THEN
COUNTI.D = COUNT[].Q + 1;
ELSECOUNTI.D = COUNTI.Q;
END IF;CR=(COUNTO&COUNT3);HD = FF;Y = !(ICOUNTO & COUNTI & HD);HU[¡ = COUNTI;R = COUNTI:END;
Algoritmo que indica las horas en que debe activarse la alarma:
LIBRARY IEEE;USE IEEE.STD_LOGIC-1 1 64.ALL ;
entity mem isport( A : lN BIT_VECTOR (15 DOWNTO 0);
y : out bit);end mem;architecture mem of mem issignal x, Z: bit;begin
process ( A )begin
case A is
when X"0700" 1X"0750"x"1030" I x"1040"x2250" I X"2340"x2620 1x2710"=>Y <='1';
when others => Y <='0';END case;
x"0840" I x"0950" I x"0940"1x"1 130" 1x3220" I X"2200"1x"2350" lx"24/¡l l X"2530"1
I x"2800" I x"2850" I X"2940"
end process;
end mem;
Circuito total del reloj de la CUAO:
:H:¡ii.;i:::::::::;|iffi:lt.,¡::::.::.:i
CERRADURA DIGITAL
La cenadura digital es un circuito que compa¡a la clave digitada a través de un
teclado con un número de acceso el cual es programado intemamente. Se tienen
tres oportunidades para digitar la clave y en el último intento fallido el sistema se
bloquea evitando que se continúe insertando más datos.
El circuito está compuesto por dos bloques principales: El de control que se
realizó utilizando una máquina de estados y el comparador que revisaba los
números programados simultáneamente con los que se van digitando.
El circuito de control se realizo en VHDL debido a que permite realiza¡ máquinas
de estado de una manera sencilla.
El bloque de comparación está conformado por un circuito de decodiftcación
encargado de colocar el número digitado en el conespondiente código binario, lo
cuaf se realizó en VHDL, y por un módulo que se encarga de seleccionar cada
uno de los cuatro números programados y colocarlos en el comparador,
dependiendo de si es el primero, segundo, tercero ó cuarto número introducido.
Circuito de control.
LIBRARY ieee;USE ieee.std_log ic_ 1 1 M.all;USE ieee.std_logic_arith.all ;
ENTITY CONTROL ISPORT(
clk : lN STD_LOGIC;X, CLAVE, BORROW, lNlClO, PA : lN STD_LOGIC;CLAVE_ERROR, CAPT, CAR3, RES_TAB, RES_CAR, DEC-CAR,RES_COUNT, RES_SEL, ABRIR, ALARMA : OUT STD_LOGIC);
END CONTROL;
ARCHITECTURE a OF CONTROL ISTYPE STATE_TYPE lS (ST0, ST1, ST2, ST3, ST4, ST5, ST6, ST7, STg,
ST9, ST1O, ST11, ST12, ST13, ST14, ST15);SIGNAL state: STATE_WPE;
BEGINPROCESS (clk)
BEGINlF clk'EVENT AND clk = '1'THEN
CASE state lSWHEN ST0 =>
ALARMA <= '0',ABRIR <= '0',CAR3 <='f i
RES_TAB 4='1'ilF PA='1'THEN
STATE <= ST0;ELSE
STATE <= ST1;END IF;
WHEN ST1 =>CAR3 <='0'iRES_TAB <='0'ilF (X='1') THEN
STATE <= ST2;END IF;
Continuación circuito de control
WHEN ST2 =>CAPT <='1',lF (X='0') THEN
STATE <= ST3;END IF;
WHEN ST3 =>CAPT <= '0',RES_CAR 4='f i
lF (X='1') THENSTATE <= ST4;
END IF;
WHEN ST4 =>RES_CAR <='0',CAPT <='1',lF (X='0') THEN
STATE <= ST5;END IF;
WHEN ST5 =>CAPT <= '0'lRES_CAR <='1'llF (X='1') THEN
STATE <= 5T6;END IF;
WHEN 5T6 =>CAPT <= 'f i
RES_CAR <='0'llF (X='0') THEN
STATE <= ST7;END IF;
WHEN ST7 =>CAPT <= '0',RES_CAR <='f i
lF (X='1') THENSTATE <= ST8;
END IF;
Continuación circuito de control
WHEN ST8 =>CAPT <='f i
RES_CAR <='0'ilF (X='0') THEN
STATE <= ST9;END IF;
WHEN ST9 =>CAPT <='0'iRES_CAR <='f i
STATE <= ST1 0;
WHEN ST10 =>RES_CAR <='0'ilF (CLAVE='1') THEN
STATE <= ST1 1;ELSE
STATE <= ST12;END IF;
WHEN ST11 =>ABRIR <='f i
lF PA='1'THENSTATE <= ST0;
ELSESTATE <= ST1 1;
END IF;
WHEN ST12 =>DEC_CAR <= '1',RES_COUNT <='1';RES_SEL <='f i
STATE <= ST13;
WHEN ST13 =>DEC_CAR <='0'lRES_COUNT <='0';RES_SEL <='0',CLAVE_ERROR <='1'lSTATE <= ST14:
Continuación del circuito de control
WHEN ST14 =>CLAVE_ERROR <='0'ilF (BORROW='O') THEN
STATE <= ST1 5;ELSE
STATE <= ST1;END IF;
WHEN ST15 =>ALARMA 4= .1'I
lF (lNlClO='1') THENSTATE <= ST0;
ELSESTATE <= ST1 5;
END IF;
END CASE;END IF;
END PROCESS;END A;
U0httid.d autón{,ms rts occid¡nb
sEcctolt B,Bt torEcl
Circuito de comparación
Circuito de selección de la clave
,t..............9.....
'n..............9.....:P..............9.....4..............q.....el..............9.....? .. ......1:4............. 9.....:|.,............f.....:+.............. J.....a..............¡.....n rsl c1i............-....-.--
!.1:;;.:::::: ::i::: ¡
irc . . . . - . . ..?. ..
¡...... ... .t...
tt¡c.....*qr....
ltux4lIIHD'DTDID'3t30
s¡oD
E
FgH
I
JitT_ol
+.+........................ i
Programa de decodificación del número
L¡BRARY IEEE;USE IEEE.STD_LOGIC_1 1 64.ALL ;
entity num isport(
a, b, c, d, e, f, g, h, ¡, j, rst : in bit ;
q : out bi!_vector (3 downto 0));end num;
architecture des of num isbegin
process (a, b, c, d, e, f, g, h, i, j, rst)begin
if a='1' then
Q (= x"0";
elsif b='1' then
Q (= x"1";
elsif c='1' thenI (= x"2";
elsif d='1' thenI (= x"3";
elsif e='1' thenQ
(= x"4";elsif F'1' then
Q (= x"5";
elsif g='1' thenQ (= x"6";
elsif h='1' thenI (= x"7";
elsif i='1' then
Q (= x"8";
elsif j='1'thenI (= x"9";
elsif rst='l'thenQ
(= x"0";end if;
end process;end des;
Esquema general del circuito
J.f.........F...rf.........s...¡c+.........3...r¿.........r...9,......... r...3.........1'...:,t. . . . . . . . . . I . .itr. . . . . . . . . . t . .
ri"""'lii"i.r.....!rr99..rt.......[!...
qüL:Éi'ii_;""':*ri É;;;:::l{::.:: :::::::: :::.
¡Lrn¡ #;;: : :H :j: x: : : : : : : : : :.
ttal l- - a:rrDl ¡- -.tr9a¡ ¡- -.:rrrl ¡. -.¡
D
c atáv¡
f
I
t,t_at
aa,-taaatC acr_caa
¡a¡ata tat_aaltt
¡ar-ra!aDlrl
atatla
l¡¡
t¡¡ i
CIRCUITO DE CONTROL DE UN MOTOR PASO A PASO
Un motor paso a paso es un dispositivo muy usado en la industria. Estos, tienen
diferentes caracterfsticas en su movimiento como lo son el giro en paso completo
o en medio paso, y en el sentido de las manecillas del reloj o en sentido contrario.
Un motor paso a paso tiene tantas entradas como bobinas en su interior, y
dependiendo del desfase entre los pulsos de entrada se dará un movimiento
caracterlstico.
El circuito de control se encarga de generar los pulsos de entrada dependiendo de
como se desee el giro. Las entradas del circuito son : Un pin para los pulsos de
reloj, otro para especificarsi es paso completo ( 1 )ó medio paso ( 0 )yel que
indica el movimiento en el sentido de las manecillas ( 1 ) ó en sentido contrario(0).
F = FULL. ( Paso completo )
C = CW ( Sentido de las manecillas )
lalol.lol'03
O1
OO
02
abcdefgh| 1000 | 1100 | 0100 | 0110 | 0010 | 0011 | 0001 I 1001 |
Sentido de las manecillas +Sentido contrario de las manecillas
Cada estado representa medio paso
El primer paso es realizar un diagrama de estados basados en el diagrama de
tiempos anterior. Con este diagrama se realiza una tabla de estados con los
estados presentes y los siguientes.
fi Dfii0 0 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 1 I0 0 0 1 0 1 1 0 0 1
0 0 0 1 1 0 0 0 1 1
0 0 0 1 1 1 1 0 0 00 0 1 0 0 0 0 1 1 00 0 1 0 0 1 0 0 1 1
0 0 1 0 1 0 0 1 0 00 0 1 0 1 1 0 0 0 1
0 0 1 1 0 0 0 0 1 00 0 1 1 0 1 0 0 0 1
0 0 1 1 1 0 0 1 1 00 0 1 1 1 1 1 0 0 1
0 1 0 0 0 0 1,l 0 0
0 1 0 0 0 1 0 1 1 00 1 0 0 1 0 1 0 0 00 1 0 1 1 1 0 0 1 00 1 0 1 0 0 0 0 0 00 1 1 0 0 0 0 1 0 00 1 1 0 0 1 0 0 1 00 1 1 0 1 0 1 1 0 00 1 1 0 1 1 0 0 1 1
0 1 1 1 0 0 0 0 0 01 0 0 0 0 0 1 0 0 1
1 0 0 0 0 1 1 1 0 01 0 0 0 1 0 0 0 0 1
1 0 0 0 1 1 0 1 0 01 0 0 1 0 0 0 0 0 1
1 0 0 1 0 1 1 0 0 01 0 0 1 1 0 0 0 1 1
1 0 0 1 1 1 1 1 0 01 0 1 0 0 0 0 0 0 01 0 1 1 0 0 0 0 0 01 1 0 0 0 0 1 0 0 01 1 0 0 0 1 0 1 0 01 1 0 0 1 0 1 0 0 1
1 1 0 0 1 1 0 1 1 01 1 0 1 0 0 0 0 0 01 1 1 0 0 0 0 0 0 01 1 1 1 0 0 0 0 0 0
De la tabla de estados obtenemos :
DA= BCDG + BCDC + ASCDF + enCnf'C + neCDFG.
DB = ectc + Ácnc + ÁgcDF + nscDrc + egcDrc.
DC =ABDG + egDG + egcorC + egCDF + ABCDFG .
DD = ABCG + NBCC + ¡BCDF'G + NBCDF + ¡SCD¡C + AECD .
Cada una de estas ecuaciones se desanollaron en lenguaje de descripción (VHDL
(DB y DD) y AHDL (DA y DC)) y basados en esto se realiza la máquina de
estados utilizando fl ip-flops.
El circuito consta de tres modos:
1) Con cada pulso el motor se mueve un paso.
2) Con un pulso sostenido el motor se mueve dependiendo del reloj.
3) Con un pulso de inicio comienza el movimiento.
51 SO MODO
001012103
La operación en estos modos se realiza usando multiplexores y demultiplexores
principalmente.
l. ....1rrtg.
?1.......+f...:
Finalmente se tienen siete entradas y cuatro salidas asf:
ENTRADAS SALIDAS
F-Hcw_ccw
SO
S1CLKSTOPPULSO
Los siguientes archivos son la lógica de Kamaugh para cada uno de los cuatro
flip-flops de la máquina de estado para el circuito de control del motor paso a
paso.
OAQBQCQD
SUBDESIGN DA(
QD, QC, QB, QA, F, C : INPUT;DA : OUTPUT;
)BEGIN
DA=(OD&lQC&lQB&!C)#(!oD&lQC&OB&C)#(oD & QC & lQB & lQA & F & !C)#(!oD & lQC & lQB & OA & !F) #(!oD&QC&QB&lQA&F&C)#(!oD&lQC&lQB&!aA);
END;
LIBRARY IEEE;USE IEEE.STD_LOGIC-1 1 &1.ALL ;
ENTITY DB ISPORT(QD, QC, QB, QA, F, C: lN BIT ; DB : OUT BIT);
END DB;
ARCHITECTURE SS OF DB ISBEGIN
PROCESS(QD, QC, QB, QA, F, C)BEGIN
DB <= (Nor(OD) AND Nor(Oc) AND (OA) AND Nor(c)) oR(NOr(OD) AND (OC) AND NOr(OA) AND c) oR(QD AND (OC) AND NOr(OB) AND NOr(OA) AND (F)) OR(Nor(oD) AND Nor(OC) AND QB AND NOr(OA) AND NOr(F)) OR((oD) AND NOT(OC) AND NOT(OB) AND (OA) AND (F) ANDNor(c));
END PROCESS;END SS;
SUBDESIGN DC(
QD, QC, QB, QA, F, C : INPUT;DC : OUTPUT;
)BEGIN
DC=(OD&lQB&lQA&C)#(!oD & QB & lQA & !C) #(!oD & QC & lQB & lQA & !F) #(oD&lQC&lQB&QA&F&C)#(!oD & lQC & QB & QA& F & !C) ;
END;
LIBRARY IEEE;USE IEEE.STD-LOGIC-1 1 64.ALL ;
ENTITY DD ISPORT(QD, QC, QB, QA, F, C: lN BIT ; DD : OUT BIT);
END DD;
ARCHITECTURE SS OF DD ISBEGIN
PROCESS(QD, QC, QB, QA, F, C)BEGIN
DD <= ((OC) AND NOT(OB) AND NOT(OA) AND NoT(c)) oR(NOT(OC)AND NOT(OB) AND (OA) AND C) OR(QD AND NOr(OC)AND NOT(OB) AND NOT(OA) AND NOT(F)) OR(NOT(OD) AND NOr(OC) AND QB AND (OA) AND (F) AND C) OR(NOT(OD) AND (OC) AND (OB) AND NOr(OA) AND (F) ANDNor(c)) ;
END PROCESS;END SS;
Lógica de control del motor paso a paso.
i..........:... r,.=#t1:¡F-
's"¡¡1'. C.!:-'f
Esquema general del circuito de control de un motor paso a paso.
.fl) Q1
t.......................
.....-ffi
Ejemplo de una compuerta XOR desanollado con el editor de formas de onda:
Para la edición con este método se debe escribir tanto la entrada como la salida,
por lo tanto si nuestras entradas son A y B, y la salida C, cuando A y B sean
iguales escribimos la salida con cero (0) y si son diferentes colocamos uno (1). De
manera que en la simulación cuando se presenten estas combinaciones se
coloque el respectivo valor en la salida después del debido retardo. Así como lo
muestra el siguiente gráfico :
A
B
PRACTICAS PROPUESTAS
Diseñe una máquina tragamonedas electrónica la cual conste de las siguientes
partes:
o Al oprimir un intemlptor llamado jugar, se desplieguen tres números diferentes
los cuales van cambiando del 0 al 9 a diferente velocidad, esto dando la
impresión de ruedas giratorias. Dichos números se congelarán una vez se
suelte el botón jugar.
o Inicialmente el circuito le dará aljugador 50 puntos para que pueda apostar. El
jugador utilizará un teclado para introducir su apuesta la cual no puede ser
superior a la cantidad que se tenga en dicho momento.
o El monto de la recompensa dependerá de la coincidencia de los dfgitos. Dos
dígitos sumará la mitad de la apuesta, tres dlgitos sumará la totalidad de la
apuesta, sino hay coincidencia la apuesta se restará del valor acumulado.
Diseñe una caja registradora de una tienda de abanotes que contenga las
siguientes caracterlsticas :
o Enter: Se oprime después de teclear un precio.
¡ Total: Se oprime después de haber introducido todos los precios, para mostrar
la cuenta total.
. Clear Entry: Se oprime para limpiar el display si se ha cometido un enor al
introducir el precio de un articulo.
o Clear Total: Se oprime para limpiar el total de la caja registradora antes de
introducir los artfculos de un nuevo cliente.
Diseñe una máquina de estados que controle el funcionamiento de un ascensor
para cuatro plantas. Defina las señales y condiciones de funcionamiento que
considere necesarias.
Diseñe un circuito que dividida dos números sin signo de cuatro bits usando un
algoritmo de conimiento y resta. La unidad de control realizarla mediante una
máquina de estados.
Diseñe un dispensador de gaseosas con precio único, que tenga tres entradas
para tres monedas de diferente valor, que entregue devuelta si la hay, y entregue
la gaseosa si la cuenta está completa.
Diseñar un circuito para el funcionamiento de un bus donde se tengan las
sigu ientes condiciones:
. Capacidad de cupo programable y un display donde se este mostrando
constantemente d icha capacidad.
. Si su capacidad llega al máximo, no se debe abrir la puerta delantera ( ingreso
de pasajeros)
Que sus puertas solo se puedan abrir cuando este detenido completamente y se
encuentre en un paradero.
ANEXO C
Este anexo contiene el contenido programático de la electiva 'Diseño Digital
Avanzado Utilizando Dispositivos Lógicos Programables y Lenguajes de
Descripción Hardware".
T'NIT¡ERSITTBIA ATXI{'IIOI¡A DE OCCIDEITB ].Dr5DIVISIóN DA IIft¡EIÍIERIASpRoGR¡tA DB rrfcrrÍrrnfl ¡r.rc=nór¡rce
ASIGNATT'R.tr :DISÑO DIGXTEI¡ AV¡¡TZADO IITIIJIZA¡TDO DISPOSITIVOS T,óCTCOSpRocR¡ttABr¡Bs y rJE¡IcuAitEs DE Dgsenrpcróu EARDWARE(PENSLM X996)
PREREQT'ISITO ¡ (C) ET,B TRóNICA DIGITA¡ II Y I¡ABOR¡TORIO (PIE¡SI'H 1996)cóDrco : pRortEE cIIRgo:p. rNo. BrrEerRóurcAStrolESTRE ¡ AREA PIBI¡ : SISTEDIAS DTOITIITES Y
COUPTXIADiORES
iIOR¡Í¡DA : DIIIRIIA VAIJIDABI¡E 3
DITRAC.CURSO ¡6,1 E. EOItÍOI¡OGABI¡E :FECIIA RtlI. : ARCEM :
Íxorcr.
1. OBüETIVOS.2. CONTENIDO.3. PRACTICAS SUGERIDAS.4. METODOI,OGÍA.5. SVALUACIóN.6. BIBLIOGRAFÍA.7. OBSERVACIONES.
1. OBüBTIVOS.
1. 1. OB''ETIVOS GENER¡¡ES.
L.1.1. Aprender nuevoa métodoe para realizar dieeño digital, con eIfin de tener una herramienta gue permita dar eolución a estetipo de problemae con ventajas como el atrorro de eepacio,facilidad para corregir un diseño, dismlnución de1 consumo depotencia, principalmente.
L.2. OBaTETrvOS ESPECÍTTCOS.
L.2.L. Conocer Ia teorfa de los disposit.ivos lógicos programables,para saber como están formados internamente y definir lasdiferenciaa entre loe distintoe tipoe de PLD's que aeencuentran en el mercado.
L.2.2. Hacer ueo de los lengruajee de descripción hardware como unade 1ae principales formas para programar un diepoeitivológico programable.
2. CONrE¡rrDO.
2.L DISPOSITWOS I¡OCIICOS PROGR.EilABI¡ES2.I.L DEFINICION2.L.2 ELEMENTOS BASICOS DE PROGRAI¡ÍACION2.1.2.L Fusibl-es2.1.2.2 Antifusibles2.1.2 -3 Celdae IIV EPRoM2.L.2.4 Celdas EE CMOS
2.1.3 NOTACTON2.1,.4 ARQUTTECTURAS2.L.4.L Memoria de solo lectura programable (PROM)
2.L.4.2 Arregfo Iógico programable (PLA)2.1.4.3 Lógico de arreglo programahle (PAf,)2.1,.4.4 Otros tipos de PLD-g2.1,.4.5 Macrocefda de salida2.l.5 FA¡,IILIAS DE PIJD-S2.1".5.L Introducción2 .t.5 .2 Altera2.2 IJEfGiltAitES DB DE9CRIPCIOIÍ EARDIIARE2.2.L VHDI,2.2.L.1 Historia2.2.L.2 Ventajas2.2.L.3 Característicae del modelamiento del lengruaje2.2.2 AIIDL2.2.2.L Introducción2.2.2.2 Estructura de un archivo de diseño
PRAETICAS ST'GERIDAg.
3.1 pR.ÍcrrcA t s DrsÑo DE I'NA ¡¡ÁeurmEI.EC'|TRóIÍICA IJA EUAI¡ COTTSTB DE ITAS SIG'I'IENTES PARTEE ¡
- A1 oprimir un interruptor Llamado jugar, se desplieguentres números diferentea los cuales van cambiando del 0 al 9a diferente velocidad, esLo dando Ia impreeión de ruedaegiratorias. Dichos números ee congelarán una vez Ere suelteel botón jugar.
- Inicialmente el circuito le dará al jugador 50 puntoe paraque pueda apostar. El jugador utilizará un teclado paraintroducir €ru apuesta la cual no puede ser superiora la cantidad que ee tenga en dicho momento.
3.
0835 (Br,EqfrvA) DrsEÑo DIOITAI¡ AVA¡ÍZADO IXIII¡IZ}¡ÍDODISPOSITTVOS I,óGICOS PROGR¡TABI¡Is Y IJETGIT'A,JE8DB DESCRIPCIóTT EARDWARE 2 DI 5
XXXX (EIJEqTTVA) DTSEÑO DIGITA¡ AV¡¡TZADO IXTII¡IZA¡ÍDODISPOSITIVOS I,óGICOS PROGR¡¡ÍABIJES Y LInIGU¡¡'ESDE DESCRIPCXóN EANDW¡RE 3 DA 5
- El monto de la recompenaa dependerá de la coincidencia deIoe dlgiEos. Dos dígitos sumará la mitad de Ia apuesta,tres dfgitos sumará Ia totalidad de la apueeta, sino haycoincidencia la apuesta se restará del valor acumulado.
3.2 PR.ICTICA 2 ¡ DISEÑO DE I'NA CAiIA REGIsTReDoR.tr DE I'tfA TIE¡ÍDA DBABARROTES QI'B COIME{GA I,AS SIGIIIEI¡']TES CARAETBRISTICAS ¡
- Enter: Se oprime después de teclear un precio.- Total: Se oprime deepués de haber introducido todoe los
precioe, para mostrar la cuenta total.- C1ear Entry: Se oprime para limpiar el display si se ha
cometido r¡n error af introducir el precio de unarticulo.
- C1ear Total: Se oprime para limpiar el Eotal de Ia cajaregistradora antes de introducir los artlculos de unnuevo cliente.
3 .3 PR.ÉCTICA 3 ¡ DISEÑO DE I'NA üAQIrINA DB EST¡DOS QI'B COÑÍNOI.E EI¡FIINCION¡ilIENaO DE ItN ASCE¡ISOR PAR CttAm,O PLllfrAS¡- Defina las señales y condiciones de funcionamiento que
considere neceearias.
3 . { pR.lcrrcA 4 ¡ DrsÑo DE ttN crRcttrro eItE DrvrDrDA Dog NltrÍm.osSIN SIGINO DE CAIXTRO BITS USANDO T'If AI¡(PRIN¡O DB CORRII¡IEJITO YRBSTA¡
- IJa unidad de control realizarla mediante una máquina deestados.
3.5 DrSEÑO DE Inr DrgPErfgADOR DE GASEOSAÍ¡ COtt PRECTO Úlrleo, QnBTBIGA TRES E¡¡TN.N¡AS PAR.tr TRES IÍONEDAS DE DIFREÍTI VTI¡OR, QI'BEnfn¡Cru¡ DnntBIrTA SI IrA EAY, Y E¡tTRECtttB IrA CASEO8A 8I IrAEI'EIÍTA ESTA COUPI¡ETA.
3.6 PR.ÉCTICA 3: DISÑO DE I'N EIRCI'ITO PARA EL rI'NCIoIIATInfTo DEItlt BIIS DOIIDE gE TEIIGA¡Í IrAS SIGUIEIEES COIúDICIOIIEST- Capacidad de cupo programable y un display donde se
eatse moatrando conatantemente dicha capacidad.
Ualr¡rsidrd lüt6nomr dú Ocú¡d.úsEcclon 8¡8Uo¡Écl
:(xxx (Er,EcIIvA) DISEñO DIOITA¡ AVI¡IZ¡DO IXIII¡IZI¡¡DODISPOSITIVOS I.óGICOS PROOR¡¡IABIJES Y I¡E¡TGII'Ai'B8DE DESCRIPCIóN EARDIÍARE 4DE5
Si su capacidad llega aI máximo, no sepuerta delantera ingreso de pasajeros).Que sua puertas solo €re puedan abrirdetenido completamente y se encuentre en un
debe abrir la
cuando eetéparadero.
4.
4.1
4.24.34.4
5.
5.1_5.25.35.4
6.
IIETODOI,OGÍA.
EI curso ee desarrol-Lará a travée de:Expoeiciones magistralee iluetradac¡ con ejemploe prácticoeque ae resolverán conjuntamente con eI alumno.Trabajos dirigidos usando e1 software AJrTERA MAK+PLUS IIProyectos individuales o por grupos.Lecturas complementarias .
TITAI.UACIóN.
Primera práctica ....20tSegrunda práctica ....25tTercera práct.ica ....25tPráctica final ......30t
BIII.IOCR¡.FfA.
CARTER, .fohn W.. Digitallogic devicee. New Jersey
designing with programable: Prentice-hall , L99'7 .
HAYES, ilohn P.. Introdución el diseño lógico digital.Wilmington : Addison-wesley Iberoamericana, S.A., 1996.
NEI¡SON, Victor P., NAGLE, H. Troy, CARROLL, BiLl D.,IRWIN, ,J. David. Anál-ieie y diseño de circuiEos lógicoedigitales. México : Prentice-hall-, L996.
INSTITUTO COLOI{BIANO DE NORMAS TECNICASTeeis y otroe trabajos de grado. Bogotá
Y CERTIFICACION.: icontec , 1996.
jose: A1teraAI'TERA. MAX+PI¿US II Getting started. Sancorporation. 1995.
ALTERA. MAX+PLUS II AHDIJ. San jose : A1tera corporation,1995 .
x¡(x¡( (Er,EerIvA) DIgEño DrcITAfr AVATSZADO rrrrIJIZAt¡DODISPOSITTVOS LóOICOS PR,OGRAIíABI,BS Y I¡ENG'UTi'ESDB DESCRIPCIóN EARDMRE 5 DE 5
BHASKER, ,Jayaram. A VHDL primer. New .fersey : prentice-hall, L992.
WAKERLY, ,Iohn f .. Diseño digital principioe y práctl_cas.México : Prentice-hall-, L992.
MANO, M Morris. Lógica digital y diseño de computadores.México : Prentice-hal-l-, L982.
7. OBSBRVAEIONBS.
ANEXO D
A continuación se presentan las diapositivas correspondientes a las ayudas
didácticas para las clases teóricas de la electiva.
i:Qxoso()5cr)
eGaJao_FA.t-Ll
s88
tFss sa58;€
E$I
r$$
T€ F S9*'s: e
it:FF-n?E g Q s5€,8
Fg i F üBIÉ ! iciP:ñE r s$s€g* E rgg$gB F E SiHE EÉ igfitFiSÑtRgIt
Gs
f¡]A4SEEiA(/)
H4úH H
HHH
(/)
3HH8EÉFHTEHgq
P{
H'r. É
HAH
EH
ao(Uo
a-+,LoU'A.. o o
8 -s tro-aa5f,=b,+ +
U'o$l-o+,ñJ
ocoru,+, ¡- r-t
6 Sü=CUC= o-og a coooC-6OsÉEgHs€:Éo d€ctra8 E.EÉ E',g-oo-.É E€g 3gJ\JOr. A ()
E 8sEE 8-
F
-I.LtrOT
oE$Eñ!-o¡ot-o-oc(E(JE(I)
(¡)
o'6=TL
oüffiEo(Jfl)Effi0)
{I. '-lt. .l
l.'-:l
tr.JaL(I)
-G'f,n
=o)E o.$ '-t .-(l)F
.F¡ =ñrE{
¡T
rsu)*¡lgos.\¡
*r¡¡
$Nq)Eo!+rf
$.c)
dEe()
=aa
soc4
u)
e
s,coo,s\t\
Ito
Uo¡rüsidrr, aulóoom¡ rte &cid¡¡bstcctofi I EUOÍECl
ooG*E s-coBE
$sBSESSE:
\J\\Js)orEE Su)s=
e baEf;8ñ*ev' o.Sr\nO888so.$l$,s.3ESSF R GE:$r\s ss) oqa.Eo
$.SEosIcooou)
$Efl)
=o-fl)EoE.Fo
oCI-E8o-8E€E'F=om
HI
g+
oi=<u-
.l_¡oc(J(E+¡fl)o.lf, iF
fir(Ett$fl)==ü- o-
t¡tlU f¡{tr{p{
ift
o0)(|)E=-l-¡o)T]Eio'6,(|)tr
E.o'(JC)0)(I)tn(l)E$E0)
=o-
E$l-m(l)=LLE
oE$c'c:(n(¡)=OE
oEoc)fl)E$E(l)
=o-(fr3$=t..-¡oo-(¡)EoE.Ro$(J.ñ(I)E+(E(l)-E
ü
su)(\
I
¡eoso+r¡aoa.
IsrQ()$.g.€
oEooqo
UÉi4
qUEÉq
4
H
ECN14
UÉÉi
4II
I-+*ft
ttl4Équ
$Eo5a-Eoo$s\\¡obsrQoo!+r¡,
os$$o*rr(\p
l^\ ¡
aq8dAaE=o{
cn
gob\
€s\Gt|irf
c4Q)
o={$E
I5e$a.qrQ.\¡o(u
t|¡¡,
,o
UÉq
4
lTflüHUFfu] ilF{ F{HHEH
If
jTflüHUU4ilHf-i1 F4
EtrÉ1 U
Éq
4ot+rfo5be
srQ¡\o()oQot+r¡
.S
eso$q)F
.\r
,ESS TS
EI8 FÉ
út s$;n
IüÉüÉE
Soq$-oa$EeO)e
o_
et5¡q)l'/ooqobCU'=oEo
i$s.Q()
E$
Ie E5oÉ
qÉ
HÉ{ff o-tLoz.(oJ(}ltlE.E{
ü9E3
HH ot4€EOE
Hüt50rff
ü EF € a
ÍsS3 üE n:FtFIEgfi3 F: Eg*Ffi O
E H$ gÑ$ü F
EEE E_E.-É'g g
coo+¡¡co
"ffir:&¡+' i
WrÁ iffilg".ifK
w' ¡wi?i¿líí:,Y.:::i.r:
sff¿, I
, ,S.
q) u) c4EOOE'E'üF€€8$F
$€
EÉE*€ s-q)E E€SRa.9,üoS $,, S \
1 \rt
d $€2 S''n;gtüos-g gS EUScnEdd€ 8 E
€?,8Eoa.x'Q
eÉ8HüEHE\4.,g .E$a-l\\c{ss Fb8NsdP,Q)()vts fEd:E i$sÉ
soqco$s-sIu)o$.go
'Es
a.
FooO)
S$s5\,o
ob.So,oco
oa$Eeo,ea.
\I-II-T
Iq)Escf)s\o
IFr\ct)oBES5s
üalrr¡lfil Autonom¡ de (hc¡or¡b
SEOCl0ll t,8l-lOftC^
(t)o.-\o
1r:
ztr"
o
FdeHñf;
ÉÉe\C¡
7tr"
zot
lU E-AZnElY,E5?
UM
l\I
3{qnúE-zft¡frlo4f¡lzJ
t*r€¡
ntcol\l
o
Oo..O11 C{cqsfú)r-rrñr
fr¡oú4HÉi
H*
cnssoSM
g()f;
ÉEH8HHffiHfr{
BÉq
HH
OO O\ c) d (\¡ Cr\ {- (ñFÉFÉHÉ
tr{lnf+oHH
o-ñtñ)s-!1 rot\
OF4Ba*A-Ets
t*r\onsCrl
I\I
o
T34q
Í¡¡f¡¡A(n{14
Ff¡l
888 s -oo-Eb v) I :E.Q.= gDeG óg *lt$ñO8: ilF ÑÑ
á$H Ys . S$
$€€ É $F Íl*üñ tiHtE cno'B t ñ€.8 =0 eg*ó FNF $a2
sEt pfi gsniSB; ttür e sFÑ F€ $TE ÉEEFEE A i üS X € É
i$sE Ei3 EE sfl *üt s*$ sge"3
oEoosr\¡
C)osooJao-.1o_
ob
IEIS¡\rr| -'oco$o
Socoq)
$!+rl
,ct)
¡l
oa.E$Ooeaou)u)oa
oooE\o
S ES $H fi:
$*E ; t üE$
:fiE P$g ÉFE
iEEÉ$$fl*$$BFpr$tütfi$É E$fi l
sÍ' s$t sEEtxsgsssTs
ea(Ü
¡aoa$oiE\\¡oocn
l{l
s:Qo$o
\a.
ob
€
eO)ot+i¡fF\¡
ot|¡¡at\
5.g,o
a
co
€
ssoC)
$\
s.sco
u)oe\-loo+r,¡\¡
o
$\\#)nlEprsro
'o
t\\¡
a¡
f,lü.
_Ét€Efi$E
o-
otro-oO
EFgs-c g
F FqsEE"S-5
RE;5üeo
aao
aaa
aao
5Hlt!t
$g
gEEe6ñ
Fs..'
ooEo-
s9CIb
ss
ot¡(úcl¡J
E
.9CDo
ls'jot|¡¡l(\\eer\¡
J
É!torgog(t([
=
qi*¡lse$acosE$oc4
o5oe$aoQ$Ee
u.E $S E*--\!uttr 5s)Y :o9S--FO6ru\56= e ó(Ü()f|\-
- s E.UqrE heF())gSñ$\ñSo g:E'.E P:o. R'x +á\ A, _fO
J¿ rts rr\ v
8.Sü o¡E E\¿a-==)-rd€- a-+P b (t'r^s (sñr-!PbS-^cn'- G afu$q-o-.\ I _9 a.J a.b F-
O cr)
b$.9A8,E8F€:É F i üFs i $ t iFF É t $ fiq u .; R 6
,És É E € :l0S q d S 'a;ñ I S o $Sb € e s .s'tQ' 'D o I 'd-
3ü q t E gÉ:B,S€E$ 3 8'F$! T Pü F CO ES EkERSSSa.oNü$;g*
* * *
$soE$
=
ato.Sob
\o+¡lo5bso()t-.
t¡
sflF'so5()soq)
at'
EEt s
ÉfÉ3
I3€eE
É
e
F€I'eg.5
É
=T
F
gi3ÉII
oa3
.E
?3ssÉ?EIE?5$áI$üdi,¡:¿¿
Ea(\'
3E83gséidri.:¡üa
s3s3g'
¡H
E* ñ
ü=*
¡5.g¡
E.E
3It
EE36¡<!t*-.I-Ex5
F
=F
=g.p'atTE=z,
&€€?E
E?!TsE5
¡a
T€$,E=,f;€.1.
dEÉ':.ñÉF*dÉ's
HÉr.l>-q.
HF3..¡..¡cl.q¡.!'(lIaRa
=gsg
3$É
*t3R3 3
s$Eep$sF
EEFÉ
uñsÍ3csXÉtEgrgr efr ñÉ
3tC*bd.o-?¡P
-!¿
Gt¡l$obct)IF¡\cnoCA¡{,a€S
EE5tFESE
\
S8sa
tfi-JOLL
RSTE5s\d
*Rt3
Hi
üÉ
5E
6u){-.1O
SE.s$
-.1
\oa.ob$-¡a.P
er+¡¡l
so5osoo
u)osII_u)
Unlr.rlldrd Autü¡omr dr OccuübsEccroft 818U0Itcl
I E 8$ Ifi E P$ 'E$Eg€sBA.^!ee I €$ o'
s o ñ'{ s8 F Es H
R¡ ts üE ü
:S:E s; *i;EF F* -Eg\ ñS FS .,; $ iBs F*:S$ g :o-,P a-8I-'-.+E ¡:
ñ
EsEIinñEgtE B E.F S$S óe s¡E sSEEÉ ?ñ,EóE Pñ RE s 8'B *;Egá8Sáñ€s
Éct)
€o5a.Eoo
Goa(ooEct)ob$'tso5
obso
r()
R€€ \E fifiFE$;ngHE t 3:f;oüñ t o
S S üF E
X ügf 8 ai
S *s'ü $E
tE $$e$s E a¡Hs€€:oEÉ€€Bs$ñESEF E$ s s o o.\-.lOO()9. a.
s€aaa
aoa(oE
Fg
eó@:¡
ooa
(oPES@=
5&EüguEtR5**=>- -
;E
(o¡9 Cll
o
ñcr)
(!
o@
aaaoNo(o
(\I
o(o
aoaocEg(\|
o@
I¡5oÉtü:aJot0
cÉJootrDo.z
t'E EIS
8s$!Eg* Ñ suüsbñXNpo\F S
o,6'g
F i *::S,itFHgsI R:5 üE Rg FE E; F
É s* oÉES a SE Ee q'
$tE;es ñ
E E;E$H H
€co'9g$pa{-.1c4
SosoC)
u)
€$Nssossqo5oso
Q)u)
\
u)$booeoGE(oF
5
€
o-t-,.Q
a{-.1
S¡l
oa{J
IT
rO
:Eg
FEsE
-92OEEF*Eu¡Ée8
*s5:HE
l¿8E-rOnEF8..cxvr|u,J
Esp$
gE
FF
.9
i$€AE$gE
6--i- c)Eooo
EEoo
oE
(o()o@f
\f(oal.\
L9OEEFit()sE(oo-d
f;sÉ*frE
.cEEJOxEtr(D.Eg(/)ul
:Eg
Ea
FstsR
SE
F&q
ESr&ü
.9
5$€AE gE
ÉfLu¡9ts
ctr'EboE=
ñ9€Eo6
€$6o
E
EoGo
5
$sEs
E€q€}E3SsF8.Uo5$üao8B
tÉt.F ÑE¡¡ v
Ooca()
!s$
oEooCO U)$o
üE=\)f;Pñ5$oogs\8.e
()
TEd8.
,F 8q¡¡dBStseX€t*
sooooN ,
ETR8HpgE ü
$$H
t qE
TE ESE cd
ÉlEI.H E
s€B
^-
So_
g
$-.l
$,8 gi ü
E$$sgsE gt88E 3e;
ttfit;tt sggs*;H$ürügeg*Ég
$s*oE
€qo-Jo_LU
.o
ItLn*U\'ü¡¡
ocuJb
\É
Unlrrnlüd Autürom dr occúnfstccto¡t 8r8u0fsc¡
888o'sF
ob.
\otl¡¡l
soo
s5€coobs\o
¡\r
o$s.Pt\
.=
E
s\oo$r\¡
osq)\\¡tooco
Is\o
.\,r
o$()
\
""'o
¡o,sosS¡\
.-r{l
zIOo_
É,
I'atU-
ct)o+¡¡,
-$'(u
=E$(\s
GeoS
{s5.sc4
\\$oEs
I
'(t)og\oEcoo\$N$sT
+r,coG\e5t|rrloEl.fr
I
.\¡osIsoa.obq
I
os\o¡\¡U,.S
¡r\¡
aI
|\r
C)\\¡bQ)qI
Ii\
so
\Jc4
-o
so$ttt¡l|.¡\
EGEs
o5bp)gE$a\
G:+rJ
s:Qo
ob
Ir\s$os'tos.,$ob
obu)oIi\.sc4ot\o5E
obG(t)s\q)co
obo5a.
q\-,(t)q)
-.1o{
I'6os
=EG(\s
eo,ot|¡¡fs
sooe
l.\aO)F
€
soob$aea.(U
oñ
o
dN-.oF
ú
H
\
-.loI
IsrQ
r\
()$
s\$NGeoE
.Q
€$s$
IoSO)
s(o6O)F
I
cr)$lln¡f
so.\¡E
sot\\
t\aO)F
Eeeae
I\\,+rf
:$
=I$cno
$+¡¡loa.Eo()
ob$co.S
e
¡{so.Qo
95+r¡qo
soo
€qo(D
¡-r.
o
's:9QICU
-.1I
o\r{tt\\¡
q)
CUxelrl
I
qobq)b
o-t-ssoo
oEoa.
oEoq
ñ8s
Fg
o\oa.o
o.\¡s5'- r
O F- Oñr-\ O ts-r afi.rr:ooss (\ F.g,S d
=Lglr.l (¡ u) EI
ors$t\F\,$t|r¡lo
cno+¡¡f
(/to*'rasoq
os
.CÜE
IE.s
obcoo
{rrfc4o
'E$Eoa.E
os.Qo.$o
€sor\sEooea.C"os.gos\
€
'ó
\oa.d¡trlso.\rEsq)boE
oos.Et¡l
o'dl5o,soE
$¡ ñ(\\\\o\r, .\
-s8FS-a*3v) (u
CU
SooEoo
tli¡¡
osu)o
o(t)I
$
.Noa.Eor+'¡fosoE
o
sornG
IJJ
$Eta.qq)
-.1ass
t\o
ot|¡¡f
o5b$a.
\Jogo5Otcj
'osrGa.obs:9()
es()oa\F
ooIs:9oesoooc'j
$sobogo5Oc.¡
(\\,,rQoe$oooF
Eqobss5
u)s
ssE
*
.\¡
sflI
Ptru)
g)u)
osoñF.=
r+¡¡f
5o
so\o+ia()
e$o\q)
C"\(uF\
os5c)b
G|rilco
so
eaos$+rfsou)
s$soo$s
u,5as'\qa
ea5C"
$s5\ou)obo5a.
\ob$oiF¡\
+tr¡lsobs5
+\¡
S,qeoIttt¡¡()
e$o
ot|rrfu)o5a.Eoo
E(UoiFt!\
t¡r,sob
C\I(Y)
G
obeoa.O.,
{,\
€Iob\o
u)o
q)bcf)o()
s€
sF\r{l
or
\o(t)qoa
h-c4oso¡\
$s5so O
o\a.s$
'oob$
ñ
ct()iF\\¡ooBq)
oEq
'ot|rra
ob\oqot+rf$o
orhrl
|.nlI
(r)
e5
\€
ss
$rsoC"
oqso
qta$l---
5oEs\oC)
eaEq
€s5'=r\¡o()
s¡\+CU5tt¡fo$
$.\otüt¡a
.Qt\
$t\\¡\{toso.\
l+¡¡,
b{\osf,t¡
\.lSl.tJqcr)
$F\¡\t\,obs$(t)¡
s.g)(t,$\oq
SqsN
q)+t¡a
e
osoEoa.
ct)oco
sou)
e
su)o
+r¡a
s.g
8oFqs\=l^t
'(t)$oobo+rr
€i
Unlrrcldrd tutónoma de Ocs¡dütfsEccrofi 8,BUorte^
HaoFq
Ioo,p¡a$
€ot|ir¡qoEooI$C)qo()
r¡to¡|¡¡¡soEgoFF
I
$s5oEoC)
(/)
PÉcn
-llrO
€
bqo
ga.s$
\.Rottils$
o-r
3's
tr
r¡¡
6o*raF
ru)-.JIrOo\a.s
s
q:Q()
esoooT
iFIea.
¡\¡-+n¡,
ob
o5a.
o5b
'aooes
so()
obs:9
trl¡
IJJ
tr
obsQ)co
oo
$rqoco
ottt¡,ob\o
'-lqt
a$'t$
r¡\r-+i,
ob\o$\oE'ta.op
aoSIYOo\.lo
'oes()obeo.Sa.
$\
s.scr)
5E
Egot+rf
.So\.l
s.930
cooso.\¡o
i$rq
^ .A' ¡^r(\|C¡
\rf \/ \/NNN(3N
sobEaEo
iFEoo€
Eod',s5
$r+t¡l
€\Gb
Gbr\+t¡¡soE
+,CtuoE
Í¡s0zillo
ob
s\o¡\oe$
obqoEo5
cD'o
{¡rl
Q,
*r¡\!to\.
.St¡
IJJ\-la
N
ffiaoOIJJ
aEso
obiEsoob
c4
eo'cotttrlr\$cn
g
obs\o.\¡o$.SaEo()\o¡\Sb$5o\F
osor\E€oa.E
a.ee$gqg$r\¡
()so5oq)u)
s:9oGs.Q)co$ob
o+r¡as5.FoossoEoocr)
c4
sIo
$a.coot+t¡f
sora5osoo
s:go$s.Q)co$o.
'ts\¡oos5oEoOc\
E.5+r¡()
Eqo
U,ol|¡rl
Eoo
obobF$
t\\¡\Gtt'¡fu)o
so\¡5O)\¡c4og
o5'g¡t+ra()or|.¡,r\
s $t|¡il()oqoQot|.rl.S
oEoOF
obo(\a\\,r
$5oo
¡h
F
obo*'¡¡s5
U,obGt+¡¡,
oo
't()coobq)
LUaooIJJ H
a¡¡q
ñaqñq\Gs.934
a$l\ssg
tO63a.tC)
Eso
=tsosoa.Eo()
'soa.EooEso
oa.
a.Eoo
.-,(\\¡o¡\r¡Fc$Q)
zo*.¡\-É
eG
r¡¡
0NLU
¡\
rcn
olIJJ
aEso
'qc.)a=
a¡
cr)
=
=t¡
N=
St¡
F
=
a=
\.la
ñ=IJJ
a
o¡¡s:Qoeos
Q)beq)so
or+¡ls5'=r\¡o()s5
()
eoqoosrQ
r\¡
o
{
eo\h$Eo5bcno
bcooFqc4obsoItrf.Q
,i
.\¡
.ggosoo)Eso
es()ob
gosoU'
aEos
$Eo5b(t)¡¡
cnoo
*,,¡l
e
sp=\\,oF\¡oo
$Eo5oU)
-t -,
eosq)
o
c4_$es\ +¡ftc)qsF, .\.b5corob
co
e5t+rJo\iu.Eu)osos
o5\
ortil
C)
ñ\o¡Gos5to€
cn5$q=-¡ $.rr .\,rEA(tl Fñ\oTO
|.fr
U,
Es5O)
.$
'ct)
h$Eo5oct)oN
E\.g
cit|ra
eo.9
.P5
cn.N
obso.\¡s
q5eso
.s€$cf)
)g\t*NqIJJ\*
c\qIJJ
o
tcbGs.8)q$
G
oE(t,\o
oLU
oES*.ooHr\ñ
e$
$a.co
€Iob
bobs$c45
o\\¡5b
{
BtrQ)bo.
tQqa{\¡$s.930
(ooq$
lEIl
r.c)
;
¡\
o-laSbs
$({
a
l*Ll
b
oilÉ
oOIIJJ
oEso
r¡.l
S+r,ostlV
tsN
+r,ostlVqr{¡{
ostlV
oN
qñao
N
¡h
€o5a.
IoB.,/
t¡
c4oeo
b$b¡-,
t+i¡
so
C)qsoob
r\
bIEsosIEaEosEso
obcn
eaEos
\,
troa.
ob$
F\oco
o5
Gq5ob€
otlrrl(\q)
¡
\.looeaEo
=biEso
ñlC)
$s¡oEoo
$$
€ov,ob
esoooT
osoq)
!+i,
so
obol|rrfs5'=
$otF¡\oQ)Isor\¡
E$ob
q5
*r,oo+t¡l¡i\,
e\\J'*¡foo+¡¡a\
\dl
a¡
U,o
$s5IS
e5rti¡, soEEaEosEso
'oes()ob
.SU'oa
.Qb€.\¡!l¡t¡,
sos
*.()o
*f¡\F
e$
q)u)$+¡¡lq
\
5u)
sq)
€o
ocoooea.
s:9Qoa.
o5()ou)
co$
sf,ctc4o r¡\
+r¡l.oro3oooea.Eso
es()ob
sr\U|oa
zoE$+{o55.\
+tr¡lot.
'(u
Fas
i\o.\¡os5
s:Qoeoaso$
'fs$s5
s\o¡\,()$q.p
osc45c4
sq)soEe\
'soqcooa$'=sct)$
-.1
oIo\aG'lG
5O)ct)
$q)
$
o\
€oIs
co
gso+¡l.Qxo
cob9
qo
c4$Eos
€
o\
*G5
\oH.G
s.
\oa.opE5co$
Q)qos
ia\q's.934
s\o¡\o$s.g
zl\\¡\oC)$s.8)ct).
o¡¡u)I\¡CU
+r¡l
e
$o()$f\
oct)
€8ñ$HBO F-.S
.4. r
EqLNq
Errlffir\LNr\
ErELfi
Q)t\
t=EfEfrlu]frl
EflmrrÍ1r
ffiqLflEf
ErrlFr\¡Lfir\t
EF
mLN
(t)saF\
Unlr¡rsldrd Aut6nome d¿ 0cclónbSEcolofl 8,8tt0ltur
\l-F
cnsoF\
\oHG
'GcF)
tlV ¡\
3034ooea.Eso
¡l¡¡ou)rY¡\.
¡¡II¡a
ooa.E.Q
()iFr\h'jsobi¡\,
'$s5oB.s
otÍi¡aso.Eo()
\IEt\
s+$rso
$8B
o5b-t
cdosor\o
co
Ess(t)
\o
Eo!|r¡l
|.fr
t\\¡5(\Q)
$rsou)
o
.SU'oa
t4t4ooea.
soh-
""'o\i!s¡*'a¡\lu
=
'so
*f¡\lu
=
o+r¡fse
*
obEso
coooea.s
\
h.!?oct)
s5ct)5sC)
oleo$so¡a\oIs5ct)5N()$s5
Io5a.hr\s:Q()
es()I$\.l
*t\
Eso
'cn
u)osor\¡
()
es()ob
ogo
l¡
go
l.
u)i\o¡\()
E
so()
es()$S
\
$s5$sor\¡()ooo \qg
.sle.Q()qo5
s\o¡\c4
eR.osoF
q$Eect)
soo$s
\\o
F\¡o\\¡oq)u)u)
5ooct)
cnos
$b$u)$as\o¡-()5oo'O-..
se$a.
o30$C)
s:9oe$oob$
-.J
¡h
o30GoEso
osos=L_¡
soF
==
.,P
ELri
(\\¡rQ¡\oesC)oE
ct)qoso¡\o
eo.Sdh.FE€
se.s\
€$oiFEss\.P
'or+r,r\
oboEo5oqooct)o
'obcoo.ghJ
(t)
e\$T
o\Eso
q5obct)
'$--l
0-o
cooso¡\¡oeG
I$co5u)q)
a.o.,
$Eo5oU,
\oa.co
€$(t,5
s$co
$o,Ga\
e
c4(ub$r*¡l5oo'd.
so(t).
co$
\tE\-.5u
I
u)q)
srQr\¡
o
tl
oEF\
=
os+i¡L
xosrQ.\oes()I$s5
.9oo$q$r+rl
|.fr
ctNsob
$so
*rlqoE$b¡\,
r+¡¡l
oa.e
ocoosor\,r
oe$oob
oBoq)q
os
eoeotüi¡a
$-.t
rQ¡\()
eorhrf¡f\
o
oEo5a.
$o
osol¡.lsoq
\$+i¡l()5o.\¡
ti¡¡l
ol-_ _
t¡L.
xo
oEssob
'Q
sooboooT
.QqIJJ
a
oE
s
{
a5¡lr,ooEr
o\+¡¡,
so¡\Esob
¡\sa+¡fso¡¡
t|rr¡t
5oilf,o
l¡*.a\\ .¡¡rOF-Fda3iltrqO\¡()G>sÉ.9o 3¡,
Stroa.
sosoa.Eoo
l{ES*raoott\seG
oo{
--Jl-.1f,\Eso
'oE
oa.s.il
oou)
s5
.bqe
o.¡\r
E$obo
rtrS&¡\Htso
c4
s$bobo's.F
I
t¡¡
P\,
¡h
oH
il'Eso
tsqtlV
f,u)
'oea.Eso
ao
6sa.G
s
ot+¡lso.\,E$
e5+-()
Ect)oII
Unlwsl@ Autónom¡ or fr!,datlf$ocni &8u0t¿ür
F=oü
E=tfl
)
{m=ü
fftE+rItrEfuE{f
=-'l¡-
Íl+¡=
. fllEItrEEff-Eff
(.)
orso
€obb$
s€o5a.ct)os.9
(/io.g\r¡l
6q)*rsoso
ob
Eoo
s\\J'
s,o¡
\or\¡
oesoo
I$5u)5s()$s5obs$c45
'co
€
€oa..s\oqoO)o5
r=¡
os.P
\
cnocoo()Qa.
coq)qooesoob
I$cn5
ct)c)
t!-
oesooo
r¡\+t¡lt\\¡o
ooa\
s5e
obu)o
e$a.
€$
e5Pso
$s\-l
o
qoobo
obs\o
r\¡
oe$
tH$n$g$=
$i s; ::,!E;;É:iü* Fts $ s
ErE* * He
$ E I:;8fiRH€ü $ ¡ssFEEqt€Sl *$tE Ft
$;HEÉE *HFpgt g¡
SEEt 8€ f 8 S R
IJJ
oSo={
-.1
=otr0_E
(
OqIJJ
o
IJJ(
SoqttH-.1
$'\s.Qo
I\
€$
sqoo
!
luttr
s8E g ¡¡
8EÉ$sñO:E b uJ-
$üH
:Es-.J Sooüsh:-.1 O \'l'-.O
: gE:Q Ag$*€ESO8 Rüa
\s38.8ffiHEct) \
€€$$
g'8G8EH-.1 Ct,
SEÉI\{E;b$B ¡\
tuEEEs= o'=-ssu$Es g$oo-.Jb S
o=IJJcn
alJ_l
o
oÉIOq
=f,IJJ
ot¡1-.Of,sqIJJ
\\\T\¡\¡
EIo
F\E
\\
U) COooSSTE.su \d€a.
88Eo.t
t\
8fi\r\\J' \-
tosu\ñs€$gss ES ¡b
lJ.l-
8.8 *r.8Ns Fs9óp\\gog$5$a.ba.
ob
srQ()
e$oob
$-.l
U)qHlx
tñ
s:Q()
e$()oa
Fo
=Q¡sN
rrilrroH FA= _¡r a oTE==u, ll¡ ñ -t E
F ilse=ltJ
=t\- :ñ
oi rr
a¡\acr)F
II
8S$ñ'E
.fi F*
$ $,HüEgq*
SSü\5,.'So
l-- t|¡r,>F O
3#eCN TJ
EÉ i8.R
F:d n gd +3 s .¡
sEsSNiñE Loiq\IHB*ea
o.S*Jqsoo
osoob5()sl\
9f¡\
t\
e$s5*iiYa.-gE=c)S uJ-
bsiESooe.'SFsose.Fsqbea.$
LUo)-.1O
=
srQ¡\¡oesoob$-.l
üo)-.1o=
srQ.\¡oe$()oa
l-.
-.1qlIJJo_o_)
l-=ilC"
=oo
ttJa5-lo
=
H$$l+'¡¡
$btl
\aG+t¡,$?r
=v\ ¡hoatü=
^,4 uJ
l¡*.S*,qSoa¡
5¡¡
osa
=\-rxSa$r|¡i¡I
' ¡\*ta
¡\ ¡a3d':c\.Er
-.:;q$s\-Et=qxe.{X=*SENüfr8rfalU5O(,2\,
so€G(t)$a\Gt+rrfqoq)5b¡¡he=a.gEsh-S€€sg.Eo)o*8.g€ttrt l\..sd\SgS$p,FL
\$
srQr\¡
os\€Gs5c4oCU
5os$b$¡
sosrQos.F$s5
a\
ñob
o+rf.\¡
soa.lll=\lüosrQ¡\()
es()oB$
-.1Lri
=LLIJJ
aqrQC)
e$()
sbLqg
:ESoo)a. r\o=€g .
'H sqq
$ Éa8 E:,qb I{'D
E2bÉFEPo3g'n üs
H.3 Ea
¡h
\otl¡l¡\ (U
=e:o,BSe¡B¡\
EE$o\_, _.1p\,ñ=gq5Poul=qotro=R
o5oq
'E¡i\4.€EE rrJq(t) ¡'= cnco
:Ñ
PT
fiñ*BF- lSPEHEts=üÉ€
9€f,.sl{ co
8€
c4osor\()
esC)Iu)$--lu-¡o-
F-
Poqo_
=otrO
=f,LL
s:Q()
e$C)
gEu,
t€G=OüabEg sE'S ü -.1g es
fr=;FFS SSS $\,=F- g$
=5ilftüqCr,
€88S 5E=ooo5a.*a-l.-vRq.suhonSR-a*:ñN'F,H EHPqü d.gE ó.0Y
9.jcr $ q\J S.F 3_, (\
U I €*QLJ_l o -¡
N$.S H
,E:eEg\PpG G C98güEa
r¡t
o r¡O=sll
*¡hl-ls5des=¡¡e¡r CF) i¡v{_.1 ño {
Hq\tr s\q= neN.o \{a\30rtJ
a\,530
=2otrhSñ4.a)cn
u)
,E$HEq
q$S-l
¡\¡r
6f;ÉKE\qt€É
F$E
IJJ
=ELU q()g Fs3!eHA8flFssss:Q :9 :g :9oo()()eeee$$G$ooo()oooooooo
ct) o8E$53a.(ngoaE.s.SN$-,
E:eEH EG$EN-.I H
HNtqeü
l\ñrt¡¡r
E:e;HHqE:H:Ea.o.\
I(Uu)5coolü-.laSqssrQ
r\¡
o()oct)
$-..t
ü-taSqs(\rQo()oq FC\CD\F
$oGoosStr
;;letIÉ $ Ft:is:€;t ñ l$g8E$.EeR
u¡o€.t¡E
=ESEssE*E*e"F
's e$ ü s'E
E,EF,=cÑÁssu$tgtr{
K \q'H \¿Ug+)fl *'"tdF:ooFsg*€F c')
s P llj€aüFñ-S'R^ -J_--¡ vrH ¡E;,p
ñ *HsAE !L
HS--üü e Rr.s 8.€ UE s '{s)U ñNLucücñ i9 \)vLLE BAS
€ t;$t I c,,
;8fi;üüfigH$ ¡Fa s
EÉEI É[$SqFTEi$xgi;Er$
H Hfi*¡*[,Er *€ s áE
$H$ H$É $
bssEe E$ sDJSb¡ba-E u,
N8üEbe\t^Soñ pv)ss_i:$
E8 E
=€ i
eB:,H 3Eil€Escn _ ,^ a: E 3.S:d'S co dCt OrFi a
$(uñs-ñ É
=:QHsHHdSÉE\
U,$SU$ HEu{o
RF r=EHFH€u=$^ñUFaFdóütroqf,g\Jfi€ocncnqSSSSSaa:Q:9:9:Q:Q:QHHüüüüEüSHEE&GEE88888888tUlJJaOaaaO
¡¡srQooQ)q$+'¡lcoosQ)co(B\J$q5\c)u)
sobo5a.
coos.9()()pScosoooU,.Qoso*¡asocn
cno+¡rso¡\S.g)u)
q$obco
\(u
E
o$sf,ci
=Qo{i¡¡
ct)q)
oborso,Qos5q)bogo5()
q)
eob¡\¡qso
oco
\
o*t¡fxo+¡l
ob
9al\qe$
oEu)$or\,r
O)e(t)q)so.\¡()
e
coG
CU()iF¡\ooBo$oo,o
srQoooq$
-.1
R;oo,o-lsrQ
r\
-¡¡FNCD\FIf¡(oI\A
o$\bnsdF;0rE€+iFF Ñ P,PP ó S ü(|)5o¡qc4S n€€frF.HüPs I óñ9v'o-dS pü6urs $B (^ \.SLf t ;7 fTr :; H¡\Fvo qu
EAEE8li 8.* .\d€ d s$ .h; Fn t:Ft S P sÉr,n
E€'g$ * t H,9 6 óe co q u,rJJ (J) q O c4 ct) u)
t\
r-lstsoa.
:fhqF
¡¡
Soo+FoFFoPa
I
qü
\o
tl
\o
¡¡
sa.Eolü-u)
€\Gcn
\
ct)I$uSsou)sIo'\.vFq)bcoobosqooEsrQ
aÉ
xoqoo
$\G+¡¡fsou)
Ea.ee$a.G.go,rQ
srQ.\¡o()ou)
ssocoI$u)5s
co$s$eooacf)Q)so.\o$5()q)
u)$-.lq$q$gooa(t)oso.\¡()$l5
€8fi
¡\ts+ílb\ {FP \-=Iñ-t\=AO.i-UOcDXA
'|\ L ¡ P H ll ¡r'¡
:F;:l' trS: r =¡ñ
! $\u Fsqt rr
rr drsDob(o
= d; r$; É,¡h
ütrül{rss?===o a
=lLl
otl
FEbCÜ
AtltoPI
U,\
=o ltJ
ñslltqo
tl
€a.Eolü-
u.¡cn
ó
eas.$
q)5.P)u)oo5bsrQ¡\cn
e*o-ooo+=o,oa$'=ssI
obsoEsoa.q)bq$\J
st\t+t¡loa\ocn
sobo5a.o5ou)
s¡\+¡,$
$soose
IJJqosrQC)
eGoq)b$-.lu_¡qos:Q()
es()o
t\ fll r'r
ofñ:9s=o
Ptñtr¡lS$HU$$ilatH ñ\ ñd
ttJ =AUJ
d$EIobó
u)SqbE Lu-
ut^ Cn
s6t\\d=
UJFEtrbLLGU) CN5(l)soct) ';\sñ8&'=os€
v)seoa.or+¡ra
o.EI\oa.u)
eosu)o\$oiF¡\()oBoot|¡¡f¡\s¡a
l-.-.1f,ilIJJ
aqrQt\
oe$()q)b$-.lH-¡f,ilIJJ
osrQoe$lo
$o$r+'J \ F
€ ü=
t\
F+o-=F\¡ils'j;$
= ii É- F '+$ L IFBF ü\il\$ÉD\uOQ=- SD ll cD llr \Sq óS. u ü$Eñ Fb ñu;
b\ düñ
¡¡oa.Eo
rJ.r-
cnGs$oooact)osoa\
cr)
E*q)cn
\(u
Eo
€€
.EsSE
8gs'EC)$
€Eu)o8s'8€
$'ggFoEbs
$üco ij$$
=IJJ
Fl{srQ()
e$()I$--l
¿lüF|{
s:Qoe$
H{qul
=lU 'ho¡\ks 's60\
üF S$\ S-
ii : E
SEHE$tXtEs[r ,, 9,, üS BB 8EHUa\üñ
Sq;og.E.g*a_cnr8:Q
$$soE$$s5s8e$s
¡\
EsEq
E't ÉFE."q
obu)oso.\¡oes()oEobo'tocr)
$s5$so.\¡o$e
HtIJJ
=l*Ll
o
\
srQ¡\oesoob$-t
HtLU
=LUol{
s:Qoe$oo
¡\
l-5 ¡¡\A.r
=s .ñ
¡_$ ul¡r h
f ó e\J=
l¡h ¡¡F-itss\ :=8 F;JÉ ño 3u g s\.'
=\F¡
\
=B ¿* sÉ
=ru Ed E I= a \.Sñ EEA\' soo
t¡
oa.Eoh-
Htlü
=UJoqol{srQC)
e$()
l\,¡¡\.
EItJ ¡h t ¡ñt\l=$\s s oi^ \ñi o:fh +
T FFF 56 ü;ca t5 trES- iJ=: u u E-Pc+F t,l
], FFE üSF= I $ B Eóq o o aNR ñ d
ñ=\oltJa
pts
,\'\t\t\t\
UFoaF
¡\\\\¡\\\\ññññhFOOF:OFAO-,.--OOFF'. o o P P\hüü*a a a a
lrr-lail
t¡
oa.Eo
IJJ-
obGrtifcooo\J
c4$s.\5o$E
oEottrlsq)
a\
E€o3\oo
oo
.ss$.SaEoo$o¡\o,rQ
\$()iE¡\ooBoe$a.$EGct)5qq)
UJ-.IaS
F)
rsrQ¡\()
e$()q)b$-.lrü-.lasF¡
Fq:Qoq$()
AAAAAltilllllll
ttR
SSFTi+PPPF T¡r*a a a a
H
tadsxIñ