You are on page 1of 127

UN

S
La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

TCNICAS DE DISEO, SIMULACIN E


IMPLEMENTACIN DE CIRCUITOS
LGICOS UTILIZANDO DISPOSITIVOS
VLSI Y ESPECIFICACIN HDL.

PROYECTO DE FIN DE CARRERA

-C
ay
ss
ial
s-

Departamento de Ingeniera Elctrica.

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

Introduccin

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

Tcnicas de diseo, simulacin e implementacin


de circuitos lgicos utilizando dispositivos VLSI y
especificacin HDL.

En este proyecto se realiza un anlisis de los Lenguajes de Especificacin de Hardware


(HDL) utilizados para la configuracin y diseo de sistemas digitales que utilizan
Dispositivos Lgicos Programable de alta complejidad (CPLD). La capacidad de estos
dispositivos ha evolucionado durante los ltimos aos desde la implementacin 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 realizacin de
prototipos y educacin e incluso son competitivos en costo para bajos niveles de
produccin o bien para cuando se requiere la utilizacin de funciones reconfigurables.
Nuevas y sofisticadas aplicaciones pueden ser desarrolladas mediante su utilizacin,
haciendo cada vez ms difusa la tradicional lnea que separa el hardware del software.

-C
ay
ss
ial
s-

La realizacin de dispositivos de lgica programable tiene sus comienzos con los PAL
(Programmable Logic Array), que en un principio implementaban la sntesis de funciones
lgicas combinacionales, para luego insertar elementos de memoria y permitir la sntesis
de mquinas secuenciales. Desarrollos posteriores brindaron gran diversidad de formas de
programacin, es decir, gran diversidad de elementos bsicos de interconexin como son
los Antifuses, switches EPROM / EEPROM y switches SRAM.

Or
oz
co

Estos primeros dispositivos programables crearon la necesidad de lenguajes de


especificacin de hardware. De esta manera, el diseador podra especificar su sistema con
un alto grado de abstraccin para luego, de alguna forma sistemtica, sintetizarlo e

Gi
lar
do
ni
-

implementarlo en un dispositivo genrico. Se intuye as la necesidad de un software que


permita abstraer al diseador de las particularidades del dispositivo programable utilizado
y permitir que el diseo y desarrollo no requieran conocimientos especficos de la
estructura interna de dicho dispositivo. Adems, esto da cabida a la estandarizacin de un
lenguaje que nos independice de los distintos fabricantes de dispositivos de lgica

Gilardoni - Orozco - Cayssials

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 realizacin 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 implementacin lgica, sean


subfunciones en el nuevo sistema. Esto permite una apreciable reduccin en el tiempo
necesario para la produccin de prototipos, con la consiguiente reduccin en el costo de
produccin.

Es de esta manera que en el ao 1987 fue definido como el estndar IEEE 1076, un
lenguaje de especificacin 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 aos '90 el lenguaje VHDL fue usado para el
diseo de circuitos integrados desarrollados con una aplicacin especfica (ASIC del ingls
Application Specific Integrated Circuit) y en la segunda mitad de la dcada se comenz a
usar dentro del rea de los PLDs (Programmable Logic Device).

Aunque los fabricantes ms importantes de dispositivos lgicos programables permiten


al diseador la utilizacin, aunque sea restringida, de VHDL como lenguaje de
especificacin, cada uno de ellos posee un lenguaje propietario. De esta manera, Altera y
Xilinx, dos de los ms importantes fabricantes, han desarrollado sus propios lenguajes de
especificacin denominados AHDL y ABEL respectivamente. La utilizacin de lenguajes
desarrollados por un determinado fabricante restringe al diseador el grado de abstraccin

-C
ay
ss
ial
s-

de su especificacin y la utilizacin 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 especificacin de


hardware y de las tcnicas de diseo, simulacin e implementacin de sistemas digitales de

Or
oz
co

alta complejidad. El objetivo planteado para la utilizacin de todos estos conceptos fue la
realizacin de un controlador de memoria dinmica que cumple con el estndar JEDEC de
72 contactos. Las herramientas y dispositivos utilizados en la implementacin 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 lgica programable, especialmente de la


firma ALTERA. Captulo 1.

Estudio del lenguaje de descripcin de hardware VHDL, estndar IEEE 1076.


Captulo 2.

Estudio del lenguaje de descripcin de hardware AHDL, propiedad de


ALTERA. Captulo 3.

Manejo del software de desarrollo MAX+PLUS II de ALTERA. Captulo 4.


Pruebas bsicas de funcionamiento de la placa de desarrollo UP1 perteneciente
al programa de desarrollo universitario de la firma ALTERA. Captulo 4.
Curso de diseo de lgica programable basado en el lenguaje AHDL. Dictado
por el Profesor Guillermo Jaquenod. Universidad Nacional del Centro.
Noviembre de 1998. Cuidad de Olavarra.

Anlisis y diseo de un controlador de memorias dinmicas SIMM (Single InLine Memory Module) de 72 contactos. Captulo 5.

Realizacin de la especificacin del controlador, en el lenguaje de descripcin

-C
ay
ss
ial
s-

de hardware AHDL, con el software MAX+PLUS II. Simulacin y eleccin del


dispositivo a utilizar.

Realizacin de los circuitos impresos necesarios para la interconexin del


mdulo SIMM con el dispositivo de lgica programable y el sistema
microprocesador.

Realizacin de un programa en lenguaje de alto nivel, para la verificacin 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
-

Captulo 1.................................................................................................................................................................1-1
Dispositivos Lgicos Programables (P.L.Ds) ..........................................................................................................1-1
1. Alternativas para la sntesis de funciones lgicas ............................................................................................1-1
1.1
Simplificacin Algebraica de una Funcin Lgica. .................................................................................1-1
1.2
Multiplexores y Demultiplexores.............................................................................................................1-1
1.3
ROM (Read Only Memory) .....................................................................................................................1-3
1.4
Tablas de LookUp (LUTs).....................................................................................................................1-3
1.5
Comparacin de las distintas alternativas ................................................................................................1-4
2. Los PAL ...........................................................................................................................................................1-5
2.1
PALs Primitivos.......................................................................................................................................1-5
2.2
Incorporacin de Elementos de Memoria ................................................................................................1-5
2.3
PALs Modernos .......................................................................................................................................1-6
3. Elementos Bsicos de Interconexin ...............................................................................................................1-7
4. Celdas Lgicas: granularidad y jerarquas 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.
Terminologa ..................................................................................................................................1-10
7.1.2.
Descripcin General.......................................................................................................................1-11
7.1.2.1.
MAX7000 y MAX7000E.......................................................................................................1-11
7.1.2.2.
MAX7000S ............................................................................................................................1-11
7.1.3.
Arquitectura (Descripcin 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 Trminos 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.
Terminologa ..................................................................................................................................1-24
7.2.2.
Descripcin General.......................................................................................................................1-24
7.2.3.
Arquitectura (Descripcin 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 lgicos) .......................................................................................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 Operacin de los Elementos Lgicos ....................................................................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.
Conexin Filas Elementos E/S ............................................................................................1-39
7.2.3.10. Conexin Columnas Elementos E/S....................................................................................1-40
7.2.4.
Distribucin de seales de reloj .....................................................................................................1-40
7.2.5.
Configuracin 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 Configuracin...................................................................................................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

Captulo 2.................................................................................................................................................................2-1
Introduccin a VHDL: Un Lenguaje de Especificacin 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
Jerarqua...................................................................................................................................................2-6
4.4
Declaraciones ...........................................................................................................................................2-8
4.5
Configuraciones .......................................................................................................................................2-9
4.6
Configuracin por Defecto.....................................................................................................................2-10
4.7
Procesos y tipos......................................................................................................................................2-11
4.8
Package ..................................................................................................................................................2-13
4.9
Esquema Completo ................................................................................................................................2-14
5. Seales y Tipos de Datos ...............................................................................................................................2-15
5.1
Concepto de Tipo y Especificacin........................................................................................................2-16
5.2
Tipos de Datos Estndar ........................................................................................................................2-17
5.3
Asignacin de Seales ...........................................................................................................................2-18
5.4
Arreglos (Arrays) ...................................................................................................................................2-20
5.5
Concatenacin y Agregado ....................................................................................................................2-21
5.6
Definicin de Tipos................................................................................................................................2-23
5.7
Lgica MultiValuada .............................................................................................................................2-25
5.8
Usando Lgica Standard ........................................................................................................................2-27
Captulo 3.................................................................................................................................................................3-1
AHDL: Un Lenguaje de Descripcin de Hardware .................................................................................................3-1
Estructura de diseo.................................................................................................................................................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. Seccin de Subdiseo ......................................................................................................................................3-9
10.
Seccin de Declaracin de Variables.........................................................................................................3-10
10.1 Declaracin de Instancias.......................................................................................................................3-11
10.2 Declaracin de Nodos ............................................................................................................................3-12
10.3 Declaracin de Registros .......................................................................................................................3-13
10.4 Declaracin de Maquinas de Estado ......................................................................................................3-13
10.5 Declaracin de Alias de Maquinas de Estado ........................................................................................3-14
11.
Seccin Lgica...........................................................................................................................................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
Captulo 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
Sntesis .....................................................................................................................................................4-2
1.3
Tipos de Archivos ....................................................................................................................................4-3
1.4
Interpretacin del Cdigo VHDL ............................................................................................................4-4
1.4.1.
Cdigo VHDL..................................................................................................................................4-4
Gilardoni - Orozco - Cayssials

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
Cmo es la placa educacional UP1?.......................................................................................................4-6
2.3
Cmo est compuesta la placa UP1?......................................................................................................4-6
3. Cable de Programacin ByteBlaster.............................................................................................................4-7
3.1
Qu es y para qu sirve la ByteBlaster? .............................................................................................4-7
Captulo 5.................................................................................................................................................................5-1
Implementacin de un Controlador de Memoria Dinmica: Una Aplicacin de Lgica Programable....................5-1
1. Memorias Dinmicas Utilizadas: Mdulo SIMM de 72 contactos. .................................................................5-1
1.1
Caractersticas Tcnicas del Mdulo SIMM Utilizado. ...........................................................................5-3
1.2
Caractersticas Tcnicas de los Chips TMS44400. ..................................................................................5-3
2. Controlador de Memorias Dinmicas. .............................................................................................................5-4
2.1
Smbolo Lgico del Controlador de Memorias Dinmicas......................................................................5-4
2.1.1.
Seales independientes.....................................................................................................................5-4
2.1.2.
Seales microprocesador - dramcontrol:..........................................................................................5-4
2.1.2.1.
Seales dramcontrol mdulo SIMM: ....................................................................................5-5
3. Funcionamiento del Controlador de Memorias Dinmicas..............................................................................5-5
3.1
Funcionamiento microprocesador - controlador ......................................................................................5-6
Cmo es un ciclo de lectura del microprocesador - controlador? ..............................................................5-6
Cmo es un ciclo de escritura del microprocesador - controlador? ...........................................................5-7
Cmo funciona el paginado?......................................................................................................................5-7
3.2
Funcionamiento controlador memoria dinmica...................................................................................5-8
Cmo se direcciona el mdulo SIMM?......................................................................................................5-8
Cmo es un ciclo de lectura del controlador memoria dinmica?...........................................................5-9
Cmo es un ciclo de escritura del controlador memoria dinmica? ......................................................5-10
Cmo es el ciclo de refresco CAS before RAS? ......................................................................................5-11
4. Funcionamiento Lgico del Controlador de Memorias Dinmicas. ..............................................................5-12
4.1
Mquina de estados 1: microprocesador controlador..........................................................................5-12
4.2
Mquina de estados 2: controlador memoria dinmica.......................................................................5-14
5. Implementacin 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-

implementacin del controlador de memoria dinmica.

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

Captulo 1

En este captulo se describen distintas formas de sntesis de funciones lgicas, como


tambin distintos elementos de interconexin 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 Lgicos Programables (P.L.Ds)

1. Alternativas para la sntesis de funciones lgicas


La creacin de un dispositivo lgico programable, implica contar con una tecnologa
que permita sintetizar cualquier funcin lgica en una forma eficiente. El diseador posee
diferentes alternativas para implementar su sistema.

-C
ay
ss
ial
s-

1.1 Simplificacin Algebraica de una Funcin Lgica.

Existen mtodos grficos y tabulares que permiten simplificar una funcin lgica en
forma sistemtica. Si bien la solucin obtenida puede ser ptima en el sentido de que
minimiza su expresin en el nmero de compuertas utilizadas para su implementacin,
tiene la desventaja de que la solucin obtenida es totalmente rgida y el menor cambio
puede significar un rediseo total. El criterio de optimalidad de estos mtodos,

Or
oz
co

generalmente no significa una implementacin ptima en un dispositivo de lgica


programable.

Gi
lar
do
ni
-

1.2 Multiplexores y Demultiplexores


En las tcnicas de simplificacin algebraica de funciones lgicas, se asume que la

implementacin final se realizar utilizando compuertas lgicas. Una alternativa en la


implementacin de funciones lgicas es la utilizacin de multiplexores. Con un
multiplexor de 8::1, por ejemplo, se podra generar cualquier funcin lgica 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 sntesis de una funcin cualquiera, mediante la

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

utilizacin de un multiplexor.

Figura 1.1

Se observa que las lneas de seleccin de entradas del multiplexor son las variables de la
funcin y, por lo tanto, para generar la funcin deseada slo se debe colocar un cero o un
uno en la entrada correspondiente.

Los multiplexores son dispositivos muy fciles de realizar en tecnologa CMOS y


permiten altas escalas de integracin; por ejemplo, un multiplexor 2::1 puede realizarse

-C
ay
ss
ial
s-

con slo 6 transistores.

Tambin puede implementase una funcin lgica mediante la utilizacin 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 utilizacin de una memoria ROM para la implementacin de una funcin lgica,

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

permite la utilizacin de los mismos componentes independientemente de la funcin 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 sntesis es que permite la implementacin

-C
ay
ss
ial
s-

de funciones con gran nmero de variables de entrada.

1.4 Tablas de LookUp (LUTs)


Una tabla de Look-Up (LUT) es equivalente a un multiplexor, slo que incorpora
elementos de memoria que permiten generar la funcin lgica deseada segn el estado de

Or
oz
co

dichos elementos. Por lo tanto una LUT puede ser dividida en dos reas:
rea de configuracin.
rea de operacin.

Gi
lar
do
ni
-

En la figura 1.4 se observa la utilizacin de un registro de desplazamiento que permite

que la configuracin se realice en forma serial.


El hecho de que las tablas de look-up puedan ser configuradas para sintetizar la funcin

lgica deseada, les atribuye el carcter de programabilidad. Por este motivo son una muy
buena alternativa para la implementacin de dispositivos de lgica 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 LookUp crece
en forma exponencial con el nmero 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 Comparacin de las distintas alternativas

Las soluciones basadas en multiplexores, demultiplexores, ROMs y tablas de LookUp


usan la expresin cannica de una funcin (suma de minitrminos). De esta manera,
pueden generar cualquier funcin lgica a partir de sus entradas debido a que implementan

-C
ay
ss
ial
s-

la suma de todos los minitrminos posibles. Esto puede resultar en un uso ineficiente del
dispositivo. Por ejemplo, en el caso de un multiplexor de 8::1, implementar una funcin de
tres variables que necesite slo dos o tres trminos productos estara desaprovechando los
recursos fsicos del dispositivo.

El anlisis estadstico 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

slo 5 a 7 implicantes de orden superior (trminos productos). Por lo tanto se pens que
sera ms eficiente, en cuanto a recursos fsicos utilizados, un dispositivo que
implementara un subconjunto de todos los trminos productos posibles.
Este fue el criterio que llev a la creacin de los Arreglos Lgicos 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

Bsicamente, un PAL implementa la suma de trminos productos. Posee una matriz de


fusibles de interconexin que permite generar trminos 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 interconexin ingresan las variables de


entrada negadas y sin negar. Adems se cuenta con una realimentacin de la salida que

-C
ay
ss
ial
s-

permite que ingresen a la matriz de interconexin el valor negado y sin negar de la misma.
Cada trmino producto puede ser generado a partir de la interseccin de un gran nmero de
variables, lo que es de gran utilidad para implementar funciones de gran fanin. La
cantidad de trminos productos que es posible sumar est usualmente acotado entre seis y
ocho. Cada trmino producto ocupa gran superficie del chip e involucra un elevado
nmero de fusibles.

Or
oz
co

2.2 Incorporacin de Elementos de Memoria


Para facilitar la sntesis de mquinas 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 lgicas, evitando sobredimensionar la estructura del dispositivo programable.
De esta manera, los PALs modernos utilizan una arquitectura basada en celdas lgicas.
Una celda lgica es un conjunto de elementos combinacionales y registros de
configuracin que constituyen un bloque funcional mnimo dentro del dispositivo. La
siguiente figura muestra una celda lgica 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 incorporacin de un elemento de memoria, como se vio

anteriormente, y el agregado de elementos de configuracin 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 lgica. Estos elementos permiten que la realimentacin provenga


desde la celda lgica o del contacto de Entrada/Salida y que la salida de la celda lgica sea

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

por registro o combinacional. Adems se incorporan un control de inversin de lgica, un


reloj global y una seal de habilitacin de salidas (output enable).

3. Elementos Bsicos de Interconexin

Los dispositivos de lgica programable necesitan hacer uso de recursos de


interconexin, los cuales funcionan como llaves que permiten lograr como objetivo final la
sntesis de la funcin lgica deseada.

Existen diferentes tipos de elementos de interconexin 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 programacin es irreversible.

Switches EPROM/EEPROM: dispositivos de paso reprogramables, cuyo


estado no se altera al interrumpirse la alimentacin de energa.

Llaves SRAM: basados en llaves de paso MOS controladas desde un flip flop
esttico, cuyo contenido se pierde al interrumpirse la energa.

-C
ay
ss
ial
s-

4. Celdas Lgicas: granularidad y jerarquas de


conectividad

Una celda lgica es un bloque funcional mnimo capaz de resolver una funcin
combinacional o secuencial. Una celda que por s sola puede llegar a resolver una funcin

Or
oz
co

compleja (4 o ms variables de entrada), genera circuitos de baja granularidad. El conjunto


de este tipo de celdas forma lo que se denomina lgica de grano grueso. Por el
contrario, celdas lgicas capaces de resolver nicamente funciones de 2 o 3 variables (a

Gi
lar
do
ni
-

veces slo combinacionales) son llamadas de grano fino.


Cuanto ms 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
interconexin con otras celdas. Cuanto ms simples son las celdas, ms 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 mltiples vnculos entre celdas requiere


de poderosos recursos de interconexin.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

Un ejemplo de celdas lgicas de grano grueso se encuentra en el dispositivo lgico


programable XC4000 de la firma XILINX. Este dispositivo est basado en celdas lgicas
complejas que hacen uso de tablas de LookUp con tecnologa SRAM. Cada celda lgica
resuelve 2 funciones lgicas, combinacionales o secuenciales, de hasta 4 variables
independientes o una funcin lgica combinada de 5 variables. Poseen 2 flip flops para la
sntesis de mquinas secuenciales y caminos especiales de propagacin a celdas vecinas
para la rpida propagacin entre celdas. Estos caminos especiales son llamados carry.
Un ejemplo de celdas lgicas de grano grueso en la firma ALTERA es el caso de la
familia MAX, donde cada celda lgica est basada en la suma de trminos productos y
adems, poseen dispositivos de memoria para la realizacin de circuitos secuenciales y
recursos para optimizar el uso de los trminos productos sobrantes. Estos recursos son
llamados expansores paralelos o compartidos.

Existen celdas lgicas 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 lgicas 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 interconexin del dispositivo con
el mundo exterior. Deben ser capaces de manejar corrientes elevadas, capacidades
parsitas 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

caractersticas contribuyen fuertemente a crear ciertos problemas de diseo 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 podran ser clasificadas en dos tipos: las elementales y las

complejas.
Las celdas de Entrada/Salida elementales slo permiten definir si sern de entrada,

salida o bidireccionales y cada celda estar asociada a una celda lgica 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 estn

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

asociadas a una celda lgica en particular, sino que hacen uso de los recursos de
interconexin para vincularse con las mismas. Tambin cuentan con muchas opciones de
configuracin 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. Estn fuertemente relacionadas con la granularidad, ya que
cuanto menores sean las celdas lgicas, mayores sern los recursos de interconexin
necesarios para realizar la misma funcin.

Las redes de cableados pueden jerarquizarse, segn el alcance de las mismas, en:
Locales.
Vecinales.
Globales.

-C
ay
ss
ial
s-

6.1 Interconexiones Locales

Estas interconexiones permiten conectar cada celda lgica 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 lgica
con las inmediatas superior e inferior y estn orientadas especialmente para acelerar la
realizacin de operaciones aritmticas.

Or
oz
co

6.2 Interconexiones Vecinales


Estas interconexiones permiten conectar grupos de celdas lgicas. En dispositivos de la
firma ALTERA, un conjunto de 8, 10 o 16 celdas lgicas se agrupan fsicamente y se

Gi
lar
do
ni
-

define una matriz de conexionado rpido entre ellos, con acceso a los sistemas de
interconexin global y a los grupos de celdas vecinos. Estos grupos de celdas lgicas 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 lgica con cualquier otra

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

dentro del dispositivo. Suelen hacer uso de lneas rpidas (en general metlicas) y son
usadas para distribucin de seales globales, como por ejemplo, seales de clock, output
enable y reset.

7. Las Familias MAX 7000 y FLEX 10K de


ALTERA

A continuacin 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 travs del programa universitario ALTERA al que el
Laboratorio de Sistemas Digitales pertenece.

7.1 La Familia MAX 7000/7000E/7000S

Si se realiza un anlisis crtico de los PALs clsicos (Programmable Logic Array), se


puede observar que las mismas tienen una reducida cantidad de celdas lgicas,

-C
ay
ss
ial
s-

generalmente poseen menos celdas lgicas que contactos de Entrada/Salida. Esto implica
que ante la necesidad de usar un flip flop o un trmino lgico intermedio (sin acceso a los
contactos del dispositivo), a veces se deba desperdiciar un contacto de Entrada/Salida.
Adems, en los primeros PALs, el uso de fusibles de programacin afectaba seriamente la
confiabilidad del dispositivo.

Mejoras realizadas a los PALs clsicos permitieron la evolucin a la familia MAX,

Or
oz
co

donde se reagruparon celdas lgicas en bloques (Logic Array Blocks o LABs). Tambin se
logr un mejor aprovechamiento de la superficie de conexin a travs de la generacin de
reas de conexionado global y de reas de interconexin local. Adems se agregaron reas
de generacin de trminos producto auxiliares (expansores) y se implement una

Gi
lar
do
ni
-

separacin entre el feedback de la celda lgica y el de la entrada (dual feedback).

7.1.1.

Terminologa

ALTERA define sus propios trminos 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 lgicas o macroceldas.

UN
S

Macroceldas: Equivalente a las celdas lgicas. Slo es usado cuando se habla

Logic Array (Arreglo Lgico): Es el nombre que recibe el bloque, componente


de una macrocelda, que implementa los trminos productos.

Local Array (Arreglo local): Es la denominacin que toma la estructura de


interconexin entre macroceldas de un LAB. Es la estructura de interconexin
vecinal.
Programmable

Interconnect

interconexin global.

7.1.2.

Array

(PIA):

Estructura

continua

de

Descripcin 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 lgicas), siendo las familias de lgica programable
lderes 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 lneas de output enable, dos lneas de
clock, registros de entrada ms 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 estndar PCI (son PCI-compliant).

Or
oz
co

7.1.2.2. MAX7000S

La familia MAX7000S es una versin mejorada de las familias 7000 y 7000E que posee
la facilidad de programacin en circuito ISP (In-System Programmability) y en los

Gi
lar
do
ni
-

dispositivos de 128 o ms macroceldas, la inclusin de circuitos de testeo perifrico (JTAG


boundary-scan test circuitry). El control de slew-rate programable y la opcin de elegir la
operacin en modo de bajo consumo macrocelda por macrocelda, permiten reducir el

consumo total y el ruido que genera el sistema. Estas caractersticas 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 (Descripcin 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 Trminos 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 propsito general

Seales de control globales y de alta velocidad (clock, clear, y dos output


enable).

Segn 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 nmero 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 nmero 7 que indica que pertenece a la familia MAX7000, y el nmero 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 interconexin 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 lgica combinacional o secuencial. La


macrocelda consiste de tres bloques funcionales: el arreglo lgico (trminos productos), la
matriz de seleccin de trminos 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 lgica combinacional es implementada en el arreglo lgico, el cual provee cinco

Gi
lar
do
ni
-

trminos producto por macrocelda.


La matriz de seleccin de trminos producto permite determinar si la conexin de los

trminos producto ser a las entradas lgicas 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 trminos 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 trminos productos invertidos realimentados


dentro del arreglo lgico.

Expansores paralelos: Son trminos productos provenientes de macroceldas


adyacentes fsicamente.

Para realizar funciones lgicas que utilicen registros, el flip flop de cada macrocelda
puede ser individualmente programado para implementar los tipos: D, T, JK o SR.
Adems, el flip flop puede deseleccionarse para implementar una funcin combinacional
en la macrocelda.

A cada registro programable puede ingresar la seal de reloj de tres modos diferentes:
Seal de reloj global: Este modo utiliza el contacto de entrada dedicado "global
clock". Brinda la mayor performance en cuanto a velocidad de propagacin
puesto que es la forma ms rpida de propagar la seal de reloj hacia todos los
flip-flops del dispositivo.

Seal de reloj global habilitada por una seal clock enable activa en high:
Este modo provee la habilitacin de la seal de reloj que ingresa a cada flip flop,
y adems mantiene la performance en cuanto a velocidad como en el modo de

-C
ay
ss
ial
s-

operacin anterior.

Seal de reloj implementada con un trmino producto. En este modo la seal


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 seal global de

Or
oz
co

reloj est disponible, como muestra la figura 1.8, a travs del contacto denominado
GCLK1.

En los dispositivos de la familia MAX 7000E y MAX 7000S estn disponibles dos
seales de reloj globales a travs de los contactos denominados GCLK1 y GCLK2. Como

Gi
lar
do
ni
-

muestra la figura 1.9, estas seales pueden ingresar al dispositivo en forma directa,
invertidas o permutadas.
Cada registro de las macroceldas soporta funciones de clear y preset asincrnicas.

Como muestran las figuras 1.10 y 1.11, la matriz de seleccin de trminos producto asigna
los recursos necesarios para controlar esas funciones. Adems, la seal 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 travs 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 rpidos hacia los registros de las macroceldas. Estos caminos
dedicados permiten que la seal de entrada evite los retardos producidos en la PIA
(Programmable Interconnect Array) y en la lgica 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 interconexin de


arreglos lgicos, 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.
Mltiples LABs son interconectados a travs de un arreglo programable de interconexin
(PIA, del ingls "Programmable Interconnect Array"). Este arreglo de interconexin es un

Figura 1.12

Gi
lar
do
ni
-

Or
oz
co

-C
ay
ss
ial
s-

bus global al cual llegan tambin, seales 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 seales:


36 seales provenientes del arreglo programable de interconexin (PIA) usadas

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

como entradas lgicas 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 pequeos tiempos de setup en los dispositivos
MAX7000E y MAX7000S.

La figura 1.12 muestra en diagrama de bloques la composicin de un LAB. En esta


figura puede observarse la estructura de interconexin vecinal denominada Local Array.

7.1.3.3. Expansores de Trminos Producto (Expansores Paralelos y


Compartidos)

Aunque la mayora de las funciones lgicas pueden ser implementadas con los cinco
trminos producto disponibles en una sola macrocelda, funciones lgicas ms complejas
requieren trminos productos adicionales. De esta forma otra macrocelda puede ser usada
para suplir los recursos lgicos requeridos. La arquitectura MAX7000 slo permite que
ambos expansores de trminos productos, paralelos y compartidos, provean trminos

-C
ay
ss
ial
s-

adicionales a cualquier macrocelda que se encuentre en el mismo LAB. Estos expansores


ayudan a que la lgica sea sintetizada con la mnima utilizacin de recursos lgicos, 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 trminos productos con salidas invertidas
que se realimentan al arreglo lgico. Pueden ser usados y compartidos por una o todas las
macroceldas del LAB correspondiente para construir funciones lgicas complejas. El

Gi
lar
do
ni
-

retardo producido cuando un expansor compartido es utilizado, no supera los 10ns. En las
especificaciones tcnicas pueden observarse los valores tpicos de este retardo denominado
tSEXP .

La figura 1.13 muestra cmo pueden ser alimentadas mltiples 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 trminos productos, no utilizados en una macrocelda, que
pueden ser asignados a macroceldas vecinas, dentro de un mismo LAB, para implementar
funciones rpidas y complejas. Estos permiten que hasta un total de 20 trminos productos
puedan sumarse en una macrocelda, formados por los 5 trminos 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 sntesis MAX+PLUS II de ALTERA, puede asignar hasta un total de tres
conjuntos de hasta 5 expansores paralelos a las macroceldas que requieran trminos
productos adicionales. Cada conjunto de 5 expansores paralelos incurre en un pequeo
incremento del retardo, simbolizado con tPEXP. Por ejemplo, si una macrocelda requiere 14

Or
oz
co

trminos productos, el software de sntesis usar los 5 trminos producto de una


macrocelda y asignar a la misma 2 conjuntos de expansores paralelos de 5 y 4 trminos
producto respectivamente. Esta asignacin 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
slo puede ceder expansores paralelos a una macrocelda de mayor numeracin y, por el

Gilardoni - Orozco - Cayssials

1-18

Laboratorio de Sistemas Digitales - UNS

Diciembre de 1999.

Gilardoni Orozco - Cayssials

UN
S

contrario, una macrocelda slo puede obtener expansores paralelos desde una macrocelda

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

de menor numeracin.

Figura 1.14

-C
ay
ss
ial
s-

La figura 1.14 muestra cmo son apropiados los expansores paralelos desde las
macroceldas vecinas.

7.1.3.6. Programmable Interconnect Array (PIA)


Las seales lgicas son propagadas entre los LABs a travs del arreglo de interconexin

Or
oz
co

programable (PIA). Este es un bus global que conecta cualquier fuente de seal 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 seales estn disponibles a lo largo de todo el dispositivo.

Gi
lar
do
ni
-

La figura 1.15 muestra cmo las seales 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 seal ingrese, o no, al LAB correspondiente. Adems puede observarse el
ingreso al LAB tanto de la seal como de la seal 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 propagacin de las seales 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 asimetras entre seales y permite predecir fcilmente 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 seales 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 slo 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 seales 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
seales globales de output enable. Estas seales 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 seal 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 seal 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 seal desde una celda de Entrada/Salida hacia la PIA. Es posible realimentar
seal 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 estn 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 travs de la


interfase estndar industrial JTAG (Joint Test Action Group). La caracterstica de ser ISP
permite la programacin del dispositivo hasta despus de montado en la placa de circuito
impreso, ya que durante la programacin todos los contactos de Entrada/Salida
permanecen en un estado de alta impedancia. Otra caracterstica importante de ISP en los
dispositivos que basan su programacin en celdas EEPROM, es que no es necesario
ingresar externamente el voltaje de programacin (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 travs de un hardware especfico, conocido como MPU (Master
Programming Unit), controlado a travs del software de sntesis y programacin
MAX+PLUS II de ALTERA.

7.1.5.

Control de Velocidad / Potencia Programable

La familia de dispositivos MAX7000 ofrece un modo de operacin 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 operacin son excluyentes, es
decir la eleccin de uno de ellos implica la no eleccin 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


caractersticas de multi voltaje. Esta caracterstica permite que los dispositivos MAX7000
puedan interactuar e intercambiar informacin con dispositivos o sistemas que posean

Gi
lar
do
ni
-

diferentes voltajes de alimentacin.


Los dispositivos que poseen esta caracterstica poseen dos conjuntos de contactos de

entrada de alimentacin independientes. Un conjunto es usado para la operacin 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

alimentacin est asociado con los contactos de Entrada/Salida y son stos los que deben
poseer la caracterstica 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 alimentacin:
VCCINT y VCCIO.

-C
ay
ss
ial
s-

En aplicaciones de lgica TTL todos los contactos de entrada de alimentacin


(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 desempeo con respecto al ruido o


a la velocidad.

Un elevado slew rate provee alta velocidad de transicin de la seal de salida, ideal para

Gi
lar
do
ni
-

aplicaciones de alta velocidad. Sin embargo, estas elevadas velocidades pueden introducir
ruidos en el sistema.
Un pequeo 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 pequeo y cundo 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 travs del estado de una celda

7.2 La Familia FLEX 10K


7.2.1.

Terminologa

ALTERA define su propia terminologa para referirse a sus dispositivos de la familia


FLEX 10K. Algunos de los trminos ms importantes son:

Embedded Array Blocks (EABs): Son bloques de memoria RAM esttica de


alta velocidad insertados dentro de la arquitectura de los dispositivos FLEX
10K.

Logic Elements: Son las unidades lgicas funcionales ms pequeas en la


arquitectura de la familia FLEX 10K.

Local Interconect Array: Es la estructura de interconexin local asociada a


cada LAB.

Logic Array Block (LAB): Agrupacin de ocho elementos lgicos


interconectados a travs del arreglo de interconexin local.

-C
ay
ss
ial
s-

Logic Array: Es la estructura formada por un conjunto de LABs.

FastTrack: Estructura de interconexin global formada por filas de


interconexin y columnas de interconexin.
Filas y Columnas de Interconexin: Son redes de cableado que atraviesan al
dispositivo en forma horizontal y vertical. Cada camino de conexin dentro de
las mismas es llamado canal de fila y canal de columna, respectivamente.

Or
oz
co

Configuracin: Se denomina as a la accin de programar un dispositivo


SRAM.

Descripcin General

Gi
lar
do
ni
-

7.2.2.

Con un rango de 10.000 a 130.000 compuertas lgicas, es una familia de dispositivos

dedicada a satisfacer necesidades propias de diseos mediante gate arrays. Los dispositivos
de esta familia incorporan bloques internos de memoria, lazos de enganche de fase (PLLs)
para la distribucin de relojes de alta velocidad dentro del chip y un esquema de
interconexin de alta velocidad y retardos predecibles (FastTrack). Estas caractersticas

Gilardoni - Orozco - Cayssials

1-24

Laboratorio de Sistemas Digitales - UNS

Diciembre de 1999.

Gilardoni Orozco - Cayssials

UN
S

hacen de esta familia la opcin ideal para aplicaciones de alta complejidad o donde se
requiera la realizacin de tareas de cmputo numrico 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 (lgica 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 lgicos.

Estas prestaciones, junto a su alta velocidad, hacen de la familia FLEX 10K la


herramienta ideal para aplicaciones de tratamiento de seales (DSP) u otros diseos de
gran complejidad.

7.2.3.

Arquitectura (Descripcin 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 correccin de errores y funciones de gran fan-in.

Es posible implementar funciones lgicas configurando los EAB con un patrn de slo
lectura durante la configuracin 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 implementacin de funciones combinacionales puede ser ms rpida que
el uso de algoritmos implementados sin el uso de tablas de look-up.

La gran capacidad de los EABs posibilita la implementacin de funciones complejas en


un solo nivel de compuerta. Esto evita el agregado de retardos de propagacin debido a
que no es necesario recurrir a recursos de interconexin extras. Por ejemplo, un solo EAB
puede implementar un multiplicador aritmtico 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 pequeos bloques RAM distribuidos a lo largo del
dispositivo. Estos bloques RAM contienen retardos de propagacin que son menos
predecibles cuanto ms bloques RAM sean utilizados. Adems, el hecho de que la RAM

-C
ay
ss
ial
s-

en los FPGAs est distribuida en pequeos bloques provoca problemas de ruteo,


dificultando su interconexin cuando se requiere implementar grandes bloques de
memoria.

Los EABs, cuando son utilizados como memorias RAM, pueden configurarse en
cualquiera de los siguientes tamaos: 256x8, 512x4, 1024x2 2048x1. Adems, pueden
interconectarse mltiples EABs para aumentar la capacidad. Tambin proveen opciones de

Or
oz
co

configuracin para conducir y controlar seales 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
-

seal "write enable" (WE) de los EABs. Las seales globales dedicadas y el sistema de
interconexin local de los EABs pueden propagar la seal 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 seales acceden a cada EAB por una fila de interconexin y pueden salir de l tanto
por una fila o un columna de interconexin. 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 lgicos (LEs).
La figura 1.20 muestra en diagrama de bloques, la composicin 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 agrupacin de: ocho elementos lgicos

Gi
lar
do
ni
-

(LEs), las cadenas de carry y cascada asociadas, seales de control del LAB y el arreglo de
interconexin local del LAB. Los LABs proveen una estructura de grano grueso,
facilitando un ruteado eficiente con ptima utilizacin 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 seales de control, con inversin programable que pueden ser
utilizadas por todos los LEs. Dos de estas seales pueden ser usadas como relojes, las otras
dos pueden ser usadas para control de clear/preset. Las seales de reloj que ingresan a los

Or
oz
co

LABs pueden provenir de los contactos de entrada de seal de reloj dedicados, de las
seales globales, de las seales de Entrada/Salida o de seales internas a travs del arreglo
de interconexin local del LAB respectivo. Las seales de control de clear/preset pueden
provenir de las seales globales, de las seales de Entrada/Salida o de las seales internas a

Gi
lar
do
ni
-

travs del arreglo de interconexin local del LAB respectivo. Las seales de control recin
mencionadas pueden observarse en la figura 1.21.
Las seales de control globales son generalmente usadas para propagar seales 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 lgica es requerida sobre alguna seal de control, sta puede ser generada en
uno o ms LEs de cualquier LAB y ser propagada hacia el arreglo de interconexin local
salidas de los LEs.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

del LAB deseado. Adems, las seales de control global pueden ser generadas desde las

7.2.3.3. Logic Element (Elementos lgicos)

Los elementos lgicos son las unidades lgicas funcionales ms pequeas 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 lgicas que puede fcilmente
computar cualquier funcin de cuatro variables. Adems, cada LE contiene un flip flop
programable con un enable sincrnico, una cadena de carry y una cadena de cascada. Cada
LE se conecta con el arreglo de interconexin local del LAB y con la estructura de
interconexin global denominada "FastTrack".

La figura 1.22 muestra la estructura de un elemento lgico.

El flip flop programable de cada LE puede ser configurado para funcionar como flip
flop D, T, JK o SR. Las seales de control de reloj, clear y preset que ingresan al flip flop,
pueden provenir de seales globales, de contactos de Entrada/Salida de propsito general o
de cualquier lgica 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 interconexin local dentro del LAB y la otra
destinada a la interconexin global que accede a las columnas o a las filas de la estructura
de interconexin 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 caracterstica es denominada "register packing" y puede
mejorar la utilizacin 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
-

interconexin 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 fanin con mnimo
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 interconexin 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 interconexin que ello implica. Por lo tanto, el uso de estas cadenas debera ser
velocidad se refiere.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

limitada a porciones del diseo 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
aritmticas entre LEs. En operaciones de bits donde existen acarreos, la seal de acarreo de
un LE es conducida a travs de la cadena de carry hacia la LUT de un LE adyacente. Esta
caracterstica permite implementar eficientemente contadores de alta velocidad, sumadores

Or
oz
co

y comparadores de un ancho arbitrario.


La lgica asociada a la implementacin de una cadena de carry puede ser creada
automticamente por el software MAX+PLUS II durante el proceso de diseo o
especificada por el diseador.

Gi
lar
do
ni
-

Las cadenas de carry que superan los ocho LEs de un LAB, son automticamente

implementadas enlazando mltiples LABs.


seal de propsito 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 cmo puede ser implementado un sumador de n bits con n + 1
LEs, utilizando la cadena de carry. Una porcin de las LUT generan la suma de dos bits

Or
oz
co

usando las seales de entrada y la seal de acarreo; la suma es ruteada a la salida del LE.
El registro puede ser evitado en la implementacin de sumadores simples o utilizado como
acumulador. Otra porcin de la LUT y la lgica asociada a la cadena de carry, generan la
seal de carry de salida, la cual es ruteada directamente a la entrada de carry del prximo

Gi
lar
do
ni
-

bit a sumar. La seal 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 funcin 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 operacin lgica OR o una AND (segn la lgica 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 ms, con un retardo de propagacin de 0,7 ns por LE. La lgica asociada a la
cadena de cascada puede ser creada automticamente por el software MAX+PLUS II o
especificada por el diseador.

Las cadenas de cascada que superan los ocho LEs de un LAB son automticamente
implementadas enlazando mltiples LABs.

La figura 1.24 muestra cmo el uso de cadenas de cascada permite conectar LEs
adyacentes para formar funciones de gran fanin. 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-

propagacin 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 Operacin de los Elementos Lgicos


Los elementos lgicos (LEs) de la familia FLEX 10K pueden operar en cuatro de los

Gi
lar
do
ni
-

siguientes modos:

Modo Normal
Modo Aritmtico
Modo Contador Ascendente/Descendente Up / Down
Modo Contador Borrable.

Cada uno de estos modos de operacin 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 interconexin del LAB, la realimentacin desde el registro


programable y las seales 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 seales de entrada al LE proveen controles de reloj, clear y preset para el registro
programable.

El software MAX+PLUS II elige automticamente el modo de operacin apropiado. Si


es requerido, el diseador puede crear funciones de propsito especial usando un modo de

-C
ay
ss
ial
s-

operacin determinado para obtener ptima performance.

Figura 1.25

La arquitectura provee una seal sincrnica de clock enable para el registro, en todos
los modos de operacin.

Or
oz
co

La figura 1.25 muestra los modos de operacin normal y aritmtica. La figura 1.26
muestra los modos de operacin 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 interconexin "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 interconexin, respectivamente. Esta estructura de interconexin
global permite predecir la performance, en cuanto a velocidad de propagacin de las

Or
oz
co

seales, aun en diseos complejos. sta es la principal diferencia con los dispositivos
FPGAs, ya que stos poseen una estructura de interconexin global segmentada. Por lo
tanto, los dispositivos FPGA requieren matrices de interconexin para conectar un nmero

Gi
lar
do
ni
-

variable de caminos. Esto incrementa el retardo de propagacin entre los recursos lgicos y
reduce la performance.
La figura 1.27 muestra la diferencia en la estructura de interconexin 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 interconexin "FastTrack" consiste de filas y columnas de canales de


interconexin que atraviesan todo el dispositivo. Cada fila de LABs es servida por una fila
de interconexin dedicada. Las filas de interconexin pueden propagar seales hacia o
desde los contactos de Entrada/Salida y alimentar otros LABs del dispositivo. Las
columnas de interconexin son las encargadas de propagar seales entre filas de

Gi
lar
do
ni
-

Or
oz
co

-C
ay
ss
ial
s-

interconexin y adems 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 interconexin estn 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 seales alimentan un multiplexor dual de 4::1, como
puede observarse en la figura 1.28, el cual deriva las seales a dos canales de filas
especficos. 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 estn
conectados a la fila de interconexin.

Cada columna de LABs es servida por una columna de interconexin dedicada. Una
seal proveniente de una columna de interconexin debe ser ruteada a una fila de
interconexin antes de que pueda entrar a un LAB o a un EAB.

La figura 1.29 muestra en forma tabular, los recursos de interconexin 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 interconexin entre LABs adyacentes, filas, columnas y el

arreglo de interconexin local, como as tambin las cadenas de carry y cascada asociadas.
Cada LAB es designado de acuerdo a su locacin fsica 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 nmero 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 rpido de
propagacin de seales hacia el exterior. En algunos casos, el uso de un registro de un LE,
como registro de entrada, podra 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 seales de control de clock, clear, clock
perifrico".

-C
ay
ss
ial
s-

enable y output enable de una red de seales de control, denominada "bus de control
Este bus de control perifrico provee hasta 12 seales de control perifricas que pueden
ser destinadas a los siguientes usos:

Hasta ocho seales de output enable.


Hasta seis seales de clock enable.

Or
oz
co

Hasta dos seales de clock.


Hasta dos seales de clear.

Si ms de seis seales de clock enable u ocho seales de output enable son requeridas,

Gi
lar
do
ni
-

cada elemento de Entrada/Salida del dispositivo puede ser controlado por seales de output
enable y clock enable provenientes de LEs especficos. Adems de las dos seales de clock

disponibles en el bus de control perifrico, 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 seal global de reset es la seal 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. Conexin Filas Elementos E/S

Cuando un elemento de Entrada/Salida es utilizado como entrada, la seal 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 seal de salida es conducida a travs de un multiplexor
que la selecciona del canal de la fila de interconexin deseado.

En la figura 1.32 puede verse cmo los elementos de E/S acceden a las filas de
interconexin.

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) varan de acuerdo al
dispositivo. La figura 1.33 muestra en forma tabular los recursos de interconexin

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

disponibles, entre filas y elementos de E/S, segn el dispositivo.

7.2.3.10. Conexin Columnas Elementos E/S

Cuando un elemento de Entrada/Salida es utilizado como entrada, la seal de entrada


puede acceder a dos canales de columnas. Cuando un elemento de E/S es utilizado como
salida, la seal de salida es conducida a travs de un multiplexor que la selecciona del
canal de la columna de interconexin deseado.

En la figura 1.34 puede verse como los elementos de E/S acceden a las columnas de
interconexin.

La figura 1.35 muestra en forma tabular los recursos de interconexin disponibles, entre

7.2.4.

Or
oz
co

-C
ay
ss
ial
s-

columnas y elementos de E/S, segn el dispositivo.

Figura 1.34

Distribucin de seales de reloj

Gi
lar
do
ni
-

Para soportar diseos 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 distribucin 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 opcin "ClockLock" utiliza un PLL que reduce los retardos de propagacin y las
asimetras dentro del dispositivo.

La opcin "ClockBoost" funciona como un multiplicador de reloj, lo que permite al

-C
ay
ss
ial
s-

diseador distribuir un reloj de baja velocidad y multiplicar la seal al momento de usarla.


La accin combinada de estas dos opciones provee significantes mejoras en la
performance y ancho de banda del sistema.
Las caractersticas "ClockLock" y "ClockBoost" son activadas a travs del software
MAX+PLUS II.

Configuracin 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 caracterstica de

multi voltaje. Esta caracterstica permite que los dispositivos FLEX 10K puedan
interactuar e intercambiar informacin con dispositivos o sistemas que posean diferentes
voltajes de alimentacin.

Gilardoni - Orozco - Cayssials

1-41

Laboratorio de Sistemas Digitales - UNS

Diciembre de 1999.

Gilardoni Orozco - Cayssials

UN
S

Los dispositivos que poseen esta caracterstica poseen dos conjuntos de contactos de
entrada de alimentacin independientes. Un conjunto es usado para la operacin 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 alimentacin est asociado con los contactos de Entrada/Salida y son stos los
que deben poseer la caracterstica 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 seal de salida de modo tal de conseguir un mejor desempeo 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
propagacin adicional de 2.9 ns.

Un slew rate elevado provee alta velocidad de transicin de la seal de salida, ideal para
aplicaciones de alta velocidad. Sin embargo, debera utilizarse en sistemas que estn
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 Configuracin

Las arquitectura de la familia FLEX 10K utiliza elementos de configuracin SRAM que
requieren ser cargados al dispositivo cada vez que ste sea energizado. El proceso de
cargar fsicamente los datos en los elementos de memoria SRAM del dispositivo, es
denominado "configuracin".

La configuracin 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

Captulo 2

El siguiente captulo es una introduccin al lenguaje de especificacin de hardware


VHDL. Los conceptos principales y la mayora de los ejemplos presentados en este
captulo han sido extrados 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 programacin de circuitos PLD (Programmable
Logic Design), en este captulo se tratan slo en forma prctica los principales conceptos
de VHDL.

Introduccin a VHDL: Un Lenguaje de


Especificacin de Hardware.
1. Que significa VHDL?

VHDL son las siglas con que es conocido el Lenguaje de Descripcin de Hardware

-C
ay
ss
ial
s-

definido como el estndar 1076 del IEEE. La letra "V" significa "Circuitos Integrados de
Muy Alta Velocidad" (abreviatura de VHSIC del ingls "Very High Speed Integrated
Circuit") y la sigla "HDL" significa Lenguaje de Descripcin de Hardware (del ingls
"Hardware Description Language"). Por lo tanto en castellano VHDL significara
"Lenguaje de Descripcin de Hardware para Circuitos Integrados de Muy Alta Velocidad".
Este lenguaje fue desarrollado a principios de la dcada del 80 y fue definido como el

Or
oz
co

estndar 1076 por la IEEE en 1987. Una nueva versin compatible con la anterior,
desarrollada en 1993, agreg nuevas capacidades y removi alguna ambigedades de la
versin anterior.

A comienzos de los aos 90, VHDL fue utilizado mayoritariamente para la

Gi
lar
do
ni
-

especificacin de circuitos integrados ASIC (Application-Specific Integrated Circuit) y en


la segunda mitad de la dcada comenz a utilizarse en la programacin 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 diseo digital y tiene limitadas


capacidades en el rea analgica. Aunque actualmente existen una gran cantidad de
esfuerzos tendientes a obtener una versin analgica del lenguaje, dicho esfuerzos estn
an en una etapa incipiente.

El estndar define el lenguaje y su sintaxis, pero no describe el estilo que debe utilizarse
en la especificacin de un proyecto. Esto provoca que las diferentes herramientas de
sntesis tengan ciertas diferencias, pero sin embargo estas diferencias son escasas y es
posible modificar ligeramente los cdigos para adaptarlos a cada una de las herramientas
de sntesis.

3. Estilos de Escritura de VHDL

Los diferentes estilos de escritura de cdigo VHDL se basan en un concepto conocido


como abstraccin. La abstraccin define la magnitud del detalle en las especificaciones del
sistema a disear.

Hay cuatro niveles principales de abstraccin, los cuales son representados en la figura

Or
oz
co

-C
ay
ss
ial
s-

2.1.

Figura 2.1

El nivel ms bajo que es posible definir es el LAYOUT (disposicin, esquema) . En este


nivel se especifica la informacin referente a la disposicin del diseo sobre el silicio y

Gi
lar
do
ni
-

puede tambin especificar informacin detallada de temporizado.


El nivel superior al de LAYOUT es el nivel LOGIC. En este nivel se interconectan las

compuertas lgicas y registros. Todo lo referente al nivel de LAYOUT es ignorado. Este


nivel contiene informacin sobre la funcin, arquitectura, tecnologa 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 diseo y la

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

lgica entre ellos.

Por ltimo, el cuarto nivel es el BEHAVIORAL (comportamiento). Este nivel hace uso
del VHDL para describir la funcin del diseo, sin especificar la arquitectura de registros.
Aunque es el nivel de mayor abstraccin, el cdigo desarrollado a este nivel puede
contener tanta informacin de temporizado como la que el diseador requiera para
representar su funcin.

Hoy en da la mayora de las herramientas de sntesis requieren que el cdigo 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 sntesis que se basan en el nivel BEHAVIORAL,


automticamente se generan arquitecturas de registros y lgica basadas en el estndar
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 seales.

4. Conceptos Principales del Lenguaje

-C
ay
ss
ial
s-

Completaremos la introduccin de cmo es usado el VHDL introduciendo los


principales conceptos y construcciones disponibles para el diseador.
Como VHDL es un lenguaje que permite describir hardware, ste debe permitir
describir actividades que operan simultneamente, como por ejemplo la siguiente

Gi
lar
do
ni
-

Or
oz
co

conexin.

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 especfico de descripcin de concurrencia es la habilidad de describir


estructuras o jerarquas. La descripcin de estructuras en VHDL puede ser libremente

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

mezclada con descripcin 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 ms compleja.

El lenguaje VHDL puede contener tambin sentencias que se ejecuten en forma


secuencial, similar a lo que sucede en cualquier lenguaje de programacin tradicional
como ser C, Pascal, BASIC, etc. Sin embargo, es necesario recordar que esta
caracterstica describe en forma secuencial un comportamiento concurrente y no es la
ejecucin secuencial de un cdigo residente en memoria.

-C
ay
ss
ial
s-

4.1 Sintaxis

Llamaremos bloque a cada parte constitutiva del diseo. Por lo tanto, un diseo estar
formado por la interconexin e interaccin de distintos bloques.
A continuacin se describe la sintaxis de VHDL, comenzando con el cdigo que
representa el bloque de construccin principal de cualquier diseo, denominado
ENTIDAD.

Or
oz
co

La ENTIDAD, en VHDL, describe la interfase de un bloque (cuntos son y cmo 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 estn contenidas en el cuerpo de la sentencia PORT, donde se

listan la direccin y estados de cada una de las seales 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 continuacin 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 definicin 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 sealar que una entidad puede tener ms de una arquitectura. De esta manera, en
el ejemplo desarrollado, pueden existir varias formas en especificar un medio sumador
mediante la definicin de varias arquitecturas.

4.3 Jerarqua

La entidad y la arquitectura son los bloques de construccin principales con los que una
jerarqua es construida. A continuacin se describe cmo una jerarqua es representada en
VHDL, usando como ejemplo la definicin 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 especificacin 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 implementacin 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 seales 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 definicin 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 parntesis el nombre que cada una de las seales 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 seales locales que se utilizarn en la arquitectura y
las referencias a las entidades HALFADD y ORGATE, conocidas como componentes.
En el diseo de la arquitectura FULLADD de la figura 2.9 las seales 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 declaracin de componentes y se realiza en el lugar marcado
con "other declarations" en la arquitectura de FULLADD.

La declaracin 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-

ningn tipo de restriccin en el nombre del componente.

Gi
lar
do
ni
-

Or
oz
co

La declaracin 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 cdigo completo para el diseo 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 diseo jerrquico completo consiste de entidades, donde cada una
de las cuales puede tener mltiples arquitecturas que describan distintos comportamientos.

Or
oz
co

El objetivo de la configuracin especifica cul arquitectura va a ser usada por cada una de
las entidades.

En caso de que no se especifique informacin de configuracin para una entidad, la


ltima arquitectura que es sintetizada por el simulador, ser la nica que se utilizar

Gi
lar
do
ni
-

durante la simulacin.

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 configuracin:

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 Configuracin por Defecto


Es comn que un diseo completo slo tenga una arquitectura y, en teora, no requerira
una configuracin. Algunos simuladores lo permiten, mientras que otros requieren al
menos una configuracin por defecto (default configuration).

Or
oz
co

Es importante notar que siempre que se utilice la configuracin por defecto se realizar
una especificacin ms portable.

Gi
lar
do
ni
-

La siguiente figura muestra cmo es una configuracin 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 configuracin tiene nombre propio y est asociada con la entidad del nivel ms alto
de la jerarqua.

4.7 Procesos y tipos

Un proceso es una regin de cdigo VHDL dentro de la cual las sentencias son
ejecutadas en secuencia. Un proceso existe dentro de una arquitectura y mltiples procesos

Gi
lar
do
ni
-

Or
oz
co

en VHDL.

-C
ay
ss
ial
s-

interactan 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 diseo en lenguaje VHDL es considerado por el simulador como una


coleccin 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
-

mltiples procesos interactan concurrentemente como lo muestra la siguiente figura.

Figura 2.16

No existe ninguna limitacin sobre el nmero de procesos que puede contener una
arquitectura.

Cada seal en un diseo en VHDL tiene asociado un TIPO. Un tipo define el conjunto

-C
ay
ss
ial
s-

de valores que pueden ser asignados a la seal. Existen tipos pre definidos en el lenguaje
estndar, 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 coleccin de definiciones que pueden ser referenciadas por

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

distintos diseos en forma simultnea. Colocando definiciones que son comunes entre los
diseos, permite al equipo de diseo trabajar ms consistentemente.

Figura 2.18

Un package es una unidad de diseo 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, declaracin de componentes, o sub programas de cdigo VHDL repartidos


entre diferentes diseos.

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 construccin y conceptos de VHDL, es posible obtener


un esquema completo de cmo se relacionan dichos bloques en un diseo tpico.

La jerarqua de un diseo completo est definida por mltiples entidades, las cuales
tienen al menos una arquitectura. Slo una arquitectura es referenciada por cada entidad en

-C
ay
ss
ial
s-

una simulacin particular.

Figura 2.21

Varias de estas entidades y arquitecturas referencian a uno o ms 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 jerarqua y las especificaciones de cul arquitectura va a

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

ser usada es llevada a cabo por la configuracin.

Figura 2.23

Finalmente, el mximo nivel de jerarqua es usualmente usado para contener al diseo y


a los estmulos que sern aplicados durante la simulacin.

-C
ay
ss
ial
s-

Figura 2.24

5. Seales y Tipos de Datos


A continuacin se describe la forma en que pueden ser asignadas las seales 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 estndar que son definidos como parte del
lenguaje. Luego se describe el concepto de un array (arreglo) y se proponen diferentes
ejemplos de cmo simples bits y arreglos de seales pueden ser manipulados dentro de

Gi
lar
do
ni
-

VHDL. Se describe tambin la forma en que el diseador puede especificar sus propios
tipos de datos, denominados enumerated type (tipos enumerados). Finalmente se detalla la
definicin de un tipo de dato conocido como "standard logic" (lgica estndar), el cual ha
sido adoptado como estndar en la descripcin de seales en VHDL.

Gilardoni - Orozco - Cayssials

2-15

Laboratorio de Sistemas Digitales - UNS

5.1 Concepto de Tipo y Especificacin

UN
S

Diciembre de 1999.

Gilardoni Orozco - Cayssials

El lenguaje VHDL define que cada seal debe tener un tipo de dato asociado cuando la

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

seal es declarada. El tipo de dato de una seal define el conjunto de valores que pueden
ser asignados a dicha seal. En el ejemplo de la figura 2.25, no es posible asignar a
N_SUM una seal que pertenezca a otro tipo de dato que no sea el tipo bit.

Figura 2.25

Una seal es, generalmente, declarada en la seccin PORT de una ENTIDAD o dentro

-C
ay
ss
ial
s-

de una declaracin de seal explcita en una ARQUITECTURA. Cuando una seal 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 seal, el tipo de dato a ambos lados del operador de

asignacin 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 tambin 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 Estndar

Los tipos de datos estndar son especificados como cdigo fuente VHDL y el lenguaje

-C
ay
ss
ial
s-

define que ellos deben encontrarse en un PACKAGE denominado STANDARD.

Figura 2.28

A continuacin se describen los tipos de datos ms 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 coleccin 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 carcter 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 Asignacin de Seales

VHDL define que la asignacin de un nuevo valor a una seal, debe realizarse mediante
la "sentencia de asignacin de seal" utilizando el smbolo "<=".

Gi
lar
do
ni
-

La asignacin define un driver sobre la seal. El concepto de driver es el mismo que el

utilizado en una compuerta lgica 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 ms de una asignacin es hecha a una seal, implica que la seal tiene ms de un


driver. En este caso, la seal debe ser declarada como una clase de tipo especial, conocido
como tipo resoluble. Un tipo resoluble tiene una llamada a funcin asociada, con la que se

Gi
lar
do
ni
-

Or
oz
co

resuelve el valor final de la seal.

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 ms de un driver. Ms 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 coleccin de objetos, donde cada uno de ellos es del mismo tipo de
dato. El lenguaje define dos tipos de arreglos estndar: bit_vector y string.

Figura 2.36

El rango o dimensin 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 notacin to o downto.

Figura 2.37

Dos arreglos pueden ser asignados el uno al otro si el tamao y el tipo es el mismo. El
siguiente diagrama describe la forma en que se realiza la asignacin de vectores. Se debe

Or
oz
co

notar que la asignacin es por posicin y no por ndice.


Una porcin puede ser referenciada utilizando to o downto. Puede referenciarse
tambin un elemento simple del arreglo. Debe tenerse en cuenta que la direccin de la
porcin, segn se haya usado to o downto, debe ser la misma que se uso en la

Gi
lar
do
ni
-

declaracin 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 Concatenacin y Agregado


Los mtodos de concatenacin y agregado son utilizados para asociar seales y
asignarlas a un objeto arreglo. VHDL permite asociar bits y vectores para formar
estructuras de arreglos. Esto es conocido como concatenacin y usa el operador "&". El

Or
oz
co

siguiente ejemplo muestra cmo 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 mtodo de asignacin definido en VHDL es el agregado. Un agregado est

Figura 2.41

Or
oz
co

-C
ay
ss
ial
s-

contenido entre parntesis y la asignacin 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 asignacin de un elemento del arreglo puede realizarse por
nombre adems de realizarlo por posicin. El siguiente ejemplo muestra una asignacin

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 sntesis soportan el uso de agregados por lo


que es necesario utilizar concatenacin en estas herramientas, para manipular arreglos.

5.6 Definicin de Tipos

Gi
lar
do
ni
-

Or
oz
co

de datos.

-C
ay
ss
ial
s-

A continuacin se detalla la forma en que el diseador 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 comnmente 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 mayora de las herramientas de sntesis 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
declaracin es mostrada en la figura 2.45.

Figura 2.45

La definicin del tipo de dato, permite definir seales de ese tipo. En el siguiente
ejemplo se declara la seal STATE como tipo de dato MY_STATE (definido en la figura
2.45), indicando asignaciones vlidas e invlidas. Debe tenerse en cuenta que no pueden
asignarse a la seal STATE otros valores que no hayan sido especificados en la definicin

-C
ay
ss
ial
s-

de MY_STATE.

Figura 2.46

Usualmente el tipo de dato enumerado tiene un nmero mnimo de bits requeridos para
representar todos los valores posibles. El siguiente ejemplo muestra cmo 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 Lgica MultiValuada

Existen situaciones en que la utilizacin 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 diseo. En una simulacin puede ser necesario representar
otros valores de la seal como, por ejemplo, desconocido (unknown), no inicializado
(un_initialized), alta impedancia (high impedance) y drive strengths. En la sntesis puede
ser necesario especificar condiciones de dont care.

Figura 2.48

La necesidad de especificar tipos de datos no binarios define el sistema de Lgica 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 exista un standard en esta rea y cada proveedor de


herramientas de sntesis y simulacin usaba su propio sistema MVL.
Actualmente el standard define un sistema de Lgica Multi Valuada (MVL) con nueve
valores o estados. Este estndar 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 cdigo 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 definicin 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 slo 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 versin resoluble del tipo de dato "std_ulogic" es el tipo de dato denominado


std_logic. Este tipo de dato puede tener ms 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 continuacin se describe cmo referenciar tal package.

UN
S

Estos tipos de definiciones estn contenidas dentro de un package llamado

Figura 2.52

El package tambin contiene la definicin 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 Lgica Standard

Or
oz
co

Descriptas las definiciones de la lgica standard, se realizan a continuacin algunos


ejemplos de cmo puede ser usada.
El package de definiciones est contenido dentro de una librera llamada IEEE. Esta es
necesaria para referenciar a la librera y al package, como muestra la figura 2.54.

Gi
lar
do
ni
-

Es necesario incluir dichas lneas en la especificacin para poder definir entidades que

utilicen los tipos de datos de lgica 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 mltiples drivers sobre una seal, 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 captulo sobre el lenguaje de especificacin de hardware VHDL, es

slo una introduccin 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 captulo fue describir las estructuras y conceptos bsicos del
lenguaje para que nos sea posible tomar una herramienta de diseo 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

Captulo 3

En este captulo se describe la estructura general de diseo de una especificacin de


hardware en AHDL como as tambin un conjunto de secciones y sentencias que
componen este lenguaje.

AHDL: Un Lenguaje de Descripcin de Hardware


Introduccin

AHDL es un lenguaje de especificacin desarrollado por ALTERA que se basa en la


descripcin del hardware a travs de su comportamiento (behavior). El lenguaje AHDL
utiliza ecuaciones lgicas, variables, constantes, funciones, operadores aritmticos, tablas
de verdad y expresiones condicionales, en forma similar a la de un lenguaje de
programacin de alto nivel. Est especialmente orientado al diseo de lgica
combinacional compleja, mquinas de estado, tablas de verdad y lgica 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 diseo


(Templates), que permiten en forma rpida, insertar en el archivo de diseo la estructura y
sintaxis correcta de las diferentes secciones y sentencias soportadas por el lenguaje. Un
archivo de diseo realizado en lenguaje AHDL debe contener como mnimo una seccin

Gi
lar
do
ni
-

Or
oz
co

de subdiseo y una seccin lgica, siendo opcionales las dems secciones.

Gilardoni - Orozco - Cayssials

3-1

Laboratorio de Sistemas Digitales - UNS

Diciembre de 1999.

Gilardoni Orozco - Cayssials

UN
S

Estructura de diseo

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 diseo 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 (Ttulo) permite agregar un comentario en el archivo de reporte


generado automticamente por el software de desarrollo.

El siguiente ejemplo muestra la sintaxis de una sentencia title.

TITLE "Controlador de Memorias Dinmicas en SIMM de 72 contactos";

La sentencia title tiene las siguientes caractersticas:

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 mximo un


total de 255 caracteres

Para incluir comillas dentro del texto deben usarse dos comillas, por ejemplo:
TITLE " ""MAX 7000"" Controlador de Display";

Slo puede utilizarse una sola vez en un archivo .tdf.

Debe ser colocada fuera de todas las otras secciones del diseo.

-C
ay
ss
ial
s-

2. Sentencia "Parameters"

La sentencia parameters (Parmetros) permite declarar uno o ms parmetros para


controlar la implementacin del diseo en funcin de los valores asignados al momento de
la sntesis de la lgica.

Tambin permite crear un diseo parametrizado para ser utilizado como librera de otro

Or
oz
co

diseo. ALTERA, provee una serie de libreras llamadas libreras de mdulos


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 librera se le deben pasar los parmetros

Gi
lar
do
ni
-

necesarios. Si observamos el siguiente ejemplo y suponemos que es la declaracin de


parmetros de una librera de mdulos parametrizados, podemos ver que existen
parmetros con y sin valores asignados. Al instanciar dicha funcin estaremos obligados a
pasar los parmetros 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

parmetro ANCHO. Los parmetros que tengan asignados valores por defecto pueden

NOMBRE = "miarchivo.mio",
ANCHO,
BYTE = 8,
PALABRA = 2*BYTE
);

La sentencia parameters posee las siguientes caractersticas:

Comienza con la palabra reservada PARAMETERS seguida por una lista de uno
o ms parmetros, encerrados entre parntesis. La Sentencia finaliza con un
punto y coma.

Los parmetros de la lista deben ser separados por comas y pueden asignarse
opcionalmente valores por defecto usando el signo igual (=). En la lista
mostrada arriba, slo el parmetro ANCHO no tiene asignado un valor por
defecto.

-C
ay
ss
ial
s-

Los nombres de los parmetros pueden ser definidos por el usuario o ser
parmetros predefinidos por ALTERA.
Los valores asignados a los parmetros pueden ser cadenas de caracteres
encerrados entre comillas, valores numricos o expresiones algebraicas entre
parmetros ya declarados.

Or
oz
co

El uso de la sentencia parameters implica respetar las siguientes reglas:


Un parmetro puede ser usado slo despus de ser declarado.

Gi
lar
do
ni
-

Cada nombre de parmetro debe ser nico.


No pueden contener espacios. El uso del carcter underline "_" para separar
palabras est permitido.
Puede ser usada un nmero arbitrario de veces dentro del mismo archivo de
diseo.
Debe ser colocada fuera de todas las otras secciones del diseo.

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 extensin .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 caractersticas:

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 extensin del archivo a incluir no es escrita, el software asume por defecto


que la extensin es .inc.

La sentencia include es utilizada para incluir prototipos de funciones. Se llaman


prototipos de funciones a la descripcin exterior de una funcin, es decir, la definicin de
sus puertos de entrada y salida, sin describir su funcionamiento interno.

El diseador puede generar un archivo de tipo include a partir del archivo de diseo

-C
ay
ss
ial
s-

TDF, utilizando la opcin 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 descripcin de la

funcin. La descripcin de la funcin 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 nmero arbitrario de veces dentro del mismo archivo de
diseo.

Debe ser colocada fuera de todas las otras secciones del diseo.

4. Sentencia "Constant"

La sentencia constant (Constante) permite sustituir un valor numrico o una expresin


aritmtica por un nombre simblico, de modo tal, que el cdigo sea ms 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 caractersticas:


Comienza con la palabra reservada CONSTANT, seguida por un nombre
simblico, un signo igual (=), y un nmero o una expresin aritmtica. 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 diseo.
Los nombres de las constantes deben ser nicos y pueden ser utilizados un

Gi
lar
do
ni
-

nmero arbitrario de veces.


Debe ser utilizada fuera de las otras secciones del diseo.

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 funcin matemtica que retorna valores en
funcin de los argumentos que recibe.

El siguiente ejemplo muestra la definicin y el uso de una funcin, que devuelve el


argumento de mayor valor, entre los que recibe como parmetros:
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:

<expresin 1> ? <expresin 2> : <expresin 3>;

Si la expresin 1 es verdadera (en el ejemplo anterior, si a es mayor que b), la funcin


devuelve el resultado de la expresin 2, en caso contrario la funcin devuelve como
resultado el valor de la expresin 3.

La sentencia define posee las siguientes caractersticas:

-C
ay
ss
ial
s-

Comienza con la palabra reservada DEFINE, seguida por un nombre simblico,


seguido por una lista de uno o ms argumentes separados por comas y
encerrados entre parntesis. Un signo igual separa la lista de argumentos de la
expresin aritmtica que implementa la funcin. La sentencia finaliza con un
punto y coma.

Una funcin puede ser definida en trminos de funciones definidas previamente.

Or
oz
co

Por ejemplo, la siguiente funcin est basada en la funcin MAX definida

Gi
lar
do
ni
-

anteriormente:
DEFINE Positivo(x) = MAX(0,x) + 1;

Si la funcin no posee una lista de argumentos, se comportar como la


declaracin de una constante.
Un vez definida, la funcin puede utilizarse en cualquier parte del archivo de
diseo un nmero arbitrario de veces.
Debe ser definida fuera de las otras secciones del diseo.

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 funcin) posee la misma funcin que los
smbolos de un archivo esquemtico. Ambos proveen una mnima descripcin de la
funcin lgica 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 funcin


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 caractersticas:

Comienza con la palabra reservada FUNCTION, seguida por el nombre de la


funcin, luego por una lista de ports de entrada separados por comas y

-C
ay
ss
ial
s-

encerrados entre parntesis. En funciones parametrizadas, se utiliza la palabra


reservada WITH seguida por una lista de parmetros 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 seccin de Subdiseo del archivo TDF y debe ser
colocada antes que la funcin lgica sea instanciada.

Or
oz
co

7. Sentencia "Options"
La sentencia options especifica la opcin BIT0 para especificar la posicin del bit ms

Gi
lar
do
ni
-

significativo de un grupo de bits. Comienza con la palabra reservada OPTIONS seguida


por la opcin 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 ms


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 ms significativo.

UN
S

Un ejemplo del uso de esta sentencia sera:

8. Sentencia "Assert"

La sentencia assert permite verificar la validez de cualquier expresin que utilice


parmetros, nmeros 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 caractersticas:

Comienza con la palabra reservada ASSERT seguida por una expresin


aritmtica encerrada entre parntesis. Cuando el resultado de dicha expresin es
falso, el mensaje que sigue a la palabra reservada REPORT es mostrado durante
la sntesis del proyecto.

-C
ay
ss
ial
s-

Luego de la palabra reservada REPORT se escribe el mensaje junto con la


opcin de sustituir el carcter % 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 opcin SEVERITY, el valor por defecto es ERROR. El nivel de
severidad ERROR detiene la sntesis del proyecto, el nivel WARNING e INFO

Or
oz
co

slo muestran el mensaje deseado sin detener la sntesis.

Gi
lar
do
ni
-

9. Seccin de Subdiseo
La seccin de subdiseo es el lugar del archivo de diseo donde se realiza la

declaracin de los ports de entrada, salida y bidireccionales.


El siguiente ejemplo muestra la seccin de subdiseo:
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 seccin de subdiseo posee las siguientes caractersticas:

Comienza con la palabra reservada SUBDESIGN seguida por el nombre de la


seccin que debe ser el mismo que el nombre del archivo TDF.

Los nombres de las seales 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 mquinas de estado entre archivos TDF y otros
archivos de diseo.

Es posible asignar un valor por defecto (VCC o GND) despus de definir el tipo
de port.

-C
ay
ss
ial
s-

10. Seccin de Declaracin de Variables

La seccin de declaracin de variables, es una seccin opcional en donde se declaran


y/o generan las variables usadas en la seccin lgica. Las variables en AHDL son similares
a las variables en un lenguaje de programacin de alto nivel. Ellas son utilizadas para
definir lgicas y seales internas.

El siguiente ejemplo muestra una seccin de declaracin de variables tpica:

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 cdigos en funcin del resultado de la expresin 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 libreras de mdulos
La seccin de declaracin de variables puede incluir una o ms de las siguientes
sentencias o construcciones:

Declaracin de Instancias
Declaracin de Nodos

Declaracin de Registros

Declaracin de Maquinas de Estado

Declaracin de Alias de Maquinas de Estado

10.1 Declaracin de Instancias

Cuando se desea utilizar funciones ya definidas en un nuevo proyecto, stas deben estar
definidas en el mismo archivo de diseo o deben ser incluidas con la sentencia include.
Luego pueden ser declaradas como variables con una declaracin de instancias en la
seccin de declaracin de variables. Despus de ser declaradas, los ports de entrada y
salida de cada una de las funciones pueden ser utilizados como ports en la seccin lgica.

-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 declaracin de instancias puede ser
realizada como se muestra a continuacin:
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


seccin lgica, 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 Declaracin de Nodos

Un nodo representa un cable transmitiendouna seal que viaja entre diferentes


componentes lgicos de un archivo de diseo. La declaracin de nodos permite asignarle
un nombre o smbolo a una seal lgica interna. Una de las ventajas de asignar un nombre
a un nodo es la posibilidad de ser identificado en la simulacin del proyecto, ya que en
caso contrario ser el software de sntesis el que asigne una identificacin al nodo.

AHDL soporta dos tipos de nodos denominados: NODE y TRI_STATE_NODE.


El siguiente ejemplo muestra una declaracin 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 tpicos de nodos. Para el caso del nodo tipo NODE,

las asignaciones mltiples de seales, a un mismo nodo, se realizan a travs de compuertas

AND u OR segn sea el valor por defecto de las seales, que intervienen en la asignacin,
VCC o GND respectivamente. Si no se especifica lo contrario, las seales 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 mltiples asignaciones sern realizadas a travs de
compuertas OR.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

En el ejemplo las seales in1 e in2 ingresaran a una compuerta OR y el resultado de


dicha operacin es asignado al nodo cable.

Los nodos tipo TRI_STATE_NODE, brindan la posibilidad de cablear directamente las


seales y que presenten un estado de alta impedancia para el nodo cuando no estn activos.
Un nodo TRI_STATE_NODE posee dos seales de entrada y una seal de salida. Las
seales de entradas, son el dato y la seal de output enable. La seal de salida es el dato si
la entrada output enable est activa o un estado de alta impedancia caso contrario.

10.3 Declaracin de Registros

La declaracin 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 declaracin de un flip flop "toogle":


VARIABLE
FFlop: TFF;

Luego de realizar esta declaracin 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 Declaracin de Maquinas de Estado


Es posible crear mquinas de estado declarando el nombre de la mquina, sus estados y

opcionalmente el valor binario de estos, en la seccin de declaracin de variables.


El siguiente ejemplo muestra la declaracin de una mquina 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 mquina 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 mquina. Los
estados son s1, s2 y s3.

La declaracin de una mquina de estados se compone de:

El nombre simblico, 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 enumeracin de los nombres simblicos de los estados, separados por
comas, con sus asignaciones opcionales.

El primer estado listado en la clusula WITH STATES, (s1, en este ejemplo) ser el
estado de reset de la mquina de estados.

-C
ay
ss
ial
s-

10.5 Declaracin de Alias de Maquinas de Estado


Es posible renombrar una mquina de estados con un nombre temporario utilizando la
declaracin de alias de mquinas de estados en la seccin variable.
Un alias puede ser utilizado para renombrar una mquina de estados que ha sido
importada al proyecto con la sentencia include.

Or
oz
co

El siguiente ejemplo muestra el prototipo de funcin de una mquina de estados y cmo


se declara un alias de dicha mquina.
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. Seccin Lgica

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

ELSIF ss == s1 THEN

La seccin lgica especifica las operaciones lgicas del diseo y es la seccin principal
de archivo TDF. Esta seccin no es opcional y siempre existe en un archivo TDF. Una o
ms de las siguientes sentencias o construcciones pueden existir en esta seccin:
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 seccin lgica tambin puede incluir sentencias ASSERT.


Las palabras reservadas BEGIN y END delimitan la seccin lgica y un punto y coma,
luego de la palabra END, marca su fin. La sentencia DEFAULTS debe ser la primera de la
seccin.

En la seccin lgica es necesario el uso de operadores lgicos, comparadores y

Or
oz
co

operadores aritmticos. La siguiente tabla muestra los posibles operadores y sus


respectivas prioridades. La prioridad 1 es la ms alta y operadores de igual prioridad son

Gi
lar
do
ni
-

evaluados de izquierda a derecha:


Operadores - Comparadores

Descripcin

Ejemplo

Prioridad

+ (unario)

Positivo

+1

- (unario)

Negativo

-1

NOT

!a

Exponente

a^2

Gilardoni - Orozco - Cayssials

3-15

Laboratorio de Sistemas Digitales - UNS

Mdulo

4 MOD 2

DIV

divisin

4 DIV 2

multiplicacin

a*2

LOG2

Logaritmo base2

LOG2(4-3)

adicin

1+1

sustraccin

1-1

Igualdad numrica

5 == 5

Igualdad alfabtica

"a" == "b"

Distinto que

5 != 4

Mayor que

5>4

Mayor o igual que

5 >= 5

Menor que

a < b+2

Menor o igual que

a <= b+2

AND

a&b

+
== (numrica)
== (alfabtica)
!=
>
>=
<
<=
&
AND

a AND b

!&

NAND (AND invertida)

NAND
$

XNOR (NOR exclusiva)

XNOR

NOR

1 !$ 1

a#b

-C
ay
ss
ial
s-

!#

1$1

1 XNOR 1

OR

OR

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

a OR b

NOR (OR invertida)

a !# b

a NOR b

Ternario

(5<4) ? 3:4

Or
oz
co

11.1 Ecuaciones Booleanas.


Las ecuaciones booleanas son usadas en la seccin lgica para representar la conexin
de nodos, la asignacin de seales internas, hacia o desde los contactos de Entrada/Salida y
realizar operaciones booleanas entre dichas seales.

Gi
lar
do
ni
-

El siguiente ejemplo muestra una ecuacin 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 ecuacin puede ser un nombre simblico (nodo o variable), un


port, o un nombre de grupo o conjunto de bits. El lado derecho de la ecuacin consiste de
la compone.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

una expresin booleana, la cual es evaluada de acuerdo a la prioridad de cada operador que
El smbolo igual (=) es usado en ecuaciones booleanas para indicar que el resultado de
la expresin booleana del lado derecho es asignado al nodo, variable o grupo de bits del
lado izquierdo.

En el ejemplo anterior la expresin booleana de la derecha es evaluada de acuerdo a las


reglas de prioridad:

El nmero binario B"001101" es negado aritmticamente y transformado al


nmero negativo B"110011" por el operador unario (-) de prioridad 1.

Se aplica la operacin lgica AND entre el nmero B"110011" y el grupo c[].


Esta expresin tiene prioridad 2 debido a que est encerrada entre parntesis.
El resultado de la expresin del paso 2 es sumada aritmticamente al grupo
e[6..1].

Se aplica la operacin lgica OR (#) entre el resultado de la expresin 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 expresin 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:


Mltiples asignaciones a variables son realizadas a travs de operadores
VCC.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

lgicos 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 ecuacin es
asignado a un grupo, el nodo o constante es duplicado para que el tamao de
este se corresponda con el tamao del grupo. Por ejemplo: (a, b) = e; que es
equivalente a a = e; y b = e;

Si en ambos lados de la ecuacin se tienen grupos del mismo tamao, cada


miembro sobre la derecha es asignado al miembro de la izquierda en la
posicin 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 ecuacin poseen grupos de diferentes


tamaos, el nmero de bits del grupo de la izquierda debe ser divisible por el
nmero de bits del grupo del lado derecho. Por ejemplo: a[4..1] = b[2..1] en
esta ecuacin 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 seccin lgica para
setear las seales de clock, reset y clock enable de las mquinas 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 caractersticas:

Gi
lar
do
ni
-

Pueden definirse las entradas clock, reset, y clock enable de una mquina de

estados, con el formato <nombre de la mquina de estados>.<nombre del


port>. En el ejemplo anterior dichas entradas son definidas para la mquina de
estados Maquina.
La seal de clock <nombre de la mquina 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 seal de reset <nombre de la mquina de estados>.reset debe ser asignada


a un valor si el estado inicial en la declaracin de la mquina 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 seal de reset lleva a la mquina al


primer estado en la lista de estados declarados. En el caso que el primer estado
se corresponda con el valor cero, la seal de reset no es necesaria, ya que la
mquina se iniciar siempre en ese estado.

Asignar la seal clock enable <nombre de la mquina de estados>.ena a un


valor es opcional. Cuando la seal clock enable est en low, las transiciones de
la seal 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 expresin 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 caractersticas:


Entre las palabras reservadas CASE e IS se coloca una expresin booleana,

Gi
lar
do
ni
-

grupo o mquina 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 ms alternativas son listadas en la clusula WHEN, en el cuerpo de la
sentencia case. Cada clusula 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 ms valores constantes,


separados por comas, son seguidos por el smbolo =>. 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 clusula WHEN,
mientras que los valores H"00" y H"01" son listados en clusulas separadas.
Si la expresin booleana de la sentencia case evala una alternativa que no se
corresponde con los distintos valores de las clusulas WHEN, se activar el
comportamiento descripto en la clusula 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 seales
activas en high son automticamente seteadas por defecto a GND, la sentencia defaults
slo es requerida para seales activas en low.

No debe confundirse los valores por defecto de variables con los valores por defecto de
los ports, asignados en la seccin de subdiseo.

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 caractersticas:


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 ms 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 algn 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 condicin y & z sea verdadera. En


caso afirmativo a valdr GND.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

Slo una sentencia defaults es permitida en la seccin lgica 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 descripcin de hardware en


funcin del resultado de una expresin 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 evaluacin de las sentencias que suceden a la palabra reservada THEN.
Tambin observamos las palabras reservadas ELSIF, ELSE y END IF. El uso de la

Or
oz
co

estructura ELSIF, permite evaluar otra expresin booleana, cuando la expresin anterior
dio como resultado un valor falso y evaluar las sentencias que suceden a la palabra
reservada THEN en funcin del resultado de esta nueva expresin. El uso de la palabra
reservada ELSE permite evaluar las sentencias que la suceden, si la expresin 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 slo 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 generacin condicional de hardware en


funcin del resultado de evaluar expresiones aritmticas.

Puede ser usada tanto en la seccin lgica como en la seccin 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 segn el valor del parmetro 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 funcin del resultado de una expresin aritmtica. Es

Gi
lar
do
ni
-

usual ver un uso intensivo de esta sentencia en libreras de mdulos 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 intrnsecamente una variable, llamada i,


que tiene vigencia slo 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.

Tambin, como en el caso de la sentencia if-generate, es usual ver un uso intensivo de


esta sentencia en libreras de mdulos parametrizados (LPM).

11.8 Sentencia TRUTH TABLE.


La sentencia truth table es utilizada para especificar lgica combinacional o el

Or
oz
co

comportamiento de mquinas de estados. Una tabla de verdad, en AHDL, posee una


combinacin de valores de entrada, que producirn valores de salida especficos. Estos
valores de salida pueden ser realimentados para especificar transiciones de estados y

Gi
lar
do
ni
-

salidas de una mquina 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 seales de entrada de la tabla son a0 y f[4..1].q y las salidas son f[4..1].d y control.
Estas seales deben colocarse en la primera lnea formando el encabezado de la tabla.
Luego en las lneas siguientes se especifican los distintos valores posibles para las seales,
tanto de entradas como de salidas.

Los valores de entrada y salida pueden ser nmeros, constantes predefinidas como VCC
o GND, constantes definidas por el usuario y grupos de nmeros o constantes. Los valores
de entrada pueden ser asignados a don't care utilizando la letra X para representarlos.

Conclusiones

En este captulo se describieron los principales conceptos del lenguaje AHDL para la
especificacin de hardware. Se detall la estructura de un diseo y la sintaxis de las

Gi
lar
do
ni
-

Or
oz
co

un proyecto.

-C
ay
ss
ial
s-

sentencias del lenguaje como as tambin la principal utilizacin 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

Captulo 4

Sistema de desarrollo de ALTERA: MAX + PLUS II


y placa de desarrollo universal UP1
Introduccin

En este captulo se describen las partes integrantes del sistema de desarrollo de lgica
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-

descripcin de hardware, como son: VHDL, VERILOG HDL y AHDL. Tambin permite
especificar un diseo en forma grfica a travs de diagramas esquemticos,
interconectando distintos elementos lgicos como compuertas, flip flops, contadores, etc.
Si tenemos un conocimiento bsico del lenguaje VHDL, podramos ejecutar el software
MAX+PLUS II e intentar describir un hardware sencillo. Sin embargo, nos encontraramos

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 lgica programable a
utilizar.

Por lo tanto, el objetivo planteado, es poder mostrar cmo se realiza un diseo completo

Gi
lar
do
ni
-

sobre esta herramienta, utilizando un dispositivo de lgica 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 descripcin 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 recin mencionados; el VHDL.

Dicho ejemplo consiste en la implementacin de un sumador (adder) binario de 8 bits,


utilizando el dispositivo de la familia MAX7000, EPM7128SLC84-7.

Despus de la instalacin 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 cdigo 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 sntesis o


simulacin 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 jerarquas.

De esta manera, se puede observar cmo est compuesto el diseo a travs de un


esquema tipo rbol, donde cada hoja de dicho rbol hace referencia a un archivo.

Or
oz
co

Si nunca haba sido sintetizado, se observarn en la ventana de jerarquas slo dos


archivos, que son: el cdigo VHDL del sumador (archivo adder.vhd) y un archivo de
texto con extensin .acf, el cual describe parmetros caractersticos de las distintas familias

Gi
lar
do
ni
-

de dispositivos ALTERA.

1.2 Sntesis
El sintetizador del software MAX+PLUS II es un procesador de diseos, altamente

automatizado que transforma los archivos de diseo 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 corazn del sistema de desarrollo MAX+PLUS II.

UN
S

programar, simular y analizar temporalmente los dispositivos de lgica 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 diseo, ejecuta una serie
de procesos hasta crear uno o ms archivos de programacin. Mientras que el sintetizador
permite sintetizar un diseo con una mnima intervencin del usuario, tambin es posible
modificar ciertos parmetros para obtener mejores resultados, ya sea en cuanto velocidad o
utilizacin de recursos fsicos.

Si un proyecto es muy extenso e insume una gran cantidad de recursos fsicos, es


probable que deban necesitarse dos o ms dispositivos para implementarlo. Este hecho es
automticamente detectado por el sintetizador y es ste el que particiona el diseo en
mltiples dispositivos de la misma familia.

Para sintetizar un archivo de diseo debemos abrir la ventana MAX+PLUS II


Compiler y presionar el botn de start. Posteriormente, la ventana de jerarquas indicar
la realizacin de los diferentes archivos como resultado de la sntesis.

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 bsicos:

A su vez, cada tipo puede tener distintas extensiones como pueden ser:
Editor grfico: .gdf, .sch

Gi
lar
do
ni
-

Editor de smbolos: .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 informacin 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 Interpretacin del Cdigo VHDL

UN
S

Help Search for Help on y tipear la extensin del mismo.

El cdigo se encuentra en el archivo adder.vhd, que es de tipo texto y su extensin


indica que es un cdigo fuente escrito en lenguaje VHDL. Este es el archivo principal del
diseo y a partir del cual, una vez sintetizado, se generan los dems archivos que integran
el proyecto.

1.4.1.

Cdigo 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 librera ieee y se hace uso de los packages


ieee.std_logic_1164 y ieee.std_logic_arith, que definen la lgica standard y la lgica
aritmtica respectivamente (Captulo 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 librera ieee. El tipo UNSIGNED representa
valores numricos sin signo los cuales slo pueden ser positivos o cero.
El software MAX+PLUS II interpreta cada tipo UNSIGNED como un nmero binario,

con el dgito de la izquierda como el bit ms 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 tamao de los

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

operandos de la funcin CONV_INTEGER est limitado entre -2147483647 y


2147483647.

Por lo tanto, este cdigo 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 funcin de conversin CONV_INTEGER. Luego el
resultado de la conversin se asigna a result declarada tipo INTEGER.

Nota: Si bien el tipo INTEGER posee 32 bits de representacin, slo se utilizan 9 bits
ya que el resultado de sumar seales de 8 bits a lo sumo dar como resultado una palabra
de 9 bits. Entonces al nivel del dispositivo tendremos slo 9 contactos de salida usados.
El software MAX+PLUS II versin estudiantil 7.21 puede ser obtenido gratuitamente
de la pgina 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 programacin 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 MAX7000 y FLEX10K (Captulo 1). Ambos son


programables en sistema (In-System Programmability, ISP), lo que permite su

Gi
lar
do
ni
-

programacin en forma serial y sin necesidad de desmontarlos del circuito impreso.

Gilardoni - Orozco - Cayssials

4-5

Laboratorio de Sistemas Digitales - UNS

2.2 Cmo es la placa educacional UP1?

UN
S

Diciembre de 1999.

Gilardoni Orozco - Cayssials

Una vista superior de la placa UP1, muestra la existencia y distribucin de los

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

dispositivos de lgica programable.

2.3 Cmo est compuesta la placa UP1?

-C
ay
ss
ial
s-

La placa posee una serie de elementos, entre los cuales figuran un regulador de tensin,
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
lgica programable: el EPM7128S de la familia MAX7000, y el EPF10K20 de la familia
FLEX10K.

Los dos dispositivos comparten la seal 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 dems 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 zcalo para la colocacin de una

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

memoria EEPROM EPC1 de configuracin. Todos los dems contactos de entrada/salida,


excepto el reloj global, permanecen sin conectarse y son accesibles a travs de los
terminales de expansin 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 estndar VGA. Esta es la nica razn por la que no ha
sido conectado a un reloj de mayor frecuencia, ya que ambos dispositivos podran
funcionar al triple de frecuencia.

Los dispositivos estn conectados en cadena JTAG (IEEE 1149.1 Join Test Action
Group ). JTAG es una interfase estndar que permite que los dispositivos sean ISP (InSystem Programmability) de forma tal de poder programar y/o configurar, a travs 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 programacin del dispositivo EPM7128S, o la configuracin del dispositivo

-C
ay
ss
ial
s-

EPF10K20 o la programacin y configuracin de los dos dispositivos.

Para mayor informacin sobre la placa educacional UP1 debe referirse a la gua del
usuario de ALTERA:

University Program Design Laboratory Package.

Or
oz
co

3. Cable de Programacin ByteBlaster.


3.1 Qu es y para qu sirve la ByteBlaster?
Los diseos pueden ser fcil y rpidamente transferidos a la placa UP1 usando el cable

Gi
lar
do
ni
-

de programacin ByteBlaster, el cual es una interfase fsica entre la placa UP1 y el


puerto paralelo estndar de la computadora personal (PC).
El cable de programacin ByteBlaster slo sirve para programar y/o configurar los

dispositivos In-System Programmability (ISP) a travs 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 esquemtico de la ByteBlaster es el siguiente:

UN
S

Elctricamente no es ms que un circuito 72LS244 (buffer octal), usado para proteger el

Nota: Mediente la utilizacin del cable de programacin ByteBlasterTM pueden


configurarse:

los dispositivos de la familia FLEX10K, ya que las interconexiones internas se


realizan a travs de switches RAM estticos (SRAM). Por este motivo, deben ser

Or
oz
co

configurados cada vez que se energizan. Pueden ser configurados a travs de una
memoria previamente programada, en donde el dispositivo configurable,
automticamente, lee la informacin necesaria y se autoconfigura.

Gi
lar
do
ni
-

los dispositivos de la familia MAX7000, ya que las interconexiones internas se

realizan a travs 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

Captulo 5

Implementacin de un Controlador de Memoria


Dinmica: Una Aplicacin de Lgica Programable.
El objetivo del proyecto es demostrar el funcionamiento y capacidades del sistema de
desarrollo de lgica programable que el laboratorio de Sistemas Digitales a adquirido en su
participacin en el programa universitario de ALTERA.

Para ilustrar los conceptos descriptos anteriomente, en este captulo se describe la


implementacin de un controlador de memorias RAM dinmicas, DRAMs, configuradas
en un mdulo SIMM de 72 contactos. La funcin del controlador de memorias DRAM ser
hacer ver al mdulo como una memoria RAM esttica.

1. Memorias Dinmicas Utilizadas: Mdulo SIMM

-C
ay
ss
ial
s-

de 72 contactos.

El sistema desarrollado consiste de un controlador de memorias dinmicas ensambladas


en mdulos SIMM de 72 contactos, los cuales son usados como memorias RAM en
computadoras personales.

En particular se dise para funcionar con el mdulo SIMM TM124BBK32 de


1M*32bits de Texas Instruments, respetando la configuracin de contactos y handshake

Or
oz
co

especificados en el estndar JEDEC de 72 contactos.


En la figura 5.1 puede se ve detalladamente el smbolo lgico que representa a cada

Gi
lar
do
ni
-

chip componente del mdulo 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 mdulo SIMM est compuesto por 8 chips DRAMS TMS44400 DE 1M*4bits y la

Gi
lar
do
ni
-

Or
oz
co

conexin elctrica 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 mdulo SIMM es el siguiente:

Figura 5.3

1.1 Caractersticas Tcnicas del Mdulo SIMM Utilizado.


E mdulo SIMM est compuesto por 8 chips DRAMs TMS44400 DE 1M*4 bits.
Observando las figuras anteriores podemos inferir que los 8 chips funcionarn en forma
paralela, siendo activados con las seales /cas y /ras respectivas. Por lo tanto el modo de
operacin del mdulo ser el mismo que el de cada chip.

1.2 Caractersticas Tcnicas de los Chips TMS44400.

En forma resumida, las caractersticas 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 Dinmicas.

Dinmicas.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

2.1 Smbolo Lgico del Controlador de Memorias

UN
S

Diciembre de 1999.

Gilardoni Orozco - Cayssials

El controlador de memorias dinmicas ser llamado dramcontrol y la configuracin de


contactos de entrada y salida es la siguiente:

Las seales asociadas a los distintos contactos de entrada y salida pueden dividirse en
tres grupos segn sea su interaccin con y desde el mundo exterior.
Estas seales son:

Las seales independientes, que no interactan en forma directa con el sistema

-C
ay
ss
ial
s-

microprocesador ni con el mdulo SIMM.

Las seales microprocesador - dramcontrol, que interactan en forma directa con el


sistema microprocesador.

Las seales dramcontrol mdulo SIMM, que interactan en forma directa con el
mdulo SIMM.

Seales independientes

Or
oz
co

2.1.1.

Existen slo dos seales independientes: 1) la seal de entrada clk, que ser utilizada
como la seal de sincronismo de toda la lgica secuencial utilizada en la implementacin

Gi
lar
do
ni
-

del controlador de memorias dinmicas. 2) la seal de estado_error, que indica que se ha


producido un error por parte del microprocesador por haber estado en estado bajo las
seales /write y /read simultneamente.

2.1.2.

Seales microprocesador - dramcontrol:

Gilardoni - Orozco - Cayssials

5-4

Laboratorio de Sistemas Digitales - UNS

Diciembre de 1999.

Gilardoni Orozco - Cayssials

UN
S

La seal de entrada /read es usada como la seal de lectura de la memoria


dinmica y es activa en cero.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

La seal de entrada /write es usada como la seal de escritura en la memoria


dinmica y es activa en cero.

La seal 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 lneas 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 dinmicas.

2.1.2.1. Seales dramcontrol mdulo SIMM:

La seal de salida /write_dram es usada como seal de escritura y lectura en la


memoria dinmica y ser de escritura cuando est en estado low y de lectura
cuando est en estado high.

La seal de salida /ras es aplicada a la memoria dinmica. Esta seal es activa


en cero y es llevada a su estado low indicando que las direcciones de filas ya
estn presentes.

Igual que la seal /ras, la seal de salida /cas es aplicada a la memoria dinmica.

-C
ay
ss
ial
s-

Esta seal es activa en cero y es llevada a su estado low indicando que las
direcciones de columnas ya estn presentes.
address_out son las 10 lneas de direcciones multiplexadas de filas y columnas
hacia el mdulo SIMM.

bidir_simm es el bus de datos bidireccional de 8 bits, que conecta el

Or
oz
co

controlador de memorias dinmicas con el mdulo SIMM.

3. Funcionamiento del Controlador de Memorias

Gi
lar
do
ni
-

Dinmicas.

El mdulo SIMM de 72 contactos de 1M * 32 bits, ser visto como una memoria RAM

esttica 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 mayora de los microprocesadores de 8 bits, se
paginar en 64 pginas 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 dinmicas puede dividirse en dos


partes. Una parte que interacta con el microprocesador, llamada microprocesador memoria dinmica.

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

controlador y otra parte que interacta con la memoria dinmica, llamada controlador

3.1 Funcionamiento microprocesador - controlador

Cmo es un ciclo de lectura del microprocesador - controlador?

Como indica la figura 5.4, el ciclo de lectura comienza cuando el microprocesador baja
la seal /read, y la seal /write permanece en nivel alto. En el flanco descendente de la
seal /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 ledo en las lneas bidir_up. El dato ledo estar presente
mientras la seal /read est en nivel bajo y ser ledo por el microprocesador en el flanco
ascendente de la seal /read.

Aclaracin: los valores, tanto de la direccin de escritura como el del dato ledo, 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

Cmo 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 seal /write, y la seal /read permanece en nivel alto. En el flanco descendente de
la seal /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 lneas bidir_up. El dato ser almacenado por el controlador dramcontrol,
con el flanco ascendente de la seal /write. Luego, controlador acceder a la memoria
dinmica para escribir el dato deseado en el lugar de memoria deseado.

Figura 5.5

Cmo 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 direccin de paginado

-C
ay
ss
ial
s-

previamente establecida. Tambin 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 direccin de paginado ser la indicada por la constante dir_paginado definida en el
cdigo AHDL, por lo tanto cuando se escriba en esa direccin no se acceder a la memoria

Or
oz
co

sino que se modificar el registro de paginado.


Se perdern 256Bytes de memoria por el uso de este paginado, ya que se pierden los
4Bytes de la direccin de paginado, dir_paginado, de cada pgina.
La lectura de un dato en la direccin de paginado no est implementada, es decir, que el

Gi
lar
do
ni
-

controlador no realiza ninguna funcin, por lo tanto no se puede saber cul es el valor
actual del registro de paginado. Slo se puede modificar.
En la figura 5.6 se muestra el ciclo de cambio de pgina recin descripto, y los valores,

tanto de la direccin de paginado como el del valor de la pgina, 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 dinmica.


Cmo se direcciona el mdulo SIMM?

El direccionamiento del mdulo SIMM se har a travs de las 16 direcciones


provenientes del microprocesador adress_in[15..0], ms las 6 direcciones del registro de
paginado. De esta forma las direcciones de filas estarn formadas por los 6 bits del registro
de paginado ms los 4 bits ms significativos de las direcciones provenientes del
microprocesador adress_in[15..12], mientras que las direcciones de columnas sern los 10
bits restantes, es decir adress_in[11..2]. Los bits 1 y 0 sern utilizados para decodificar el
byte correspondiente de la palabra de 32 bits que maneja el mdulo SIMM.

Gi
lar
do
ni
-

Or
oz
co

-C
ay
ss
ial
s-

Grficamente sera 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

Cmo es un ciclo de lectura del controlador memoria dinmica?


El ciclo de lectura del controlador - memoria dinmica se debe realizar dentro del
ciclo de lectura microprocesador controlador, ya que el dato ledo se debe presentar al

Or
oz
co

microprocesador en el flanco ascendente de la seal /read, como se vio anteriormente.


Entonces una vez que la seal /read pasa a estado bajo, comienzan los ciclos de lectura
microprocesador controlador y controlador memoria dinmica.

Gi
lar
do
ni
-

El ciclo de lectura controlador memoria dinmica tiene que realizarse antes que

finalice el ciclo microprocesador controlador. Para asegurar que esto ocurra se bajar

la seal 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 dinmica realiza el handshake que indica la


hoja de datos, de la memoria dinmica que se corresponde con el indicado en el estndar

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 seal /read, el controlador establece las
direcciones de filas con el valor 00F y se baja la seal /ras, con lo que la memoria
latchea las direcciones de filas. Luego el controlador coloca las direcciones de columnas
3C3 y se baja la seal /cas. En un tiempo no mayor a los 20ns el dato ledo 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

Cmo es un ciclo de escritura del controlador memoria dinmica?


El ciclo de escritura del controlador - memoria dinmica se puede realizar solo

-C
ay
ss
ial
s-

despus del ciclo de lectura microprocesador controlador, ya que en el momento de


acceder a la memoria dinmica se deben conocer tanto la direccin 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 dinmica.
El ciclo de escritura controlador memoria dinmica realiza el handshake que indica

Or
oz
co

la hoja de datos, de la memoria dinmica.


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 dinmica. Dicha transicin
la determina el flanco ascendente de la seal /write.

Gi
lar
do
ni
-

Luego el controlador establecen las direcciones de filas con el valor 00F y se baja la

seal /ras, con lo que la memoria latchea las direcciones de filas. Posteriormente el

controlador coloca las direcciones de columnas 3C3 y se baja la seal /cas. Se observa

que el dato a escribir, 11 se encuentra presente prcticamente 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

Cmo es el ciclo de refresco CAS before RAS?

Como toda memoria dinmica, para asegurar la integridad de los datos, debe ser
refrescada peridicamente. Las memorias utilizadas tienen un ciclo de refresco de 16ms y
estn estructuradas como una gran matriz de 1024 filas por 1024 columnas, por lo tanto
una forma de refrescar toda la memoria sera leer 1024 filas en un tiempo menor a los
16ms, usando solamente la seal /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 automticamente la memoria dinmica 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 lnea /cas y se sube la lnea /write_dram y se baja la lnea /ras. Se
mantienen estos estados y se levanta la lnea /cas al mismo tiempo que se baja la lnea

Figura 5.9

Gi
lar
do
ni
-

Or
oz
co

/write_dram. Posteriormente se levanta la lnea /ras y finaliza el ciclo.

Gilardoni - Orozco - Cayssials

5-11

Laboratorio de Sistemas Digitales - UNS

Diciembre de 1999.

4. Funcionamiento

Lgico

del

Controlador

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

Memorias Dinmicas.

de

UN
S

Gilardoni Orozco - Cayssials

El controlador de memorias dinmicas est formado por dos mquinas de estados que
evolucionan sincrnicamente con la seal de reloj y en funcin de distintas variables de
entrada que definen cul es el prximo estado.

Una mquina implementa las funciones microprocesador controlador y ser


denominada mquina 1. La otra, implementa las funciones controlador memoria
dinmica y ser denominada mquina 2.

Luego de una inicializacin del controlador, las mquinas de estados se inician en los
estados espera en la mquina 1 y Standby en la mquina 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 dinmica, mencionadas anteriormente.

En funcin de tres seales lgicas, la mquina 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 seales lgicas recin mencionadas son definidas en el cdigo 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 seales restantes son llamadas lectura_pendiente.q, y escritura_pendiente.q,

Or
oz
co

que son las salidas de dos flip flops D con seal de enable. Estos flip flops son
configurados por la mquina 1 para comenzar un ciclo de lectura o escritura en la mquina
2 y son borrados por la mquina 2 cuando los ciclos terminan. Por lo tanto estas seales
funcionan como nexos de comunicacin entra las dos mquinas de estados.

Gi
lar
do
ni
-

4.1 Mquina de estados 1: microprocesador controlador


Los estados que componen la mquina 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 segn


el estado de las seales /write y /read. Si baja la seal /read se pasa al estado
lectura_set_flag. Si baja la seal /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 mquina de estados 2. Luego pasa al estado


lectura_espera.
lectura_espera:

Espera en este estado hasta que lectura_pendiente.q sea

reseteado por la mquina de estados 2 cuando el acceso al mdulo SIMM se


halla completado. Luego pasa al estado lectura_fin.

lectura_fin: Al llegar a este estado ya estarn los datos ledos 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 direccin provenientes del microprocesador es la direccin de
paginado. En caso afirmativo pasa al estado set_paginado. En caso contrario
espera a que la seal /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 mquina de estados 2. Luego pasa al estado
escritura_fin.

escritura_fin:

Espera en este estado hasta que la mquina de

estados 2 resetee el flip flop escritura_pendiente.q. Luego pasa al estado


espera, dndose por terminado el ciclo de escritura.

Or
oz
co

error_seguridad: Se accede a este estado si las seales /read y/o /write se


activan simultneamente. En este caso se tiene una condicin 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 Mquina de estados 2: controlador memoria dinmica


cantidad de estados:

La
bo
ra
to
rio
de
Si
ste
ma
sD
igi
tal
es
-

Cada uno de los ciclos componentes de la mquina 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 mquina de estados 2 son los siguientes:


Standby:

En este estado se espera por cualquiera de los tres ciclos posibles;

escritura, lectura o refresco. Las seales toman los valores definidos por defecto.
Idle: Este estado solo cumple la funcin de insertar un intervalo de tiempo de un
ciclo de reloj de duracin, luego de un ciclo de lectura y / o escritura. Las
seales 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 seal /write_dram y se

-C
ay
ss
ial
s-

pasa al estado siguiente que es refrescar2.

Refrescar2: En este estado se bajan las seales /cas[0..3], y se mantiene la seal


/write_dram en uno. Pasa al estado siguiente refrescar3.
Refrescar3: En este estado se mantienen bajas las seales /cas[0..3], se baja la
seal /ras, se mantiene la seal /write_dram en uno y se pasa al estado
siguiente que es refrescar4.
la

Or
oz
co

Refrescar4: En este estado se suben las seales /cas[0..3], se mantiene baja

seal /ras, se baja la seal /write_dram y se pasa al estado siguiente que es


refrescar5.

Gi
lar
do
ni
-

Refrescar5: Se mantienen bajas las seales de /ras y /write_dram. Finaliza el

ciclo de refresco y las seales se estabilizan en el estado prximo que es


standby.

Nota: En realidad el ciclo de refresco termina al llegar al estado standby, ya que aqu
se sube la seal /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 seal de lectura pendiente. Esta
seal de lectura pendiente, proviene de un elemento de memoria (Flip Flop D),
llamado en el cdigo AHDL, lectura_pendiente.q. Este flip flop es seteado por
la mquina de estados 1 cuando el microprocesador baja la seal /read. En este
estado se establecen las direcciones de filas hacia el mdulo SIMM y se pasa al
estado siguiente que es read2.
Read2:

Se mantienen las direcciones de filas activas y se baja la seal de

/ras y se sube la seal /write_dram. Luego pasa al estado read3.


Read3:

Se colocan las direcciones de columnas. Se mantiene la seal de

/ras activa. Luego pasa al estado read4.


Read4:

Se mantienen las seales de columnas. Y se decodifican las seales

/cas en funcin de los dos bits menos significativos de las direcciones


provenientes del microprocesador. Luego se pasa al estado read5.
Read5:

Se mantienen las seales de columnas. Pasa al estado read6.

Read6:

Se mantienen las seales de columnas. Se resetea a low el flip flops

D de lectura pendiente. Se latchean los datos provenientes del mdulo 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 seal de escritura pendiente.
Esta seal de escritura pendiente es seteada por la mquina de estados 1 y
proviene de un elemento de memoria (Flip Flop D), llamado en el cdigo

Or
oz
co

AHDL, escritura_pendiente.q. En este estado se establecen las direcciones de


filas hacia el mdulo SIMM se pasa al estado siguiente llamado write2. La seal
/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

seal /ras, luego se pasa al estado siguiente que es llamado write3.


Write3:

En este estado se establecen las direcciones de columnas hacia el

mdulo SIMM, se mantiene la seal /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 mdulo 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:

mdulo SIMM, se mantiene la seal /ras en low, se determina que bit de la seal
/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

mdulo SIMM, se mantiene la seal /ras en low, se mantienen las seales


/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 seales vuelvan a tomar los

niveles definidos por defecto, para asegurar los tiempos de precarga


especificados en las hojas de datos del mdulo de memoria. El prximo estado
es idle.

5. Implementacin de los ports bidireccionales.

Seguidamente se describir como es la implementacin de buses bidireccionales, que

-C
ay
ss
ial
s-

cumplen la funcin de intercambiar informacin entre el microprocesador y el mdulo de


memoria SIMM en forma bidireccional.
La figura 5.10 muestra en forma esquemtica 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 lgica programable, tanto del port bidir_up[7..0] como del port

Or
oz
co

bidir_simm[7..0], con el flanco ascendente de la seal de reloj, si la seal 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 travs de los buffers tri estados
up_tri_state[7..0]

simm_tri_state[7..0]

cuando

las

seales

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

You might also like