Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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 en 2002 con la familia FPGA Stratix con bloques DSP embebidos.
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.
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.)
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))
Se consigue en la salida XOR la obtención de una señal igual o inversa que en la salida OR.
- 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:
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.
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.
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.
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.
- 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.
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.
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.
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.
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:
- Disponibilidad
- Estabilidad en el mercado