Está en la página 1de 24

Capítulo 4: Fundamos de Dispositivos de Lógica Programable

Tubo de vacío: 1906


Transistor: 30 de Junio de 1948, se creó para sustituir el tubo de vacío
Primer circuito integrado: Fairchild Semiconductor en 1961
Integración a pequeña escala (SSI): 12 compuertas por chip
Integración a mediana escala (MSI): 12 a 99 compuertas por chip
Integración a gran escala y a muy gran escala (LSI y VLSI): decenas de miles de
compuertas por chip.
Integración a ultra gran escala (ULSI): 100.000 compuertas por chip
Integración a Giga Escala (GSI): 1 millón o más de compuertas por chip
En 1964 se introdujo la TTL ( transistor-transistor Logic) por Texas Instruments con la
serie 74, abarca los tipos SSI y MSI utilizando diodos, resistencias y el transistor bipolar
para obtener funciones lógicas estándar, trabaja con 5V. (Actualmente Obsoleta).
Como ventajas tiene una mayor velocidad de propagación de señales internas, mejor
inmunidad contra el ruido, baja susceptibilidad a las cargas estáticas.
CMOS (Complementary Metal-Oxide Semiconductor) utiliza transistores de efecto de
Campo NMOS y PMOS, se crea porque las resistencias de la TTL ocupaban mucho
espacio. Como ventajas tiene un menor espacio en el silicio para colocar más
componentes, trabaja con diferentes voltajes (3V hasta 18V), utiliza menos potencia
que las TTL.
Transistores MOSFET (Field-Effect Transistor MOS) utiliza diferentes configuraciones
dentro del mismo circuito para tener mayor ventaja sobre NMOS y PMOS.

Intel 4004: Primer procesador creado por Intel el 15 de Nov. De 1971. Contenía 2300
transistores, velocidad de 740KHz.

PAL (Programmable Array Logic): Creado en 1978, solo se podía programar una vez y
diseñado para crear la forma estándar de la suma de productos (SOP). Tenía una serie de
macro celdas y cada una contiene una matriz de conmutación que podría conectar
cualquiera de las entradas y salidas del chip hasta 8 términos de productos.

Altera se fundó en 1983 presentando su primer chip el EP300, este era reprogramable, se
podría borrar la configuración EPROM para ser programado de nuevo. Este chip es CMOS
es decir consumía menos potencia y diseñado de forma universal.
Altera hasta la serie EP1800 que contenía 48 macro celdas y 68 pines, se dejaron de crear
en PAL por la gran cantidad de celdas y pines que conllevaba.

Se crea la FPGA (Field Programmable Gate Array) en 1985, contiene un arreglo de celdas
lógicas conocidas como elementos lógicos (LEs). Cada Les tenía 3 entradas que van a una
tabla de búsqueda (LUT) para generar funciones lógicas, un flip-flop configurable y MUXs
para direccionar las señales de entrada, salida o internas y seleccionar señales de reloj.

PLDs complejos (CLPD) tenía 2 ventajas con respecto a las FPGA, sus conexiones internas
en la matriz se aprovecharon de mejor manera que las LUTs ya que al agregar más
entradas tenía que ser en cascada y como otra ventaja como todas sus señales estaban
conectadas se conocía el tiempo de propagación, en comparación a la FPGA que era
impredecible.

CLPDs de Altera con la familia MAX5000 en 1988.

Creación de lenguajes de programación por creadores de las CPLDs y FPGAs, se crea el


lenguaje de hardware Verilog (Verilog HDL) y después apareció VHDL (Very High Speed
Integrated Circuit HDL).

Debido al incremento de más de 10mil puertas lógicas, se diseñó un MCU ( Microcontroller


Unit) de 8 bits con 3000 puertas lógicas y un procesador simple de 16bits.

Se pensó la creación de pequeños CPU (Central Processing Unit) como subsistemas que
interactúen con otros pines del chip, se necesitó el uso de bloques SRAM embebidos
dentro del chip.

Altera en 1995 con familia FLEX 10K, implementaba el mismo concepto de las CPLDs en
cuanto a diseño, arquitectura, tiempos de programación predecibles, usando SRAM
embebidas y LUT.
En 1996 Altera creo la familia FLEX con PPL interno y programable permitiendo crear
subsistemas en el chip.

Altera creo bloques con propiedad intelectual (IP), el más solicitado eran los CPU, llegando
el CPU NIOS en el 2000.

Altera Mercury, con bloques IP con tasas de velocidad hasta 1.25Gbps.

Comienzo de tratamiento de señales (DSP) para conexiones inalámbricas, implementando


el multiplicador-acumulador, bloque principal IP.

Altera en 2002 con la familia FPGA Stratix con bloques DSP embebidos.

Creación de subsistemas en lenguaje Verilog, construyendo un sistema de circuito


integrado programable (SOPC builder). Usada en la actualidad.

Los sistemas en un chip siguen un nivel jerarquico basado en el computacional, compuesto


de un CPU, memoria cache, controlador a una DRAM, sistema de bus Avalon.

Diseño de un SoC

Los diseños basados en SoC permiten el uso de aceleradores numericos que incrementan la
rapidez de los bloques procesamiento de la DSP embebidaos en FPGA, al incrementar la
integracion de los circuitos como memoria RAM y bloques DSP, tenia mayor eficiencia de
energia.

Los multinucleos en la FPGA se centro en 2 cosas: replicar varios nucleso de CPU que esten
conectados entre ellos, los componentes y puertos perifericos, y la segunda idea fue utilizarlos
en sistemas heterogeneos conformados por un nucleo CPU, aceladores de hardware.
Diseño de un SoC Multinúcleo Heterogéneo.

Fundamentos Teóricos de CPLD


CPLD (Complex Programmable Logic Device), es una colección de PLDs individuales
dentro de un chip, permite a los PLDs estar conectados entre sí dentro del chip con
una estructura programable de interconexión.
Un PLD es un dispositivo lógico que está confirmado por compuertas AND y OR, la
configuración de la izquierda es la más formal y la del lado derecho es la simplificada.

Cada compuerta OR puede producir una salida en función de las variables de entrada,
cada salida se programa con los fusibles ubicados entre las compuertas AND y OR.
Tipos de configuraciones de los PLDs:
Puertas AND fijas y puertas OR programables: Se referirá a un PLD de tipo ROM.
Puertas AND programables y puertas OR programables: PLD de tipo PLA.
Puertas AND programable y puertas OR fijas: PLD de tipo PAL.
Para los CPLDs usualmente se utiliza el termino macro celda para referirse a la puerta
OR combinada con circuitería adicional (FFs, Mux, buffers de 3 estados)
Se puede implementar de diferentes maneras tanto por Bloques Lógicos, Bloques de
Entrada/Salida e Interconexiones Programables (CPLDs con macro celdas complejas,
CPLDs con bloques lógicos complejos, CPLDs con recursos lógicos adicionales, CPLDs con
recursos de interconexión distribuidos, etc.)

Bloques de Arreglos Lógicos (LAB) / Bloques Funcionales (FB)

CPLD formador por 4 LAB (Altera) / FB (Xilinx) tipo PAL (PLA) conectadas por interconectores.

Cada Bloque Logico PAL conectado a un subcircuito (Bloques de Entrada / Salida (I/O BLock))

- La cantidad de bloques logicos de una CPLD dependera de la familia y el fabricante, un


CPLD comercial puede tener mas de 100 bloques LAB/FB.
Este LAB/FB incluye 4 macroceldas (un CPLD real XC95288 de fabricante Xilinx tiene 288
macro celdas en 16 bloques). Cada macro celda tiene una puerta OR (4 entradas, si es real
puede tener hasta 20 entradas OR). Las salidas de las puertas OR conectadas a las entradas
de las XOR.

Una de las entradas XOR se puede programar para conectarse a 0 o 1.

Se consigue en la salida XOR la obtención de una señal igual o inversa que en la salida OR.

Las macro celdas incluyes:

- FFs que son usados para almacenar los valores producidos por las OR.
- Buffers de 3 estados que actúan como interruptores para que cada terminal se use
como entrada o salida.
- Multiplexores

Para usar el terminal como salida, el buffer debe habilitarse y si se quiere usar como
entrada, el buffer se deshabilita. Una señal externa puede ser aplicada al terminar y
mandarse a otras macro celdas.

Un CPLD tiene macro celdas de entrada o entrada/salida. También hay macro celdas de
salidas que son usadas internamente llamadas macro celdas ocultas (buried macrocells).
En este diagrama se implementan 3 tipos de elementos de almacenamiento:

- Latch es un FF tipo D con disparo por nivel

Se puede implementar como Suma de Productos (SOP) con realimentación


Matriz de Interconexiones Programables ( Programmable Interconect Matrix / PIM o
Programmable Interconect Array / PIA)

Permite unir terminales de entrada/salida a las entradas o salidas del bloque logico a
las entradas de otro bloque logico o a las mismas entradas del bloque.
Un elemento basico de la PIM/PIA es un switch programable y borrable electricamente
basado en el comportamiento del transistor EEPROM.

El transistor EEPROM tiene 2 puertas:


- Puerta (Gate) normal del transistor NMOS y Floating Gate. Se llama flotante
porque esta rodeado de vidrio aislante y no esta conectado a ningun lado del
transistor.
- Si el transistor no esta programado la puerta flotante no tendra efecto y el
transistor funciona como uno normal.
- Durante la programacion se aplica a la puerta normal del transistor EEPROM un
voltaje elevado (Ve=12V) esto causa una gran corriente por el transistor, los
electrones penetran a traves del aislante y se queden atrapados en el floating
gate.
- Despues de la programacion los electrones atrapados repelen los electrones
que intentan pasar por el canal y hace que el transistor este abierto.
- Para revertirlo (borrar), aplicar el voltaje del mismo valor utilizado en para la
programacion pero con polaridad opuesta, los electrones atrapados regresaran
bajo la puerta flotante.
Los CPLDs usan 2 configuraciones de PIM/PIA:
- Interconexiones mediante arreglo: se basa en una matriz de filas y columnas con
un switch programable en cada intersección, puede ser activado para conectar o
desconectar la correspondiente fila y columna, permitirá una total interconexión
entre las entradas y salidas de los bloques lógicos.
- Interconexiones mediante multiplexores: existe un multiplexor por cada entrada
al bloque lógico, las vías de interconexión programable son conectadas a las
entradas de un número fijo de multiplexores por cada bloque lógico. Las entradas
de selección de estos Mux son programadas para permitir que se seleccione una
sola vía de la matriz de interconexiones por cada Mux.

Una PIM/PIA tipica su diseño dependera la velocidad, area y costo de un CPLD.


Bloques de Entrada/Salida (IOB)
Se consideran parte del bloque logico, pero no es necesario que este en la salida de
un bloque logico. La funcion de un IOB es permitir el paso de una señal hacia dentro
o hacia el exterior del dispositivo es decir son bidireccionales.

Existen básicamente dos tipos de IOB:

- IOB elementales: sólo permiten definir si el pin será de entrada, salida o


bidireccional, y cada IOB está asociado a un Bloque Lógico determinado.

- IOB complejos: cuentan con muchas opciones de configuración, realizan


algunas tareas de sincronización de datos externos, no tienen una relación
predeterminada con los Bloques Lógicos si se vincula se debe usar los
recursos de la PIM.
Analisis de un CPLD de Altera
Altera MAX 7000: Matriz de Arreglo Múltiple (Multiple Array MatriX) es familia de
CPLDs con 600 a 20000 puertas, se configuran programando una memoria
EEPROM interna.
Existen las familias MAX 5000, MAX 7000, MAX 3000 y MAX 9000.

- MAX 7000: contiene de 600 a puertas equivalentes arreglados en 32 a 512 macro


celdas
- Un MAX EPM7128SLC84-7 tiene 128 celdas. Si hay letra S presente en el nombre
del chip esto significa que es programable in-system
- Las subfamilias MAX 7000S y MAX 7000E tienen posibilidad de control de la
pendiente de señales de salida, tiene también opción de salida de colector abierto.

Tipos de Empaquetamiento:
- PLCC
- PGA
- PQFP
- TQFP
Tiene un bit de seguridad que impide lectura de la configuracion del PLD.
Hay cinco términos de productos (puertas AND) que pueden ser conectados mediante
Product Term Select Matrix (matriz de selección de términos de producto) a la puerta OR.
Esta OR puede ser configurada para usar solo los productos necesarios para implementar
la función deseada. Cuando se requiere más de cinco productos pueden ser utilizados
productos adicionales de otras macro 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 característica se llama
“parallel expanders” y es usada para funciones lógicas con hasta 20 términos de
productos.

Si se requiere aún más de términos de productos, entonces se usa una característica


llamada “shared expanders”.

Un “shared expander” puede ser usado por cualquier macro celda en el mismo LAB
Cada IOB está asociada a una macrocelda determinada.
Por medio del Mux se puede seleccionar una de las señales de control para que el
pin de I/O funcione solo como salida cuando buffer está habilitado, solo como
entrada cuando buffer esta deshabilitado o como I/O bidireccional controlado por
las entradas externas OE.
Cada dispositivo MAX 7000 específico está disponible en un rango de velocidades.
Estas velocidades indican el retardo de propagación desde un pin de entrada a
través del PIA y una macrocelda a un pin de salida.
Por ejemplo, un chip EPM 7128S-7 tiene retardo de propagación de 7.5 ns.
Si la función lógica implementada usa parallel o shared expanders, el retardo de
propagación se incrementa.

Analisis de un CPLD de Xilinx


Xilinx XC9500: Tienen similar arquitectura pero diferente número de terminales de
entrada / salida externos y diferente cantidad de PLDs internos llamados FB (Funcional
Block). El XC9536 tiene 2 FB y 36 macro celdas.

XC95108 tiene 69 pines I/O en empaquetamiento PLCC y 81 pines en empaquetamiento


PQFP.

Configuración de una macro celda XC9500. Tiene cinco terminos de producto (AND) que se
conectan mediante Product Term Allocators, permite que un término de producto no
usado de una macrocelda puede ser usado por otra macrocelda del mismo FB.
S1-S8: elementos de direccionamiento que conectan el término de producto (AND) a
una de sus dos o tres salidas
M1-M5: multiplexores programables para seleccionar una de sus entradas y pasar a la
salida.
S1-S5: conectada a la puerta OR principal G4. (Pero no significa que estén disponible
cinco términos)
Estructura básica de un FB XC9500

Cada FB de cualquier familia XC9500 tiene 36 entradas que recibe de PIM y 18 macro
celdas y, por lo tanto, 18 salidas.
Las entradas a PIM son las 18 salidas de las macro celdas de cada FB y las mismas 18
salidas son mandadas al IOB.
Cada terminal externo I/O puede ser como una entrada, una salida o un pin
bidireccional.
También hay pines de propósitos especiales.
Tres pines de Clock global (GCK).
Cada macrocelda puede ser programada para usar un Clock seleccionado.
Un pin puede ser usado como Set / Reset global (GSR) y cada macrocelda puede ser
programada para usar esta señal como un Preset o Clear asincrónico.
Finalmente, dos o cuatro pines pueden ser usados como Global three-state control
La arquitectura de IOB del XC9500
Mux M0 se puede elegir una de las siete señales para habilitar el output driver que es
un buffer de tres estados
Output driver puede ser “on” si se desea utilizar el pin I/O como salida como, puede
ser “off” si el pin I/O se usa como entrada, puede ser controlado por el PTOE de la
macro celda correspondiente o controlado por cualquiera de los cuatro GTS.
Slew-rate control permite control de tiempo de subida y bajada de las señales de
salida. Mientras más lento sea el tiempo ayuda a eliminar el ruido del sistema
añadiendo un retardo y borrando el zumbido de la línea de transmisión.
Pull-up resistor previene que los pines estén en el estado flotante en el momento de
prender la fuente de poder.
User-programmable groud reasigna a un I/O pin para ser un pin de tierra. Esto es útil
en aplicaciones de altas velocidades. Pines extra de tierra son necesarios para manejar
las altas corrientes dinámicas.
La familia XC9500 compatible con 5V y con 3.3V.

Fundamentos Teóricos de FPGA:


Una macrocelda representa como 20 puertas equivalentes y así que un CPLD grande
con 1000 macroceldas representa 20 000 puertas equivalentes.
Un FPGA es un dispositivo lógico configurable que puede implementar los circuitos
lógicos relativamente grandes

Los FPGAs están formados por tres elementos principales:


- Bloques lógicos configurables / Bloques de Arreglo Lógico
- Bloques de entrada/salida
- Interconexiones programables

La mayor o menor concentración de Bloques Lógicos se denomina granularidad.


Bloques Lógicos Configurables (CLB) / (LAB)

- FPGA de organización tipo terraza, donde los bloques lógicos están dispuestos
en filas separadas por los canales en los que se ubican los recursos de
interconexión horizontal.

La conexión entre los bloques lógicos y entre ellos y los bloque I/O se realiza
principalmente mediante recursos de interconexión horizontal. Existen también
recursos de interconexión vertical que facilitan la comunicación entre los canales
horizontales y transmiten señales globales como Clock, etc.

- FPGA de organización tipo cuadricula (Manhattan), donde los bloques lógicos


están dispuestos en forma de filas y columnas delimitadas por los recursos de
interconexión que se extiende de forma vertical y horizontal entre los bloques .
- FPGA de organización tipo mar de puertas, donde los bloques lógicos también
están dispuestos en filas y columnas como en la cuadricula, pero los recursos
de interconexión se solapan con los bloques lógicos. Para ello los recursos de
interconexión se sitúan en capas diferentes de las de los bloques lógicos.

Este tipo de organización de los FPGAs tiene una gran densidad de los bloques lógicos
configurables porque la ausencia de los recursos de interconexión en la capa de los
bloques lógicos permite un mejor aprovechamiento del área.

Muchas FPGAs que pueden utilizar diferentes tipos de CLB (Xilinx) / LAB (Altera).
Basadas en LUT que contiene celdas de almacenamiento

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 lógico.
En las salidas de los LUT se conecta la circuitería adicional.
El flip-flop es usado para almacenar la salida de LUT bajo control de Clock. Como las
celdas de almacenamiento son de tipo SRAM, la información se pierde cuando se
apaga la fuente de alimentación, para solucionar esto se puede conectar una pequeña
PROM.

Bloques de Entrada / Salida


Los FPGAs solo utilizan los IOB / IOE (Elementos de I/O) tipo complejos. Son aún más
complejos que los IOB de los CPLDs XC9500 de Xilinx. No hay una relación
predeterminada entre los bloques de I/O y las salidas de los CLB / LAB. Para vincularlas
se usan los recursos de interconexión. Se delegan a los bloques de I/O ciertas tareas de
sincronización de datos externos. Alguna de estas opciones:
- Control de slew Rate, pullups o pulldowns
- Agregado de retardos, etc.

Interconexiones Programables
Las FPGAs no utilizan tecnología EEPROM para implementar los switch programables,
utilizan celdas SRAM para los alambres de interconexión.

Una LUT genera en el alambre horizontal la señal f1. Para conectar esta señal con
algún alambre vertical se usa el switch programable. Cada switch es implementado
usando un transistor NMOS cuyo terminal Gate es controlado por una celda SRAM.
Si un 0 es almacenado en una celda SRAM, entonces el transistor NMOS
correspondiente a esta celda no está conduciendo. Pero si en la celda SRAM se
almacena un 1, entonces transistor conduce y de esta manera se forma la conexión
entre los dos alambres conectados a los terminales Drain y Source del transistor.

Análisis de un FPGA de Altera


Altera FLEX 10K:
Matriz de Elemento Lógico Flexible (Flexible Logic Element MatriX) es una familia de
dispositivos FPGA con 10 000 a 250 000 puertas lógicas equivalentes.

Elemento Lógico (LE) basado en LUT de un FPGA FLEX 10K. Un LE tiene una LUT de
cuatro entradas y un flip-flop que puede ser bypasseado.
Clock, Clear y Preset pueden ser configurados por la lógica interna o por un pin I/O
externo. El flip-flop puede ser configurado como flip-flop D, flip-flop T, flip-flop JK o
como SR latch (celda binaria).
Un LAB está compuesto de ocho LE y puede recibir las señales provenientes tanto de la
fila adyacente de interconexiones (Row Interconnect) como de un conjunto de
interconexiones locales (LAB Local Interconnect).
Las señales de entradas de los LE provienen desde el conjunto de interconexiones
locales, que también recibe señales de salidas de los LE. A su vez las salidas de los LE
también se conectan a la columna y fila adyacente de interconexiones.

Un FLEX 10K que contiene un conjunto de LABs, que a su vez contienen ocho LE
basados en LUTs. Además, podemos observar la presencia de bloques adicionales EABs
que son Bloques de Arreglo Incrustado (embedded array block).
Un EAB es un bloque de SRAM que puede ser configurado para proporcionar
una memoria SRAM de varias dimensiones. Los LABs y los EABs pueden ser
interconectados usando las filas y columnas de interconexiones.

Un EAB es un bloque de SRAM que puede ser configurado para proporcionar una
memoria SRAM de varias dimensiones. Los LABs y los EABs pueden ser
interconectados usando las filas y columnas de interconexiones.
Un 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 también la señal de habilitación de escritura (WE)
pueden opcionalmente ser almacenadas en flip-flops. Las salidas de datos también
pueden opcionalmente ser almacenadas en flip-flop.
Los FPGAs también están disponibles en varias velocidades cuyos valores se indican
por medio de letra del sufijo, por ejemplo, FLEX 10K 10A. El número que va después de
letra de sufijo indica grado de velocidad, por ejemplo, FLEX10K 10A-1.

Análisis de un FPGA de Xilinx


La familia Xilinx XC4000 es una familia de los FPGAs con de 2 000 a 180 000 puertas
lógicas equivalentes.

Cada CLB tiene tres LUT (lookup table) basadas en la memoria SRAM. Las salidas de
LUT G y F son funciones lógicas combinatoriales de cuatro variables. Por medio de los
mux programables M1 – M3 las salidas G y F así como las entradas adicionales.
Un FPGA de la familia XC4000 puede tener desde 64 hasta 3 136 CLB.
Naturalmente, la configuración del dispositivo no se realiza manualmente, sino por
medio de herramientas CAD.
Un bloque de I/O puede ser usado para entrada, para la salida o para ambos.
IOB de XC4000 tiene más lógica de control que IOB de XC9500. Sus líneas de entrada y
salida tienen flip-flops tipo D de disparo por flanco seleccionables por los mux M5 –
M7.

Aplicaciones:

- Actualmente la alta densidad, alta velocidad y ventajas de costo han impulsado


el uso de los FPLDs (así se llaman los CPLD y FPGA juntos) en una amplia
variedad de los diseños.
- La nueva generación de FPLDs puede tener cerca de 10 millones de puertas y la
frecuencia del Clock de varios GHz.
- Un FPLD puede reemplazar el diseño con los múltiples chips de la vieja
tecnología.
Los FPLDs se utilizan en áreas de procesamiento digital de señal (DSP):
- procesamiento de imagen
- aplicaciones de multimedia
- comunicaciones de alta velocidad
- equipos de red como routers y switches, en implementación de protocolos de
bus tales como interconexión de componentes periféricos (PCI), en circuitos de
interfase de procesadores (llamados “glue lógic”), coprocesadores y
microcontroladores periféricos.
- Emuladores de Hardware diseñados especialmente para probar complejos
diseños de hardware que luego serán implementados como dispositivos Full
Custom tales como microprocesadores,
Criterios de Selección del FPLD

- Cantidad de parámetros que depende de las características que debe poseer el


Sistema Digital
- Frecuencia de Trabajo
- Costo
- Velocidad

1. Parámetros técnicos, que incluyen:


- Arquitectura interna
- Frecuencia máxima de operación
- Tecnología del PLD
- Verificabilidad
- Fiabilidad
- Protección de la propiedad intelectual
- Encapsulado

2. Parámetros de diseño, que incluyen:


- Herramientas de CAD

- Servicio técnico del fabricante

3. Parámetros comerciales, que incluyen:


- Costos

- Disponibilidad

- Estabilidad en el mercado

También podría gustarte