Avisar de contenido inadecuado

Dispositivos Logicos Programables (parte 2)

{
}

DISPOSITIVOS LOGICOS PROGRAMABLES

 

FPGA'S

La FPGA representa uno de los ultimo avances en tecnología de dispositivos lógicos programables, es importante señalar que una FPGA realmente se re configura con un programa, a diferencia de lo que normalmente se conoce como sistema programado (microcontrolador, microprocesador etc) en donde un hardware fijo es capaz de interpretar y ejecutar un programa especificado como un conjunto de instrucciones por el programador, en las FPGA lo que se tiene es un hardware que se configura realizando conexiones físicas que son especificadas por un programa o cadena de configuración.

Es importante notar que al realizar un diseño con FPGA se presentan los mismos inconvenientes que al realizar un sistema con componentes discretos, es decir toman relevancia los fenómenos de retardo de propagación y los relacionados con las señales de clock.

Los primeros dispositivos lógicos programables eran las PAL o los SPLD, estos presentaban compuertas (AND / OR) fijas que podían ser programadas para responder a determinadas funciones de transferencias.

Las FPGA a diferencia de los SPLD y PAL, es que su estructura no esta compuesta por compuertas AND/OR , en su lugar contienen blocks lógicos para implementar las funciones requeridas. La estructura general de una FPGA se muestra en la Fig. 27.

 

F_27

Figura 27, Estructura general de una FPGA

 

ESTRUCTURA DEL FPGA

Un FPGA consiste en arreglos de varios bloques programables (bloques lógicos) los cuales están interconectados entre sí y con celdas de entrada/salida mediante canales de conexión verticales y horizontales, tal como muestra la figura 27. En general, se puede decir que posee una estructura bastante regular, aunque el bloque lógico y la arquitectura de rutado varía de un fabricante a otro.

La estructura de un FPGA, comparada con la de una CPLD, es mucho más regular, y se encuentra más orientada a diseños que manejan mayores transferencias de datos y registros, en tanto que las CPLD implementan más efcientemente diseños con una parte combinacional más intensa.

La arquitectura de una CPLD es una agrupación de PALs o GALs, interconectadas entre sí. Cada bloque lógico tiene su propia parte combinacional que permite realizar un gran número de funciones lógicas programables, más un biestable asociado al pin de entrada/salida en caso de encontrarse habilitado. La arquitectura de la FPGA cuenta también con un bloque lógico con una parte combinacional y una parte secuencial. La parte combinacional es mucho más simple que la de una de las PAL interna de una CPLD. La parte secuencial posee uno o dos biestables, que no están generalmente asociados a un pin de entrada salida, pues los bloques lógicos se distribuyen regularmente en todo el dispositivo. Ver figura 28.

 

fpga_1

Figura 28, Esquema basico de un FPGA

 

No todas las FPGA son iguales. Dependiendo del fabricante nos podemos encontrar con diferentes soluciones. Las FPGAs que existen en la actualidad en el mercado se pueden clafisicar como pertenecientes a cuatro grandes familias, dependiendo de la estructura que adoptan los bloques logicos que tengan detenidos. Las cuatro estructuras se pueden ver en la figura 29, sin que aparezcan en la misma los bloques de entrada/salida.

1. Matriz simetrica, como son las de XILINX
2. Basada en canales, ACTEL
3. Mar de puertas, ORCA
4. PLD jerarquica, ALTERA o CPLDs de XILINX.

En concreto, para explicar el funcionamiento y la estructura basica de este tipo de dispositivos programables solo se consideraran las distintas familias de XILINX.

 

fig_29

Figura 29, Tipos de FPGA's

 

Bloques Lógicos

El bloque lógico consta de una parte combinacional, que permite implementar funciones lógicas booleanas, más una parte secuencial que permite sincronizar la salida con una señal de reloj externa e implementar registros. La parte combinacional varía de un fabricante a otro. A continuación, explicaremos dos de ellas, representativas porque poseen unas prestaciones opuestas.


Bloque lógico basado en LUT (look-up table): Una LUT es un componente de células de memoria SRAM que almacena una tabla de verdad. Las direcciones de las células son las entradas de la función lógica que queremos implementar, y en cada celda de memoria se guardan el resultado para una de las combinaciones de las entradas. En una LUT de n x 1 es posible implementar cualquier función lógica de n entradas. Ver figura 30.

 

fig_30

Figura 30, Ejemplo de implementación de una función lógica de tres entradas en una LUT de 8 x 1

Bloque lógico basado en multiplexores: El bloque lógico basado en multiplexores, se caracteriza porque requiere mucha menos lógica que el anterior basado en una LUT, y, en consecuencia, ocupa mucha menos área. De este modo, se pueden implementar mayor número de bloques lógicos en el mismo espacio, o, para el mismo número de bloques, disponer de más espacio para incrementar los recursos de rutado. Como contrapartida, no se puede implementar cualquier función lógica de n entradas, como ocurría con las LUTs. En caso necesario, esta función lógica hay que repartirla entre varios bloques lógicos. Ver figura 31.

 

fig_31

Figura 31, Bloque lógico basado en multiplexores

La estructura de los bloques programables y las formas en que estas pueden ser interconectadas, tanto salidas como entradas de los bloques, varía de acuerdo al fabricante. En general un bloque programable tiene menos funcionalidad que la combinación de sumas de productos y macroceldas de un CPLD, pero como cada FPGA tienen una gran cantidad de bloques programables es posible implementar grandes funciones utilizando varios bloques en cascada.

 

Interconexión entre bloques programables

Además de los bloques programables también es importante la tecnología utilizada para crear las conexiones entre los canales (tecnología de programación). Las más importantes son las siguientes:

1. Antifusible (Antifuse): Al igual que la tecnología PROM (memoria de solo lectura programable), un FPGA que utiliza este tipo de tecnología sólo se puede programar una sola vez, y utilizan algo similar a un fusible para las conexiones. Una vez que es programado ya no se puede recuperar. La diferencia entre un fusible y un antifusible es que el primero se desactiva deshabilitando la conexión, en cambio, para el segundo se produce una conexión cuando son programados, por lo que normalmente se encuentran abiertos. La desventaja obvia es que no son reutilizables, pero por otro lado disminuyen considerablemente el tamaño y costo de los dispositivos.

2. SRAM (StaticRAM): Estas guardan la configuración del circuito. Esto quiere decir que las SRAM son utilizadas como generadores de funciones y además son usadas para controlar multiplexores (que están incluidos en los FPGAs) y la interconexión entre bloques. En éstas el contenido se almacena mediante un proceso de configuración en el momento de encendido del circuito que contiene al FPGA. Ya que al ser SRAM, el contenido de la memoria se pierde cuando se deja de suministrar energía; la información binaria de las celdas SRAM generalmente se almacena en memorias seriales EEPROM conocidas como memorias de configuración o celdas de configuración. En el momento de encendido del circuito toda la información binaria es transferida a los bloques e interconexiones del FPGA mediante el proceso de configuración el cual es generalmente automático, dado que el propio FPGA contiene un circuito interno que se encarga de hacer toda la programación.

3. Flash: El avance experimentado en los últimos años en el diseño y prestaciones de las celdas de memoria Flash ha permitido su incorporación reciente al mundo de los dispositivos programables como tecnología de programación. Las FPGAs basadas en celdas Flash recogen las ventajas principales de las dos técnicas anteriores situándose en un punto intermedio. Su tamaño es bastante más reducido que el de una celda de SRAM, aunque sin llegar al tamaño reducido de un antifusible; son reprogramables, aunque la velocidad de programación es bastante más lenta que en el caso de una SRAM; y son no volátiles, por lo que no necesitan un dispositivos auxiliar para guardar la configuración interna, como en el caso de la SRAM.

Un FPGA que tiene una gran cantidad de canales de interconexión tiende a tener pequeños bloques lógicos con muchas entradas y salidas en comparación con el número de compuertas que puede generar el bloque Este bloque lógico se caracteriza por ser bastante sencillo, con poca lógica en su parte combinacional. Este es el caso del bloque lógico a base de multiplexores del apartado anterior. Este tipo de FPGA generalmente utiliza tecnología antifusible. Un FPGA que tiene una estructura pequeña en canales de interconexión tiende a tener grandes bloques lógicos con pocas entradas y salidas en comparación con el número de compuertas que existe en el bloque.

Este es el caso del bloque lógico basado en LUTs, que permiten implementar cualquier función lógica del mismo número de entradas. Este tipo de FPGA generalmente está fabricado con tecnología SRAM. Finalmente, las FPGAs
basadas en celdas Flash suelen emplear un bloque lógico sencillo para incrementar los recursos de rutado, como ocurre con las FPGAs de antifusibles.

Una arquitectura con bloques pequeños permite utilizar todos los recursos del dispositivo, sin embargo tendremos que utilizar un gran número de estas para poder implementar funciones lógicas de varios términos, lo cual genera un tiempo de retardo por cada bloque implementado. Cuando el tamaño del bloque es grande sucede lo contrario, en este tipo de bloques es posible utilizar un gran número de compuertas por lo que podemos implementar funciones lógicas de varios términos con pocos bloques. El que el tamaño del bloque sea grande no afecta la frecuencia máxima de trabajo, ya que estamos hablando de que existe una gran cantidad de compuertas que pueden ser utilizadas en la función paralelamente, siendo el mismo tiempo de retardo para todas. Sin embargo, cuando las funciones son pequeñas en comparación con el tamaño del bloque, no es necesario utilizar todas las compuertas que soporta el bloque, por lo que este tipo de bloques no son precisamente las más indicadas para
desempeñar pequeñas funciones.

Bloques entrada/salida
La función de un bloque de entrada/salida es permitir el paso de una señal hacia dentro o hacia el exterior del dispositivo. Además debe contar con recursos tales como:
• Salidas configurables como TRI-STATE u open-collector.
• Entradas con posibilidad de pull-up o pull-down programables.
• Registros de salida.
• Registros de entrada.

En la Figura 32, tenemos como ejemplo un diagrama en bloques simplificado de un bloque de entrada/salida de la familia 4000 de las FPGA de Xilinx.

fig_32

Figura 32, Bloque entrada/salida (IOB) de XC4000

 

 

PRINCIPALES FABRICANTES DE DISPOSITIVOS FPGA

A principios de 2007, el mercado de los FPGA se ha colocado en un estado donde hay dos productores de FPGA de propósito general que están a la cabeza del mismo, y un conjunto de otros competidores quienes se diferencian por ofrecer dispositivos de capacidades únicas.

  • Xilinx es uno de los dos grandes líderes en la fabricación de FPGA.
  • Altera es el otro gran líder.
  • Lattice Semiconductor lanzó al mercado dispositivos FPGA con tecnología de 90nm. En adición, Lattice es un proveedor líder en tecnología no volátil, FPGA basadas en tecnología Flash, con productos de 90nm y 130nm.
  • Actel tiene FPGAs basados en tecnología Flash reprogrammable. También ofrece FPGAs que incluyen mezcladores de señales basados en Flash.
  • QuickLogic tiene productos basados en antifusibles (programables una sola vez).
  • Atmel es uno de los fabricantes cuyos productos son reconfigurables (el Xilinx XC62xx fue uno de estos, pero no están siendo fabricados actualmente). Ellos se enfocaron en proveer microcontroladores AVR con FPGAs, todo en el mismo encapsulado.

  • Achronix Semiconductor tienen en desarrollo FPGAs muy veloces. Planean sacar al mercado a comienzos de 2007 FPGAs con velocidades cercanas a los 2GHz.

  • MathStar, Inc. ofrecen FPGA que ellos llaman FPOA (Arreglo de objetos de matriz programable).

 

 

ASIC'S

Un Aplication Specific Integrate Circuit o circuito integrado de aplicación específica, mejor conocido como ASIC por sus siglas en ingles, es un circuito integrado configurable que ha sido diseñado para un propósito u aplicación específica para un producto electrónico específico.

Con los últimos avances en las tecnologías de miniaturización y las herramientas de diseño, la complejidad máxima, y por ende la funcionalidad, en un ASIC ha crecido desde 5.000 puertas lógicas a más de 100 millones. Los ASIC modernos a menudo incluyen otros elementos prediseñados tales como:

  • Procesadores de 32-bit.
  • Bloques de memoria RAM, ROM, EEPROM y memoria flash.
  • DSP.
  • Amplificadores analógicos.
  • Otros tipos de módulos caracterizados por el consumidor tales como interfases o codificadores.

Este tipo de ASIC frecuentemente es llamado Sistema en un Chip, o SoC por sus siglas en inglés. Los diseñadores de ASIC digitales usan lenguajes descriptores de hardware (HDL), tales como Verilog o VHDL, para describir la funcionalidad de estos dispositivos. Los niveles de configuración de un ASIC pueden estar en el campo de lo físico (construcción del hardware) o a nivel lógico (configuración por software). Ello depende del subconjunto o tipo de ASIC que se emplee en la figura 1 podemos observar algunas vistas de un ASIC.

 

 F_33

Figura 33: Vista interna de unos ASIC´s

 

Desde los años 70, se ha llevado a cabo el desarrollo de la micorelectrónica creando nuevas tecnologías evolutivas para lograrlo, pero no fue sino hasta 1980 que los ingenieros de la compañía Ferranti, comenzaron a explorar las ventajas del diseño de un IC configurable o adaptable para un sistema o aplicación en particular mas allá de usar circuitos integrados estándar. La microelectrónica crea el paso en el cual la implementación de IC's estándar puede lograrse utilizando funciones lógicas con uno o mas IC's configurables. Como la tecnología VLSI (Very Low Scale Integration) hace posible la construcción de un sistema con muchos componentes mas pequeños se pueden combinar muchos IC's estándares dentro de un IC configurable.

Ferranti empresa de Ukrania, fue la primera en producir los primeros arreglos de compuertas. La adaptación del arreglo se produce cuando es cambiada la mascara de interconexión metálica. Las ULA (Uncommitted Logic Array) consideradas como uno de los primeros IC´ssemiconfigurables desarrolladas, en principio tenían unos cientos de compuertas para luego extender la gamma y hacer otros modelos que incluyen elementos de memoria RAM.

Tipos y construcción de los ASIC´s

Estos IC's están hechos sobre una oblea de silicio de algunos micrones de grosor, cada oblea mantiene unos cientos de IC's llamados muertos. Los transistores y el cableado están hechos de muchas capas cuyo número está entre unas 10 y 15 todas distintas entre sí, dispuestas una sobre la otra e interconectadas según los requerimientos. Cada capa tiene un patrón que es definido utilizando una mascara similar a una diapositiva de fotografía. La primera mitad de las capas definen a los transistores y la segunda mitad a las interconexiones entre ellos.

Algunos de los tipos mas destacados de ASIC´s los cuales serán descritos más adelante son:

  • Completmente configurables.
  • Semiconfigurables.
  • Dispositivos programables.

 

ESTRUCTURA DEL ASICS

Los ASIC´s Completamente Configurable

Un ASIC completamente configurable tiene probablemente todos los elementos lógicos configurables y adicionalmente todas sus capas son configurables. Un microprocesador es un ejemplo de un de un circuito integrado completamente configurable, en él los diseñadores invierten muchas horas de trabajo para configurar completamente una sección de no mas de una micra cuadrada.

En este tipo de ASIC's se pueden diseñar una o todas las celdas lógicas, la circuitería o layout especificamente para un ASIC. Esto posibilidad permite al diseñador dejar de lado la facilidad de usar celdas probadas y precaracterizadas para todo o parte del diseño. Esto es de provecho solo en caso de que las celdas lógicas existentes en las librerías no tengan propiedades deseables tales como velocidad de cálculo o si la celda es muy grande y consume mucha energía, puede darse el caso de que simplemente ninguno de los diseños disponibles de las celdas de los archivos o librerías sirvan para el propósito deseado. Cada vez menos IC's completamente configurables son diseñados puesto que existen problemas con ciertas partes especiales del ASIC que son muy difíciles de manejar.

Históricamente la tecnología bipolar ha sido utilizada para la precisión en funciones analógicas. La razón fundamental de ello es que en todos los circuitos integrados el apareamiento de las características entre los componentes de distintos IC's es mala pero entre los componentes de un mismo IC's es excelente. Para mejorar la diferencia entre ellos se procesan obleas de silicio por lotes donde se producen varios miles de IC's al mismo tiempo con mínimas diferencias de apareamiento entre si.

El apareamiento entre los transistores es crucial para la operación de un circuito. Para el diseño de IC's se deben localizar pares de transistores uno junto al otro. La física del dispositivo dicta que un par de transistores bipolares podría siempre aparearse mucho más que los transistores de tecnología CMOS del mismo tamaño.

La tecnología bipolar es empleada para el diseño de los ASIC's completamente configurables analógicos porque proporciona mejor precisión. Aunque la realidad es otra, a pesar de las malas propiedades del uso de la tecnología CMOS para la electrónica analógica su empleo se ha incrementado, dos razones de ello son:

  • Es la tecnología mas disponible en el mercado para fabricar IC's, muchos ASIC's estan construidos en esta tecnología.
  • Permite mucho mayor nivel de integración ya que se requieren funciones analógicas y digitales dentro de un mismo IC.

Por este motivo lo diseñadores de ASIC's han encontrado maneras de implementar funciones analógicas utilizando tecnología CMOS con técnicas que aprovechan la exactitud de los diseños analógicos bipolares, la tecnología se denomina BiCMOS.

 

ASIC´s Semiconfigurables

Para el caso de los ASIC mas utilizados tenemos a los semiconfigurables. En estos las celdas lógicas ya han sido preconfiguradas y solo pueden alterarse las configuraciones de todas las máscaras de interconexión. Al utilizar este método, el trabajo del diseñador se hace mucho más fácil. Aun para esta clase de ASIC's existen dos subcategorias las cuales son:

  • ASIC's basados en celdas estándar.
  • ASIC's basados en arreglos de compuertas.

ASIC's basados en celdas estándar (Standard-Cell-Based ASICs).

En Japón es un termino conocido coloquialmente como CBIC pronunciado como "sea-bick". Utiliza celdas lógicas prediseñadas tales como compuestas AND, compuertas OR, multiplexores y flip-flop's, se les conoce como celdas estándar, en la figura 34 puede un esquema de un CBIC y en la figura 35 un esquema real de un CBIC hecho con un programa de diseño para ASIC.

F_34

Figura 34: ejemplo esquema interno de un CBIC.

 

F_35

Figura 35: Vista de un CBIC hecho con un programa de diseño.

Las áreas de las CBIC conocidas como bloques flexibles están compuestos por columnas de celdas estándar como una pared de ladrillos. Las áreas de las celdas estándar pueden ser utilizadas en combinación con celdas mucho más grandes o quizás con microcontroladores o microprocesadores conocidos como megaceldas. Las megaceldas también son llamadas megafunciones, bloques completamente configurables, macros de nivel de sistemas (SLM's), bloques fijos, núcleos, o bloques de funcionalidad estándar (FSB's).

Los diseñadores de estos ASIC's solo definen el lugar de las celdas estándar y la interconectividad dentro de un CBIC. Sin embargo, la celda estándar puede ser ubicada en cualquier lugar de la pastilla de silicio; esto permite que todas las mascaras de un CBIC puedan ser configurables para un consumidor en particular. La ventaja de CIBIC es que los diseñadores ahorran tiempo y reducen el riesgo al utilizar librerías de celdas precaracterizadas y probadas, diseñadas utilizando las técnicas de una celda completamente configurable. Adicionalmente cada celda estándar puede ser optimizada individualmente. Durante el diseño de cada celda de la librería, cada transistor ha sido elegido para maximizar la velocidad y el área que ocupa en el IC. La desventaja es el tiempo o costo de diseño o la compra de la librería de celdas estándarizadas y el tiempo que requiere fabricar todas las capas del ASIC para el nuevo diseño.

El diseño de celdas estándar permite la automatización del proceso de ensamble de un ASIC. Grupos de estas celdas pueden acomodarse en forma de columnas, las columnas forman pilas verticales para formar a su vez bloques flexibles rectangulares. Puede interconectarse a otro bloque de celdas estándar de otro bloque o con otros bloques completamente configurables. Por ejemplo, puede desearse incluir una interfaz específica o un microcontrolador junto con algo de memoria. El bloque del microcontrolador puede ser una megacelda fija, a partir de los bloques puede generarse memoria utilizando un compilador de memoria y un controlador de memoria personalizado que puede construirse dentro de un bloque de celdas estándar.

 

ASIC's basdos en arreglos de compuertas (Gate Array).

En un ASIC's basado en arreglo de compuertas los transistores están predefinidos en una oblea de silicio. Los patrones de definición de los transistores de un arreglo de compuertas y el elementos mas pequeño es replicado para hacer la base del arreglo, así como los dibujos de la porcelana en el piso, a este diseño primario se le llama la celda primitiva. Solo la capa superior tiene definida las interconexiones entre los transistores. Para distinguir este tipo de arreglo de compuertas de otros tipos de arreglos de compuertas este frecuentemente es llamado mascara de arreglo de compuertas o MGA por sus siglas en ingles  El diseñador elige de una librería de arreglo de compuertas celdas precaracterizadas o prediseñadas. Las celdas lógicas de la librería de arreglo de compuertas frecuentemente son llamadas macros. La razón de esto es que, el diseño layout de la celda base es el mismo para todas y la interconexión entre ellas es lo que puede configurarse libremente, el diseño de un ASIC con arreglo de compuertas se hecho en un programa de diseño se muestra en la figura 36.

F_36

Figura 36: vista del diseño de un ASIC con arreglo de compuertas.

Puede hacerse la difusión entre varias obleas de silicio de varios consumidores según sea necesario. Utilizando las obleas de silicio prefabricadas se reducen los tiempos de metalización requeridos para hacer un MGA. Algunos de los diferentes tipos de ASIC's basados en arreglo de compuertas existentes son:

  • Arreglo de compuertas acanalados.
  • Arreglo de compuertas sin acanalado.
  • Arreglo de compuertas estructurado.

Estos términos son dados a los ASIC's de acuerdo a su modalidad de construcción, por ejemplo, cuando los transistores están acomodados en un MGA dejando un espacio entre las columnas de transistores para cablear se refiere al primer termino, en caso de no existir dicho canal entonces se utilizan las columnas de transistores no utilizados para el enrutamiento conexiones lo cual corresponde al segundo tipo. En un modelo estructurado de diseño se pueden observar ambos modos de construcción juntos dentro de un bloque configurable.

En la figura 37 puede observarse un arreglo de compuertas acanalado donde solo las interconexiones pueden ser configuradas, la interconexión utiliza espacios predefinidos entre las columnas de las celdas base y el tiempo de construcción puede tomarse entre dos días y dos semanas.

F_37

Figura 37: Esquema de un arreglo de compuertas acanalado.

En la figura 38 puede observarse la distribución de un arreglo de compuertas sin canales, aqui solo algunas de las mascaras de interconexión pueden configurarse. La densidad lógica es mucho más alta para este tipo de construcción.

 

F_38

Ffigura 38: Esquema de un arreglo de compuertas no acanalado.

En la figura 39 puede observarse un arreglo de compuertas estructurado, también es conocido como "masterimage", combina algunas de las características de los CBIC's y los MGA's. Una de las desventajas de los MGA's es el diseño fijo de la celda base del arreglo de compuertas, esto hace que la implementación de memoria sea de gran dificultad e ineficiente. En un arreglo estructurado de compuertas puede destinarse un área dedicada a una función específica lo cual resulta más cómodo para el diseño de celdas de memoria. En este tipo de arreglos solo las interconexiones son configurables y los bloques configurables pueden ser integrados al diseño.

 

F_39

Figura 39: Arreglo de compuertas estructurado.

En este último tipo de arreglos puede incrementarse el desempeño de un CBIC pero a un menor costo comparado con un MGA. Una desventaja de un arreglo de compuertas empotrado o embebido es que la función del elemento embebido es fija, por ejemplo, en un arreglo de compuertas empotrado que contiene 32 Kb de memoria, pero solo son necesarios 16 Kb de memoria entonces se desperdicia la mitad de la memoria. En la figura 40 puede observarse un diseño de un ASIC con arreglo de compuertas optimizado hecho en un programa de diseño.

 

F_40

Figura 40: Diseño de un ASIC con arreglo de compuertas optimizado.

Los ASIC's basados en arreglo de compuertas y los basados en celdas utilizan celdas predefinidas, pero la diferencia es que en una celda estándar puede cambiarse el tamaño de los transistores para optimizar el desempeño y la velocidad, pero el tamaño de los componentes en un arreglo de compuertas es fijo. Esto puede resultar en una disyuntiva entre el área de un arreglo de compuertas en el silicio.

 

CONSTRUCCIÓN DEL ASICS

En los ASIC's modernos se utilizan dos, tres o más niveles de capas de metal para interconexión, esto permite que los cables crucen diferentes capas en la misma forma en que utilizamos el cobre en diferentes capas de un circuito impreso. En un CMOS de dos niveles las conexiones a las entradas de una celda estándar y las salidas pueden hacerse utilizando el segundo nivel de metal de interconexión. En la tecnología de tres niveles las conexiones pueden ser para la misma celda lógica. De esta manera se puede hacer un enrutamiento mucho más sofisticado tomando la capa extra de metal de la capa, en la figura 41 se muestra un ejemplo de la distribución de capas de un ASIC de esta categoria.

F_41

Figura 41: Vista del perfil de un ASIC

Una conexión que requiere atravesar una columna de celdas estándar emplea una pieza de metal que es utilizada para pasar una señal a través de una celda o un espacio vacío de una celda, a esto se le llama "feedthrough" su ubicación puede observarse en la figura 42.

F_42

Figura 42: Ruteo de un CBIC através de una celda.

Los buses VDD y GND dentro de la celda estándar normalmente usan el nivel mas bajo de interconexión. El ancho de cada columna de celdas estándar, pueden ajustarse para que puedan alinearse utilizando espaciadores. Los buses de energía son interconectados a rieles verticales de energía adicionales que se encuentran en la segunda capa. Usualmente el diseñador puede controlar el número y el ancho de los rieles verticales de energía conectados a las celdas estándar durante el diseño físico del dispositivo. Un diagrama de distribución del esquema de energía de un CBIC puede verse en la figura 43.

F_43

Figura 43: Distribución de pistas para una celda.

Todas las mascaras de un CBIC pueden ser configuradas, estas pueden albergar megaceldas tales como SRAM, SCSI, decodificadores MPEG y ser ubicadas en el mismo IC junto con celdas estándar. Las megaceldas pueden ser suministradas mediante librerías de la compañía que fabrica el ASIC junto con modelos completos que son mucho mas avanzados y que están en prueba. Las librerías de ASIC también suministran compiladores para generar DRAM flexible SRAM o bloques de ROM.

Para lógica que opera sobre múltiples señales a través de un bus de datos el uso de celdas estándar puede no ser el estilo de diseño de ASIC más eficiente. Algunas librerías de ASIC's proveen compiladores de rutas de datos que automáticamente generan lógicas de rutas de datos. Una librería de ruta de datos típicamente contiene celdas tales como sumadores, substractores, multiplicadores y ALU's.

Las librerías de celdas estándar o arreglo de compuertas pueden contener cientos de celdas logicas diferentes, incluyendo funciones combinacionales con múltiples entradas, así como latches y flip-flops con diferentes combinaciones de reset, preset y opciones de reloj. Las librerías de las compañías de ASIC's, proveen a los diseñadores un libro de datos en formato electrónico con todas las descripciones funcionales junto con los diagramas de tiempo para cada elemento contenido en sus librerías.

 

PRINCIPALES FABRICANTES DE LOS ASICS


METODOLOGIA DE DISEÑO CON ASIC'S PROGRAMABLES

El elemento fundamental en cualquier metodología actual en el diseño de circuitos, tanto digitales como analógicos, es la especificación y forma en la que se describe el diseño. La captura clásica de diagramas esquemáticos resulta obsoleta si se pretende estimar desarrollos complejos con miles de elementos, haciéndose necesaria la participación de un lenguaje dedicado a la especificación del hardware, describiendo de manera abstracta el funcionamiento de cada elemento físico involucrado.

Como tal, el uso de un lenguaje formal implica conocer las diferentes apreciaciones en la programación lineal y paralela de procesos específicos, no sólo como parte del código de un programa, sino en el algoritmo mismo que por su naturaleza como pieza de hardware representa arquitecturas seriales o paralelas, con la intención de optimizar resultados aprovechando los recursos disponibles.

Sin la evolución en las metodologías de diseño, concernientes a las herramientas VLSI CAD (Diseño Asistido por Computadora para dispositivos VLSI), sería imposible integrar y atañer diseños con la complejidad que los dispositivos actuales lo permiten.

La implementación de circuitos sobre ASICs programables, fundamenta el estudio de los dispositivos VLSI a nivel sustrato y como tecnología de aplicación para la construcción de diseños personalizados.

El diseño sobre dispositivos VLSI programables, particularmente digitales11, tiene sus inicios desde hace más de una década. El conjunto EDA (Electronic Desig Automation – Diseño Electrónico Automatizado) son todas las herramientas, tanto hardware como software, que se utilizan para el diseño de sistemas electrónicos. Dentro de EDA, las herramientas VLSI CAD juegan un importante papel en el diseño de hardware a través de software. En virtud del inminente incremento en la complejidad de los circuitos VLSI, se hace indispensable un sofisticado aporte por parte de las herramientas CAD para automatizar el proceso de desarrollo, repercutiendo en una disminución en el tiempo de diseño, aumentando la calidad del producto y reduciendo los costos de producción.

Hoy en día, existen variados ambientes de desarrollo para ASICs programables (FPGAs y CPLDs, reconfigurables y no reconfigurables), algunos con herramientas de software completas para aceptar la captura, simulación, síntesis y configuración física del dispositivo; a la vez que otros son más modestos en sus capacidades; o en otros casos se adaptan a las herramientas de propietario disponibles en el mercado actual.

Entre los diferentes fabricantes se respetan estándares de diseño con Lenguajes de Descripción de Hardware pero no así de captura de esquemáticos y mucho menos de configuración física de dispositivos, debido a que los ambientes y arquitecturas de propietario, son distintas entre sí a causa de la manufactura y de la creciente evolución de las nuevas familias de ASICs programables que los diferencian.

Los ambientes completos Foundation Series, MAX+PLUS II y Actel DeskTOP, representan los más utilizados actualmente para el diseño e implementación de aplicaciones con lógica programable. Para la elaboración de estos apuntes nos adecuamos al uso de estos tres ambientes y específicamente a la implementación sobre FPGAs como principal arquitectura programable. Lo concerniente a los CPLDs no es materia de discusión en este trabajo, aunque no se desconoce la familiaridad entre ambas tecnologías, por lo que resulta similar el tratamiento en el diseño respetando las restricciones consideradas para cada arquitectura.

La figura 44 esquematiza de manera general, la secuencia de fases necesarias para diseñar sobre ASICs programables (en especial, sobre FPGAs). Obsérvese la prioridad que precede cada uno de los pasos dentro del flujo de diseño VLSI, tomando en consideración que dependiendo del fabricante, el nombre de la fase puede variar manteniendo su operatividad básica de acuerdo al caso de estudio presentado.

 

Flujo_asic

Figura 44, Flujo de desarrollo para ASICs programables, utilizando herramientas VLSI CAD.

 

1. – Captura del diseño (Design Entry). En este paso se procede a la captura del modelo dentro del ambiente de desarrollo VLSI CAD elegido por el diseñador. La captura puede ser mediante uno (es válido el uso de varios) de los siguientes medios que describen el funcionamiento del circuito: diagrama esquemático, mediante un Lenguaje de Descripción de Hardware (HDL – Hardware Description Language), o mediante un Netlist (Archivo de conexiones). En el caso de la captura de esquemático, el software de diseño cuenta con bibliotecas muy extensas de componentes de uso común, por lo que sólo basta con realizar interconexiones entre las primitivas formando el  sistema digital.

El método clásico para la interconexión de los distintos símbolos de una hoja de diagrama son los cables o wires. Un cable tiene una correspondencia inmediata con el circuito real, se trata de una conexión física que une una terminal con otra, creando una correspondencia para la transmisión de la señal eléctrica. Debido a la cantidad de cables que puede presentar un diseño complejo, el editor permite la agrupación en buses. La conexión hacia el exterior del circuito integrado se conoce como puerto, no obstante la mayoría de los editores hace la referencia conforme a la dirección de su señal: IPAD (puerto de entrada), OPAD (Puerto de Salida), agregando el pin bidireccional IOPAD (Puerto de Entrada/Salida).

Una captura por medio de un HDL también culmina con símbolos que se integran es un diagrama esquemático. Algunos ambientes, en especial los más sofisticados, permiten editar código introduciendo la descripción del funcionamiento del circuito por medio de: Tablas de Estado, Diagramas de Estado (con herramienta gráfica o código directo), y Ecuaciones; siguiendo una sintaxis natural. Los editores que incorporan los diferentes ambientes VLSI CAD admiten código HDL y posteriormente crean una Macro reutilizable, que es un módulo esquemático (simbólico) que representa un componente cuya función es específica. La biblioteca de la macro se adiciona automáticamente a las bibliotecas del software para quedar disponible en el entorno de la captura esquemática, pudiéndose utilizar como elemento independiente o combinado con las primitivas originales, como se puede observar en la figura 45.

Ed_HDL

Figura 45 – Editor de HDL y diagrama de conexiones de una macro creada.

 

Un diseño mediante HDL, inicia con el planteamiento tradicional de método de descripción. El proceso de diseño VLSI puede verse como una secuencia de transformaciones sobre representaciones físicas del modelo a partir de una descripción del comportamiento (behavioral) o una descripción estructural (structural) del mismo. La descripción del comportamiento representa el funcionamiento de un circuito en relación a sus entradas y salidas, esto es, se modela la operación integral del circuito desde un panorama muy exterior. En este sentido, la representación estructural describe la conformación del circuito en términos de los componentes y las interconexiones entre ellos. Cada una de las descripciones tiene connotaciones más formales, por ejemplo a la descripción de comportamiento se le llama también RTL (Register Transfer Level –Transferencia a Nivel de Registros), mientras que a la estructural  se le conoce como GTL (Gate Transfer Level – Transferencia a Nivel de Compuertas Lógicas).

La mayoría de los diseños complejos (por ejemplo, un microprocesador) se describen a nivel RTL, en consecuencia a que es más simple describir un comportamiento que realizar un diseño componente a componente. La desventaja es obvia, a nivel compuerta perdemos de cierta forma el control de las acciones, suponiendo solamente el funcionamiento sin reparar en cómo se está llevando a cabo y por quién. Hace algunos años era un verdadero inconveniente; sin embargo, la evolución y sofisticación de las herramientas VLSI CAD, soporta que ahora sean programadas con algoritmos inteligentes que compilan de la mejor manera un diseño, dejando a consideración del diseñador si se desea un circuito con restricciones de  velocidad de procesamiento o con restricciones de espacio físico.

2. – Síntesis Lógica (Logic Síntesis). El software de desarrollo incluye la herramienta propia para realizar la síntesis lógica de un código en HDL o de un diagrama esquemático. A través de una compilación es posible producir un  netlist a partir de cualquiera de los métodos de captura. Un Netlist es un archivo que registra la descripción de las celdas lógicas y sus conexiones específicas, que conforman un circuito.

3. – Partición del Sistema (System Partitioning). Un sistema completo no necesariamente grande, se divide y distribuye en determinadas piezas dentro del ASIC programable. Lo anterior tiene la finalidad de realizar una partición física del dispositivo para facilitar la labor del mapeo colocando estratégicamente las celdas lógicas de acuerdo a su respectiva correspondencia en un diseño.

4. – Simulación Pretrazado (Prelayout Simulation). Hasta el tercer paso, aún no se ha comenzado con el diseño físico, solamente se ha realizado el diseño lógico del circuito modelado. La mayoría de los ambientes de desarrollo incluyen dos tipos de simulación, una llamada lógica y la otra física. La diferencia es común, la primera es antes de dirigir el diseño hacia una tecnología particular (dispositivo físico) y la otra es posterior a dirigirlo.

5. – Planeación de la Superficie (Floorplanning). Una vez que se simuló el diseño, se procede a mapear el netlist sobre el ASIC programable seleccionado. La configuración de las celdas lógicas y sus respectivas conexiones, descritas por el netlist, se distribuyen sobre la superficie del circuito integrado a manera de identificar recursos.

6. – Colocación (Placement). Estratégicamente, el software decide la colocación de las celdas sobre un bloque del dispositivo físico. Los algoritmos inteligentes con los que trabaja el sistema de compilación, deciden la mejor ubicación para cada celda lógica respetando ciertas consideraciones como las líneas de retardo o las redundancias en el diseño (componentes o conexiones repetidas).

7. – Ruteo (Rutting). Realiza la conexión entre las celdas y los bloques que conforman los arreglos lógicos.

8. – Extracción (Extraction). Determina la resistencia y capacitancia eléctrica, entre las interconexiones para  verificar un correcto ruteo de las líneas. El software de diseño se encarga automáticamente de generar el ruteo y la extracción de impedancias, sin embargo, algunas herramientas incluyen editores para realizar las conexiones de modo personalizado.

9. – Simulación Postrazado (Postlayout Simulation). Una vez que se han colocado y ruteado las celdas lógicas, la configuración física que ha adquirido el dispositivo puede simularse. A este tipo de simulación se le conoce como física, debido a su proximidad con el comportamiento real que tendrá el diseño.

 

 

REFERENCIAS

 http://www.profesores.frc.utn.edu.ar/electronica/tecnicasdigitalesI/Publicaciones/FPGA.pdf

http://perso.wanadoo.es/chyryes/glosario/FPGA.htm

http://www.miky.com.ar/fpga_2004.pdf

http://icprgm-asic.blogspot.com/

Wikipedia, ASIC´s, http://en.wikipedia.org/wiki/Application-specific_integrated_circuit

Addison W, ASIC´s, http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Book2/CH01/CH01.htm, publicacion on-line.

http://en.wikipedia.org/wiki/Ferranti

Addison W, ASIC´s, http://www-ee.eng.hawaii.edu/~msmith/ASICs/HTML/Book2/CH01/CH01.1.htm#pgfId=1331, publicacion on-line.

Paul N., Designins ASIC´s,http://web.ukonline.co.uk/paul.naish/DA/ch0.htm, publicación on-line.

{
}

Álbum de fotos de Dispositivos Logicos Programables (parte 2)

4 de 19

Ver fotos de Dispositivos Logicos Programables (parte 2)

{
}

Deja tu comentario Dispositivos Logicos Programables (parte 2)

Identifícate en OboLog, o crea tu blog gratis si aún no estás registrado.

Avatar de usuario Tu nombre