Professional Documents
Culture Documents
LABORATORIO DE SISTEMAS
DIGITALES
Ing. Ludmila Gorenkova Labicova
Reimpresin y actualizacin:
Ing. Ronald Ponguillo Intriago
Octubre de 2014
Introduccin.
Una variedad de dispositivos esta disponible para la implementacin de diseos de
lgica digital. La Fig. 1.1 muestra la clasificacin general de tecnologas de Lgica
Digital.
Los circuitos integrados (chips) estndar tales como SSI y MSI TTL y CMOS realizan
funciones fijas (registro, decodificador, multiplexor, etc.) definidas por el fabricante.
Pero se puede construir chips que tienen una circuitera que puede ser configurada por
el usuario para implementar un amplio rango de circuitos lgicos diferentes.
Lgica Programable y Circuitos Integrados de Aplicacin Especfica (ASICs) son
circuitos integrados cuya funcin interna es definida por el usuario. Los PLDs (SPLDs),
FPGAs y CPLDs requieren la configuracin o programacin por parte del usuario para
realizar la operacin deseada. Los ASICs son configurados por los fabricantes pero
con las funciones definidas por el usuario.
Los PLDs son un conjunto de puertas AND cuyas salidas son conectados a un
conjunto de puertas OR.
Los
CPLDs
FPGAs
comerciales
estn
disponibles
en
varios
tipos
de
empaquetamientos.
a.
b.
c.
b. Altera FLEX FPGA esta empaquetado como PQFP (plastic quad flat pack).
Existe una variacin de este tipo de empaquetamiento TQFP (thin quad flat pack).
c. Xilinx FPGA esta en paquete PGA (pin grid array) que puede tener mas de cien
pines.
Y hay un nuevo tipo de empaquetamiento conocido como BGA (ball grid array).
BGA es similar a PGA pero los pines largos son remplazados por pequeas bolitas.
Este tipo de empaquetamiento puede tener aun mas entradas.
1.
CPLD es una coleccin de los PLDs individuales dentro de un chip, acompaada por
una estructura programable de interconexin que permite a los PLDs
estar
conectados entre si dentro del chip de la misma manera que un diseador puede hacer
con los PLDs discretos.
1.1.
La Fig. 1.5 muestra un CPLD formado por cuatro LAB (Altera) / FB (Xilinx) tipo PAL
(PLA) que son conectados por un conjunto de interconectores.
Este LAB / FB incluye 3 macroceldas (un CPLD real XC95288 de fabricante Xilinx
tiene 288 macroceldas en 16 bloque). Cada macrocelda tiene una puerta OR de
cuatro entradas (un CPLD real puede tener las puertas OR con hasta 20 entradas).
Las salidas de las puertas OR estn conectadas a las entradas de las puertas XOR.
Una de las entradas de los XOR puede ser programada para ser conectada a 0 o 1.
De esta manera en la salida XOR se obtiene la seal igual o inversa que en la salida
OR.
Las macroceldas tambin incluyen los FFs, multiplexores y buffers de tres estados. Los
FFs son usados para almacenar los valores producidos por las puertas OR. Los buffers
de tres estados actan como interruptores que permiten que cada terminal pueda ser
usado tanto como salida o como entrada. Para usar el terminal como la salida, el buffer
debe ser habilitado. Para usar el terminal como la entrada, el buffer de tres estados se
7
deshabilita. Entonces una seal externa puede ser aplicada al terminal y mandada a
otras macroceldas, ya que en este caso la macrocelda correspondiente a este terminal
no puede ser usada.
Ejemplo:
La Fig. 1.7 presenta un Diagrama Esquemtico implementado con tres tipos de
elementos de almacenamiento.
a.
b.
Pero tambin puede ser implementado como suma de productos que tiene
realimentacin Fig. 1.8b.
Todo circuito de la Fig. 1.7 puede ser implementado en un CPLD de la manera
indicada en la Fig. 1.9.
Fig. 1.9.
1.2.
a.
b.
El transistor EEPROM tiene dos puertas (Gate): el Gate normal y otro llamado floating
Gate. Se llama flotante porque esta rodeado por vidrio aislante y no esta conectado a
ninguna parte del transistor.
Cuando el transistor no esta programado la puerta flotante no tiene ningn efecto y el
transistor funciona como un transistor normal.
Durante de programacin se aplica a la puerta normal del transistor EEPROM un
voltaje bastante elevado (tpicamente Ve =12v). Esto causa la circulacin de una gran
corriente por el transistor. Una corriente tan alta hace que algunos electrones penetren
a travs del aislante y se queden atrapados bajo la puerta flotante.
Una tpica PIM / PIA es un compromiso entre las dos configuraciones. De su diseo
depende la velocidad, rea y costo de un CPLD. La solucin de este problema es
top secret y generalmente no es revelado por los fabricantes de los CPLDs.
1.3.
Bloque de I/O podra considerarse parte del bloque lgico, pero no necesariamente
tiene que estar en la salida de un bloque lgico. La funcin de un IOB es permitir el
paso de una seal hacia dentro o hacia el exterior del dispositivo. Por lo tanto IOB
deben ser bidireccionales y deben poder manejar corrientes importantes.
Existen bsicamente dos tipos de IOB:
IOB elementales
IOB complejos
IOB elementales slo permiten definir si el pin ser de entrada, salida o bidireccional,
y cada IOB est asociado a un Bloque Lgico determinado.
11
Pero los IOB tambin contribuyen fuertemente a crear ciertos problemas de diseo
como retardos adicionales y picos de corriente de consumo y consiguiente ruido de la
fuente.
1.4.
Parallel
Expanders
PRN
D Q
ProductTerm
Select
Matrix
to PIA and
I/O Contol Block
EN
CLRN
A
Clock
Clear
Select
From PIA
Shared
Logic
Expanders
Hay cinco trminos de productos (puertas AND) que pueden ser conectados mediante
Product Term Select Matrix (matriz de seleccin de trminos de producto) a la puerta
OR. Esta OR puede ser configurada para usar solo los productos necesarios para
implementar la funcin deseada.
Cuando se requiere ms de cinco productos pueden ser utilizados productos
adicionales de otras macroceldas.
La Fig. 1.12 muestra como trminos de productos pueden ser compartidas entre las
celdas.
La puerta OR de una macrocelda incluye una entrada extra que puede ser conectada a
la salida de la puerta OR de la macrocelda que esta arriba. Esta caracterstica se llama
13
desde los pines externos del dispositivo. Todas las conexiones entre macroceldas se
realizan a travs de PIA.
Por ejemplo, un chip EPM 7128S-7 tiene retardo de propagacin de 7.5 ns.
Si la funcin lgica implementada usa parallel o shared expanders, el retardo de
propagacin se incrementa.
15
Xilinx XC9500.
Los CPLDs de la familia XC9500 tienen similar arquitectura pero diferente numero de
terminales de entrada / salida externos y diferente cantidad de PLDs internos, que
Xilinx llama FB (Funcional Block). Por ejemplo, XC9536 tiene 2 FB y 36
macroceldas. Pero XC95288 tiene 16 FB y 288 macroceldas.
Otra importante caracterstica de esta familia es que cualquier dispositivo, por ejemplo,
XC95108 esta disponible en varios tipos de empaquetamientos. Esto es importante, ya
que en la mayora de las aplicaciones no es necesario que todas seales internas de
una mquina de estados o un subsistema sean visibles para ser usadas por el resto
del sistema. As que XC95108 tiene 69 pines I/O en empaquetamiento PLCC y 81
pines en empaquetamiento PQFP.
La Fig.1.15 presenta la configuracin de una macrocelda del XC9500. Igual como la
macrocelda de Altera tiene cinco trminos de producto (puertas AND) que pueden ser
conectados mediante Product Term Allocators que es una estructura equivalente a
Product Term Select Matrix de Altera y que permite que un termino de producto no
usado de una macrocelda puede ser usado por otra macrocelda del mismo FB.
M4
selecciona
una
entrada
de
Clock
entre
cuatro
fuentes:
Las entradas a PIM son las 18 salidas de las macroceldas de cada FB y las mismas 18
salidas son mandadas al IOB.
La Fig. 1.17 muestra la arquitectura interna tpica de los CPLDs de la familia XC9500.
Cada terminal externo I/O puede ser como una entrada, una salida o un pin
bidireccional.
Un pin puede ser usado como Set / Reset global (GSR) y cada macrocelda puede ser
programada para usar esta seal como un Preset o Clear asincrnico.
Finalmente, dos o cuatro pines pueden ser usados como Global three-state control
(GTS).
18
La tabla presentada indica los nombres de los principales fabricantes de los CPLDs.
2.
2.1.
La conexin entre los bloques lgicos y entre ellos y los bloque I/O se realiza
principalmente mediante recursos de interconexin horizontal. Existen tambien
recursos de interconexin vertical que facilitan la comunicacin entre los canales
horizontales y transmiten seales globales como Clock, etc. Los recursos de
21
22
Este tipo de organizacin de los FPGAs tiene una gran densidad de los bloques
lgicos configurables porque la ausencia de los recursos de interconexin en la capa
de los bloques lgicos permite un mejor aprovechamiento del rea.
En el mercado existen muchos FPGAs que pueden utilizar diferentes tipos de
CLB (Xilinx) / LAB (Altera).
Ms comnmente se utilizan los que estn basados en LUT (lookup table) o tabla de
bsqueda que contiene celdas de almacenamiento.
Es fcil entender que es una LUT si imaginamos una tabla de verdad almacenada en
una memoria. Usualmente los LUT tienen cuatro o cinco entradas, por lo tanto 16 o 32
celdas de almacenamiento.
Las celdas de almacenamiento son celdas tipo SRAM. Cada celda puede almacenar
un 0 o un 1 lgico.
En las salidas de los LUT se conecta la circuiteria adicional. La Fig. 2.3 muestra como
un flip-flop puede ser incluido en un bloque lgico.
2.2.
Los FPGAs solo utilizan los IOB / IOE (Elementos de I/O) tipo complejos.
Muy a menudo son aun ms complejos que los IOB de los CPLDs XC9500 de Xilinx.
Es decir, no hay una relacin predeterminada entre los bloques de I/O y las salidas de
los CLB / LAB.
Para vincularlas se usan los recursos de interconexin.
Se delegan a los bloques de I/O ciertas tareas de sincronizacin de datos externos.
Se cuenta con muchas opciones de configuracin, como control de slew rate, de
pullups o pulldowns, agregado de retardos, etctera.
24
Las
FPGAs
no
utilizan
tecnologa
EEPROM
para
implementar
los
switch
programables. En su lugar utilizan tambin las celdas SRAM para configurar los
alambres de interconexin. La Fig. 2.4 muestra una pequea seccin del FPGA.
2.4.
25
ser usada para la implementacin de dos funciones de tres entradas que son
funciones de suma y transporte (carry) en un sumador completo.
La Fig. 2.7 muestra la arquitectura total de un FLEX 10K que contiene un conjunto de
LABs, que a su vez contienen ocho LE basados en LUTs.
Adems, podemos observar la presencia de bloques adicionales EABs que son
Bloques de Arreglo Incrustado (embedded array block).
EAB es un bloque de SRAM que puede ser configurada para proporcionar una
memoria SRAM de varias dimensiones.
Los LABs y los EABs pueden ser interconectados usando las filas y columnas de
interconexiones.
Las filas y columnas de interconexiones tambin se utilizan para proporcionar
conexiones con terminales de entrada y salida del chip.
EAB contiene 2048 celdas de SRAM que pueden ser organizadas para proporcionar
un bloque de memoria de diferentes dimensiones: 256 x 8, 512 x 4, 1024 x 2 o
2048 x 1 bits.
Las entradas de direcciones (Address) y las entradas de datos (Data) para bloque de
memoria provienen de un conjunto de interconexiones locales (EAB Local
Interconnect).
Estas entradas y tambin la seal de habilitacin de escritura (WE) pueden
opcionalmente ser almacenadas en flip-flops. Las salidas de datos tambin pueden
opcionalmente ser almacenadas en flip-flop. En FPGAs muy grandes es posible
implementar un bloque de memoria grande combinando multiple EABs.
28
Los FPGAs tambin estn disponibles en varias velocidades cuyos valores se indican
por medio de letra del sufijo, por ejemplo, FLEX 10K 10A. El nmero que va despus
de letra de sufijo indica grado de velocidad, por ejemplo, FLEX10K 10A-1.
A diferencia de los CPLDs el grado de velocidad para un FPGA no especifica un
retardo real de propagacin en nanosegundos. El grado de velocidad representa una
relativa velocidad dentro la familia de los FPGAs. Por ejemplo, el FLEX10K 10-1 es
mas rpido que FLEX10K 10-2. El retardo de propagacin real depende de la
complejidad del circuito que se desea implementar.
2.5.
Xilinx XC4000.
La familia Xilinx XC4000 es una familia de los FPGAs con de 2 000 a 180 000 puertas
lgicas equivalentes.
La Fig. 2.9 presenta la estructura de bloque lgico configurable (CLB) del XC4000.
29
Cada CLB tiene tres LUT (lookup table) basadas en la memoria SRAM.
Las salidas de LUT G y F son funciones lgicas combinatoriales de cuatro variables.
Por medio de los mux programables M1 M3 las salidas G y F as como las entradas
adicionales C son direccionadas a las entradas de LUT H. La salida de LUT H es
entonces la funcin de tres variables.
Con apropiada programacin de los mux M7 M8 y M12 M13 las salidas de estas
tres LUTs pueden ser dirigidas a las salidas del CLB X e Y o pueden ser almacenadas
en flip-flops tipo D de disparo por flanco FF1 y FF2. Los flip-flops pueden usar el flanco
de subida o de bajada del CLK comn K que se seleccionan por medio de los mux M9
y M14. Los flip-flops tambin pueden usar la seal de habilitacin EN que se
selecciona por los mux M10 y M15.
Las salidas XQ e YQ son salidas de los flip-flops. Si un flip-flop no es usado en esta
CLB los mux M11 y M16 pueden seleccionar las salidas XQ YQ para las seales C
seleccionadas por medio de los mux M4 y M6.
Un FPGA de la familia XC4000 puede tener desde 64 hasta 3 136 CLB.
Naturalmente, la configuracin del dispositivo no se realiza manualmente, sino por
medio de herramientas CAD.
La Fig. 2.10 muestra la estructura de un bloque de entrada/salida.
Un bloque de I/O puede ser usado para entrada, para la salida o para ambos.
IOB de XC4000 tiene ms lgica de control que IOB de XC9500.
Sus lneas de entrada y salida tienen flip-flops tipo D de disparo por flanco
seleccionables por los mux M5 M7. Esto resulto muy til.
Por ejemplo, en la salida, el retardo relativamente grande de un flip-flop interno de un
CLB al IOB puede crear la dificultad para conexin con un sistema sincrnico externo
que trabaja con un Clock muy rpido.
En la entrada, el retardo grande desde los pines I/O hasta la entrada del flip-flop de un
CLB puede crear problema si las seales de entrada externas no son guardadas
primero por un flip-flop del IOB.
Otro control del IOB selecciona la polaridad de las entradas provenientes desde CLB
usando los mux M1 M4. Estas entradas son: OUT (output bit), T (three-state enable),
OCLK (output clock) e ICLKEN (input clock enable).
Como XC9500 IOB, XC4000 IOB tiene programacin de flancos de subida y de bajada
de seales de salida y las resistencias pull-up y pull-down.
Cada CLB en un FPGA esta incrustado en una estructura de interconexiones los
cuales son unos alambres con conexiones programables entre ellos.
La Fig. 2.11 muestra un CLB y los alambres de interconexin.
Los cuatro alambres en el grupo Global son para usarlos como entradas de Clock
hacia CLBs con un retardo muy corto.
Los dos grupos Single son para conexin flexible entre bloque adyacentes.
Los dos grupos Direct Connect son de dos alambres nicamente y tienen limitaciones
a causa de que son unidireccionales.
Es posible conectar un CLB con otro que no es CLB adyacente usando los alambres
Single, pero ellos tienen que conectarse por medio de los switch programables, lo que
agrega retardo adicional. Los alambres de grupos Double estn interconectados
pasando dos CLBs lo que proporciona menores retardos para conexiones ms largas.
Para conexiones realmente largas los grupos Long son ms apropiados ya que ellos
se conectan tanto con filas como con columnas de alambres y son manejadas por los
drivers de tres estados cercanos al CLB.
31
La tabla presentada indica los nombres de los principales fabricantes de los FPGAs.
32
Productos recientes.
Altera.
APEX 20K
La familia APEX 20K es la siguiente generacin de los FPGAs despus de FLEX 10K.
Su Elemento Lgico (LE) es una versin optimizada del mostrado en la Fig. 2.5
y contiene un LUT de cuatro entradas y un flip-flop.
1 200 a 51 840 LE. Lo nuevo en este FPGA es el hecho que los Bloques Lgicos
Configurables estn agrupados en MegaLABs con hasta ms de 24 LABs en una
MegaLAB. Y contiene tambin un bloque de memoria llamado Embedded System
Block (ESB) que es similar a EAB de la Fig. 2.8 pero es mucho mas grande.
Stratix
Stratix es el FPGA que sustituye la familia APEX. Cada chip contiene columnas de
recursos de varios tipos. Las columnas de LABs tienen LAB con 10 LE en cada LAB.
Cada LE tiene LUT de cuatro entradas y un registro y puede ser configurado en una
variedad de modos. Hay tambin varios tipos de recursos de alambrado. Las
conexiones dentro de un LAB estn hechas usando recursos locales rpidos. Para la
conexin de una LAB a otra existen conexiones vecinales cercanas, alambres que
cruzan cuatro columnas o filas y alambres largos. Adems, Stratix tiene tres otros
tipos de columnas. Las columnas M512 son los bloques de memoria con 512 bits cada
uno. Y las columnas M4K tienen grandes bloques de memoria con 4K bits por bloque.
Tambin hay bloques de memoria muy grandes llamados MegaRAMs con 512K bits
cada uno. Finalmente hay columnas con bloques DSP (Digital Signal Processing).
Cada uno de estos bloques incluye circuitos multiplicadores y sumadores para permitir
rpida multiplicacin y suma (acumulacin) de datos. Chips Stratix estn disponibles
en tamao de 10 570 a 79 040 LE.
Cyclone
Los FPGAs Cyclone estn basados en la arquitectura Stratix pero pensada para las
aplicaciones de bajo costo. Un chip Cyclone tiene la misma estructura bsica con la
excepcin que no tiene las columnas DSP y tiene solo los bloques de memoria M4K.
Los FPGAs Cyclone estn disponibles en tamaos de 2 920 a 20 060 LE y 288K bits
de memoria.
33
Xilinx.
Virtex
Los FPGAs Virtex son la siguiente generacin de las familias despus de XC4000.
Cada chip Virtex tiene recursos lgicos llamados CLBs y recursos de memoria
llamados BRAMs (Block RAMs). El CLB es una versin mejorada del de la Fig. 2.9.
Pero los CLB de Virtex estn divididos en dos partes. Cada parte es llamada slice.
Cada slice tiene dos LUT de cuatro entradas, dos registros y lgica aritmtica. El
bloque BRAM tiene 4K bits de memoria que puede ser configurada de 4096 x 1 hasta
256 x 16. Los FPGAs Virtex estn disponibles en tamaos de 256 a 46 592 CLB
slices.
Los FPGAs Virtex II y Virtex II Pro son sucesores de la familia Virtex. Ellos
ofrecen tamaos de 3 168 hasta 99 216 LE y mas que 8M bits de memoria. Los LE
estn arreglados en slices similares al FPGA de Virtex pero con cuatro slices en un
CLB. El chip de Virtex II Pro incluye uno o ms ncleos de microprocesadores
dentro del chip y tiene avanzadas caractersticas adicionales que no estn presentes
en Virtex II.
Spartan 3
Los FPGAs Spartan 3 son la versin de bajo costo de la arquitectura del Virtex II.
Similar a Virtex II los LE estn arreglados dentro de CLBs en cuatro slices, pero no
todos los slices tienen el mismo conjunto de caractersticas que como en Virtex II.
Los chips Spartan 3 estn disponibles en tamaos de 1728 hasta 74 880 LE y mas
1.8M bits de memoria.
Un FPLD puede reemplazar el diseo con los mltiples chips de la vieja tecnologa.
Adems, los FPLDs se utilizan en reas de procesamiento digital de seal (DSP),
procesamiento de imagen, aplicaciones de multimedia, comunicaciones de alta
velocidad y en equipos de red como routers y switches, en implementacin de
protocolos de bus tales como interconexin de componentes perifricos (PCI), en
circuitos de interfase de procesadores (llamados glue lgic), coprocesadores y
microcontroladores perifricos.
Algunos grandes FPLDs con una red de interconexin adicional son usados para
construir Emuladores de Hardware. Emuladores de Hardware son dispositivos
comerciales diseados especialmente para probar complejos diseos de hardware que
luego
sern
implementados
como
dispositivos
Full
Custom
tales
como
35
El conjunto de los parmetros que pueden ser analizados para la eleccin de un FPLD
adecuado pueden ser clasificados en tres categoras:
1. Parmetros tcnicos, que incluyen
Arquitectura interna
Frecuencia mxima de operacin
Tecnologa del PLD
Verificabilidad
Fiabilidad
Proteccin de la propiedad intelectual
Encapsulado
Herramientas de CAD
Servicio tcnico del fabricante
Costos
Disponibilidad
Estabilidad en el mercado
36