Gilardoni - Orozco - Cayssials

Anuncio
UN
S
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
TÉCNICAS DE DISEÑO, SIMULACIÓN E
IMPLEMENTACIÓN DE CIRCUITOS
LÓGICOS UTILIZANDO DISPOSITIVOS
VLSI Y ESPECIFICACIÓN HDL.
PROYECTO DE FIN DE CARRERA
-C
ay
ss
ial
s-
Departamento de Ingeniería Eléctrica.
Gi
lar
do
ni
-
Or
oz
co
UNIVERSIDAD NACIONAL DEL SUR
AUTOR: PABLO GILARDONI.
DIRECTOR: Dr. JAVIER OROZCO.
CODIRECTOR: Dr. RICARDO CAYSSIALS.
2-1
Diciembre de 1999.
UN
S
Gilardoni – Orozco - Cayssials
Introducción
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Técnicas de diseño, simulación e implementación
de circuitos lógicos utilizando dispositivos VLSI y
especificación HDL.
En este proyecto se realiza un análisis de los Lenguajes de Especificación de Hardware
(HDL) utilizados para la configuración y diseño de sistemas digitales que utilizan
Dispositivos Lógicos Programable de alta complejidad (CPLD). La capacidad de estos
dispositivos ha evolucionado durante los últimos años desde la implementación de simples
sistemas digitales hasta la posibilidad de implementar complejas funciones, incluso
microprocesadores y microcomputadores. La velocidad con la cual estos dispositivos
pueden ser programados y reconfigurados los hacen ideales para la realización de
prototipos y educación e incluso son competitivos en costo para bajos niveles de
producción o bien para cuando se requiere la utilización de funciones reconfigurables.
Nuevas y sofisticadas aplicaciones pueden ser desarrolladas mediante su utilización,
haciendo cada vez más difusa la tradicional línea que separa el hardware del software.
-C
ay
ss
ial
s-
La realización de dispositivos de lógica programable tiene sus comienzos con los PAL
(Programmable Logic Array), que en un principio implementaban la síntesis de funciones
lógicas combinacionales, para luego insertar elementos de memoria y permitir la síntesis
de máquinas secuenciales. Desarrollos posteriores brindaron gran diversidad de formas de
programación, es decir, gran diversidad de elementos básicos de interconexión como son
los Antifuses, switches EPROM / EEPROM y switches SRAM.
Or
oz
co
Estos primeros dispositivos programables crearon la necesidad de lenguajes de
especificación de hardware. De esta manera, el diseñador podría especificar su sistema con
un alto grado de abstracción para luego, de alguna forma sistemática, sintetizarlo e
Gi
lar
do
ni
-
implementarlo en un dispositivo genérico. Se intuye así la necesidad de un software que
permita abstraer al diseñador de las particularidades del dispositivo programable utilizado
y permitir que el diseño y desarrollo no requieran conocimientos específicos de la
estructura interna de dicho dispositivo. Además, esto da cabida a la estandarización de un
lenguaje que nos independice de los distintos fabricantes de dispositivos de lógica
Gilardoni - Orozco - Cayssials
i
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
programable. Como ventaja adicional, pueden re-utilizarse especificaciones que han sido
verificadas exhaustivamente en la realización de proyectos anteriores, en nuevos proyectos
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
que, al utilizar dispositivos de mayor capacidad de implementación lógica, sean
subfunciones en el nuevo sistema. Esto permite una apreciable reducción en el tiempo
necesario para la producción de prototipos, con la consiguiente reducción en el costo de
producción.
Es de esta manera que en el año 1987 fue definido como el estándar IEEE 1076, un
lenguaje de especificación de hardware denominado VHDL donde la letra “V” significa
VHSIC (Very High Speed Integrated Circuit) y la sigla “HDL” significa Hardware
Description Language. A comienzos de los años '90 el lenguaje VHDL fue usado para el
diseño de circuitos integrados desarrollados con una aplicación específica (ASIC del inglés
Application Specific Integrated Circuit) y en la segunda mitad de la década se comenzó a
usar dentro del área de los PLDs (Programmable Logic Device).
Aunque los fabricantes más importantes de dispositivos lógicos programables permiten
al diseñador la utilización, aunque sea restringida, de VHDL como lenguaje de
especificación, cada uno de ellos posee un lenguaje propietario. De esta manera, Altera y
Xilinx, dos de los más importantes fabricantes, han desarrollado sus propios lenguajes de
especificación denominados AHDL y ABEL respectivamente. La utilización de lenguajes
desarrollados por un determinado fabricante restringe al diseñador el grado de abstracción
-C
ay
ss
ial
s-
de su especificación y la utilización de ésta en dispositivos de otros fabricantes. A cambio,
le permite optimizar el uso de los recursos de los dispositivos si tiene conocimiento de la
estructura interna de los mismos.
Este proyecto consistió principalmente en el estudio de lenguajes de especificación de
hardware y de las técnicas de diseño, simulación e implementación de sistemas digitales de
Or
oz
co
alta complejidad. El objetivo planteado para la utilización de todos estos conceptos fue la
realización de un controlador de memoria dinámica que cumple con el estándar JEDEC de
72 contactos. Las herramientas y dispositivos utilizados en la implementación de este
controlador fueron provistos por la firma Altera en el marco del programa universitario del
Gi
lar
do
ni
-
cual el Laboratorio de Sistemas Digitales forma parte.
Gilardoni - Orozco - Cayssials
ii
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
UN
S
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Etapas del Proyecto:
Estudio de los distintos dispositivos de lógica programable, especialmente de la
firma ALTERA. Capítulo 1.
Estudio del lenguaje de descripción de hardware VHDL, estándar IEEE 1076.
Capítulo 2.
Estudio del lenguaje de descripción de hardware AHDL, propiedad de
ALTERA. Capítulo 3.
Manejo del software de desarrollo MAX+PLUS II de ALTERA. Capítulo 4.
Pruebas básicas de funcionamiento de la placa de desarrollo UP1 perteneciente
al programa de desarrollo universitario de la firma ALTERA. Capítulo 4.
Curso de diseño de lógica programable basado en el lenguaje AHDL. Dictado
por el Profesor Guillermo Jaquenod. Universidad Nacional del Centro.
Noviembre de 1998. Cuidad de Olavarría.
Análisis y diseño de un controlador de memorias dinámicas SIMM (Single InLine Memory Module) de 72 contactos. Capítulo 5.
Realización de la especificación del controlador, en el lenguaje de descripción
-C
ay
ss
ial
s-
de hardware AHDL, con el software MAX+PLUS II. Simulación y elección del
dispositivo a utilizar.
Realización de los circuitos impresos necesarios para la interconexión del
módulo SIMM con el dispositivo de lógica programable y el sistema
microprocesador.
Realización de un programa en lenguaje de alto nivel, para la verificación del
Gi
lar
do
ni
-
Or
oz
co
sistema.
Gilardoni - Orozco - Cayssials
iii
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Tabla de Contenidos
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Capítulo 1.................................................................................................................................................................1-1
Dispositivos Lógicos Programables (P.L.Ds) ..........................................................................................................1-1
1. Alternativas para la síntesis de funciones lógicas ............................................................................................1-1
1.1
Simplificación Algebraica de una Función Lógica. .................................................................................1-1
1.2
Multiplexores y Demultiplexores.............................................................................................................1-1
1.3
ROM (Read Only Memory) .....................................................................................................................1-3
1.4
Tablas de Look–Up (LUTs).....................................................................................................................1-3
1.5
Comparación de las distintas alternativas ................................................................................................1-4
2. Los PAL ...........................................................................................................................................................1-5
2.1
PALs Primitivos.......................................................................................................................................1-5
2.2
Incorporación de Elementos de Memoria ................................................................................................1-5
2.3
PALs Modernos .......................................................................................................................................1-6
3. Elementos Básicos de Interconexión ...............................................................................................................1-7
4. Celdas Lógicas: granularidad y jerarquías de conectividad .............................................................................1-7
5. Celdas de Entrada/Salida .................................................................................................................................1-8
6. Redes de Cableado ...........................................................................................................................................1-9
6.1
Interconexiones Locales...........................................................................................................................1-9
6.2
Interconexiones Vecinales .......................................................................................................................1-9
6.3
Interconexiones Globales.......................................................................................................................1-10
7. Las Familias MAX 7000 y FLEX 10K de ALTERA.....................................................................................1-10
7.1
La Familia MAX 7000/7000E/7000S ....................................................................................................1-10
7.1.1.
Terminología ..................................................................................................................................1-10
7.1.2.
Descripción General.......................................................................................................................1-11
7.1.2.1.
MAX7000 y MAX7000E.......................................................................................................1-11
7.1.2.2.
MAX7000S ............................................................................................................................1-11
7.1.3.
Arquitectura (Descripción Funcional)............................................................................................1-12
7.1.3.1.
Macroceldas ...........................................................................................................................1-13
7.1.3.2.
Logic Array Blocks ................................................................................................................1-16
7.1.3.3.
Expansores de Términos Producto (Expansores Paralelos y Compartidos)...........................1-17
7.1.3.4.
Expansores Compartidos........................................................................................................1-17
7.1.3.5.
Expansores Paralelos..............................................................................................................1-18
7.1.3.6.
Programmable Interconnect Array (PIA) ...............................................................................1-19
7.1.3.7.
I/O Control Blocks (Celdas de Entrada/Salida) .....................................................................1-20
7.1.4.
In-System Programmability (ISP) ..................................................................................................1-22
7.1.5.
Control de Velocidad / Potencia Programable ...............................................................................1-22
7.1.6.
Interfase Multi Voltaje de Entrada/Salida. (MultiVolt I/O Interface) ............................................1-22
7.1.7.
Slew-Rate Control..........................................................................................................................1-23
7.2
La Familia FLEX 10K ...........................................................................................................................1-24
7.2.1.
Terminología ..................................................................................................................................1-24
7.2.2.
Descripción General.......................................................................................................................1-24
7.2.3.
Arquitectura (Descripción Funcional)............................................................................................1-25
7.2.3.1.
Embedded Array Blocks ........................................................................................................1-26
7.2.3.2.
Logic Array Block (LAB) ......................................................................................................1-27
7.2.3.3.
Logic Element (Elementos lógicos) .......................................................................................1-29
7.2.3.4.
Cadenas de Carry ...................................................................................................................1-30
7.2.3.5.
Cadenas de Cascada ...............................................................................................................1-31
7.2.3.6.
Modos de Operación de los Elementos Lógicos ....................................................................1-32
7.2.3.7.
FastTrack Interconnect...........................................................................................................1-34
7.2.3.8.
I/O Elements (Elementos de Entrada/Salida) .........................................................................1-37
7.2.3.9.
Conexión Filas – Elementos E/S ............................................................................................1-39
7.2.3.10. Conexión Columnas – Elementos E/S....................................................................................1-40
7.2.4.
Distribución de señales de reloj .....................................................................................................1-40
7.2.5.
Configuración de Salida.................................................................................................................1-41
7.2.5.1.
Interfase Multi Voltaje de Entrada/Salida. (MultiVolt I/O Interface) ....................................1-41
7.2.5.2.
Slew-Rate Control..................................................................................................................1-42
7.2.5.3.
Esquemas de Configuración...................................................................................................1-42
iv
Gilardoni - Orozco - Cayssials
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Capítulo 2.................................................................................................................................................................2-1
Introducción a VHDL: Un Lenguaje de Especificación de Hardware.....................................................................2-1
1. ¿Que significa VHDL? ....................................................................................................................................2-1
2. Limitaciones del VHDL...................................................................................................................................2-2
3. Estilos de Escritura de VHDL..........................................................................................................................2-2
4. Conceptos Principales del Lenguaje ................................................................................................................2-3
4.1
Sintaxis.....................................................................................................................................................2-4
4.2
Arquitectura .............................................................................................................................................2-5
4.3
Jerarquía...................................................................................................................................................2-6
4.4
Declaraciones ...........................................................................................................................................2-8
4.5
Configuraciones .......................................................................................................................................2-9
4.6
Configuración por Defecto.....................................................................................................................2-10
4.7
Procesos y tipos......................................................................................................................................2-11
4.8
Package ..................................................................................................................................................2-13
4.9
Esquema Completo ................................................................................................................................2-14
5. Señales y Tipos de Datos ...............................................................................................................................2-15
5.1
Concepto de Tipo y Especificación........................................................................................................2-16
5.2
Tipos de Datos Estándar ........................................................................................................................2-17
5.3
Asignación de Señales ...........................................................................................................................2-18
5.4
Arreglos (Arrays) ...................................................................................................................................2-20
5.5
Concatenación y Agregado ....................................................................................................................2-21
5.6
Definición de Tipos................................................................................................................................2-23
5.7
Lógica MultiValuada .............................................................................................................................2-25
5.8
Usando Lógica Standard ........................................................................................................................2-27
Capítulo 3.................................................................................................................................................................3-1
AHDL: Un Lenguaje de Descripción de Hardware .................................................................................................3-1
Estructura de diseño.................................................................................................................................................3-2
1. Sentencia "Title" ..............................................................................................................................................3-3
2. Sentencia "Parameters" ....................................................................................................................................3-3
3. Sentencia "Include"..........................................................................................................................................3-5
4. Sentencia "Constant"........................................................................................................................................3-6
5. Sentencia "Define" ...........................................................................................................................................3-7
6. Sentencia "Function Prototype" .......................................................................................................................3-8
7. Sentencia "Options" .........................................................................................................................................3-8
8. Sentencia "Assert"............................................................................................................................................3-9
9. Sección de Subdiseño ......................................................................................................................................3-9
10.
Sección de Declaración de Variables.........................................................................................................3-10
10.1 Declaración de Instancias.......................................................................................................................3-11
10.2 Declaración de Nodos ............................................................................................................................3-12
10.3 Declaración de Registros .......................................................................................................................3-13
10.4 Declaración de Maquinas de Estado ......................................................................................................3-13
10.5 Declaración de Alias de Maquinas de Estado ........................................................................................3-14
11.
Sección Lógica...........................................................................................................................................3-15
11.1 Ecuaciones Booleanas............................................................................................................................3-16
11.2 Ecuaciones de Control Booleanas..........................................................................................................3-18
11.3 Sentencia CASE.....................................................................................................................................3-19
11.4 Sentencia DEFAULTS...........................................................................................................................3-20
11.5 Sentencia IF-THEN................................................................................................................................3-21
11.6 Sentencia IF-GENERATE. ....................................................................................................................3-22
11.7 Sentencia FOR-GENERATE. ................................................................................................................3-22
11.8 Sentencia TRUTH TABLE. ...................................................................................................................3-23
Capítulo 4.................................................................................................................................................................4-1
Sistema de desarrollo de ALTERA: MAX + PLUS II y placa de desarrollo universal UP1 ...................................4-1
1. ¿ Qué es ALTERA MAX+PLUS II ? ..............................................................................................................4-1
1.1
Ejemplo Demostrativo .............................................................................................................................4-2
1.2
Síntesis .....................................................................................................................................................4-2
1.3
Tipos de Archivos ....................................................................................................................................4-3
1.4
Interpretación del Código VHDL ............................................................................................................4-4
1.4.1.
Código VHDL..................................................................................................................................4-4
Gilardoni - Orozco - Cayssials
v
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
2.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Placa de Desarrollo universal UP1...................................................................................................................4-5
2.1
¿Qué es la placa educacional UP1?..........................................................................................................4-5
2.2
¿Cómo es la placa educacional UP1?.......................................................................................................4-6
2.3
¿Cómo está compuesta la placa UP1?......................................................................................................4-6
3. Cable de Programación ByteBlaster.............................................................................................................4-7
3.1
¿Qué es y para qué sirve la ByteBlaster? .............................................................................................4-7
Capítulo 5.................................................................................................................................................................5-1
Implementación de un Controlador de Memoria Dinámica: Una Aplicación de Lógica Programable....................5-1
1. Memorias Dinámicas Utilizadas: Módulo SIMM de 72 contactos. .................................................................5-1
1.1
Características Técnicas del Módulo SIMM Utilizado. ...........................................................................5-3
1.2
Características Técnicas de los Chips TMS44400. ..................................................................................5-3
2. Controlador de Memorias Dinámicas. .............................................................................................................5-4
2.1
Símbolo Lógico del Controlador de Memorias Dinámicas......................................................................5-4
2.1.1.
Señales independientes.....................................................................................................................5-4
2.1.2.
Señales microprocesador - dramcontrol:..........................................................................................5-4
2.1.2.1.
Señales dramcontrol – módulo SIMM: ....................................................................................5-5
3. Funcionamiento del Controlador de Memorias Dinámicas..............................................................................5-5
3.1
Funcionamiento microprocesador - controlador ......................................................................................5-6
¿Cómo es un ciclo de lectura del microprocesador - controlador? ..............................................................5-6
¿Cómo es un ciclo de escritura del microprocesador - controlador? ...........................................................5-7
¿Cómo funciona el paginado?......................................................................................................................5-7
3.2
Funcionamiento controlador – memoria dinámica...................................................................................5-8
¿Cómo se direcciona el módulo SIMM?......................................................................................................5-8
¿Cómo es un ciclo de lectura del controlador – memoria dinámica?...........................................................5-9
¿Cómo es un ciclo de escritura del controlador – memoria dinámica? ......................................................5-10
¿Cómo es el ciclo de refresco CAS before RAS? ......................................................................................5-11
4. Funcionamiento Lógico del Controlador de Memorias Dinámicas. ..............................................................5-12
4.1
Máquina de estados 1: microprocesador – controlador..........................................................................5-12
4.2
Máquina de estados 2: controlador – memoria dinámica.......................................................................5-14
5. Implementación de los ports bidireccionales. ................................................................................................5-16
Se incluye disco conteniendo los programas fuentes desarrollados para la
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
implementación del controlador de memoria dinámica.
Gilardoni - Orozco - Cayssials
vi
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Capítulo 1
En este capítulo se describen distintas formas de síntesis de funciones lógicas, como
también distintos elementos de interconexión utilizados en dispositivos programables. Se
detallan los elementos que componen una CPLD (Complex Programmable Logic Device)
y una FPGA (Field-Programming Gate Array) profundizando especialmente en los
dispositivos ALTERA de las familias MAX7000 y FLEX10K.
Dispositivos Lógicos Programables (P.L.Ds)
1. Alternativas para la síntesis de funciones lógicas
La creación de un dispositivo lógico programable, implica contar con una tecnología
que permita sintetizar cualquier función lógica en una forma eficiente. El diseñador posee
diferentes alternativas para implementar su sistema.
-C
ay
ss
ial
s-
1.1 Simplificación Algebraica de una Función Lógica.
Existen métodos gráficos y tabulares que permiten simplificar una función lógica en
forma sistemática. Si bien la solución obtenida puede ser óptima en el sentido de que
minimiza su expresión en el número de compuertas utilizadas para su implementación,
tiene la desventaja de que la solución obtenida es totalmente rígida y el menor cambio
puede significar un rediseño total. El criterio de optimalidad de estos métodos,
Or
oz
co
generalmente no significa una implementación óptima en un dispositivo de lógica
programable.
Gi
lar
do
ni
-
1.2 Multiplexores y Demultiplexores
En las técnicas de simplificación algebraica de funciones lógicas, se asume que la
implementación final se realizará utilizando compuertas lógicas. Una alternativa en la
implementación de funciones lógicas es la utilización de multiplexores. Con un
multiplexor de 8::1, por ejemplo, se podría generar cualquier función lógica de 3 variables
de entrada.
Gilardoni - Orozco - Cayssials
1-1
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
En la siguiente figura se observa la síntesis de una función cualquiera, mediante la
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
utilización de un multiplexor.
Figura 1.1
Se observa que las líneas de selección de entradas del multiplexor son las variables de la
función y, por lo tanto, para generar la función deseada sólo se debe colocar un cero o un
uno en la entrada correspondiente.
Los multiplexores son dispositivos muy fáciles de realizar en tecnología CMOS y
permiten altas escalas de integración; por ejemplo, un multiplexor 2::1 puede realizarse
-C
ay
ss
ial
s-
con sólo 6 transistores.
También puede implementase una función lógica mediante la utilización de un
Gi
lar
do
ni
-
Or
oz
co
demultiplexor, como se observa en la figura 1.2:
Gilardoni - Orozco - Cayssials
Figura 1.2
1-2
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
1.3 ROM (Read Only Memory)
La utilización de una memoria ROM para la implementación de una función lógica,
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
permite la utilización de los mismos componentes independientemente de la función que se
desea sintetizar. Internamente una memoria ROM combina, como muestra la figura 1.3, el
uso de un multiplexor y un demultiplexor.
Figura 1.3
Una ventaja muy importante de este tipo de síntesis es que permite la implementación
-C
ay
ss
ial
s-
de funciones con gran número de variables de entrada.
1.4 Tablas de Look–Up (LUTs)
Una tabla de Look-Up (LUT) es equivalente a un multiplexor, sólo que incorpora
elementos de memoria que permiten generar la función lógica deseada según el estado de
Or
oz
co
dichos elementos. Por lo tanto una LUT puede ser dividida en dos áreas:
Área de configuración.
Área de operación.
Gi
lar
do
ni
-
En la figura 1.4 se observa la utilización de un registro de desplazamiento que permite
que la configuración se realice en forma serial.
El hecho de que las tablas de look-up puedan ser configuradas para sintetizar la función
lógica deseada, les atribuye el carácter de programabilidad. Por este motivo son una muy
buena alternativa para la implementación de dispositivos de lógica programable.
Gilardoni - Orozco - Cayssials
1-3
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.4
La cantidad de bits de memoria requeridos para configurar una tabla de Look–Up crece
en forma exponencial con el número de variables de entrada, por lo que en general las
LUTs suelen ser de entre 4 y 5 variables (16 a 32 bits de memoria).
1.5 Comparación de las distintas alternativas
Las soluciones basadas en multiplexores, demultiplexores, ROMs y tablas de Look–Up
usan la expresión canónica de una función (suma de minitérminos). De esta manera,
pueden generar cualquier función lógica a partir de sus entradas debido a que implementan
-C
ay
ss
ial
s-
la suma de todos los minitérminos posibles. Esto puede resultar en un uso ineficiente del
dispositivo. Por ejemplo, en el caso de un multiplexor de 8::1, implementar una función de
tres variables que necesite sólo dos o tres términos productos estaría desaprovechando los
recursos físicos del dispositivo.
El análisis estadístico de una enorme cantidad de funciones de mediana complejidad (5
a 15 variables de entrada) muestra que casi todas ellas pueden ser sintetizadas mediante
Or
oz
co
sólo 5 a 7 implicantes de orden superior (términos productos). Por lo tanto se pensó que
sería más eficiente, en cuanto a recursos físicos utilizados, un dispositivo que
implementara un subconjunto de todos los términos productos posibles.
Este fue el criterio que llevó a la creación de los Arreglos Lógicos Programables (PAL
Gi
lar
do
ni
-
Programmable Logic Array)
Gilardoni - Orozco - Cayssials
1-4
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
2.1 PALs Primitivos
UN
S
2. Los PAL
Básicamente, un PAL implementa la suma de términos productos. Posee una matriz de
fusibles de interconexión que permite generar términos productos de la cantidad de
variables que se desee.
Seguidamente se muestra el esquema circuital de un PAL primitivo del tipo 16L8.
Figura 1.5
Como se observa en la figura 1.5, a la matriz de interconexión ingresan las variables de
entrada negadas y sin negar. Además se cuenta con una realimentación de la salida que
-C
ay
ss
ial
s-
permite que ingresen a la matriz de interconexión el valor negado y sin negar de la misma.
Cada término producto puede ser generado a partir de la intersección de un gran número de
variables, lo que es de gran utilidad para implementar funciones de gran fan–in. La
cantidad de términos productos que es posible sumar está usualmente acotado entre seis y
ocho. Cada término producto ocupa gran superficie del chip e involucra un elevado
número de fusibles.
Or
oz
co
2.2 Incorporación de Elementos de Memoria
Para facilitar la síntesis de máquinas secuenciales, la arquitectura de los PALs
incorporaron elementos de memoria. La siguiente figura muestra el agregado de estos
Gi
lar
do
ni
-
elementos de memoria en el PAL 16R8.
Gilardoni - Orozco - Cayssials
1-5
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.6
2.3 PALs Modernos
Diversas arquitecturas han sido propuestas para poder implementar la mayor cantidad
de funciones lógicas, evitando sobredimensionar la estructura del dispositivo programable.
De esta manera, los PALs modernos utilizan una arquitectura basada en celdas lógicas.
Una celda lógica es un conjunto de elementos combinacionales y registros de
configuración que constituyen un bloque funcional mínimo dentro del dispositivo. La
siguiente figura muestra una celda lógica de un PAL simple moderno, particularmente de
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
la marca ALTERA familia Classic EP610.
Figura 1.7
En la figura 1.7 se observa la incorporación de un elemento de memoria, como se vio
anteriormente, y el agregado de elementos de configuración que permiten aumentar las
Gilardoni - Orozco - Cayssials
1-6
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
funciones de la celda lógica. Estos elementos permiten que la realimentación provenga
desde la celda lógica o del contacto de Entrada/Salida y que la salida de la celda lógica sea
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
por registro o combinacional. Además se incorporan un control de inversión de lógica, un
reloj global y una señal de habilitación de salidas (output enable).
3. Elementos Básicos de Interconexión
Los dispositivos de lógica programable necesitan hacer uso de recursos de
interconexión, los cuales funcionan como llaves que permiten lograr como objetivo final la
síntesis de la función lógica deseada.
Existen diferentes tipos de elementos de interconexión como son los:
Antifuses: dispositivos normalmente abiertos que una vez programados pasan a
ser un cortocircuito. Un dispositivo que utiliza antifuses puede programarse
solamente una vez y su programación es irreversible.
Switches EPROM/EEPROM: dispositivos de paso reprogramables, cuyo
estado no se altera al interrumpirse la alimentación de energía.
Llaves SRAM: basados en llaves de paso MOS controladas desde un flip flop
estático, cuyo contenido se pierde al interrumpirse la energía.
-C
ay
ss
ial
s-
4. Celdas Lógicas: granularidad y jerarquías de
conectividad
Una celda lógica es un bloque funcional mínimo capaz de resolver una función
combinacional o secuencial. Una celda que por sí sola puede llegar a resolver una función
Or
oz
co
compleja (4 o más variables de entrada), genera circuitos de baja granularidad. El conjunto
de este tipo de celdas forma lo que se denomina lógica de “grano grueso”. Por el
contrario, celdas lógicas capaces de resolver únicamente funciones de 2 o 3 variables (a
Gi
lar
do
ni
-
veces sólo combinacionales) son llamadas de “grano fino”.
Cuanto más compleja es una celda, mayor es la posibilidad de su subempleo, es decir,
de no aprovechar todos sus recursos. Sin embargo, en este caso la mayor parte del
problema es resuelta dentro de la celda y por ello se requieren menos recursos de
interconexión con otras celdas. Cuanto más simples son las celdas, más cantidad de ellas se
requieren para resolver un dado problema, pero son usadas plenamente (el subempleo de
Gilardoni - Orozco - Cayssials
1-7
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
celdas es menor). En contraparte, la necesidad de múltiples vínculos entre celdas requiere
de poderosos recursos de interconexión.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Un ejemplo de celdas lógicas de grano grueso se encuentra en el dispositivo lógico
programable XC4000 de la firma XILINX. Este dispositivo está basado en celdas lógicas
complejas que hacen uso de tablas de Look–Up con tecnología SRAM. Cada celda lógica
resuelve 2 funciones lógicas, combinacionales o secuenciales, de hasta 4 variables
independientes o una función lógica combinada de 5 variables. Poseen 2 flip flops para la
síntesis de máquinas secuenciales y caminos especiales de propagación a celdas vecinas
para la rápida propagación entre celdas. Estos caminos especiales son llamados carry.
Un ejemplo de celdas lógicas de grano grueso en la firma ALTERA es el caso de la
familia MAX, donde cada celda lógica está basada en la suma de términos productos y
además, poseen dispositivos de memoria para la realización de circuitos secuenciales y
recursos para optimizar el uso de los términos productos sobrantes. Estos recursos son
llamados expansores paralelos o compartidos.
Existen celdas lógicas que no encuadran exactamente con las clasificaciones de
granularidad previamente definidas, es decir, no son ni de grano grueso ni de grano fino.
Por lo tanto aparecen las llamadas lógicas de grano medio, de grano medio a fino y de
grano muy fino.
-C
ay
ss
ial
s-
5. Celdas de Entrada/Salida
Las celdas de Entrada/Salida son las encargadas de la interconexión del dispositivo con
el mundo exterior. Deben ser capaces de manejar corrientes elevadas, capacidades
parásitas decenas de veces mayores a las existentes dentro del chip y brindar la posibilidad
de configurarlas como entrada, salida, bidireccionales o de alta impedancia. Estas
Or
oz
co
características contribuyen fuertemente a crear ciertos problemas de diseño como son: el
agregado de retardos y picos en el consumo de corriente con su consiguiente ruido de
fuente (Ground Bouncing).
Gi
lar
do
ni
-
Las celdas de Entrada/Salida podrían ser clasificadas en dos tipos: las elementales y las
complejas.
Las celdas de Entrada/Salida elementales sólo permiten definir si serán de entrada,
salida o bidireccionales y cada celda estará asociada a una celda lógica determinada.
Gilardoni - Orozco - Cayssials
1-8
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Las celdas de Entrada/Salida complejas pueden definirse, al igual que las celdas
simples, como de entrada, salida o bidireccionales, pero se diferencian en que no están
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
asociadas a una celda lógica en particular, sino que hacen uso de los recursos de
interconexión para vincularse con las mismas. También cuentan con muchas opciones de
configuración como son: control de slew rate, de pullups o pulldowns, agregado de
retardos, etc.
6. Redes de Cableado
Las redes de cableado son las encargadas de realizar las interconexiones de las celdas
dentro de los dispositivos. Están fuertemente relacionadas con la granularidad, ya que
cuanto menores sean las celdas lógicas, mayores serán los recursos de interconexión
necesarios para realizar la misma función.
Las redes de cableados pueden jerarquizarse, según el alcance de las mismas, en:
Locales.
Vecinales.
Globales.
-C
ay
ss
ial
s-
6.1 Interconexiones Locales
Estas interconexiones permiten conectar cada celda lógica a las celdas vecinas
contiguas. En la familia FLEX 10K de la firma ALTERA, las interconexiones locales se
realizan por medio de las cadenas de Carry y Cascada. Éstas conectan cada celda lógica
con las inmediatas superior e inferior y están orientadas especialmente para acelerar la
realización de operaciones aritméticas.
Or
oz
co
6.2 Interconexiones Vecinales
Estas interconexiones permiten conectar grupos de celdas lógicas. En dispositivos de la
firma ALTERA, un conjunto de 8, 10 o 16 celdas lógicas se agrupan físicamente y se
Gi
lar
do
ni
-
define una matriz de conexionado rápido entre ellos, con acceso a los sistemas de
interconexión global y a los grupos de celdas vecinos. Estos grupos de celdas lógicas son
llamados LABs (Logic Array Blocks).
Gilardoni - Orozco - Cayssials
1-9
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
6.3 Interconexiones Globales
Estas interconexiones permiten conectar cualquier celda lógica con cualquier otra
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
dentro del dispositivo. Suelen hacer uso de líneas rápidas (en general metálicas) y son
usadas para distribución de señales globales, como por ejemplo, señales de clock, output
enable y reset.
7. Las Familias MAX 7000 y FLEX 10K de
ALTERA
A continuación se describen en detalle la arquitectura de los dispositivos programables
de las familias MAX7000 y FLEX 10K de la firma ALTERA. Estos dispositivos integran
la placa de desarrollo adquirida a través del programa universitario ALTERA al que el
Laboratorio de Sistemas Digitales pertenece.
7.1 La Familia MAX 7000/7000E/7000S
Si se realiza un análisis crítico de los PALs clásicos (Programmable Logic Array), se
puede observar que las mismas tienen una reducida cantidad de celdas lógicas,
-C
ay
ss
ial
s-
generalmente poseen menos celdas lógicas que contactos de Entrada/Salida. Esto implica
que ante la necesidad de usar un flip flop o un término lógico intermedio (sin acceso a los
contactos del dispositivo), a veces se deba desperdiciar un contacto de Entrada/Salida.
Además, en los primeros PALs, el uso de fusibles de programación afectaba seriamente la
confiabilidad del dispositivo.
Mejoras realizadas a los PALs clásicos permitieron la evolución a la familia MAX,
Or
oz
co
donde se reagruparon celdas lógicas en bloques (Logic Array Blocks o LABs). También se
logró un mejor aprovechamiento de la superficie de conexión a través de la generación de
áreas de conexionado global y de áreas de interconexión local. Además se agregaron áreas
de generación de términos producto auxiliares (expansores) y se implementó una
Gi
lar
do
ni
-
separación entre el feedback de la celda lógica y el de la entrada (dual feedback).
7.1.1.
Terminología
ALTERA define sus propios términos para referirse a los dispositivos de la familia
MAX 7000 como ser:
Gilardoni - Orozco - Cayssials
1-10
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
de la familia MAX.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Logic Array Block (LAB): Grupos de celdas lógicas o macroceldas.
UN
S
Macroceldas: Equivalente a las celdas lógicas. Sólo es usado cuando se habla
Logic Array (Arreglo Lógico): Es el nombre que recibe el bloque, componente
de una macrocelda, que implementa los términos productos.
Local Array (Arreglo local): Es la denominación que toma la estructura de
interconexión entre macroceldas de un LAB. Es la estructura de interconexión
vecinal.
Programmable
Interconnect
interconexión global.
7.1.2.
Array
(PIA):
Estructura
continua
de
Descripción General
7.1.2.1. MAX7000 y MAX7000E
Los dispositivos de las familias MAX7000 y MAX7000E son programables mediante
programador externo, con una complejidad media y elevada entre 32 a 256 macroceldas
(equivalente a: 300 a 5000 compuertas lógicas), siendo las familias de lógica programable
líderes en esta densidad. La familia MAX7000 es fabricada mediante un proceso CMOS
EEPROM avanzado, lo que permite obtener implementaciones de alta densidad, elevada
-C
ay
ss
ial
s-
velocidad, poderosa capacidad de Entrada/Salida y performance predecible. La familia
MAX7000E agrega a la familia MAX7000 seis líneas de output enable, dos líneas de
clock, registros de entrada más veloces y control de slew-rate programable. La familia
MAX7000 ofrece dispositivos que, por su velocidad, son ideales para aplicaciones que
deban satisfacer la exigencias del estándar PCI (son PCI-compliant).
Or
oz
co
7.1.2.2. MAX7000S
La familia MAX7000S es una versión mejorada de las familias 7000 y 7000E que posee
la facilidad de programación en circuito ISP (In-System Programmability) y en los
Gi
lar
do
ni
-
dispositivos de 128 o más macroceldas, la inclusión de circuitos de testeo periférico (JTAG
boundary-scan test circuitry). El control de slew-rate programable y la opción de elegir la
operación en modo de bajo consumo macrocelda por macrocelda, permiten reducir el
consumo total y el ruido que genera el sistema. Estas características potencian a la familia
MAX 7000S y le permiten resolver un amplio rango de aplicaciones a nivel de sistema.
Gilardoni - Orozco - Cayssials
1-11
Laboratorio de Sistemas Digitales - UNS
7.1.3.
Arquitectura (Descripción Funcional)
UN
S
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
Macroceldas
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
La arquitectura interna de la familia MAX 7000 incluye los siguientes elementos:
Logic Array Blocks (LAB)
Expansores de Términos Producto (Expansores paralelos y compartidos)
Programmable Interconnect Array (PIA)
I/O Control Blocks (Celdas de Entrada/Salida)
La familia MAX7000 posee 4 entradas dedicadas que pueden ser usadas, para cada
macrocelda o contacto de Entrada/Salida, como:
Entradas de propósito general
Señales de control globales y de alta velocidad (clock, clear, y dos output
enable).
Según la arquitectura interna, la familia MAX7000 puede ser dividida en los
dispositivos MAX7000 y en los MAX7000E/S.
La figura 1.8 muestra la arquitectura en diagrama de bloques de los dispositivos
EPM7032, EPM7032V, EPM7064 y EPM7096, pertenecientes a de la familia MAX7000.
La figura 1.9 muestra la arquitectura de los dispositivos pertenecientes a la familia
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
MAX7000E y MAX 7000S.
Gilardoni - Orozco - Cayssials
Figura 1.8
1-12
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
En el número que identifica cada dispositivo está codificado la familia a la que
pertenece y la cantidad de macroceldas que posee. Por ejemplo el dispositivo EPM7032
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
posee el número 7 que indica que pertenece a la familia MAX7000, y el número 32 que
-C
ay
ss
ial
s-
indica que posee 32 macroceldas.
Figura 1.9
Comparando las figuras 1.8 y 1.9 puede observarse que la diferencia entre ambas
Or
oz
co
arquitecturas es relativa a los recursos de interconexión provenientes de las entradas
globales.
7.1.3.1. Macroceldas
Gi
lar
do
ni
-
Las macroceldas en las dispositivos de la familia MAX 7000, pueden ser configuradas
individualmente para realizar operaciones de lógica combinacional o secuencial. La
macrocelda consiste de tres bloques funcionales: el arreglo lógico (términos productos), la
matriz de selección de términos producto y el registro programable.
Gilardoni - Orozco - Cayssials
1-13
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
EPM7064 y EPM7096, pertenecientes a de la familia MAX7000.
UN
S
La figura 1.10 muestra la macrocelda de los dispositivos EPM7032, EPM7032V,
Figura 1.10
La figura 1.11 muestra una macrocelda de los dispositivos pertenecientes a la familia
Or
oz
co
-C
ay
ss
ial
s-
MAX7000E y MAX7000S.
Figura 1.11
La lógica combinacional es implementada en el arreglo lógico, el cual provee cinco
Gi
lar
do
ni
-
términos producto por macrocelda.
La matriz de selección de términos producto permite determinar si la conexión de los
términos producto será a las entradas lógicas primarias (Compuertas OR o XOR), para
implementar funciones combinacionales, o a las entradas secundarias (clear, preset, clock
y clock enable del registro de la macrocelda).
Gilardoni - Orozco - Cayssials
1-14
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Dos clases de expansores de términos productos son disponibles para ampliar los
recursos de las macroceldas:
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Expansores compartidos: Son términos productos invertidos realimentados
dentro del arreglo lógico.
Expansores paralelos: Son términos productos provenientes de macroceldas
adyacentes físicamente.
Para realizar funciones lógicas que utilicen registros, el flip flop de cada macrocelda
puede ser individualmente programado para implementar los tipos: D, T, JK o SR.
Además, el flip flop puede deseleccionarse para implementar una función combinacional
en la macrocelda.
A cada registro programable puede ingresar la señal de reloj de tres modos diferentes:
Señal de reloj global: Este modo utiliza el contacto de entrada dedicado "global
clock". Brinda la mayor performance en cuanto a velocidad de propagación
puesto que es la forma más rápida de propagar la señal de reloj hacia todos los
flip-flops del dispositivo.
Señal de reloj global habilitada por una señal clock enable activa en high:
Este modo provee la habilitación de la señal de reloj que ingresa a cada flip flop,
y además mantiene la performance en cuanto a velocidad como en el modo de
-C
ay
ss
ial
s-
operación anterior.
Señal de reloj implementada con un término producto. En este modo la señal
de reloj que ingresa al flip flop puede provenir de otras macroceldas o contactos
de Entrada/Salida.
En los dispositivos EPM7032, EPM7032V, EPM7064 y EPM7096, las señal global de
Or
oz
co
reloj está disponible, como muestra la figura 1.8, a través del contacto denominado
GCLK1.
En los dispositivos de la familia MAX 7000E y MAX 7000S están disponibles dos
señales de reloj globales a través de los contactos denominados GCLK1 y GCLK2. Como
Gi
lar
do
ni
-
muestra la figura 1.9, estas señales pueden ingresar al dispositivo en forma directa,
invertidas o permutadas.
Cada registro de las macroceldas soporta funciones de clear y preset asincrónicas.
Como muestran las figuras 1.10 y 1.11, la matriz de selección de términos producto asigna
los recursos necesarios para controlar esas funciones. Además, la señal clear de cada
Gilardoni - Orozco - Cayssials
1-15
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
registro puede ser individualmente accedida a través del contacto global clear, denominado
GCLRn.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Todos los contactos de Entrada/Salida de los dispositivos MAX 7000E y MAX 7000S
poseen caminos de entrada rápidos hacia los registros de las macroceldas. Estos caminos
dedicados permiten que la señal de entrada evite los retardos producidos en la PIA
(Programmable Interconnect Array) y en la lógica combinacional, para acceder
directamente a la entrada D del flip flop con un retardo de 3ns.
7.1.3.2. Logic Array Blocks
La arquitectura de los dispositivos MAX7000 está basada en la interconexión de
arreglos lógicos, de alta performance y flexibilidad, denominados Logic Array Blocks
(LABs). Un LAB consiste de 16 macroceldas, como muestran las figuras 1.8 y 1.9.
Múltiples LABs son interconectados a través de un arreglo programable de interconexión
(PIA, del inglés "Programmable Interconnect Array"). Este arreglo de interconexión es un
Figura 1.12
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
bus global al cual llegan también, señales provenientes de las celdas de Entrada/Salida.
Gilardoni - Orozco - Cayssials
1-16
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Cada LAB es alimentado por las siguientes señales:
36 señales provenientes del arreglo programable de interconexión (PIA) usadas
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
como entradas lógicas generales.
Controles globales que son usados para realizar funciones de registro
secundarias.
Caminos directos de entrada desde los contactos de Entrada/Salida hacia los
registros, usados para lograr pequeños tiempos de setup en los dispositivos
MAX7000E y MAX7000S.
La figura 1.12 muestra en diagrama de bloques la composición de un LAB. En esta
figura puede observarse la estructura de interconexión vecinal denominada Local Array.
7.1.3.3. Expansores de Términos Producto (Expansores Paralelos y
Compartidos)
Aunque la mayoría de las funciones lógicas pueden ser implementadas con los cinco
términos producto disponibles en una sola macrocelda, funciones lógicas más complejas
requieren términos productos adicionales. De esta forma otra macrocelda puede ser usada
para suplir los recursos lógicos requeridos. La arquitectura MAX7000 sólo permite que
ambos expansores de términos productos, paralelos y compartidos, provean términos
-C
ay
ss
ial
s-
adicionales a cualquier macrocelda que se encuentre en el mismo LAB. Estos expansores
ayudan a que la lógica sea sintetizada con la mínima utilización de recursos lógicos, para
obtener la mayor velocidad posible.
7.1.3.4. Expansores Compartidos
Cada LAB posee 16 expansores compartidos (uno por cada macrocelda). Estos
Or
oz
co
expansores que pueden ser vistos como simples términos productos con salidas invertidas
que se realimentan al arreglo lógico. Pueden ser usados y compartidos por una o todas las
macroceldas del LAB correspondiente para construir funciones lógicas complejas. El
Gi
lar
do
ni
-
retardo producido cuando un expansor compartido es utilizado, no supera los 10ns. En las
especificaciones técnicas pueden observarse los valores típicos de este retardo denominado
tSEXP .
La figura 1.13 muestra cómo pueden ser alimentadas múltiples macroceldas con
expansores compartidos.
Gilardoni - Orozco - Cayssials
1-17
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.13
7.1.3.5. Expansores Paralelos
Los expansores paralelos son términos productos, no utilizados en una macrocelda, que
pueden ser asignados a macroceldas vecinas, dentro de un mismo LAB, para implementar
funciones rápidas y complejas. Estos permiten que hasta un total de 20 términos productos
puedan sumarse en una macrocelda, formados por los 5 términos provistos por la
LAB.
-C
ay
ss
ial
s-
macrocelda y 15 expansores paralelos provistos por las macroceldas vecinas de un mismo
El software de síntesis MAX+PLUS II de ALTERA, puede asignar hasta un total de tres
conjuntos de hasta 5 expansores paralelos a las macroceldas que requieran términos
productos adicionales. Cada conjunto de 5 expansores paralelos incurre en un pequeño
incremento del retardo, simbolizado con tPEXP. Por ejemplo, si una macrocelda requiere 14
Or
oz
co
términos productos, el software de síntesis usará los 5 términos producto de una
macrocelda y asignará a la misma 2 conjuntos de expansores paralelos de 5 y 4 términos
producto respectivamente. Esta asignación incrementará el retardo total a 2 × t PEXP .
Dos grupos de 8 macroceldas dentro de cada LAB (macrocelda 1 hasta 8 y macrocelda
Gi
lar
do
ni
-
9 hasta 16) integran 2 cadenas para ceder o adquirir expansores paralelos. Una macrocelda
adquiere expansores paralelos desde la macrocelda anterior. Por ejemplo, la macrocelda 8
puede obtener expansores paralelos desde la macrocelda 7, de las macroceldas 7 y 6 o
desde las macroceldas 7, 6 y 5. Dentro de cada grupo de 8 macroceldas, una macrocelda
sólo puede ceder expansores paralelos a una macrocelda de mayor numeración y, por el
Gilardoni - Orozco - Cayssials
1-18
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
contrario, una macrocelda sólo puede obtener expansores paralelos desde una macrocelda
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
de menor numeración.
Figura 1.14
-C
ay
ss
ial
s-
La figura 1.14 muestra cómo son apropiados los expansores paralelos desde las
macroceldas vecinas.
7.1.3.6. Programmable Interconnect Array (PIA)
Las señales lógicas son propagadas entre los LABs a través del arreglo de interconexión
Or
oz
co
programable (PIA). Este es un bus global que conecta cualquier fuente de señal a cualquier
destino dentro del dispositivo. Todas las entradas dedicadas, los contactos de
Entrada/Salida y las salidas de las macroceldas, ingresan a la PIA. Esto posibilita que
dichas señales estén disponibles a lo largo de todo el dispositivo.
Gi
lar
do
ni
-
La figura 1.15 muestra cómo las señales son ruteadas desde la PIA hacia un LAB. Una
celda EEPROM controla una de las dos entradas de una compuerta AND, la cual permite
que dicha señal ingrese, o no, al LAB correspondiente. Además puede observarse el
ingreso al LAB tanto de la señal como de la señal negada.
Gilardoni - Orozco - Cayssials
1-19
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.15
Los retardos de propagación de las señales en la PIA son fijos. Esta es la principal
diferencia con respecto a los FPGAs (Field Programmable Gate Arrays) cuyos retardos son
acumulativos y dependientes del camino recorrido.
La PIA elimina asimetrías entre señales y permite predecir fácilmente el
comportamiento temporal del dispositivo.
7.1.3.7. I/O Control Blocks (Celdas de Entrada/Salida)
Los bloques de control de Entrada/Salida permiten que cada contacto del dispositivo
pueda ser individualmente configurado como entrada, salida o bidireccional. Todos los
contactos de Entrada/Salida poseen un buffer de tres estados (tri-state) que puede ser
-C
ay
ss
ial
s-
controlado individualmente por una de las señales globales de output enable, o ser
conectados directamente a tierra o VCC.
La figura 1.16 muestra una celda de Entrada/Salida de los dispositivos de la familia
MAX7000, EPM7032, EPM7032V, EPM7064 y EPM7096. La figura 1.17 lo hace con los
Gi
lar
do
ni
-
Or
oz
co
dispositivos MAX 7000E y MAX 7000S.
Gilardoni - Orozco - Cayssials
Figura 1.16
1-20
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.17
Nota: La salida open-drain sólo está disponible en los dispositivos MAX7000S.
Las celdas de Entrada/Salida de los dispositivos de la familia MAX7000, EPM7032,
EPM7032V, EPM7064 y EPM7096 poseen dos señales globales de output enable (activas
OE2.
-C
ay
ss
ial
s-
en low) que provienen de los contactos de Entrada/Salida dedicados denominados OE1 y
Las celdas de Entrada/Salida de los dispositivos MAX7000E y MAX7000S poseen seis
señales globales de output enable. Estas señales ingresan a las celdas por intermedio de la
PIA, y provienen de dos contactos globales dedicados de output enable (OE1 y OE2), de
un subconjunto de contactos de Entrada/Salida y de un subconjunto de celdas de
Or
oz
co
Entrada/Salida.
Cuando la señal de control de un buffer de tres estados es conectada a tierra, la salida
presenta alta impedancia y el contacto de Entrada/Salida puede ser utilizado como entrada.
Contrariamente si la señal de control es conectada a VCC, la salida es habilitada y el
Gi
lar
do
ni
-
contacto es utilizado como salida.
La arquitectura de los dispositivos de la familia MAX7000 provee dos formas de
realimentar señal desde una celda de Entrada/Salida hacia la PIA. Es posible realimentar
señal tanto de la entrada como de la salida del buffer de tres estados.
Gilardoni - Orozco - Cayssials
1-21
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Todas las celdas de Entrada/Salida están asociadas a una macrocelda y en general la
cantidad de macroceldas es superior a la cantidad de contactos de Entrada/Salida.
In-System Programmability (ISP)
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
7.1.4.
Los dispositivos MAX7000S pueden ser programados en sistema (ISP) a través de la
interfase estándar industrial JTAG (Joint Test Action Group). La característica de ser ISP
permite la programación del dispositivo hasta después de montado en la placa de circuito
impreso, ya que durante la programación todos los contactos de Entrada/Salida
permanecen en un estado de alta impedancia. Otra característica importante de ISP en los
dispositivos que basan su programación en celdas EEPROM, es que no es necesario
ingresar externamente el voltaje de programación (generalmente superior a los 5volts), ya
que éste es generado internamente por el dispositivo.
Los otros dispositivos de la familia MAX7000 que no son ISP compatibles, son
programados a través de un hardware específico, conocido como MPU (Master
Programming Unit), controlado a través del software de síntesis y programación
MAX+PLUS II de ALTERA.
7.1.5.
Control de Velocidad / Potencia Programable
La familia de dispositivos MAX7000 ofrece un modo de operación que permite
-C
ay
ss
ial
s-
especificar individualmente si cada macrocelda funcionará en modo de alta velocidad o
modo de bajo consumo de potencia. Estos dos modos de operación son excluyentes, es
decir la elección de uno de ellos implica la no elección del otro.
7.1.6.
Interfase Multi Voltaje de Entrada/Salida. (MultiVolt I/O
Or
oz
co
Interface)
Los dispositivos MAX7000, excepto los de encapsulado de 44 contactos, soportan las
características de multi voltaje. Esta característica permite que los dispositivos MAX7000
puedan interactuar e intercambiar información con dispositivos o sistemas que posean
Gi
lar
do
ni
-
diferentes voltajes de alimentación.
Los dispositivos que poseen esta característica poseen dos conjuntos de contactos de
entrada de alimentación independientes. Un conjunto es usado para la operación interna
del dispositivo y para uso en los buffers de entrada. Estos contactos son designados como
VCCINT y deben ser siempre conectados a 5volts. El otro conjunto de contactos de
Gilardoni - Orozco - Cayssials
1-22
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
alimentación está asociado con los contactos de Entrada/Salida y son éstos los que deben
poseer la característica de multi voltaje. Dichos contactos, designados VCCIO, pueden
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
conectarse tanto a 3,3 como a 5 volts.
Figura 1.18
La figura 1.18 muestra dos de los encapsulados posibles utilizados en la familia
MAX7000; ellos muestran la existencia de los dos conjuntos de contactos de alimentación:
VCCINT y VCCIO.
-C
ay
ss
ial
s-
En aplicaciones de lógica TTL todos los contactos de entrada de alimentación
(VCCINT y VCCIO) deben conectarse a 5 volts.
7.1.7.
Slew-Rate Control
En los dispositivos MAX7000E y MAX7000S, los buffers de salida en cada contacto de
Entrada/Salida poseen la capacidad de ajustar su slew rate. De esta manera puede adaptarse
Or
oz
co
el comportamiento de la salida para conseguir un mejor desempeño con respecto al ruido o
a la velocidad.
Un elevado slew rate provee alta velocidad de transición de la señal de salida, ideal para
Gi
lar
do
ni
-
aplicaciones de alta velocidad. Sin embargo, estas elevadas velocidades pueden introducir
ruidos en el sistema.
Un pequeño slew rate reduce el ruido en el sistema pero adiciona un retardo adicional
de 4 a 5 ns. En los dispositivos MAX7000E existe un bit denominado "Turbo Bit". Cuando
éste posee un valor cero, el slew rate es pequeño y cuándo es uno, el slew rate es elevado.
La desventaja en estos dispositivos es que el Turbo Bit configura el slew rate de todos los
Gilardoni - Orozco - Cayssials
1-23
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
contactos de Entrada/Salida, no existiendo la posibilidad de un control individual. Esta
desventaja es suplida en los dispositivos MAX7000S, donde cada contacto de
EEPROM.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Entrada/Salida posee un control individual del slew rate a través del estado de una celda
7.2 La Familia FLEX 10K
7.2.1.
Terminología
ALTERA define su propia terminología para referirse a sus dispositivos de la familia
FLEX 10K. Algunos de los términos más importantes son:
Embedded Array Blocks (EABs): Son bloques de memoria RAM estática de
alta velocidad insertados dentro de la arquitectura de los dispositivos FLEX
10K.
Logic Elements: Son las unidades lógicas funcionales más pequeñas en la
arquitectura de la familia FLEX 10K.
Local Interconect Array: Es la estructura de interconexión local asociada a
cada LAB.
Logic Array Block (LAB): Agrupación de ocho elementos lógicos
interconectados a través del arreglo de interconexión local.
-C
ay
ss
ial
s-
Logic Array: Es la estructura formada por un conjunto de LABs.
FastTrack: Estructura de interconexión global formada por filas de
interconexión y columnas de interconexión.
Filas y Columnas de Interconexión: Son redes de cableado que atraviesan al
dispositivo en forma horizontal y vertical. Cada camino de conexión dentro de
las mismas es llamado canal de fila y canal de columna, respectivamente.
Or
oz
co
Configuración: Se denomina así a la acción de programar un dispositivo
SRAM.
Descripción General
Gi
lar
do
ni
-
7.2.2.
Con un rango de 10.000 a 130.000 compuertas lógicas, es una familia de dispositivos
dedicada a satisfacer necesidades propias de diseños mediante gate arrays. Los dispositivos
de esta familia incorporan bloques internos de memoria, lazos de enganche de fase (PLLs)
para la distribución de relojes de alta velocidad dentro del chip y un esquema de
interconexión de alta velocidad y retardos predecibles (FastTrack). Estas características
Gilardoni - Orozco - Cayssials
1-24
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
hacen de esta familia la opción ideal para aplicaciones de alta complejidad o donde se
requiera la realización de tareas de cómputo numérico en forma eficiente (aplicaciones
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
para Digital Signal Processing, DSP).
Los bloques internos de memoria EAB (del ingles Embedded Array Blocks) posibilitan
combinar la potencia combinacional de los LEs (lógica masiva de grano fino, plenamente
interconectada) con la facilidad para generar tablas o funciones de gran fan-in propias de
las memorias ROM / RAM. A diferencia de otras FPGAs, el uso de memoria de las FLEX
10K no se hace a costa de la perdida de recursos lógicos.
Estas prestaciones, junto a su alta velocidad, hacen de la familia FLEX 10K la
herramienta ideal para aplicaciones de tratamiento de señales (DSP) u otros diseños de
gran complejidad.
7.2.3.
Arquitectura (Descripción Funcional)
La arquitectura interna de la familia FLEX 10K incluye los siguientes elementos:
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
Embedded Array Blocks
Logic Element
Logic Array Blocks (LAB)
FastTrack Interconnect
I / O Element (Elementos de Entrada/Salida)
Figura 1.19
La figura 1.19 muestra, en diagrama de bloques, la arquitectura usada en los
dispositivos FLEX 10K.
Gilardoni - Orozco - Cayssials
1-25
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
7.2.3.1. Embedded Array Blocks
Los EAB (Embedded Array Blocks) son bloques de memoria RAM con registros en los
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
ports de entrada y salida. Los EAB son usados para implementar multiplicadores, circuitos
de corrección de errores y funciones de gran fan-in.
Es posible implementar funciones lógicas configurando los EAB con un patrón de sólo
lectura durante la configuración lo que crea una gran tabla de look-up (LUT). Con LUTs
las funciones combinacionales son implementadas buscando los resultados en lugar de
computarlos. Esta implementación de funciones combinacionales puede ser más rápida que
el uso de algoritmos implementados sin el uso de tablas de look-up.
La gran capacidad de los EABs posibilita la implementación de funciones complejas en
un solo nivel de compuerta. Esto evita el agregado de retardos de propagación debido a
que no es necesario recurrir a recursos de interconexión extras. Por ejemplo, un solo EAB
puede implementar un multiplicador aritmético de 4 x 4 bits con 8 bits de entrada y 8 bits
de salida.
Los EABs poseen ventajas sobre los FPGA (Field programmable Gate Array). Los
FPGA implementan RAM como pequeños bloques RAM distribuidos a lo largo del
dispositivo. Estos bloques RAM contienen retardos de propagación que son menos
predecibles cuanto más bloques RAM sean utilizados. Además, el hecho de que la RAM
-C
ay
ss
ial
s-
en los FPGAs esté distribuida en pequeños bloques provoca problemas de ruteo,
dificultando su interconexión cuando se requiere implementar grandes bloques de
memoria.
Los EABs, cuando son utilizados como memorias RAM, pueden configurarse en
cualquiera de los siguientes tamaños: 256x8, 512x4, 1024x2 ó 2048x1. Además, pueden
interconectarse múltiples EABs para aumentar la capacidad. También proveen opciones de
Or
oz
co
configuración para conducir y controlar señales de reloj. Pueden ser usados diferentes
relojes para las entradas y salidas de los EABs. Pueden insertarse registros en forma
independiente en la entrada de datos, en el bus de salida, en el bus de direcciones y en la
Gi
lar
do
ni
-
señal "write enable" (WE) de los EABs. Las señales globales dedicadas y el sistema de
interconexión local de los EABs pueden propagar la señal de WE.
Gilardoni - Orozco - Cayssials
1-26
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
-C
ay
ss
ial
s-
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.20
Las señales acceden a cada EAB por una fila de interconexión y pueden salir de él tanto
por una fila o un columna de interconexión. Cada salida de un EAB puede propagar hasta
dos canales de filas y hasta dos canales de columnas; los canales no utilizados pueden ser
utilizados por otros elementos lógicos (LEs).
La figura 1.20 muestra en diagrama de bloques, la composición de un EAB (Embedded
Or
oz
co
Array Block).
7.2.3.2. Logic Array Block (LAB)
El Logic Array Block (LAB) consiste en la agrupación de: ocho elementos lógicos
Gi
lar
do
ni
-
(LEs), las cadenas de carry y cascada asociadas, señales de control del LAB y el arreglo de
interconexión local del LAB. Los LABs proveen una estructura de grano grueso,
facilitando un ruteado eficiente con óptima utilización del dispositivo y alta performance.
La figura 1.21 muestra la arquitectura de un Logic Array Block (LAB).
Gilardoni - Orozco - Cayssials
1-27
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
-C
ay
ss
ial
s-
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.21
Cada LAB provee cuatro señales de control, con inversión programable que pueden ser
utilizadas por todos los LEs. Dos de estas señales pueden ser usadas como relojes, las otras
dos pueden ser usadas para control de clear/preset. Las señales de reloj que ingresan a los
Or
oz
co
LABs pueden provenir de los contactos de entrada de señal de reloj dedicados, de las
señales globales, de las señales de Entrada/Salida o de señales internas a través del arreglo
de interconexión local del LAB respectivo. Las señales de control de clear/preset pueden
provenir de las señales globales, de las señales de Entrada/Salida o de las señales internas a
Gi
lar
do
ni
-
través del arreglo de interconexión local del LAB respectivo. Las señales de control recién
mencionadas pueden observarse en la figura 1.21.
Las señales de control globales son generalmente usadas para propagar señales de reloj,
clear o preset.
Gilardoni - Orozco - Cayssials
1-28
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Si alguna lógica es requerida sobre alguna señal de control, ésta puede ser generada en
uno o más LEs de cualquier LAB y ser propagada hacia el arreglo de interconexión local
salidas de los LEs.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
del LAB deseado. Además, las señales de control global pueden ser generadas desde las
7.2.3.3. Logic Element (Elementos lógicos)
Los elementos lógicos son las unidades lógicas funcionales más pequeñas en la
arquitectura de la familia FLEX 10K. Cada LE contiene una tabla de look-up de 4
entradas, la cual es usada como un generador de funciones lógicas que puede fácilmente
computar cualquier función de cuatro variables. Además, cada LE contiene un flip flop
programable con un enable sincrónico, una cadena de carry y una cadena de cascada. Cada
LE se conecta con el arreglo de interconexión local del LAB y con la estructura de
interconexión global denominada "FastTrack".
La figura 1.22 muestra la estructura de un elemento lógico.
El flip flop programable de cada LE puede ser configurado para funcionar como flip
flop D, T, JK o SR. Las señales de control de reloj, clear y preset que ingresan al flip flop,
pueden provenir de señales globales, de contactos de Entrada/Salida de propósito general o
de cualquier lógica interna. Para implementar funciones combinacionales, el flip flop es
evitado y la salida de la LUT es conducida hacia la salida del LE.
-C
ay
ss
ial
s-
El LE posee dos salidas; una destinada a la interconexión local dentro del LAB y la otra
destinada a la interconexión global que accede a las columnas o a las filas de la estructura
de interconexión FastTrack. Estas dos salidas pueden ser usadas y controladas
independientemente; por ejemplo, la LUT puede utilizar una de las salidas mientras el
registro del LE utiliza la otra. Esta característica es denominada "register packing" y puede
mejorar la utilización del LE debido a que la LUT y el registro del LE pueden ser usados
Or
oz
co
para implementar funciones independientes.
La arquitectura de la familia FLEX 10K provee dos tipos de caminos de datos
dedicados de alta velocidad que conectan LEs adyacentes, sin hacer uso de los caminos de
Gi
lar
do
ni
-
interconexión local. Estos caminos adicionales son denominados cadenas de carry y
cadenas de cascada. Las cadenas de carry soportan sumadores y contadores de alta
velocidad; las cadenas de cascada implementan funciones de gran fan–in con mínimo
retardo. Las cadenas de carry y de cascada conectan a todos los LEs en un LAB y a todos
los LABs en la misma fila de la estructura de interconexión FastTrack. El uso intensivo de
Gilardoni - Orozco - Cayssials
1-29
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
cadenas de carry y cascada puede reducir la flexibilidad de ruteo, debido al consumo de
recursos de interconexión que ello implica. Por lo tanto, el uso de estas cadenas debería ser
velocidad se refiere.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
limitada a porciones del diseño donde fuera necesaria una elevada performance en lo que a
Figura 1.22
-C
ay
ss
ial
s-
7.2.3.4. Cadenas de Carry
Las cadenas de carry proveen muy alta velocidad (0.2 ns.) para realizar funciones
aritméticas entre LEs. En operaciones de bits donde existen acarreos, la señal de acarreo de
un LE es conducida a través de la cadena de carry hacia la LUT de un LE adyacente. Esta
característica permite implementar eficientemente contadores de alta velocidad, sumadores
Or
oz
co
y comparadores de un ancho arbitrario.
La lógica asociada a la implementación de una cadena de carry puede ser creada
automáticamente por el software MAX+PLUS II durante el proceso de diseño o
especificada por el diseñador.
Gi
lar
do
ni
-
Las cadenas de carry que superan los ocho LEs de un LAB, son automáticamente
implementadas enlazando múltiples LABs.
señal de propósito general.
Gilardoni - Orozco - Cayssials
1-30
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
-C
ay
ss
ial
s-
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.23
La figura 1.23 muestra cómo puede ser implementado un sumador de n bits con n + 1
LEs, utilizando la cadena de carry. Una porción de las LUT generan la suma de dos bits
Or
oz
co
usando las señales de entrada y la señal de acarreo; la suma es ruteada a la salida del LE.
El registro puede ser evitado en la implementación de sumadores simples o utilizado como
acumulador. Otra porción de la LUT y la lógica asociada a la cadena de carry, generan la
señal de carry de salida, la cual es ruteada directamente a la entrada de carry del próximo
Gi
lar
do
ni
-
bit a sumar. La señal de carry final es ruteada a un LE donde puede ser utilizada como una
7.2.3.5. Cadenas de Cascada
Con las cadenas de cascada pueden implementarse funciones de gran fan-in. LUTs
adyacentes pueden ser usadas para computar porciones de la función en paralelo; siendo la
cadena de cascada la que conecte serialmente los valores intermedios. La cadena de
Gilardoni - Orozco - Cayssials
1-31
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
cascada puede utilizar una operación lógica OR o una AND (según la lógica utilizada) para
conector las salidas de los LEs adyacentes. Cada LE adicional provee cuatro posibles
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
entradas más, con un retardo de propagación de 0,7 ns por LE. La lógica asociada a la
cadena de cascada puede ser creada automáticamente por el software MAX+PLUS II o
especificada por el diseñador.
Las cadenas de cascada que superan los ocho LEs de un LAB son automáticamente
implementadas enlazando múltiples LABs.
La figura 1.24 muestra cómo el uso de cadenas de cascada permite conectar LEs
adyacentes para formar funciones de gran fan–in. Estos ejemplos muestran funciones de
4.n variables de entrada implementadas con 4 LEs, es decir, n = 4. El retardo de
-C
ay
ss
ial
s-
propagación de un LE es de 1.9 ns y el retardo de la cadena de cascada es de 0.7 ns.
Figura 1.24
Or
oz
co
7.2.3.6. Modos de Operación de los Elementos Lógicos
Los elementos lógicos (LEs) de la familia FLEX 10K pueden operar en cuatro de los
Gi
lar
do
ni
-
siguientes modos:
Modo Normal
Modo Aritmético
Modo Contador Ascendente/Descendente Up / Down
Modo Contador Borrable.
Cada uno de estos modos de operación usa diferentes recursos de los LEs. En
cualquiera de ellos, existen disponibles siete entradas a los LEs. Cuatro entradas de datos
Gilardoni - Orozco - Cayssials
1-32
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
desde el arreglo local de interconexión del LAB, la realimentación desde el registro
programable y las señales de entrada de las cadenas de carry y cascada del LE previo.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Tres señales de entrada al LE proveen controles de reloj, clear y preset para el registro
programable.
El software MAX+PLUS II elige automáticamente el modo de operación apropiado. Si
es requerido, el diseñador puede crear funciones de propósito especial usando un modo de
-C
ay
ss
ial
s-
operación determinado para obtener óptima performance.
Figura 1.25
La arquitectura provee una señal sincrónica de clock enable para el registro, en todos
los modos de operación.
Or
oz
co
La figura 1.25 muestra los modos de operación normal y aritmética. La figura 1.26
muestra los modos de operación del Contador Ascendente/Descendente y del Contador
Gi
lar
do
ni
-
inicializable en cero.
Gilardoni - Orozco - Cayssials
1-33
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.26
7.2.3.7. FastTrack Interconnect
-C
ay
ss
ial
s-
En la arquitectura de la familia FLEX 10K, las conexiones entre LEs y los contactos de
Entrada/Salida son provistas por la estructura de interconexión "FastTrack". Ésta consiste
en una serie de conexiones continuas, horizontales y verticales, que atraviesan el
dispositivo. El conjunto se estas conexiones horizontales y verticales son denominadas
filas y columnas de interconexión, respectivamente. Esta estructura de interconexión
global permite predecir la performance, en cuanto a velocidad de propagación de las
Or
oz
co
señales, aun en diseños complejos. Ésta es la principal diferencia con los dispositivos
FPGAs, ya que éstos poseen una estructura de interconexión global segmentada. Por lo
tanto, los dispositivos FPGA requieren matrices de interconexión para conectar un número
Gi
lar
do
ni
-
variable de caminos. Esto incrementa el retardo de propagación entre los recursos lógicos y
reduce la performance.
La figura 1.27 muestra la diferencia en la estructura de interconexión global entre los
dispositivo FLEX 10K y los dispositivos FPGA.
Gilardoni - Orozco - Cayssials
1-34
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.27
La estructura de interconexión "FastTrack" consiste de filas y columnas de canales de
interconexión que atraviesan todo el dispositivo. Cada fila de LABs es servida por una fila
de interconexión dedicada. Las filas de interconexión pueden propagar señales hacia o
desde los contactos de Entrada/Salida y alimentar otros LABs del dispositivo. Las
columnas de interconexión son las encargadas de propagar señales entre filas de
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
interconexión y además pueden conectar contactos de Entrada/Salida.
Gilardoni - Orozco - Cayssials
Figura 1.28
1-35
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Las filas y columnas de interconexión están compuestas por canales de filas y canales
de columnas respectivamente. Un canal de fila puede ser usado por un LE o por uno de tres
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
canales de columnas. Estas cuatro señales alimentan un multiplexor dual de 4::1, como
puede observarse en la figura 1.28, el cual deriva las señales a dos canales de filas
específicos. Estos multiplexores, conectados a cada LE, permiten a los canales de
columnas conectarse con los canales de filas, aun cuando todos los LEs de un LAB estén
conectados a la fila de interconexión.
Cada columna de LABs es servida por una columna de interconexión dedicada. Una
señal proveniente de una columna de interconexión debe ser ruteada a una fila de
interconexión antes de que pueda entrar a un LAB o a un EAB.
La figura 1.29 muestra en forma tabular, los recursos de interconexión disponibles en
Figura 1.29
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
los distintos dispositivos de la familia FLEX 10K.
La figura 1.30 muestra la interconexión entre LABs adyacentes, filas, columnas y el
arreglo de interconexión local, como así también las cadenas de carry y cascada asociadas.
Cada LAB es designado de acuerdo a su locación física dentro del dispositivo: una letra
Gilardoni - Orozco - Cayssials
1-36
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
representa la fila y un número representa la columna. Por ejemplo, el LAB B3 está situado
-C
ay
ss
ial
s-
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
en la fila B, columna 3.
Figura 1.30
7.2.3.8. I/O Elements (Elementos de Entrada/Salida)
Un elemento de Entrada/Salida contiene un buffer bidireccional y un registro. El
Or
oz
co
registro puede ser utilizado como registro de entrada, para datos que requieran un corto
tiempo de setup, o como registro de salida, para datos que requieran un tiempo rápido de
propagación de señales hacia el exterior. En algunos casos, el uso de un registro de un LE,
como registro de entrada, podría producir un menor tiempo de setup que el logrado
Gi
lar
do
ni
-
utilizando un registro de un elemento de Entrada/Salida.
Un elemento de Entrada/Salida puede utilizarse para configurar un contacto como
entrada, salida o bidireccional.
La figura 1.31 muestra el diagrama de bloques de un elemento de Entrada/Salida.
Gilardoni - Orozco - Cayssials
1-37
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.31
Cada elemento de Entrada/Salida selecciona las señales de control de clock, clear, clock
periférico".
-C
ay
ss
ial
s-
enable y output enable de una red de señales de control, denominada "bus de control
Este bus de control periférico provee hasta 12 señales de control periféricas que pueden
ser destinadas a los siguientes usos:
Hasta ocho señales de output enable.
Hasta seis señales de clock enable.
Or
oz
co
Hasta dos señales de clock.
Hasta dos señales de clear.
Si más de seis señales de clock enable u ocho señales de output enable son requeridas,
Gi
lar
do
ni
-
cada elemento de Entrada/Salida del dispositivo puede ser controlado por señales de output
enable y clock enable provenientes de LEs específicos. Además de las dos señales de clock
disponibles en el bus de control periférico, cada elemento de Entrada/Salida puede utilizar
uno de los dos contactos dedicados de clock globales del dispositivo.
Gilardoni - Orozco - Cayssials
1-38
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
La señal global de reset es la señal de control de mayor prioridad y reseteará a todos los
registros de los elementos de Entrada/Salida.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
7.2.3.9. Conexión Filas – Elementos E/S
Cuando un elemento de Entrada/Salida es utilizado como entrada, la señal de entrada
puede acceder a dos canales de filas y estar disponible para todos los LEs de esa fila.
Cuando es utilizado como salida, la señal de salida es conducida a través de un multiplexor
que la selecciona del canal de la fila de interconexión deseado.
En la figura 1.32 puede verse cómo los elementos de E/S acceden a las filas de
interconexión.
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
Figura 1.32
Gilardoni - Orozco - Cayssials
Figura 1.33
1-39
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Los valores de n (canales por fila) y m (canales por contacto) varían de acuerdo al
dispositivo. La figura 1.33 muestra en forma tabular los recursos de interconexión
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
disponibles, entre filas y elementos de E/S, según el dispositivo.
7.2.3.10. Conexión Columnas – Elementos E/S
Cuando un elemento de Entrada/Salida es utilizado como entrada, la señal de entrada
puede acceder a dos canales de columnas. Cuando un elemento de E/S es utilizado como
salida, la señal de salida es conducida a través de un multiplexor que la selecciona del
canal de la columna de interconexión deseado.
En la figura 1.34 puede verse como los elementos de E/S acceden a las columnas de
interconexión.
La figura 1.35 muestra en forma tabular los recursos de interconexión disponibles, entre
7.2.4.
Or
oz
co
-C
ay
ss
ial
s-
columnas y elementos de E/S, según el dispositivo.
Figura 1.34
Distribución de señales de reloj
Gi
lar
do
ni
-
Para soportar diseños de alta velocidad, los dispositivos FLEX 10K ofrecen dos
configuraciones denominadas "ClockLock" y "ClockBoost". Estas configuraciones utilizan
lazos de enganche de fase (PLLs) para la distribución de relojes de alta velocidad dentro
del chip.
Gilardoni - Orozco - Cayssials
1-40
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 1.35
La opción "ClockLock" utiliza un PLL que reduce los retardos de propagación y las
asimetrías dentro del dispositivo.
La opción "ClockBoost" funciona como un multiplicador de reloj, lo que permite al
-C
ay
ss
ial
s-
diseñador distribuir un reloj de baja velocidad y multiplicar la señal al momento de usarla.
La acción combinada de estas dos opciones provee significantes mejoras en la
performance y ancho de banda del sistema.
Las características "ClockLock" y "ClockBoost" son activadas a través del software
MAX+PLUS II.
Configuración de Salida
Or
oz
co
7.2.5.
7.2.5.1. Interfase Multi Voltaje de Entrada/Salida. (MultiVolt I/O
Interface)
Gi
lar
do
ni
-
Al igual que los dispositivos MAX7000, la familia FLEX 10K posee la característica de
multi voltaje. Esta característica permite que los dispositivos FLEX 10K puedan
interactuar e intercambiar información con dispositivos o sistemas que posean diferentes
voltajes de alimentación.
Gilardoni - Orozco - Cayssials
1-41
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Los dispositivos que poseen esta característica poseen dos conjuntos de contactos de
entrada de alimentación independientes. Un conjunto es usado para la operación interna
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
del dispositivo y para uso en los buffers de entrada; estos contactos son designados como
VCCINT y deben ser siempre conectados a 5volts. El otro conjunto de contactos de
entrada de alimentación está asociado con los contactos de Entrada/Salida y son éstos los
que deben poseer la característica de multi voltaje. Pueden conectarse tanto a 3,3 como a
5volts. Ellos son designados con el nombre de VCCIO.
7.2.5.2. Slew-Rate Control
Los buffers de salida en cada elemento de Entrada/Salida poseen la capacidad de ajustar
el slew rate de la señal de salida de modo tal de conseguir un mejor desempeño del
dispositivo frente a ruido o frente a velocidad.
Un slew rate bajo reduce el ruido generado en el sistema pero adiciona un retardo de
propagación adicional de 2.9 ns.
Un slew rate elevado provee alta velocidad de transición de la señal de salida, ideal para
aplicaciones de alta velocidad. Sin embargo, debería utilizarse en sistemas que estén
adecuadamente protegidos contra el ruido.
Todos los contactos de E/S poseen un control individual del slew rate.
-C
ay
ss
ial
s-
7.2.5.3. Esquemas de Configuración
Las arquitectura de la familia FLEX 10K utiliza elementos de configuración SRAM que
requieren ser cargados al dispositivo cada vez que éste sea energizado. El proceso de
cargar físicamente los datos en los elementos de memoria SRAM del dispositivo, es
denominado "configuración".
La configuración de los dispositivos FLEX 10K puede realizarse de cualquiera de las
Gi
lar
do
ni
-
Or
oz
co
cinco formas mostradas en la figura 1.36.
Gilardoni - Orozco - Cayssials
Figura 1.36
1-42
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Capítulo 2
El siguiente capítulo es una introducción al lenguaje de especificación de hardware
VHDL. Los conceptos principales y la mayoría de los ejemplos presentados en este
capítulo han sido extraídos del CD-ROM titulado: ALTERA MASTER CLASS The
Interactive HDL Tutorial. Si bien dicho CD-ROM abarca ampliamente los lenguajes
VHDL y Verilog HDL aplicados a la programación de circuitos PLD (Programmable
Logic Design), en este capítulo se tratan sólo en forma práctica los principales conceptos
de VHDL.
Introducción a VHDL: Un Lenguaje de
Especificación de Hardware.
1. ¿Que significa VHDL?
VHDL son las siglas con que es conocido el Lenguaje de Descripción de Hardware
-C
ay
ss
ial
s-
definido como el estándar 1076 del IEEE. La letra "V" significa "Circuitos Integrados de
Muy Alta Velocidad" (abreviatura de VHSIC del inglés "Very High Speed Integrated
Circuit") y la sigla "HDL" significa Lenguaje de Descripción de Hardware (del inglés
"Hardware Description Language"). Por lo tanto en castellano VHDL significaría
"Lenguaje de Descripción de Hardware para Circuitos Integrados de Muy Alta Velocidad".
Este lenguaje fue desarrollado a principios de la década del 80 y fue definido como el
Or
oz
co
estándar 1076 por la IEEE en 1987. Una nueva versión compatible con la anterior,
desarrollada en 1993, agregó nuevas capacidades y removió alguna ambigüedades de la
versión anterior.
A comienzos de los años 90, VHDL fue utilizado mayoritariamente para la
Gi
lar
do
ni
-
especificación de circuitos integrados ASIC (Application-Specific Integrated Circuit) y en
la segunda mitad de la década comenzó a utilizarse en la programación de PLDs
(Programmable Logic Devices).
Gilardoni - Orozco - Cayssials
2-1
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
2. Limitaciones del VHDL
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
El VHDL es principalmente un lenguaje para diseño “digital” y tiene limitadas
capacidades en el área analógica. Aunque actualmente existen una gran cantidad de
esfuerzos tendientes a obtener una versión analógica del lenguaje, dicho esfuerzos están
aún en una etapa incipiente.
El estándar define el lenguaje y su sintaxis, pero no describe el estilo que debe utilizarse
en la especificación de un proyecto. Esto provoca que las diferentes herramientas de
síntesis tengan ciertas diferencias, pero sin embargo estas diferencias son escasas y es
posible modificar ligeramente los códigos para adaptarlos a cada una de las herramientas
de síntesis.
3. Estilos de Escritura de VHDL
Los diferentes estilos de escritura de código VHDL se basan en un concepto conocido
como abstracción. La abstracción define la magnitud del detalle en las especificaciones del
sistema a diseñar.
Hay cuatro niveles principales de abstracción, los cuales son representados en la figura
Or
oz
co
-C
ay
ss
ial
s-
2.1.
Figura 2.1
El nivel más bajo que es posible definir es el LAYOUT (disposición, esquema) . En este
nivel se especifica la información referente a la disposición del diseño sobre el silicio y
Gi
lar
do
ni
-
puede también especificar información detallada de temporizado.
El nivel superior al de LAYOUT es el nivel LOGIC. En este nivel se interconectan las
compuertas lógicas y registros. Todo lo referente al nivel de LAYOUT es ignorado. Este
nivel contiene información sobre la función, arquitectura, tecnología y detalle del
temporizado.
Gilardoni - Orozco - Cayssials
2-2
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
El tercer nivel, es el nivel RTL (Register Transfer Level - nivel de transferencia de
registro). En este nivel se definen cada uno de los registros que componen el diseño y la
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
lógica entre ellos.
Por último, el cuarto nivel es el BEHAVIORAL (comportamiento). Este nivel hace uso
del VHDL para describir la función del diseño, sin especificar la arquitectura de registros.
Aunque es el nivel de mayor abstracción, el código desarrollado a este nivel puede
contener tanta información de temporizado como la que el diseñador requiera para
representar su función.
Hoy en día la mayoría de las herramientas de síntesis requieren que el código sea escrito
a nivel RTL (Register Transfer Level). Por este motivo será adoptado en este informe
como el estilo de escritura de VHDL.
En las herramientas de síntesis que se basan en el nivel BEHAVIORAL,
automáticamente se generan arquitecturas de registros y lógica basadas en el estándar
VHDL. Existen diversas clases de estas herramientas las cuales frecuentemente se aplican
cuando es necesario implementar algoritmos como, por ejemplo, en los casos de
procesamiento de señales.
4. Conceptos Principales del Lenguaje
-C
ay
ss
ial
s-
Completaremos la introducción de cómo es usado el VHDL introduciendo los
principales conceptos y construcciones disponibles para el diseñador.
Como VHDL es un lenguaje que permite describir hardware, éste debe permitir
describir actividades que operan simultáneamente, como por ejemplo la siguiente
Gi
lar
do
ni
-
Or
oz
co
conexión.
Figura 2.2
Tales actividades se denominan concurrentes.
Gilardoni - Orozco - Cayssials
2-3
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Un aspecto específico de descripción de concurrencia es la habilidad de describir
estructuras o jerarquías. La descripción de estructuras en VHDL puede ser libremente
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
mezclada con descripción de comportamiento (behavior), como muestra la figura 2.3.
Figura 2.3
En este caso las estructuras u1, u2 y u3 funcionan concurrentemente conformando una
estructura más compleja.
El lenguaje VHDL puede contener también sentencias que se ejecuten en forma
secuencial, similar a lo que sucede en cualquier lenguaje de programación tradicional
como ser “C”, Pascal, BASIC, etc. Sin embargo, es necesario recordar que esta
característica describe en forma secuencial un comportamiento concurrente y no es la
ejecución secuencial de un código residente en memoria.
-C
ay
ss
ial
s-
4.1 Sintaxis
Llamaremos bloque a cada parte constitutiva del diseño. Por lo tanto, un diseño estará
formado por la interconexión e interacción de distintos bloques.
A continuación se describe la sintaxis de VHDL, comenzando con el código que
representa el bloque de construcción principal de cualquier diseño, denominado
ENTIDAD.
Or
oz
co
La ENTIDAD, en VHDL, describe la interfase de un bloque (cuántos son y cómo se
llaman los contactos de entrada y salida de dicho bloque), sin definir qué es lo que hace.
En la figura 2.4 se describe la sintaxis que define un medio sumador (Halfadd).
Gi
lar
do
ni
-
La sintaxis para una entidad comienza con la palabra reservada “ENTITY”, seguida por
el nombre que se desee dar a dicha entidad y luego se coloca la palabra “IS”.
Las entradas y salidas están contenidas en el cuerpo de la sentencia “PORT”, donde se
listan la dirección y estados de cada una de las señales a nivel de bit. Finalmente se tiene la
palabra reservada “END” y el nombre de la entidad, seguida por un punto y coma.
Gilardoni - Orozco - Cayssials
2-4
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.4
Se debe notar que el uso correcto de los punto y coma en la sentencia “PORT” es como
lo muestra la figura 2.5.
Figura 2.5
-C
ay
ss
ial
s-
4.2 Arquitectura
A continuación se describe el comportamiento de la entidad, definido en el bloque
Or
oz
co
llamado arquitectura.
Figura 2.6
Gi
lar
do
ni
-
La figura 2.6 muestra una forma de definir el comportamiento del medio sumador de la
figura 2.5. La sintaxis de la definición de una arquitectura comienza con la palabra
reservada “ARQUITECTURE” seguida por el nombre con que el usuario desea identificar
a dicha arquitectura.
Gilardoni - Orozco - Cayssials
2-5
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Una arquitectura siempre está asociada con una entidad y por ello existe la palabra
reservada “OF” para referenciarla. Luego del nombre de la entidad a la que está asociada la
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
arquitectura, se coloca la palabra “IS”. El comportamiento de la arquitectura en sí se
escribe entre las palabras “BEGIN” y “END”. En este ejemplo vemos que (A xor B) es
asignado a SUM y (A and B) es asignado a CARRY.
Cabe señalar que una entidad puede tener más de una arquitectura. De esta manera, en
el ejemplo desarrollado, pueden existir varias formas en especificar un medio sumador
mediante la definición de varias arquitecturas.
4.3 Jerarquía
La entidad y la arquitectura son los bloques de construcción principales con los que una
jerarquía es construida. A continuación se describe cómo una jerarquía es representada en
VHDL, usando como ejemplo la definición de un sumador completo (FULLADD)
-C
ay
ss
ial
s-
construido a partir de dos medio sumadores (HALFADD) y una compuerta OR.
Figura 2.7
La especificación de la entidad FULLADD, representada en la figura 2.8, se realiza en
Gi
lar
do
ni
-
Or
oz
co
forma similar a la del medio sumador de la figura 2.4.
Gilardoni - Orozco - Cayssials
Figura 2.8
2-6
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
La figura 2.9 describe una posible implementación de la arquitectura de FULLADD.
Cada una de las sentencias ubicadas entre "BEGIN" y "END" crea una instancia de otra
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
entidad. Es necesario definir las señales internas I1, I2 e I3 con la palabra reservada
SIGNAL para poder interconectar las distintas arquitecturas instanciadas.
Figura 2.9
De esta manera, u1 será una instancia de la entidad HALFADD definida anteriormente.
La sintaxis de esta definición consiste en el nombre de la instancia (u1) seguida por ":" y el
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
nombre de la entidad instanciada (HALFADD). Luego debe figurar la palabra reservada
Gilardoni - Orozco - Cayssials
Figura 2.10
2-7
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
“PORT MAP” definiendo entre paréntesis el nombre que cada una de las señales de la
entidad tendrá en la instancia definida.
4.4 Declaraciones
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
En la figura 2.10 se representa el efecto de instanciar u1 a la entidad HALFADD.
Existen dos tipos de declaraciones que pueden realizarse localmente en una
arquitectura. Estos dos tipos son las señales locales que se utilizarán en la arquitectura y
las referencias a las entidades HALFADD y ORGATE, conocidas como componentes.
En el diseño de la arquitectura FULLADD de la figura 2.9 las señales I1, I2, e I3 son
locales a dicha arquitectura. Éstas no son ni entradas ni salidas, ya que son internas a
FULLADD y, por lo tanto, deben ser declaradas al comienzo de la arquitectura usando la
palabra reservada “SIGNAL”.
Antes de realizar una instancia de una entidad, tal como U1 fue instanciada de
HALFADD, es necesario declarar la entidad HALFADD dentro de la arquitectura de
FULLADD. Esto es llamado declaración de componentes y se realiza en el lugar marcado
con "other declarations" en la arquitectura de FULLADD.
La declaración de los componentes se realiza en el mismo estilo de sintaxis que la
entidad. Generalmente se desea que el componente tenga el mismo nombre y la misma
lista de ports que la entidad utilizada. Esto es totalmente factible puesto que no existe
-C
ay
ss
ial
s-
ningún tipo de restricción en el nombre del componente.
Gi
lar
do
ni
-
Or
oz
co
La declaración del componente HALFADD es la siguiente:
Gilardoni - Orozco - Cayssials
Figura 2.11
2-8
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Entonces el código completo para el diseño del FULLADD propuesto, es el siguiente:
entity FULLADD is
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
port (A, B, CIN : in bit;
SUM, CARRY : out bit);
end FULLADD;
architecture STRUCT of FULLADD is
signal I1, I2, I3 : bit;
component HALFADD
port
(A,B : in bit;
SUM, CARRY : out bit);
end component;
component ORGATE
port
(A,B : in bit;
Z : out bit);
end component;
begin
u1:HALFADD port map(A,B,I1,I2);
u2:HALFADD port map(I1,CIN,SUM,I3);
-C
ay
ss
ial
s-
u3:ORGATE port map(I3,I2,CARRY);
end STRUCT;
4.5 Configuraciones
Consideremos que un diseño jerárquico completo consiste de entidades, donde cada una
de las cuales puede tener múltiples arquitecturas que describan distintos comportamientos.
Or
oz
co
El objetivo de la configuración especifica cuál arquitectura va a ser usada por cada una de
las entidades.
En caso de que no se especifique información de configuración para una entidad, la
última arquitectura que es sintetizada por el simulador, será la única que se utilizará
Gi
lar
do
ni
-
durante la simulación.
Gilardoni - Orozco - Cayssials
2-9
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.12
Consideremos la siguiente configuración:
Figura 2.13
El simulador utilizará para B y C la arquitectura Y por ser la última arquitectura
-C
ay
ss
ial
s-
sintetizada.
4.6 Configuración por Defecto
Es común que un diseño completo sólo tenga una arquitectura y, en teoría, no requeriría
una configuración. Algunos simuladores lo permiten, mientras que otros requieren al
menos una configuración por defecto (“default configuration”).
Or
oz
co
Es importante notar que siempre que se utilice la configuración por defecto se realizará
una especificación más portable.
Gi
lar
do
ni
-
La siguiente figura muestra cómo es una configuración por defecto:
Gilardoni - Orozco - Cayssials
2-10
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.14
Una configuración tiene nombre propio y está asociada con la entidad del nivel más alto
de la jerarquía.
4.7 Procesos y tipos
Un proceso es una región de código VHDL dentro de la cual las sentencias son
ejecutadas en secuencia. Un proceso existe dentro de una arquitectura y múltiples procesos
Gi
lar
do
ni
-
Or
oz
co
en VHDL.
-C
ay
ss
ial
s-
interactúan con cada uno de los otros concurrentemente. La figura 2.15 resalta un proceso
Gilardoni - Orozco - Cayssials
Figura 2.15
2-11
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Cualquier diseño en lenguaje VHDL es considerado por el simulador como una
colección de procesos. Cada proceso ejecuta sus propias sentencias en secuencia y los
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
múltiples procesos interactúan concurrentemente como lo muestra la siguiente figura.
Figura 2.16
No existe ninguna limitación sobre el número de procesos que puede contener una
arquitectura.
Cada señal en un diseño en VHDL tiene asociado un TIPO. Un tipo define el conjunto
-C
ay
ss
ial
s-
de valores que pueden ser asignados a la señal. Existen tipos pre definidos en el lenguaje
estándar, pero el usuario puede definir sus propios tipos. Un ejemplo es el tipo pre definido
"bit", el cual puede tener los valores “0” y “1”.
Gi
lar
do
ni
-
Or
oz
co
La figura 2.17 muestra los tipos pre definidos y algunos definidos por el usuario.
Gilardoni - Orozco - Cayssials
Figura 2.17
2-12
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
4.8 Package
Un package contiene una colección de definiciones que pueden ser referenciadas por
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
distintos diseños en forma simultánea. Colocando definiciones que son comunes entre los
diseños, permite al equipo de diseño trabajar más consistentemente.
Figura 2.18
Un package es una unidad de diseño separada en VHDL tal como lo son las entidades,
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
arquitecturas y configuraciones.
Figura 2.19
Un package puede contener definiciones de valores constantes, tipos de datos definidos
por el usuario, declaración de componentes, o sub programas de código VHDL repartidos
entre diferentes diseños.
Gilardoni - Orozco - Cayssials
2-13
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.20
4.9 Esquema Completo
Con los principales bloques de construcción y conceptos de VHDL, es posible obtener
un esquema completo de cómo se relacionan dichos bloques en un diseño típico.
La jerarquía de un diseño completo está definida por múltiples entidades, las cuales
tienen al menos una arquitectura. Sólo una arquitectura es referenciada por cada entidad en
-C
ay
ss
ial
s-
una simulación particular.
Figura 2.21
Varias de estas entidades y arquitecturas referencian a uno o más packages de
Gi
lar
do
ni
-
Or
oz
co
definiciones comunes.
Gilardoni - Orozco - Cayssials
Figura 2.22
2-14
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
El enlace entre cada nivel de jerarquía y las especificaciones de cuál arquitectura va a
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
ser usada es llevada a cabo por la configuración.
Figura 2.23
Finalmente, el máximo nivel de jerarquía es usualmente usado para contener al diseño y
a los estímulos que serán aplicados durante la simulación.
-C
ay
ss
ial
s-
Figura 2.24
5. Señales y Tipos de Datos
A continuación se describe la forma en que pueden ser asignadas las señales en VHDL
y un resumen de reglas, relativas al uso de los tipos de datos. Primero se considera el
Or
oz
co
concepto de tipo de dato y los diferentes tipos estándar que son definidos como parte del
lenguaje. Luego se describe el concepto de un array (arreglo) y se proponen diferentes
ejemplos de cómo simples bits y arreglos de señales pueden ser manipulados dentro de
Gi
lar
do
ni
-
VHDL. Se describe también la forma en que el diseñador puede especificar sus propios
tipos de datos, denominados enumerated type (tipos enumerados). Finalmente se detalla la
definición de un tipo de dato conocido como "standard logic" (lógica estándar), el cual ha
sido adoptado como estándar en la descripción de señales en VHDL.
Gilardoni - Orozco - Cayssials
2-15
Laboratorio de Sistemas Digitales - UNS
5.1 Concepto de Tipo y Especificación
UN
S
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
El lenguaje VHDL define que cada señal debe tener un tipo de dato asociado cuando la
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
señal es declarada. El tipo de dato de una señal define el conjunto de valores que pueden
ser asignados a dicha señal. En el ejemplo de la figura 2.25, no es posible asignar a
N_SUM una señal que pertenezca a otro tipo de dato que no sea el tipo bit.
Figura 2.25
Una señal es, generalmente, declarada en la sección PORT de una ENTIDAD o dentro
-C
ay
ss
ial
s-
de una declaración de señal explícita en una ARQUITECTURA. Cuando una señal es
declarada en algunos de esos lugares, el tipo asociado debe ser especificado. El tipo de
Gi
lar
do
ni
-
Or
oz
co
dato en el siguiente ejemplo es “BIT”.
Figura 2.26
Cuando se asigna un valor a una señal, el tipo de dato a ambos lados del operador de
asignación debe ser el mismo. En el siguiente ejemplo, el resultado de “A xor B” debe ser
de tipo “BIT” para poder ser asignado a “SUM”, que también es tipo “BIT”.
Gilardoni - Orozco - Cayssials
2-16
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.27
5.2 Tipos de Datos Estándar
Los tipos de datos estándar son especificados como código fuente VHDL y el lenguaje
-C
ay
ss
ial
s-
define que ellos deben encontrarse en un PACKAGE denominado STANDARD.
Figura 2.28
A continuación se describen los tipos de datos más importantes definidos en el package
llamado STANDARD.
El tipo de dato boolean define dos valores: verdadero y falso. El tipo de dato time es
Gi
lar
do
ni
-
Or
oz
co
usado para modelar simulaciones temporales y consiste en valor y unidad.
Gilardoni - Orozco - Cayssials
Figura 2.29
2-17
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
El tipo de dato bit puede ser usado para modelar un simple bit y consiste en los valores
“0” y “1”. El tipo de dato bit_vector define una colección de bits y puede ser usado para
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
modelar una estructura de BUS.
Figura 2.30
Como el nombre lo indica, el tipo de dato character define un simple carácter en VHDL
y el tipo de dato string define un arreglo o cadena de caracteres.
Figura 2.31
-C
ay
ss
ial
s-
VHDL soporta los tipos de datos enteros y reales.
Figura 2.32
Or
oz
co
5.3 Asignación de Señales
VHDL define que la asignación de un nuevo valor a una señal, debe realizarse mediante
la "sentencia de asignación de señal" utilizando el símbolo "<=".
Gi
lar
do
ni
-
La asignación define un driver sobre la señal. El concepto de driver es el mismo que el
utilizado en una compuerta lógica en un hardware real, es decir, la salida toma el valor de
la entrada sin que ésta se modifique.
Gilardoni - Orozco - Cayssials
2-18
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.33
Figura 2.34
-C
ay
ss
ial
s-
Si más de una asignación es hecha a una señal, implica que la señal tiene más de un
driver. En este caso, la señal debe ser declarada como una clase de tipo especial, conocido
como tipo resoluble. Un tipo resoluble tiene una llamada a función asociada, con la que se
Gi
lar
do
ni
-
Or
oz
co
“resuelve” el valor final de la señal.
Gilardoni - Orozco - Cayssials
Figura 2.35
2-19
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Todos los tipos de datos enunciados anteriormente no son del tipo resoluble, por lo
tanto son llamados irresolubles y no permiten tener más de un driver. Más adelante se
5.4 Arreglos (Arrays)
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
describe el uso de tipos de datos resolubles.
Un arreglo es una colección de objetos, donde cada uno de ellos es del mismo tipo de
dato. El lenguaje define dos tipos de arreglos estándar: bit_vector y string.
Figura 2.36
El rango o dimensión de un arreglo es definido cuando el mismo es declarado. El
ejemplo de la figura 2.37 muestra dos bit_vectors, cada uno de ellos de 4 bits de ancho.
-C
ay
ss
ial
s-
El rango puede ser declarado usando la notación “to” o “downto”.
Figura 2.37
Dos arreglos pueden ser asignados el uno al otro si el tamaño y el tipo es el mismo. El
siguiente diagrama describe la forma en que se realiza la asignación de vectores. Se debe
Or
oz
co
notar que la asignación es por posición y no por índice.
Una porción puede ser referenciada utilizando “to” o “downto”. Puede referenciarse
también un elemento simple del arreglo. Debe tenerse en cuenta que la “dirección” de la
porción, según se haya usado “to” o “downto”, debe ser la misma que se uso en la
Gi
lar
do
ni
-
declaración del arreglo como se muestra en la figura 2.39.
Gilardoni - Orozco - Cayssials
2-20
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
-C
ay
ss
ial
s-
Figura 2.38
Figura 2.39
5.5 Concatenación y Agregado
Los métodos de concatenación y agregado son utilizados para asociar señales y
asignarlas a un objeto arreglo. VHDL permite asociar bits y vectores para formar
estructuras de arreglos. Esto es conocido como concatenación y usa el operador "&". El
Or
oz
co
siguiente ejemplo muestra cómo simples bits pueden concatenarse para formar nuevos
Gi
lar
do
ni
-
vectores.
Gilardoni - Orozco - Cayssials
2-21
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.40
Otro método de asignación definido en VHDL es el agregado. Un agregado está
Figura 2.41
Or
oz
co
-C
ay
ss
ial
s-
contenido entre paréntesis y la asignación a cada elemento está separada por comas.
Mediante el uso de agregados es posible especificar el nombre de un elemento de un
arreglo. De esta manera, la asignación de un elemento del arreglo puede realizarse por
nombre además de realizarlo por posición. El siguiente ejemplo muestra una asignación
Gi
lar
do
ni
-
por nombre.
Gilardoni - Orozco - Cayssials
2-22
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.42
Los agregados pueden hacer uso de la sentencia “others”, la cual asignará un valor a
todos los elementos restantes del arreglo que no hayan sido especificados.
Figura 2.43
Finalmente, no todas las herramientas de síntesis soportan el uso de agregados por lo
que es necesario utilizar concatenación en estas herramientas, para manipular arreglos.
5.6 Definición de Tipos
Gi
lar
do
ni
-
Or
oz
co
de datos.
-C
ay
ss
ial
s-
A continuación se detalla la forma en que el diseñador puede definir sus propios tipos
Figura 2.44
Un tipo definido por el usuario, en VHDL, es conocido como un tipo enumerado,
(“enumerated type”). Los tipos comúnmente son definidos dentro de un package,
Gilardoni - Orozco - Cayssials
2-23
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
arquitectura o proceso y la mayoría de las herramientas de síntesis son capaces de
sintetizar VHDL conteniendo tipos enumerados.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Para definir un tipo enumerado es necesario especificar el nombre del tipo, seguido de
la lista de valores que componen al mismo, separados por comas. La sintaxis de la
declaración es mostrada en la figura 2.45.
Figura 2.45
La definición del tipo de dato, permite definir señales de ese tipo. En el siguiente
ejemplo se declara la señal STATE como tipo de dato MY_STATE (definido en la figura
2.45), indicando asignaciones válidas e inválidas. Debe tenerse en cuenta que no pueden
asignarse a la señal STATE otros valores que no hayan sido especificados en la definición
-C
ay
ss
ial
s-
de MY_STATE.
Figura 2.46
Usualmente el tipo de dato enumerado tiene un número mínimo de bits requeridos para
representar todos los valores posibles. El siguiente ejemplo muestra cómo con 2 bits se
Gi
lar
do
ni
-
Or
oz
co
representan 4 valores.
Gilardoni - Orozco - Cayssials
Figura 2.47
2-24
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
5.7 Lógica MultiValuada
Existen situaciones en que la utilización de simples valores binarios no es suficiente
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
para simular o especificar un diseño. En una simulación puede ser necesario representar
otros valores de la señal como, por ejemplo, desconocido (unknown), no inicializado
(un_initialized), alta impedancia (high impedance) y “drive strengths”. En la síntesis puede
ser necesario especificar condiciones de “don’t care”.
Figura 2.48
La necesidad de especificar tipos de datos no binarios define el sistema de Lógica Multi
Valuada, o sistema MVL, que es un tipo de datos enumerado. Este tipo de dato define
-C
ay
ss
ial
s-
caracteres para representar los valores o estados mencionados en la figura 2.48.
Hasta principios de 1992 no existía un standard en esta área y cada proveedor de
herramientas de síntesis y simulación usaba su propio sistema MVL.
Actualmente el standard define un sistema de Lógica Multi Valuada (MVL) con nueve
valores o estados. Este estándar está separado del que define el lenguaje VHDL y es el
standard IEEE1164.
Or
oz
co
Seguidamente se detalla este tipo de dato conocido como "STANDARD LOGIC".
El standard 1164 está definido en código fuente VHDL y describe un tipo de dato
llamado “std_ulogic” (generalmente pronunciado “standard u logic”), el cual define los
Gi
lar
do
ni
-
nueve posibles estados. El siguiente diagrama muestra la definición de cada estado.
Gilardoni - Orozco - Cayssials
2-25
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.49
El tipo “std_ulogic” es un tipo de dato irresoluble y sólo puede tener un driver. Este es
-C
ay
ss
ial
s-
el origen de la letra “u”, por significar irresoluble en idioma ingles.
Figura 2.50
La versión resoluble del tipo de dato "std_ulogic" es el tipo de dato denominado
“std_logic”. Este tipo de dato puede tener más de un driver, conservando la misma
Gi
lar
do
ni
-
Or
oz
co
cantidad de estados (nueve).
Gilardoni - Orozco - Cayssials
Figura 2.51
2-26
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
standard_logic_1164. A continuación se describe cómo referenciar tal package.
UN
S
Estos tipos de definiciones están contenidas dentro de un package llamado
Figura 2.52
El package también contiene la definición de arreglos de std_logic y std_ulogic
conocidos como std_logic_vector y std_ulogic_vector, respectivamente. Estos tipos de
datos pueden ser utilizados para definir estructuras de bus, en la forma similar a la
-C
ay
ss
ial
s-
realizada con el tipo de dato irresoluble bit_vector.
Figura 2.53
5.8 Usando Lógica Standard
Or
oz
co
Descriptas las definiciones de la lógica standard, se realizan a continuación algunos
ejemplos de cómo puede ser usada.
El package de definiciones está contenido dentro de una librería llamada IEEE. Esta es
necesaria para referenciar a la librería y al package, como muestra la figura 2.54.
Gi
lar
do
ni
-
Es necesario incluir dichas líneas en la especificación para poder definir entidades que
utilicen los tipos de datos de lógica STANDARD.
Gilardoni - Orozco - Cayssials
2-27
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 2.54
Como muestra la figura 2.55, es posible asignar libremente objetos del tipo std_logic a
objetos del tipo std_ulogic, y viceversa.
Figura 2.55
Si existen múltiples drivers sobre una señal, debe utilizarse el tipo std_logic, ya que es
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
ilegal si lo hacemos con el tipo de dato irresoluble std_ulogic.
Figura 2.56
Los visto en este capítulo sobre el lenguaje de especificación de hardware VHDL, es
sólo una introducción al mismo, y es por ello que no se profundizo en la sintaxis, ni en las
sentencias componentes del lenguaje.
Gilardoni - Orozco - Cayssials
2-28
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
El objetivo de este capítulo fue describir las estructuras y conceptos básicos del
lenguaje para que nos sea posible tomar una herramienta de diseño cualquiera, como por
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
ejemplo el software MAX+PLUS II de ALTERA, y poder describir un hardware en
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
VHDL.
Gilardoni - Orozco - Cayssials
2-29
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Capítulo 3
En este capítulo se describe la estructura general de diseño de una especificación de
hardware en AHDL como así también un conjunto de secciones y sentencias que
componen este lenguaje.
AHDL: Un Lenguaje de Descripción de Hardware
Introducción
AHDL es un lenguaje de especificación desarrollado por ALTERA que se basa en la
descripción del hardware a través de su comportamiento (behavior). El lenguaje AHDL
utiliza ecuaciones lógicas, variables, constantes, funciones, operadores aritméticos, tablas
de verdad y expresiones condicionales, en forma similar a la de un lenguaje de
programación de alto nivel. Está especialmente orientado al diseño de lógica
combinacional compleja, máquinas de estado, tablas de verdad y lógica parametrizada. El
-C
ay
ss
ial
s-
lenguaje AHDL está completamente integrado en el software de desarrollo MAX+PLUS
II.
El software MAX+PLUS II brinda la posibilidad de usar plantillas de diseño
(Templates), que permiten en forma rápida, insertar en el archivo de diseño la estructura y
sintaxis correcta de las diferentes secciones y sentencias soportadas por el lenguaje. Un
archivo de diseño realizado en lenguaje AHDL debe contener como mínimo una sección
Gi
lar
do
ni
-
Or
oz
co
de subdiseño y una sección lógica, siendo opcionales las demás secciones.
Gilardoni - Orozco - Cayssials
3-1
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Estructura de diseño
La figura 3.1 muestra un esquema de las diferentes sentencias y secciones componentes
Figura 3.1
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
de un diseño en lenguaje AHDL.
Gilardoni - Orozco - Cayssials
3-2
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
1. Sentencia "Title"
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
La sentencia title (Título) permite agregar un comentario en el archivo de reporte
generado automáticamente por el software de desarrollo.
El siguiente ejemplo muestra la sintaxis de una sentencia title.
TITLE "Controlador de Memorias Dinámicas en SIMM de 72 contactos";
La sentencia title tiene las siguientes características:
Debe comenzar con la palabra reservada TITLE, seguida por un texto encerrado
entre comillas, finalizando con un punto y coma.
El texto contenido en el cuerpo de la sentencia puede contener como máximo un
total de 255 caracteres
Para incluir comillas dentro del texto deben usarse dos comillas, por ejemplo:
TITLE " ""MAX 7000"" Controlador de Display";
Sólo puede utilizarse una sola vez en un archivo .tdf.
Debe ser colocada fuera de todas las otras secciones del diseño.
-C
ay
ss
ial
s-
2. Sentencia "Parameters"
La sentencia parameters (Parámetros) permite declarar uno o más parámetros para
controlar la implementación del diseño en función de los valores asignados al momento de
la síntesis de la lógica.
También permite crear un diseño parametrizado para ser utilizado como librería de otro
Or
oz
co
diseño. ALTERA, provee una serie de librerías llamadas librerías de módulos
parametrizados (LPM), que pueden ser usadas libremente pero deben ser declaradas y
luego instanciadas en el archivo donde quieran utilizarse.
En el momento de realizar la instancia de dicha librería se le deben pasar los parámetros
Gi
lar
do
ni
-
necesarios. Si observamos el siguiente ejemplo y suponemos que es la declaración de
parámetros de una librería de módulos parametrizados, podemos ver que existen
parámetros con y sin valores asignados. Al instanciar dicha función estaremos obligados a
pasar los parámetros que no posean un valor asignado por defecto, en este caso el
Gilardoni - Orozco - Cayssials
3-3
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
omitirse o ser incluidos si se desea modificarlos.
PARAMETERS
(
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
El siguiente ejemplo muestra el uso de la sentencia parameters.
UN
S
parámetro ANCHO. Los parámetros que tengan asignados valores por defecto pueden
NOMBRE = "miarchivo.mio",
ANCHO,
BYTE = 8,
PALABRA = 2*BYTE
);
La sentencia parameters posee las siguientes características:
Comienza con la palabra reservada PARAMETERS seguida por una lista de uno
o más parámetros, encerrados entre paréntesis. La Sentencia finaliza con un
punto y coma.
Los parámetros de la lista deben ser separados por comas y pueden asignarse
opcionalmente valores por defecto usando el signo igual (=). En la lista
mostrada arriba, sólo el parámetro ANCHO no tiene asignado un valor por
defecto.
-C
ay
ss
ial
s-
Los nombres de los parámetros pueden ser definidos por el usuario o ser
parámetros predefinidos por ALTERA.
Los valores asignados a los parámetros pueden ser cadenas de caracteres
encerrados entre comillas, valores numéricos o expresiones algebraicas entre
parámetros ya declarados.
Or
oz
co
El uso de la sentencia parameters implica respetar las siguientes reglas:
Un parámetro puede ser usado sólo después de ser declarado.
Gi
lar
do
ni
-
Cada nombre de parámetro debe ser único.
No pueden contener espacios. El uso del carácter underline "_" para separar
palabras está permitido.
Puede ser usada un número arbitrario de veces dentro del mismo archivo de
diseño.
Debe ser colocada fuera de todas las otras secciones del diseño.
Gilardoni - Orozco - Cayssials
3-4
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
3. Sentencia "Include"
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
La sentencia include permite importar texto desde un archivo con extensión .inc, al
archivo que contiene la sentencia.
El siguiente ejemplo muestra el uso de la sentencia include:
INCLUDE "lpm_counter.inc";
La sentencia include posee las siguientes características:
Comienza con la palabra reservada INCLUDE seguida por el nombre del
archivo a incluir, encerrado entre comillas. La Sentencia finaliza con un punto y
coma.
Si la extensión del archivo a incluir no es escrita, el software asume por defecto
que la extensión es .inc.
La sentencia include es utilizada para incluir prototipos de funciones. Se llaman
prototipos de funciones a la descripción exterior de una función, es decir, la definición de
sus puertos de entrada y salida, sin describir su funcionamiento interno.
El diseñador puede generar un archivo de tipo include a partir del archivo de diseño
-C
ay
ss
ial
s-
TDF, utilizando la opción Create Default Include File del software MAX+PLUS II.
Un ejemplo del contenido de un archivo include, llamado dramcontrol.inc, es el
siguiente:
-- Copyright (C) 1988-1998 ALTERA Corporation
-- MAX+PLUS II Include File
-- Version 8.2 1/8/98
Or
oz
co
-- Created: Thu Sep 16 20:02:23 1999
FUNCTION dramcontrol (clk, /read, /write, /output_enable,
address_in[15..0])
Gi
lar
do
ni
-
RETURNS (bidir_up[7..0], bidir_simm[7..0], address_out[9..0],
/write_dram, /ras, /cas[3..0], ready);
Como se observa en el archivo dramcontrol.inc, no se encuentra la descripción de la
función. La descripción de la función se encuentra en el archivo TDF del mismo nombre
Gilardoni - Orozco - Cayssials
3-5
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
sentencia include.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
El uso de la sentencia include implica respetar las siguientes reglas:
UN
S
dramcontrol.tdf, que debe encontrarse en el mismo directorio del archivo que contiene la
Puede ser usada un número arbitrario de veces dentro del mismo archivo de
diseño.
Debe ser colocada fuera de todas las otras secciones del diseño.
4. Sentencia "Constant"
La sentencia constant (Constante) permite sustituir un valor numérico o una expresión
aritmética por un nombre simbólico, de modo tal, que el código sea más intuitivo y mejore
su legibilidad.
El siguiente ejemplo muestra el uso de la sentencia constant.
CONSTANT Limite_Superior = 130;
CONSTANT BAR = 1 + 2 DIV 3 + LOG2(256);
CONSTANT FOO = 1;
-C
ay
ss
ial
s-
CONSTANT FOO_PLUS_ONE = FOO + 1;
La sentencia constant posee las siguientes características:
Comienza con la palabra reservada CONSTANT, seguida por un nombre
simbólico, un signo igual (=), y un número o una expresión aritmética. La
Sentencia finaliza con un punto y coma.
Or
oz
co
Una vez declarada una constante esta puede ser utilizada a lo largo de todo el
archivo de diseño.
Los nombres de las constantes deben ser únicos y pueden ser utilizados un
Gi
lar
do
ni
-
número arbitrario de veces.
Debe ser utilizada fuera de las otras secciones del diseño.
Gilardoni - Orozco - Cayssials
3-6
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
5. Sentencia "Define"
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
La sentencia define permite especificar una función matemática que retorna valores en
función de los argumentos que recibe.
El siguiente ejemplo muestra la definición y el uso de una función, que devuelve el
argumento de mayor valor, entre los que recibe como parámetros:
DEFINE MAX(a,b) = (a > b) ? a : b;
--valor1 y valor2 definidos previamente
CONSTANT maximo = MAX(valor1, valor2);
El operador ? funciona de la siguiente manera:
<expresión 1> ? <expresión 2> : <expresión 3>;
Si la expresión 1 es verdadera (en el ejemplo anterior, si a es mayor que b), la función
devuelve el resultado de la expresión 2, en caso contrario la función devuelve como
resultado el valor de la expresión 3.
La sentencia define posee las siguientes características:
-C
ay
ss
ial
s-
Comienza con la palabra reservada DEFINE, seguida por un nombre simbólico,
seguido por una lista de uno o más argumentes separados por comas y
encerrados entre paréntesis. Un signo igual separa la lista de argumentos de la
expresión aritmética que implementa la función. La sentencia finaliza con un
punto y coma.
Una función puede ser definida en términos de funciones definidas previamente.
Or
oz
co
Por ejemplo, la siguiente función está basada en la función MAX definida
Gi
lar
do
ni
-
anteriormente:
DEFINE Positivo(x) = MAX(0,x) + 1;
Si la función no posee una lista de argumentos, se comportará como la
declaración de una constante.
Un vez definida, la función puede utilizarse en cualquier parte del archivo de
diseño un número arbitrario de veces.
Debe ser definida fuera de las otras secciones del diseño.
Gilardoni - Orozco - Cayssials
3-7
Laboratorio de Sistemas Digitales - UNS
6. Sentencia "Function Prototype"
UN
S
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
La sentencia function prototype (Prototipo de función) posee la misma función que los
símbolos de un archivo esquemático. Ambos proveen una mínima descripción de la
función lógica que ellos representan, listando su nombre y ports de entrada, salida y
bidireccionales.
El siguiente ejemplo muestra el uso de la sentencia function prototype en una función
parametrizada y no parametrizada:
FUNCTION lpm_add_sub (dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0])
WITH (LPM_WIDTH, LPM_REPRESENTATION, LPM_DIRECTION, ADDERTYPE)
RETURNS (result[LPM_WIDTH-1..0], count, overflow);
FUNCTION compare (a[3..0], b[3..0])
RETURNS (less, equal, greater);
La sentencia function prototype posee las siguientes características:
Comienza con la palabra reservada FUNCTION, seguida por el nombre de la
función, luego por una lista de ports de entrada separados por comas y
-C
ay
ss
ial
s-
encerrados entre paréntesis. En funciones parametrizadas, se utiliza la palabra
reservada WITH seguida por una lista de parámetros separados por comillas. Por
último la palabra reservada RETURN seguida por una lista de ports de salida y/o
bidireccionales. La sentencia finaliza con un punto y coma.
Debe colocarse fuera de la sección de Subdiseño del archivo TDF y debe ser
colocada antes que la función lógica sea instanciada.
Or
oz
co
7. Sentencia "Options"
La sentencia options especifica la opción BIT0 para especificar la posición del bit más
Gi
lar
do
ni
-
significativo de un grupo de bits. Comienza con la palabra reservada OPTIONS seguida
por la opción BIT0. La sentencia finaliza con un punto y coma.
El valor por defecto se BIT0 = LSB (Bit Menos Significativo). Por ejemplo, si se define
el grupo a[31..0]; a[0] corresponde al bit menos significativo y a[31] al bit más
significativo.
Gilardoni - Orozco - Cayssials
3-8
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
OPTIONS BIT0 = MSB;
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
En este caso el bit 0 es especificado como el bit más significativo.
UN
S
Un ejemplo del uso de esta sentencia sería:
8. Sentencia "Assert"
La sentencia assert permite verificar la validez de cualquier expresión que utilice
parámetros, números y funciones.
El siguiente ejemplo muestra el uso de la sentencia assert:
ASSERT (ANCHO > 0)
REPORT
"El Ancho (%) debe ser un entero positivo" ANCHO
SEVERITY
ERROR;
La sentencia assert posee las siguientes características:
Comienza con la palabra reservada ASSERT seguida por una expresión
aritmética encerrada entre paréntesis. Cuando el resultado de dicha expresión es
falso, el mensaje que sigue a la palabra reservada REPORT es mostrado durante
la síntesis del proyecto.
-C
ay
ss
ial
s-
Luego de la palabra reservada REPORT se escribe el mensaje junto con la
opción de sustituir el carácter % con el valor de una variable.
La palabra reservada opcional SEVERITY es seguida por el nivel de severidad
del mensaje. Los valores posibles son ERROR, WARNING o INFO. Si no se
especifica la opción SEVERITY, el valor por defecto es ERROR. El nivel de
severidad ERROR detiene la síntesis del proyecto, el nivel WARNING e INFO
Or
oz
co
sólo muestran el mensaje deseado sin detener la síntesis.
Gi
lar
do
ni
-
9. Sección de Subdiseño
La sección de subdiseño es el lugar del archivo de diseño donde se realiza la
declaración de los ports de entrada, salida y bidireccionales.
El siguiente ejemplo muestra la sección de subdiseño:
SUBDESIGN dramcontrol
(
Gilardoni - Orozco - Cayssials
3-9
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
: INPUT = VCC;
address[16..0]
: OUTPUT;
datos[7..0]
: BIDIR;
UN
S
/ras, /cas
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
)
La sección de subdiseño posee las siguientes características:
Comienza con la palabra reservada SUBDESIGN seguida por el nombre de la
sección que debe ser el mismo que el nombre del archivo TDF.
Los nombres de las señales son separados por comas, seguidos por dos puntos
":" y el tipo del port.
Los tipos de ports pueden ser INPUT, OUTPUT, BIDIR, MACHINE INPUT o
MACHINE OUTPUT.
Las palabras reservadas MACHINE INPUT y MACHINE OUTPUT son usadas
para importar y exportar máquinas de estado entre archivos TDF y otros
archivos de diseño.
Es posible asignar un valor por defecto (VCC o GND) después de definir el tipo
de port.
-C
ay
ss
ial
s-
10. Sección de Declaración de Variables
La sección de declaración de variables, es una sección opcional en donde se declaran
y/o generan las variables usadas en la sección lógica. Las variables en AHDL son similares
a las variables en un lenguaje de programación de alto nivel. Ellas son utilizadas para
definir lógicas y señales internas.
El siguiente ejemplo muestra una sección de declaración de variables típica:
Or
oz
co
VARIABLE
a, b, c
: NODE;
temp
: halfadd;
ts_node
: TRI_STATE_NODE;
Gi
lar
do
ni
-
IF DEVICE_FAMILY == "FLEX8000" GENERATE
8kadder
: flex_adder;
d,e
: NODE;
ELSE GENERATE
7kadder
: pterm_adder;
f,g
: NODE;
END GENERATE;
Gilardoni - Orozco - Cayssials
3-10
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Se observa en el ejemplo anterior, la existencia de la estructura IF GENERATE, que
permite sintetizar diferentes códigos en función del resultado de la expresión evaluada por
parametrizados (LPM).
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
la estructura. Es muy frecuente ver el uso de esta estructura en las librerías de módulos
La sección de declaración de variables puede incluir una o más de las siguientes
sentencias o construcciones:
Declaración de Instancias
Declaración de Nodos
Declaración de Registros
Declaración de Maquinas de Estado
Declaración de Alias de Maquinas de Estado
10.1 Declaración de Instancias
Cuando se desea utilizar funciones ya definidas en un nuevo proyecto, éstas deben estar
definidas en el mismo archivo de diseño o deben ser incluidas con la sentencia include.
Luego pueden ser declaradas como variables con una declaración de instancias en la
sección de declaración de variables. Después de ser declaradas, los ports de entrada y
salida de cada una de las funciones pueden ser utilizados como ports en la sección lógica.
-C
ay
ss
ial
s-
Por ejemplo, si se desea incorporar las funciones comparador y sumador a partir de las
funciones ya definidas, compare y lpm_add_sub, la declaración de instancias puede ser
realizada como se muestra a continuación:
VARIABLE
comparador
: compare;
sumador
: lpm_add_sub WITH (LPM_WIDTH = 8);
Or
oz
co
La variables comparador y sumador son instancias de las funciones compare y
lpm_add_sub, las cuales tienen las siguientes entradas y salidas:
: INPUT;
-- Entradas de comparador
less, equal, greater
: OUTPUT;
-- Salidas de comparador
a[8..1], b[8..1]
: INPUT;
-- Entradas de sumador
sum[8..1]
: OUTPUT;
-- Salidas de sumador
Gi
lar
do
ni
-
a[3..0], b[3..0]
Gilardoni - Orozco - Cayssials
3-11
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Por lo tanto, es posible utilizar los siguientes ports de comparador y sumador en la
sección lógica, de la siguiente manera:
comparador.greater
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
comparador.a[], comparador.b[], comparador.less, comparador.equal,
sumador.dataa[], sumador.datab[], sumador.result[]
10.2 Declaración de Nodos
Un nodo representa un cable transmitiendouna señal que viaja entre diferentes
componentes lógicos de un archivo de diseño. La declaración de nodos permite asignarle
un nombre o símbolo a una señal lógica interna. Una de las ventajas de asignar un nombre
a un nodo es la posibilidad de ser identificado en la simulación del proyecto, ya que en
caso contrario será el software de síntesis el que asigne una identificación al nodo.
AHDL soporta dos tipos de nodos denominados: NODE y TRI_STATE_NODE.
El siguiente ejemplo muestra una declaración de nodos:
SUBDESIGN nodos
(
in1, in2, oe1, oe2
salida, out
)
cable
cable_tri_state
BEGIN
: OUTPUT;
: NODE;
-C
ay
ss
ial
s-
VARIABLE
: INPUT;
: TRI_STATE_NODE;
cable = in1;
cable = in2;
out = cable;
Or
oz
co
cable_tri_state = TRI(in1, oe1);
cable_tri_state = TRI(in2, oe2);
salida = cable_tri_state;
END;
Gi
lar
do
ni
-
En este ejemplo se observa dos usos típicos de nodos. Para el caso del nodo tipo NODE,
las asignaciones múltiples de señales, a un mismo nodo, se realizan a través de compuertas
AND u OR según sea el valor por defecto de las señales, que intervienen en la asignación,
VCC o GND respectivamente. Si no se especifica lo contrario, las señales poseen el valor
Gilardoni - Orozco - Cayssials
3-12
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
GND por defecto. Por lo tanto las múltiples asignaciones serán realizadas a través de
compuertas OR.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
En el ejemplo las señales in1 e in2 ingresaran a una compuerta OR y el resultado de
dicha operación es asignado al nodo cable.
Los nodos tipo TRI_STATE_NODE, brindan la posibilidad de cablear directamente las
señales y que presenten un estado de alta impedancia para el nodo cuando no están activos.
Un nodo TRI_STATE_NODE posee dos señales de entrada y una señal de salida. Las
señales de entradas, son el dato y la señal de output enable. La señal de salida es el dato si
la entrada output enable está activa o un estado de alta impedancia caso contrario.
10.3 Declaración de Registros
La declaración de registros, como su nombre lo indica, permite declarar registros,
incluyendo filpflops D, T, JK, y SR (DFF, DFFE, TFF, TFFE, JKFF, JKFFE, SRFF,
SRFFE) y latches (LATCH).
El siguiente ejemplo muestra la declaración de un flip flop "toogle":
VARIABLE
FFlop: TFF;
Luego de realizar esta declaración se pueden utilizar los ports de entrada y salida de
siguiente:
-C
ay
ss
ial
s-
FFlop, ya que se ha instanciado a FFlop como un flip flop T. El formato utilizado es el
<instance name>.<port name>:
FFlop.t
FFlop.clk
Or
oz
co
FFlop.clrn
FFlop.prn
FFlop.q
Gi
lar
do
ni
-
10.4 Declaración de Maquinas de Estado
Es posible crear máquinas de estado declarando el nombre de la máquina, sus estados y
opcionalmente el valor binario de estos, en la sección de declaración de variables.
El siguiente ejemplo muestra la declaración de una máquina de estados:
VARIABLE
Gilardoni - Orozco - Cayssials
3-13
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
MACHINE
UN
S
ss :
OF BITS (q1, q2, q3)
WITH STATES (
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
s1 = B"000",
s2 = B"010",
s3 = B"111");
El nombre de la máquina de estados es ss y los bits componentes de cada estado son q1,
q2 y q3, los cuales son las salidas de los flip flops que implementan la máquina. Los
estados son s1, s2 y s3.
La declaración de una máquina de estados se compone de:
El nombre simbólico, seguido de (:) y la palabra reservada MACHINE.
En forma opcional, el nombre de los bits de estado, con las palabras reservadas
OF BITS(..).
La lista de estados, compuesta por las palabras reservadas WITH STATES(..)
con la enumeración de los nombres simbólicos de los estados, separados por
comas, con sus asignaciones opcionales.
El primer estado listado en la cláusula WITH STATES, (s1, en este ejemplo) será el
estado de reset de la máquina de estados.
-C
ay
ss
ial
s-
10.5 Declaración de Alias de Maquinas de Estado
Es posible renombrar una máquina de estados con un nombre temporario utilizando la
declaración de alias de máquinas de estados en la sección variable.
Un alias puede ser utilizado para renombrar una máquina de estados que ha sido
importada al proyecto con la sentencia include.
Or
oz
co
El siguiente ejemplo muestra el prototipo de función de una máquina de estados y cómo
se declara un alias de dicha máquina.
FUNCTION ss_def (clock, reset, count)
Gi
lar
do
ni
-
RETURNS (MACHINE ss_out);
M
VARIABLE
ss : MACHINE;
BEGIN
ss = ss_def (sys_clk, reset, !hold);
Gilardoni - Orozco - Cayssials
3-14
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
UN
S
Gilardoni – Orozco - Cayssials
IF ss == s0 THEN
M
M
END;
11. Sección Lógica
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
ELSIF ss == s1 THEN
La sección lógica especifica las operaciones lógicas del diseño y es la sección principal
de archivo TDF. Esta sección no es opcional y siempre existe en un archivo TDF. Una o
más de las siguientes sentencias o construcciones pueden existir en esta sección:
Ecuaciones Booleanas.
Ecuaciones de Control Booleanas.
Sentencia CASE.
Sentencia DEFAULTS.
Sentencia IF-THEN.
Sentencia IF-GENERATE.
Sentencia FOR-GENERATE.
-C
ay
ss
ial
s-
Sentencia TRUTH TABLE.
La sección lógica también puede incluir sentencias ASSERT.
Las palabras reservadas BEGIN y END delimitan la sección lógica y un punto y coma,
luego de la palabra END, marca su fin. La sentencia DEFAULTS debe ser la primera de la
sección.
En la sección lógica es necesario el uso de operadores lógicos, comparadores y
Or
oz
co
operadores aritméticos. La siguiente tabla muestra los posibles operadores y sus
respectivas prioridades. La prioridad 1 es la más alta y operadores de igual prioridad son
Gi
lar
do
ni
-
evaluados de izquierda a derecha:
Operadores - Comparadores
Descripción
Ejemplo
Prioridad
+ (unario)
Positivo
+1
1
- (unario)
Negativo
-1
1
!
NOT
!a
1
^
Exponente
a^2
1
Gilardoni - Orozco - Cayssials
3-15
Laboratorio de Sistemas Digitales - UNS
Módulo
4 MOD 2
2
DIV
división
4 DIV 2
2
*
multiplicación
a*2
2
LOG2
Logaritmo base2
LOG2(4-3)
2
adición
1+1
3
sustracción
1-1
3
Igualdad numérica
5 == 5
4
Igualdad alfabética
"a" == "b"
4
Distinto que
5 != 4
4
Mayor que
5>4
4
Mayor o igual que
5 >= 5
4
Menor que
a < b+2
4
Menor o igual que
a <= b+2
4
AND
a&b
5
+
== (numérica)
== (alfabética)
!=
>
>=
<
<=
&
AND
a AND b
!&
NAND (AND invertida)
NAND
$
XNOR (NOR exclusiva)
XNOR
NOR
1 !$ 1
a#b
-C
ay
ss
ial
s-
!#
1$1
6
6
1 XNOR 1
OR
OR
5
1 XOR 1
!$
#
1 !& 0
1 NAND 0
XOR (OR exclusiva)
XOR
?
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
MOD
UN
S
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
7
a OR b
NOR (OR invertida)
a !# b
7
a NOR b
Ternario
(5<4) ? 3:4
8
Or
oz
co
11.1 Ecuaciones Booleanas.
Las ecuaciones booleanas son usadas en la sección lógica para representar la conexión
de nodos, la asignación de señales internas, hacia o desde los contactos de Entrada/Salida y
realizar operaciones booleanas entre dichas señales.
Gi
lar
do
ni
-
El siguiente ejemplo muestra una ecuación booleana compleja asignada al grupo o
conjunto de bits a[]:
a[] = ((c[] & -B"001101") + e[6..1]) # (p, q, r, s, t, v);
Gilardoni - Orozco - Cayssials
3-16
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
El lado izquierdo de la ecuación puede ser un nombre simbólico (nodo o variable), un
port, o un nombre de grupo o conjunto de bits. El lado derecho de la ecuación consiste de
la compone.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
una expresión booleana, la cual es evaluada de acuerdo a la prioridad de cada operador que
El símbolo igual (=) es usado en ecuaciones booleanas para indicar que el resultado de
la expresión booleana del lado derecho es asignado al nodo, variable o grupo de bits del
lado izquierdo.
En el ejemplo anterior la expresión booleana de la derecha es evaluada de acuerdo a las
reglas de prioridad:
El número binario B"001101" es negado aritméticamente y transformado al
número negativo B"110011" por el operador unario (-) de prioridad 1.
Se aplica la operación lógica AND entre el número B"110011" y el grupo c[].
Esta expresión tiene prioridad 2 debido a que está encerrada entre paréntesis.
El resultado de la expresión del paso 2 es sumada aritméticamente al grupo
e[6..1].
Se aplica la operación lógica OR (#) entre el resultado de la expresión en el
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
paso 3 y el grupo (p, q, r, s, t, v). Esta expresión tiene la última prioridad.
Gilardoni - Orozco - Cayssials
3-17
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
•
UN
S
Las siguientes reglas se aplican a las ecuaciones booleanas:
Múltiples asignaciones a variables son realizadas a través de operadores
VCC.
•
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
lógicos OR, excepto cuando el valor por defecto de las variables es seteado a
Si un simple nodo, GND o VCC sobre el lado derecho de una ecuación es
asignado a un grupo, el nodo o constante es duplicado para que el tamaño de
este se corresponda con el tamaño del grupo. Por ejemplo: (a, b) = e; que es
equivalente a a = e; y b = e;
•
Si en ambos lados de la ecuación se tienen grupos del mismo tamaño, cada
miembro sobre la derecha es asignado al miembro de la izquierda en la
posición correspondiente. Por ejemplo: (a, b) = (c, d); que es lo mismo que a =
c; y b = d;
•
Si los lados derecho e izquierdo de una ecuación poseen grupos de diferentes
tamaños, el número de bits del grupo de la izquierda debe ser divisible por el
número de bits del grupo del lado derecho. Por ejemplo: a[4..1] = b[2..1] en
esta ecuación los bits son mapeados de la siguiente manera: a4 = b2, a3 = b1,
a2 = b2, a1 = b1.
-C
ay
ss
ial
s-
11.2 Ecuaciones de Control Booleanas.
Las ecuaciones de control son ecuaciones booleanas usadas en la sección lógica para
setear las señales de clock, reset y clock enable de las máquinas de estados.
El siguiente ejemplo muestra ecuaciones de control booleanas:
Maquina.clk = clk1;
Maquina.reset = a & b;
Or
oz
co
Maquina.ena = clk1ena;
Las ecuaciones de control booleanas poseen las siguientes características:
Gi
lar
do
ni
-
Pueden definirse las entradas clock, reset, y clock enable de una máquina de
estados, con el formato <nombre de la máquina de estados>.<nombre del
port>. En el ejemplo anterior dichas entradas son definidas para la máquina de
estados Maquina.
La señal de clock <nombre de la máquina de estados>.clk debe ser asignada
indefectiblemente a un valor.
Gilardoni - Orozco - Cayssials
3-18
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
La señal de reset <nombre de la máquina de estados>.reset debe ser asignada
a un valor si el estado inicial en la declaración de la máquina de estados posee
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
un valor distinto de 0. De esta forma una señal de reset lleva a la máquina al
primer estado en la lista de estados declarados. En el caso que el primer estado
se corresponda con el valor cero, la señal de reset no es necesaria, ya que la
máquina se iniciará siempre en ese estado.
Asignar la señal clock enable <nombre de la máquina de estados>.ena a un
valor es opcional. Cuando la señal clock enable está en low, las transiciones de
la señal de clock son ignoradas.
11.3 Sentencia CASE.
La sentencia case lista una serie de alternativas que pueden ser activadas dependiendo
del valor de una variable, grupo o expresión y de esta forma describir distintos
comportamientos del sistema.
El siguiente ejemplo muestra una sentencia case:
CASE f[].q IS
WHEN H"00" =>
addr[] = 0;
s = a & b;
-C
ay
ss
ial
s-
WHEN H"01" =>
count[].d = count[].q + 1;
WHEN H"02", H"03", H"04" =>
f[3..0].d = addr[4..1];
WHEN OTHERS =>
f[].d = f[].q;
Or
oz
co
END CASE;
La sentencia case posee las siguientes características:
Entre las palabras reservadas CASE e IS se coloca una expresión booleana,
Gi
lar
do
ni
-
grupo o máquina de estados (en el ejemplo f[].q) cuyo valor activará la
alternativa correspondiente.
La sentencia es terminada por las palabras END CASE y un punto y coma.
Una o más alternativas son listadas en la cláusula WHEN, en el cuerpo de la
sentencia case. Cada cláusula WHEN comienza con la palabra reservada
WHEN.
Gilardoni - Orozco - Cayssials
3-19
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
En cada alternativa, luego de la palabra WHEN, uno o más valores constantes,
separados por comas, son seguidos por el símbolo =>. En este ejemplo, los
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
valores constantes H"02", H"03", H"04" son listados en una cláusula WHEN,
mientras que los valores H"00" y H"01" son listados en cláusulas separadas.
Si la expresión booleana de la sentencia case evalúa una alternativa que no se
corresponde con los distintos valores de las cláusulas WHEN, se activará el
comportamiento descripto en la cláusula WHEN OTHERS.
11.4 Sentencia DEFAULTS.
La sentencia defaults, permite especificar valores por defecto para las variables
utilizadas en tablas de verdad, sentencias if-then y sentencias case. Ya que las señales
activas en high son automáticamente seteadas por defecto a GND, la sentencia defaults
sólo es requerida para señales activas en low.
No debe confundirse los valores por defecto de variables con los valores por defecto de
los ports, asignados en la sección de subdiseño.
El siguiente ejemplo muestra una sentencia defaults:
BEGIN
DEFAULTS
a = VCC;
-C
ay
ss
ial
s-
END DEFAULTS;
IF y & z THEN
a = GND;
% a es activa en low %
END IF;
END;
Or
oz
co
La sentencia defaults posee las siguientes características:
Es encerrada por las palabras reservadas DEFAULTS y END DEFAULTS
Gi
lar
do
ni
-
finalizando con un punto y coma.
El cuerpo de la sentencia consiste de una o más ecuaciones booleanas que
asignan valores constantes a las variables. En el ejemplo, la sentencia defaults
asigna el valor VCC a la variable a.
La sentencia es activada si la variable que contiene no es asignada a algún valor.
Por lo tanto, luego del reset del dispositivo, la variable a tendrá el valor VCC,
Gilardoni - Orozco - Cayssials
3-20
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
generalmente 5volts, si no se cumple que la condición y & z sea verdadera. En
caso afirmativo a valdrá GND.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Sólo una sentencia defaults es permitida en la sección lógica y, en caso de
utilizarse, esta debe ser la primera sentencia luego de la palabra reservada
BEGIN.
No puede utilizarse para asignar valores por defecto de X (don't care) a una
variable.
11.5 Sentencia IF-THEN.
La sentencia if-then permite realizar una determinada descripción de hardware en
función del resultado de una expresión booleana.
El siguiente ejemplo muestra una sentencia if-then:
IF a[] == b[] THEN
c[8..1] = H "77";
addr[3..1] = f[3..1].q;
f[].d = addr[] + 1;
ELSIF g3 $ g4 THEN
f[].d = addr[];
ELSE
END IF;
-C
ay
ss
ial
s-
d = VCC;
Observando el ejemplo, si el grupo a[] es igual al grupo b[], la sentencia if-then
permitirá la evaluación de las sentencias que suceden a la palabra reservada THEN.
También observamos las palabras reservadas ELSIF, ELSE y END IF. El uso de la
Or
oz
co
estructura ELSIF, permite evaluar otra expresión booleana, cuando la expresión anterior
dio como resultado un valor falso y evaluar las sentencias que suceden a la palabra
reservada THEN en función del resultado de esta nueva expresión. El uso de la palabra
reservada ELSE permite evaluar las sentencias que la suceden, si la expresión evaluada en
Gi
lar
do
ni
-
la estructura anterior fue falsa. Toda sentencia if-then finaliza con las palabras reservadas
END IF y un punto y coma.
Una estructura if-then que utilice las palabras reservadas ELSIF y ELSE puede
representarse utilizando sólo las palabras reservadas IF, THEN y END IF. El siguiente
ejemplo muestra este hecho:
Gilardoni - Orozco - Cayssials
3-21
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
IF a THEN
c = d;
UN
S
IF a THEN
c = d;
ELSIF b THEN
c = e;
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
END IF;
IF !a & b THEN
c = e;
END IF;
ELSE
IF !a & !b THEN
c = f;
END IF;
END IF;
11.6 Sentencia IF-GENERATE.
Es una sentencia que permite controlar la generación condicional de hardware en
función del resultado de evaluar expresiones aritméticas.
Puede ser usada tanto en la sección lógica como en la sección variable. La estructura de
esta sentencia hace uso de las siguientes palabras reservadas: IF-GENERATE, ELSEGENERATE y END GENERATE.
El siguiente es un ejemplo de la sentencia if-generate:
IF DEVICE_FAMILY == "FLEX8K" GENERATE
-C
ay
ss
ial
s-
c[] = 8kadder(a[], b[], cin);
ELSE GENERATE
c[] = otheradder(a[], b[], cin);
END GENERATE;
Se observa en el ejemplo que según el valor del parámetro interno DEVICE_FAMILY,
se generará un hardware distinto.
Or
oz
co
La sentencia if-generate difiere con respecto a la sentencia if-then, en que esta última, es
totalmente implementada en el hardware, mientras que la sentencia if-generate permitirá
implementar distintas sentencias en función del resultado de una expresión aritmética. Es
Gi
lar
do
ni
-
usual ver un uso intensivo de esta sentencia en librerías de módulos parametrizados
(LPM).
11.7 Sentencia FOR-GENERATE.
La sentencia for-generate permite generar hardware en forma repetitiva.
Gilardoni - Orozco - Cayssials
3-22
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
La estructura de esta sentencia hace uso de las siguientes palabras reservadas: FORGENERATE y END GENERATE.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
El siguiente ejemplo muestra el uso de la sentencia for-generate:
CONSTANT NUM_OF_ADDERS = 8;
SUBDESIGN 4gentst
(
a[NUM_OF_ADDERS..1], b[NUM_OF_ADDERS..1], cin
: INPUT;
c[NUM_OF_ADDERS..1], cout
: OUTPUT;
)
VARIABLE
carry_out[(NUM_OF_ADDERS+1)..1] : NODE;
BEGIN
carry_out[1] = cin;
FOR i IN 1 TO NUM_OF_ADDERS GENERATE
c[i] = a[i] $ b[i] $ carry_out[i];
% Full Adder %
carry_out[i+1] = a[i] & b[i] # carry_out[i] & (a[i] $ b[i]);
END GENERATE;
cout = carry_out[NUM_OF_ADDERS+1];
END;
En el ejemplo, la sentencia for-generate define intrínsecamente una variable, llamada i,
que tiene vigencia sólo en el ámbito de la sentencia. Esta variable será el contador de las
-C
ay
ss
ial
s-
repeticiones y podrá ser utilizada dentro del cuerpo de la sentencia.
También, como en el caso de la sentencia if-generate, es usual ver un uso intensivo de
esta sentencia en librerías de módulos parametrizados (LPM).
11.8 Sentencia TRUTH TABLE.
La sentencia truth table es utilizada para especificar lógica combinacional o el
Or
oz
co
comportamiento de máquinas de estados. Una tabla de verdad, en AHDL, posee una
combinación de valores de entrada, que producirán valores de salida específicos. Estos
valores de salida pueden ser realimentados para especificar transiciones de estados y
Gi
lar
do
ni
-
salidas de una máquina de estados.
Gilardoni - Orozco - Cayssials
3-23
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
TABLE
f[4..1].q
0,
B"0000"
0,
B"0100"
1,
B"0XXX"
X,
B"1111"
END TABLE;
=>
f[4..1].d,
control;
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
a0,
UN
S
El siguiente ejemplo muestra una sentencia truth table:
=>
B"0001",
1;
=>
B"0010",
0;
=>
B"0100",
0;
=>
B"0101",
1;
Las señales de entrada de la tabla son a0 y f[4..1].q y las salidas son f[4..1].d y control.
Estas señales deben colocarse en la primera línea formando el encabezado de la tabla.
Luego en las líneas siguientes se especifican los distintos valores posibles para las señales,
tanto de entradas como de salidas.
Los valores de entrada y salida pueden ser números, constantes predefinidas como VCC
o GND, constantes definidas por el usuario y grupos de números o constantes. Los valores
de entrada pueden ser asignados a don't care utilizando la letra X para representarlos.
Conclusiones
En este capítulo se describieron los principales conceptos del lenguaje AHDL para la
especificación de hardware. Se detalló la estructura de un diseño y la sintaxis de las
Gi
lar
do
ni
-
Or
oz
co
un proyecto.
-C
ay
ss
ial
s-
sentencias del lenguaje como así también la principal utilización de dichas sentencias en
Gilardoni - Orozco - Cayssials
3-24
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Capítulo 4
Sistema de desarrollo de ALTERA: MAX + PLUS II
y placa de desarrollo universal UP1
Introducción
En este capítulo se describen las partes integrantes del sistema de desarrollo de lógica
programable de la firma ALTERA, compuesto por el software MAX + PLUS II y la placa
de desarrollo UP1.
1. ¿ Qué es ALTERA MAX+PLUS II ?
ALTERA MAX+PLUS II es un software desarrollado por la firma ALTERA para
sintetizar, simular y programar sus dispositivos utilizando diversos lenguajes de
-C
ay
ss
ial
s-
descripción de hardware, como son: VHDL, VERILOG HDL y AHDL. También permite
especificar un diseño en forma gráfica a través de diagramas esquemáticos,
interconectando distintos elementos lógicos como compuertas, flip flops, contadores, etc.
Si tenemos un conocimiento básico del lenguaje VHDL, podríamos ejecutar el software
MAX+PLUS II e intentar describir un hardware sencillo. Sin embargo, nos encontraríamos
Or
oz
co
con ciertos problemas a la hora de sintetizar el proyecto, ya que es necesario especificar
diversos ítems propios de esta herramienta y de los dispositivos de lógica programable a
utilizar.
Por lo tanto, el objetivo planteado, es poder mostrar cómo se realiza un diseño completo
Gi
lar
do
ni
-
sobre esta herramienta, utilizando un dispositivo de lógica programable disponible en
nuestro laboratorio el cual pertenece a la familia MAX7000 y es especificamente el
EPM7128SLC84-7.
Gilardoni - Orozco - Cayssials
4-1
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
1.1 Ejemplo Demostrativo
La siguiente, es la descripción de un ejemplo, incluido en el software ALTERA
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
MAX+PLUS II, utilizando uno de los lenguajes recién mencionados; el VHDL.
Dicho ejemplo consiste en la implementación de un sumador (adder) binario de 8 bits,
utilizando el dispositivo de la familia MAX7000, EPM7128SLC84-7.
Después de la instalación del software, podemos encontrar el ejemplo en el directorio:
Drive:\altera\max2work\vhdl\
El ejemplo se encuentra en el archivo denominado adder.vhd y es un archivo de texto
que contiene el código VHDL. El mismo debe abrirse con la siguiente secuencia:
File → Proyect → Name… adder.vhd
Para configurar el software de manera tal que el proyecto a realizar se basará en este
archivo, debe ejecutarse la siguiente secuencia:
File → Proyect → Set Proyect to Current File
De no hacer esto, cuando se sintetice o simule este nuevo archivo, la síntesis o
simulación se realizará sobre el archivo base del proyecto anterior.
-C
ay
ss
ial
s-
Una vez configurado como el archivo del proyecto, podemos ir al icono de apertura de
la ventana de jerarquías.
De esta manera, se puede observar cómo está compuesto el diseño a través de un
esquema tipo árbol, donde cada hoja de dicho árbol hace referencia a un archivo.
Or
oz
co
Si nunca había sido sintetizado, se observarán en la ventana de jerarquías sólo dos
archivos, que son: el código VHDL del sumador (archivo adder.vhd) y un archivo de
texto con extensión .acf, el cual describe parámetros característicos de las distintas familias
Gi
lar
do
ni
-
de dispositivos ALTERA.
1.2 Síntesis
El sintetizador del software MAX+PLUS II es un procesador de diseños, altamente
automatizado que transforma los archivos de diseño en un archivo de salida para
Gilardoni - Orozco - Cayssials
4-2
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
sintetizador es el corazón del sistema de desarrollo MAX+PLUS II.
UN
S
programar, simular y analizar temporalmente los dispositivos de lógica programable. El
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Cuando el sintetizador comienza a trabajar sobre un archivo de diseño, ejecuta una serie
de procesos hasta crear uno o más archivos de programación. Mientras que el sintetizador
permite sintetizar un diseño con una mínima intervención del usuario, también es posible
modificar ciertos parámetros para obtener mejores resultados, ya sea en cuanto velocidad o
utilización de recursos físicos.
Si un proyecto es muy extenso e insume una gran cantidad de recursos físicos, es
probable que deban necesitarse dos o más dispositivos para implementarlo. Este hecho es
automáticamente detectado por el sintetizador y es éste el que particiona el diseño en
múltiples dispositivos de la misma familia.
Para sintetizar un archivo de diseño debemos abrir la ventana MAX+PLUS II →
Compiler y presionar el botón de start. Posteriormente, la ventana de jerarquías indicará
la realización de los diferentes archivos como resultado de la síntesis.
1.3 Tipos de Archivos
Seguidamente se clasifican los tipos de archivos que pueden encontrarse como
Or
oz
co
-C
ay
ss
ial
s-
componentes de un proyecto. Ellos pueden ser de cuatro tipos básicos:
A su vez, cada tipo puede tener distintas extensiones como pueden ser:
Editor gráfico: .gdf, .sch
Gi
lar
do
ni
-
Editor de símbolos: .sym
Editor de textos: .acf, .aco, .adf, .cmd, .edc, .edf, .fit, .hst, .lmf, .log, .mif, .mio,
.mtf, .plf, .rpt, .sdo, .smf, .tao, .tbl, .tdf, .tdo, .tdx, .ttf, .vec, .vhd, .vho, .vmo,
.vo, .xnf, o cualquier otro archivo de texto ASCII.
Editor de formas de ondas: .scf, .wdf
Para obtener información sobre los distintos tipos de archivos ejecutar:
Gilardoni - Orozco - Cayssials
4-3
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
1.4 Interpretación del Código VHDL
UN
S
Help → Search for Help on… y tipear la extensión del mismo.
El código se encuentra en el archivo adder.vhd, que es de tipo texto y su extensión
indica que es un código fuente escrito en lenguaje VHDL. Este es el archivo principal del
diseño y a partir del cual, una vez sintetizado, se generan los demás archivos que integran
el proyecto.
1.4.1.
Código VHDL
ARCHIVO adder.vhd
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
ENTITY adder IS
PORT (
op1, op2
result
: OUT INTEGER);
UNSIGNED(7 downto 0);
-C
ay
ss
ial
s-
END adder;
: IN
ARCHITECTURE maxpld OF adder IS
BEGIN
result <= CONV_INTEGER(op1 + op2);
END maxpld;
Or
oz
co
En este archivo se declara la librería ieee y se hace uso de los packages
ieee.std_logic_1164 y ieee.std_logic_arith, que definen la lógica standard y la lógica
aritmética respectivamente (Capítulo 2).
Gi
lar
do
ni
-
La palabra reservada UNSIGNED es un tipo de datos que está definido dentro del
package std_logic_arith contenido en la librería ieee. El tipo UNSIGNED representa
valores numéricos sin signo los cuales sólo pueden ser positivos o cero.
El software MAX+PLUS II interpreta cada tipo UNSIGNED como un número binario,
con el dígito de la izquierda como el bit más significativo.
La palabra reservada INTEGER representa al tipo de dato predefinido ya conocido.
Gilardoni - Orozco - Cayssials
4-4
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
Por último la palabra reservada CONV_INTEGER, convierte de tipo INTEGER,
UNSIGNED, SIGNED, ó STD_ULOGIC a un valor INTEGER. El tamaño de los
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
operandos de la función CONV_INTEGER está limitado entre -2147483647 y
2147483647.
Por lo tanto, este código implementa un sumador de 8-bits con entradas declaradas tipo
UNSIGNED y salida declarada tipo INTEGER.
En la arquitectura, op1 y op2, son ambas de tipo UNSIGNED. Las mismas son sumadas
y convertidas a tipo INTEGER con la función de conversión CONV_INTEGER. Luego el
resultado de la conversión se asigna a result declarada tipo INTEGER.
Nota: Si bien el tipo INTEGER posee 32 bits de representación, sólo se utilizan 9 bits
ya que el resultado de sumar señales de 8 bits a lo sumo dará como resultado una palabra
de 9 bits. Entonces al nivel del dispositivo tendremos sólo 9 contactos de salida usados.
El software MAX+PLUS II versión estudiantil 7.21 puede ser obtenido gratuitamente
de la página web de ALTERA: http://www.altera.com/
2. Placa de Desarrollo universal UP1
-C
ay
ss
ial
s-
La placa de desarrollo universal UP1 está compuesta por:
Placa educacional UP1.
Cable de programación ByteBlaster.
2.1 ¿Qué es la placa educacional UP1?
La placa educacional UP1 es una placa experimental basada en dos dispositivos
Or
oz
co
ALTERA de las familias MAX7000 y FLEX10K (Capítulo 1). Ambos son
programables en sistema (In-System Programmability, ISP), lo que permite su
Gi
lar
do
ni
-
programación en forma serial y sin necesidad de desmontarlos del circuito impreso.
Gilardoni - Orozco - Cayssials
4-5
Laboratorio de Sistemas Digitales - UNS
2.2 ¿Cómo es la placa educacional UP1?
UN
S
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
Una vista superior de la placa UP1, muestra la existencia y distribución de los
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
dispositivos de lógica programable.
2.3 ¿Cómo está compuesta la placa UP1?
-C
ay
ss
ial
s-
La placa posee una serie de elementos, entre los cuales figuran un regulador de tensión,
un oscilador a cristal integrado, conectores, switches, leds y displays.
Como se ve en la figura anterior, la placa UP1 está compuesta por dos dispositivos de
lógica programable: el EPM7128S de la familia MAX7000, y el EPF10K20 de la familia
FLEX10K.
Los dos dispositivos comparten la señal proveniente de un oscilador a cristal integrado
Or
oz
co
de 25.157 Mhz cableada directamente a los contactos de entrada del reloj global de cada
dispositivo. Esto es el contacto 83 para el dispositivo EPM7128S y el contacto 91 para el
dispositivo EPF10K20.
Gi
lar
do
ni
-
El dispositivo de la familia MAX7000, el EPM7128S, está cableado directamente a los
dos displays de 7 segmentos MAX_DIGIT y por lo tanto el uso de los contactos
respectivos los enciende y apaga. Todos los demás contactos de entrada/salida, excepto el
reloj global, permanecen sin conectarse.
En cuanto el dispositivo de la familia FLEX10K, el EPF10K20, está cableado
directamente a los dos displays de 7 segmentos (FLEX_DIGIT), a los switches
Gilardoni - Orozco - Cayssials
4-6
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
(FLEX_SWITCH), al conector para mouse (MOUSE), al conector para monitor (VGA), a
los push-buttons (FLEX_PB1 Y FLEX_PB2) y a un zócalo para la colocación de una
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
memoria EEPROM EPC1 de configuración. Todos los demás contactos de entrada/salida,
excepto el reloj global, permanecen sin conectarse y son accesibles a través de los
terminales de expansión FLEX_EXPAN_ A-B-C.
Nota: Cabe notar que el dispositivo de la familia FLEX10K, el EPF10K20, está cableado a
un conector de video VGA, y es por eso que el oscilador a cristal es de 25.175 Mhz, que es
la frecuencia especificada por el estándar VGA. Esta es la única razón por la que no ha
sido conectado a un reloj de mayor frecuencia, ya que ambos dispositivos podrían
funcionar al triple de frecuencia.
Los dispositivos están conectados en cadena JTAG (IEEE 1149.1 Join Test Action
Group ). JTAG es una interfase estándar que permite que los dispositivos sean ISP (InSystem Programmability) de forma tal de poder programar y/o configurar, a través de la
interfase ByteBlaster™ a uno o ambos dispositivos en forma secuencial.
La placa UP1 posee una serie de switches para configurar dicha cadena, pudiendo
seleccionar la programación del dispositivo EPM7128S, o la configuración del dispositivo
-C
ay
ss
ial
s-
EPF10K20 o la programación y configuración de los dos dispositivos.
Para mayor información sobre la placa educacional UP1 debe referirse a la guía del
usuario de ALTERA:
University Program Design Laboratory Package.
Or
oz
co
3. Cable de Programación ByteBlaster.
3.1 ¿Qué es y para qué sirve la ByteBlaster?
Los diseños pueden ser fácil y rápidamente transferidos a la placa UP1 usando el cable
Gi
lar
do
ni
-
de programación ByteBlaster, el cual es una interfase física entre la placa UP1 y el
puerto paralelo estándar de la computadora personal (PC).
El cable de programación ByteBlaster sólo sirve para programar y/o configurar los
dispositivos In-System Programmability (ISP) a través de la interfase IEEE 1149.1 Join
Test Action Group (JTAG).
Gilardoni - Orozco - Cayssials
4-7
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
puerto paralelo de la computadora personal.
-C
ay
ss
ial
s-
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
El diagrama esquemático de la ByteBlaster™ es el siguiente:
UN
S
Eléctricamente no es más que un circuito 72LS244 (buffer octal), usado para proteger el
Nota: Mediente la utilización del cable de programación ByteBlasterTM pueden
configurarse:
los dispositivos de la familia FLEX10K, ya que las interconexiones internas se
realizan a través de switches RAM estáticos (SRAM). Por este motivo, deben ser
Or
oz
co
configurados cada vez que se energizan. Pueden ser configurados a través de una
memoria previamente programada, en donde el dispositivo configurable,
automáticamente, lee la información necesaria y se autoconfigura.
Gi
lar
do
ni
-
los dispositivos de la familia MAX7000, ya que las interconexiones internas se
realizan a través de switches EEPROM y no necesitan ser reprogramados cada
vez que se energizan.
Gilardoni - Orozco - Cayssials
4-8
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Capítulo 5
Implementación de un Controlador de Memoria
Dinámica: Una Aplicación de Lógica Programable.
El objetivo del proyecto es demostrar el funcionamiento y capacidades del sistema de
desarrollo de lógica programable que el laboratorio de Sistemas Digitales a adquirido en su
participación en el programa universitario de ALTERA.
Para ilustrar los conceptos descriptos anteriomente, en este capítulo se describe la
implementación de un controlador de memorias RAM dinámicas, DRAMs, configuradas
en un módulo SIMM de 72 contactos. La función del controlador de memorias DRAM será
hacer ver al módulo como una memoria RAM estática.
1. Memorias Dinámicas Utilizadas: Módulo SIMM
-C
ay
ss
ial
s-
de 72 contactos.
El sistema desarrollado consiste de un controlador de memorias dinámicas ensambladas
en módulos SIMM de 72 contactos, los cuales son usados como memorias RAM en
computadoras personales.
En particular se diseñó para funcionar con el módulo SIMM TM124BBK32 de
1M*32bits de Texas Instruments, respetando la configuración de contactos y handshake
Or
oz
co
especificados en el estándar JEDEC de 72 contactos.
En la figura 5.1 puede se ve detalladamente el símbolo lógico que representa a cada
Gi
lar
do
ni
-
chip componente del módulo SIMM:
Gilardoni - Orozco - Cayssials
5-1
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 5.1
-C
ay
ss
ial
s-
El módulo SIMM está compuesto por 8 chips DRAMS TMS44400 DE 1M*4bits y la
Gi
lar
do
ni
-
Or
oz
co
conexión eléctrica entre ellos puede verse en la figura 5.2.
Gilardoni - Orozco - Cayssials
Figura 5.2
5-2
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
El layout del módulo SIMM es el siguiente:
Figura 5.3
1.1 Características Técnicas del Módulo SIMM Utilizado.
E módulo SIMM está compuesto por 8 chips DRAMs TMS44400 DE 1M*4 bits.
Observando las figuras anteriores podemos inferir que los 8 chips funcionarán en forma
paralela, siendo activados con las señales /cas y /ras respectivas. Por lo tanto el modo de
operación del módulo será el mismo que el de cada chip.
1.2 Características Técnicas de los Chips TMS44400.
En forma resumida, las características principales de los chips utilizados son:
-C
ay
ss
ial
s-
1 meganibble de capacidad, estructurados en forma matricial 1024 filas * 1024
columnas.
Ciclo de refresco de 16 mseg.
Refresco Cas before Ras.
Auto refresco.
Consumo promedio de corriente de 90ma.
Gi
lar
do
ni
-
Or
oz
co
Tiempo de acceso 70 ns.
Gilardoni - Orozco - Cayssials
5-3
Laboratorio de Sistemas Digitales - UNS
2. Controlador de Memorias Dinámicas.
Dinámicas.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
2.1 Símbolo Lógico del Controlador de Memorias
UN
S
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
El controlador de memorias dinámicas será llamado dramcontrol y la configuración de
contactos de entrada y salida es la siguiente:
Las señales asociadas a los distintos contactos de entrada y salida pueden dividirse en
tres grupos según sea su interacción con y desde el mundo exterior.
Estas señales son:
Las señales independientes, que no interactúan en forma directa con el sistema
-C
ay
ss
ial
s-
microprocesador ni con el módulo SIMM.
Las señales microprocesador - dramcontrol, que interactúan en forma directa con el
sistema microprocesador.
Las señales dramcontrol – módulo SIMM, que interactúan en forma directa con el
módulo SIMM.
Señales independientes
Or
oz
co
2.1.1.
Existen sólo dos señales independientes: 1) la señal de entrada clk, que será utilizada
como la señal de sincronismo de toda la lógica secuencial utilizada en la implementación
Gi
lar
do
ni
-
del controlador de memorias dinámicas. 2) la señal de estado_error, que indica que se ha
producido un error por parte del microprocesador por haber estado en estado bajo las
señales /write y /read simultáneamente.
2.1.2.
Señales microprocesador - dramcontrol:
Gilardoni - Orozco - Cayssials
5-4
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
La señal de entrada /read es usada como la señal de lectura de la memoria
dinámica y es activa en cero.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
La señal de entrada /write es usada como la señal de escritura en la memoria
dinámica y es activa en cero.
La señal de ready, activa en uno, indica si el sistema memoria – dramcontrol
está listo para ejecutar un ciclo de lectura o escritura.
El bus address_in son las 16 líneas de direcciones provenientes del
microprocesador.
El bus bidir_up es el bus de datos bidireccional de 8 bits, que conecta el
microprocesador con el controlador de memorias dinámicas.
2.1.2.1. Señales dramcontrol – módulo SIMM:
La señal de salida /write_dram es usada como señal de escritura y lectura en la
memoria dinámica y será de escritura cuando esté en estado low y de lectura
cuando esté en estado high.
La señal de salida /ras es aplicada a la memoria dinámica. Esta señal es activa
en cero y es llevada a su estado low indicando que las direcciones de filas ya
están presentes.
Igual que la señal /ras, la señal de salida /cas es aplicada a la memoria dinámica.
-C
ay
ss
ial
s-
Esta señal es activa en cero y es llevada a su estado low indicando que las
direcciones de columnas ya están presentes.
address_out son las 10 líneas de direcciones multiplexadas de filas y columnas
hacia el módulo SIMM.
bidir_simm es el bus de datos bidireccional de 8 bits, que conecta el
Or
oz
co
controlador de memorias dinámicas con el módulo SIMM.
3. Funcionamiento del Controlador de Memorias
Gi
lar
do
ni
-
Dinámicas.
El módulo SIMM de 72 contactos de 1M * 32 bits, será visto como una memoria RAM
estática de 4M * 8 bits, por lo que se leerá y se escribirá a la memoria 1 byte de datos, y
para permitir su direccionamiento a la mayoría de los microprocesadores de 8 bits, se
paginará en 64 páginas de 64 Kbytes cada una.
Gilardoni - Orozco - Cayssials
5-5
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
La funcionabilidad del controlador de memorias dinámicas puede dividirse en dos
partes. Una parte que interactúa con el microprocesador, llamada microprocesador memoria dinámica.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
controlador y otra parte que interactúa con la memoria dinámica, llamada controlador –
3.1 Funcionamiento microprocesador - controlador
¿Cómo es un ciclo de lectura del microprocesador - controlador?
Como indica la figura 5.4, el ciclo de lectura comienza cuando el microprocesador baja
la señal /read, y la señal /write permanece en nivel alto. En el flanco descendente de la
señal /read se almacenan en registros las direcciones address_in provenientes del
-C
ay
ss
ial
s-
microprocesador previamente establecidas. Luego que el controlador dramcontrol accede
a la memoria, aparece el dato leído en las líneas bidir_up. El dato leído estará presente
mientras la señal /read esté en nivel bajo y será leído por el microprocesador en el flanco
ascendente de la señal /read.
Aclaración: los valores, tanto de la dirección de escritura como el del dato leído, fueron
Gi
lar
do
ni
-
Or
oz
co
elegidos en forma arbitraria.
Gilardoni - Orozco - Cayssials
Figura 5.4
5-6
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
¿Cómo es un ciclo de escritura del microprocesador - controlador?
Como indica la figura 5.5, el ciclo de escritura comienza cuando el microprocesador
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
baja la señal /write, y la señal /read permanece en nivel alto. En el flanco descendente de
la señal /write se almacenan en registros las direcciones address_in provenientes del
microprocesador previamente establecidas. Luego el microprocesador debe colocar el dato
a escribir en las líneas bidir_up. El dato será almacenado por el controlador dramcontrol,
con el flanco ascendente de la señal /write. Luego, controlador accederá a la memoria
dinámica para escribir el dato deseado en el lugar de memoria deseado.
Figura 5.5
¿Cómo funciona el paginado?
El paginado se lleva a cabo con un ciclo de escritura microprocesador – controlador
como el descripto anteriormente, pero la escritura será en la dirección de paginado
-C
ay
ss
ial
s-
previamente establecida. También cabe notar que el registro de paginado es de 6 bits y por
lo tanto el valor que tomará dicho registro, luego del ciclo de escritura, será el de los 6 bits
menos significativos del bus de datos proveniente del microprocesador.
La dirección de paginado será la indicada por la constante dir_paginado definida en el
código AHDL, por lo tanto cuando se escriba en esa dirección no se accederá a la memoria
Or
oz
co
sino que se modificará el registro de paginado.
Se perderán 256Bytes de memoria por el uso de este paginado, ya que se pierden los
4Bytes de la dirección de paginado, dir_paginado, de cada página.
La lectura de un dato en la dirección de paginado no está implementada, es decir, que el
Gi
lar
do
ni
-
controlador no realiza ninguna función, por lo tanto no se puede saber cuál es el valor
actual del registro de paginado. Sólo se puede modificar.
En la figura 5.6 se muestra el ciclo de cambio de página recién descripto, y los valores,
tanto de la dirección de paginado como el del valor de la página, fueron elegidos en forma
arbitraria.
Gilardoni - Orozco - Cayssials
5-7
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 5.6
3.2 Funcionamiento controlador – memoria dinámica.
¿Cómo se direcciona el módulo SIMM?
El direccionamiento del módulo SIMM se hará a través de las 16 direcciones
provenientes del microprocesador adress_in[15..0], más las 6 direcciones del registro de
paginado. De esta forma las direcciones de filas estarán formadas por los 6 bits del registro
de paginado más los 4 bits más significativos de las direcciones provenientes del
microprocesador adress_in[15..12], mientras que las direcciones de columnas serán los 10
bits restantes, es decir adress_in[11..2]. Los bits 1 y 0 serán utilizados para decodificar el
byte correspondiente de la palabra de 32 bits que maneja el módulo SIMM.
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
Gráficamente sería de la siguiente forma:
Gilardoni - Orozco - Cayssials
5-8
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
-C
ay
ss
ial
s-
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
¿Cómo es un ciclo de lectura del controlador – memoria dinámica?
El ciclo de lectura del controlador - memoria dinámica se debe realizar dentro del
ciclo de lectura microprocesador – controlador, ya que el dato leído se debe presentar al
Or
oz
co
microprocesador en el flanco ascendente de la señal /read, como se vio anteriormente.
Entonces una vez que la señal /read pasa a estado bajo, comienzan los ciclos de lectura
microprocesador – controlador y controlador – memoria dinámica.
Gi
lar
do
ni
-
El ciclo de lectura controlador – memoria dinámica tiene que realizarse antes que
finalice el ciclo microprocesador – controlador. Para asegurar que esto ocurra se bajará
la señal ready hasta que el acceso se haya completado.
Gilardoni - Orozco - Cayssials
5-9
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
El ciclo de lectura controlador – memoria dinámica realiza el handshake que indica la
hoja de datos, de la memoria dinámica que se corresponde con el indicado en el estándar
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
JEDEC de 72 contactos.
En la figura 5.7 se ve que luego de bajar la señal /read, el controlador establece las
direcciones de filas con el valor “00F” y se baja la señal /ras, con lo que la memoria
latchea las direcciones de filas. Luego el controlador coloca las direcciones de columnas
“3C3” y se baja la señal /cas. En un tiempo no mayor a los 20ns el dato leído aparece en el
bus de datos bidir_simm, siendo este latcheado y presentado al microprocesador hasta que
el ciclo microprocesador – controlador termine.
Figura 5.7
¿Cómo es un ciclo de escritura del controlador – memoria dinámica?
El ciclo de escritura del controlador - memoria dinámica se puede realizar solo
-C
ay
ss
ial
s-
después del ciclo de lectura microprocesador – controlador, ya que en el momento de
acceder a la memoria dinámica se deben conocer tanto la dirección como el dato a escribir.
Entonces, una vez que el ciclo de escritura microprocesador – controlador finaliza el
controlador ejecuta el ciclo de escritura controlador – memoria dinámica.
El ciclo de escritura controlador – memoria dinámica realiza el handshake que indica
Or
oz
co
la hoja de datos, de la memoria dinámica.
En la figura 5.8 se ve el final de un ciclo de escritura microprocesador – controlador
y el comienzo de un ciclo de escritura controlador – memoria dinámica. Dicha transición
la determina el flanco ascendente de la señal /write.
Gi
lar
do
ni
-
Luego el controlador establecen las direcciones de filas con el valor “00F” y se baja la
señal /ras, con lo que la memoria latchea las direcciones de filas. Posteriormente el
controlador coloca las direcciones de columnas “3C3” y se baja la señal /cas. Se observa
que el dato a escribir, “11” se encuentra presente prácticamente durante todo el ciclo.
Gilardoni - Orozco - Cayssials
5-10
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 5.8
¿Cómo es el ciclo de refresco CAS before RAS?
Como toda memoria dinámica, para asegurar la integridad de los datos, debe ser
refrescada periódicamente. Las memorias utilizadas tienen un ciclo de refresco de 16ms y
están estructuradas como una gran matriz de 1024 filas por 1024 columnas, por lo tanto
una forma de refrescar toda la memoria sería leer 1024 filas en un tiempo menor a los
16ms, usando solamente la señal /ras. Esté tipo de refresco es el denominado RAS only y
tiene la desventaja de tener que llevar un contador externo con las direcciones de filas a
refrescar.
Otro tipo de refresco es el CAS before RAS, que fue el utilizado, y tiene la ventaja con
respecto al anterior, que no es necesario colocar las direcciones de filas, ni llevar un conteo
externo, ya que esto lo hace automáticamente la memoria dinámica con su propio contador
-C
ay
ss
ial
s-
interno. Como su nombre lo indica, para que la memoria interprete que se quiere hacer un
ciclo de refresco CAS before RAS, el controlador debe realizar el siguiente handshake:
primero se baja la línea /cas y se sube la línea /write_dram y se baja la línea /ras. Se
mantienen estos estados y se levanta la línea /cas al mismo tiempo que se baja la línea
Figura 5.9
Gi
lar
do
ni
-
Or
oz
co
/write_dram. Posteriormente se levanta la línea /ras y finaliza el ciclo.
Gilardoni - Orozco - Cayssials
5-11
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
4. Funcionamiento
Lógico
del
Controlador
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Memorias Dinámicas.
de
UN
S
Gilardoni – Orozco - Cayssials
El controlador de memorias dinámicas está formado por dos máquinas de estados que
evolucionan sincrónicamente con la señal de reloj y en función de distintas variables de
entrada que definen cuál es el próximo estado.
Una máquina implementa las funciones microprocesador – controlador y será
denominada máquina 1. La otra, implementa las funciones controlador – memoria
dinámica y será denominada máquina 2.
Luego de una inicialización del controlador, las máquinas de estados se inician en los
estados espera en la máquina 1 y Standby en la máquina 2. Como sus nombres lo indican
estos estados son estados de espera, e indican que el controlador se encuentra disponible
para realizar cualquiera de las funciones microprocesador – controlador y controlador –
memoria dinámica, mencionadas anteriormente.
En función de tres señales lógicas, la máquina 2 puede evolucionar de tres maneras
diferentes. Estas evoluciones son las correspondientes al ciclo de refresco, al ciclo de
lectura y al ciclo de escritura.
Las tres señales lógicas recién mencionadas son definidas en el código AHDL y se
-C
ay
ss
ial
s-
derivan de dos elementos de memoria (flip flops) y un contador. El contador es utilizado
para comenzar un ciclo de refresco cuando la cuenta alcanza su fin. Es llamado
contador.q[] donde los caracteres .q[] hacen referencia a las salidas de todos los flip flops
que componen al contador.
Las dos señales restantes son llamadas lectura_pendiente.q, y escritura_pendiente.q,
Or
oz
co
que son las salidas de dos flip flops D con señal de enable. Estos flip flops son
configurados por la máquina 1 para comenzar un ciclo de lectura o escritura en la máquina
2 y son borrados por la máquina 2 cuando los ciclos terminan. Por lo tanto estas señales
funcionan como nexos de comunicación entra las dos máquinas de estados.
Gi
lar
do
ni
-
4.1 Máquina de estados 1: microprocesador – controlador
Los estados que componen la máquina de estados 1 son los siguientes:
reset_maquina_1: Estado inicial de reset. Luego pasa al estado espera.
Gilardoni - Orozco - Cayssials
5-12
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
espera: Estado de espera por un ciclo de lectura o escritura entre el
microprocesador y el controlador. En este estado se latchean las direcciones
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
provenientes del microprocesador. Y se evoluciona a dos posibles estados según
el estado de las señales /write y /read. Si baja la señal /read se pasa al estado
lectura_set_flag. Si baja la señal /write se pasa al estado escritura_espera.
lectura_set_flag:
Se setea a high el flip flops D de lectura pendiente. Que
dispara un ciclo de lectura en la máquina de estados 2. Luego pasa al estado
lectura_espera.
lectura_espera:
Espera en este estado hasta que lectura_pendiente.q sea
reseteado por la máquina de estados 2 cuando el acceso al módulo SIMM se
halla completado. Luego pasa al estado lectura_fin.
lectura_fin: Al llegar a este estado ya estarán los datos leídos de la memoria, en
el latch datos_simm[].q y puede activarse el buffer tri estado up_tri_state[] que
activará la salida del bus bidireccional bidir_up[].
escritura_espera: Latchea los datos provenientes del microprocesador y
verifica si la dirección provenientes del microprocesador es la dirección de
paginado. En caso afirmativo pasa al estado set_paginado. En caso contrario
espera a que la señal /write suba y pasa al estado escritura_set_flag.
-C
ay
ss
ial
s-
escritura_set_flag: Se setea a high el flip flops D de escritura pendiente. Lo que
dispara un ciclo de escritura en la máquina de estados 2. Luego pasa al estado
escritura_fin.
escritura_fin:
Espera en este estado hasta que la máquina de
estados 2 resetee el flip flop escritura_pendiente.q. Luego pasa al estado
espera, dándose por terminado el ciclo de escritura.
Or
oz
co
error_seguridad: Se accede a este estado si las señales /read y/o /write se
activan simultáneamente. En este caso se tiene una condición de error por parte
del microprocesador, y como consecuencia se para el funcionamiento del
Gi
lar
do
ni
-
controlador hasta un nuevo reset. El refresco se sigue ejecutando, con lo que se
asegura la integridad de los datos almacenados.
Gilardoni - Orozco - Cayssials
5-13
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
4.2 Máquina de estados 2: controlador – memoria dinámica
cantidad de estados:
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Cada uno de los ciclos componentes de la máquina 2 se realizan con la siguiente
Ciclo de refresco
=>
5 estados.
Ciclo de lectura
=>
6 estados.
Ciclo de escritura
=>
6 estados.
Los estados que componen la máquina de estados 2 son los siguientes:
Standby:
En este estado se espera por cualquiera de los tres ciclos posibles;
escritura, lectura o refresco. Las señales toman los valores definidos por defecto.
Idle: Este estado solo cumple la función de insertar un intervalo de tiempo de un
ciclo de reloj de duración, luego de un ciclo de lectura y / o escritura. Las
señales toman los valores definidos por defecto.
Ciclo de Refresco:
Refrescar1: Este es el primer estado que implementa el ciclo de refresco. Se
accede a éste, desde el estado standby, si la cuenta del contador de refresco llegó
o superó el valor determinado. En este estado se sube la señal /write_dram y se
-C
ay
ss
ial
s-
pasa al estado siguiente que es refrescar2.
Refrescar2: En este estado se bajan las señales /cas[0..3], y se mantiene la señal
/write_dram en uno. Pasa al estado siguiente refrescar3.
Refrescar3: En este estado se mantienen bajas las señales /cas[0..3], se baja la
señal /ras, se mantiene la señal /write_dram en uno y se pasa al estado
siguiente que es refrescar4.
la
Or
oz
co
Refrescar4: En este estado se suben las señales /cas[0..3], se mantiene baja
señal /ras, se baja la señal /write_dram y se pasa al estado siguiente que es
refrescar5.
Gi
lar
do
ni
-
Refrescar5: Se mantienen bajas las señales de /ras y /write_dram. Finaliza el
ciclo de refresco y las señales se estabilizan en el estado próximo que es
standby.
Nota: En realidad el ciclo de refresco termina al llegar al estado standby, ya que aquí
se sube la señal /ras.
Gilardoni - Orozco - Cayssials
5-14
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
Read1:
UN
S
Ciclo de Lectura:
Este es el primer estado que implementa el ciclo de lectura. Se
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
accede a éste desde el estado standby, si hay una señal de lectura pendiente. Esta
señal de lectura pendiente, proviene de un elemento de memoria (Flip Flop D),
llamado en el código AHDL, lectura_pendiente.q. Este flip flop es seteado por
la máquina de estados 1 cuando el microprocesador baja la señal /read. En este
estado se establecen las direcciones de filas hacia el módulo SIMM y se pasa al
estado siguiente que es read2.
Read2:
Se mantienen las direcciones de filas activas y se baja la señal de
/ras y se sube la señal /write_dram. Luego pasa al estado read3.
Read3:
Se colocan las direcciones de columnas. Se mantiene la señal de
/ras activa. Luego pasa al estado read4.
Read4:
Se mantienen las señales de columnas. Y se decodifican las señales
/cas en función de los dos bits menos significativos de las direcciones
provenientes del microprocesador. Luego se pasa al estado read5.
Read5:
Se mantienen las señales de columnas. Pasa al estado read6.
Read6:
Se mantienen las señales de columnas. Se resetea a low el flip flops
D de lectura pendiente. Se latchean los datos provenientes del módulo SIMM.
-C
ay
ss
ial
s-
Finaliza el ciclo de lectura, pasando el estado idle.
Ciclo de Escritura:
Write1:
Este es el primer estado que implementa el ciclo de escritura. Se
accede a éste desde el estado standby si hay una señal de escritura pendiente.
Esta señal de escritura pendiente es seteada por la máquina de estados 1 y
proviene de un elemento de memoria (Flip Flop D), llamado en el código
Or
oz
co
AHDL, escritura_pendiente.q. En este estado se establecen las direcciones de
filas hacia el módulo SIMM se pasa al estado siguiente llamado write2. La señal
/write_dram permanece en estado bajo durante todo el ciclo.
Gi
lar
do
ni
-
Write2:
En este estado se mantienen las direcciones de filas, y se baja la
señal /ras, luego se pasa al estado siguiente que es llamado write3.
Write3:
En este estado se establecen las direcciones de columnas hacia el
módulo SIMM, se mantiene la señal /ras en low y se habilita el bus de datos
Gilardoni - Orozco - Cayssials
5-15
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
Gilardoni – Orozco - Cayssials
UN
S
hacia el módulo SIMM. Luego se pasa al estado siguiente que es llamado
write4.
En este estado se mantienen las direcciones de columnas hacia el
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
Write4:
módulo SIMM, se mantiene la señal /ras en low, se determina que bit de la señal
/cas[0..3] se debe llevar a low para escribir el byte correcto y por último se pasa
al estado siguiente que es write5.
Write5:
En este estado se mantienen las direcciones de columnas hacia el
módulo SIMM, se mantiene la señal /ras en low, se mantienen las señales
/cas[0..3] como en el estado anterior, se deshabilita el bus de datos y se resetea
el flip flop de escritura pendiente. Por último se pasa al estado siguiente que es
write6.
Write6:
En este estado se permite que las señales vuelvan a tomar los
niveles definidos por defecto, para asegurar los tiempos de precarga
especificados en las hojas de datos del módulo de memoria. El próximo estado
es idle.
5. Implementación de los ports bidireccionales.
Seguidamente se describirá como es la implementación de buses bidireccionales, que
-C
ay
ss
ial
s-
cumplen la función de intercambiar información entre el microprocesador y el módulo de
memoria SIMM en forma bidireccional.
La figura 5.10 muestra en forma esquemática las interconexiones realizadas para
implementar dicha interfase.
Se puede observar la existencia de dos latchs encargados de almacenar los datos que
entran al dispositivo de lógica programable, tanto del port bidir_up[7..0] como del port
Or
oz
co
bidir_simm[7..0], con el flanco ascendente de la señal de reloj, si la señal de enable
Gi
lar
do
ni
-
correspondiente está en estado alto.
Gilardoni - Orozco - Cayssials
5-16
Laboratorio de Sistemas Digitales - UNS
Diciembre de 1999.
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-
UN
S
Gilardoni – Orozco - Cayssials
Figura 5.10
Los datos salen por los ports bidireccionales a través de los buffers tri estados
up_tri_state[7..0]
y
simm_tri_state[7..0]
cuando
las
señales
de
output
enable
Gi
lar
do
ni
-
Or
oz
co
-C
ay
ss
ial
s-
correspondientes pasan a estado alto.
Gilardoni - Orozco - Cayssials
5-17
Laboratorio de Sistemas Digitales - UNS
Descargar