jueves, 7 de febrero de 2008

ASIC y VHDL

DEFINICION DE LOS ASIC’S.
Un Circuito Integrado para Aplicaciones Específicas, o ASIC por sus siglas en inglés, 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. Por ejemplo, un chip diseñado únicamente para ser usado en un teléfono celular es un ASIC.
Los ASIC modernos a menudo incluyen procesadores de 32-bit, bloques de memoria RAM, ROM, EEPROM, flsh, amplificadores analógicos así como otros tipos de módulos tales como interfaces 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.










Figura 1: Vista interna de unos ASIC´s


Historia del ASIC (Circuito Integrado para Aplicaciones Específicas)
Desde los años 70, se ha llevado a cabo el desarrollo de la microelectró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.

Construcción de los ASIC
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.
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 2 se muestra un ejemplo de la distribución de capas de un ASIC.


Figura 2: Vista del perfil de un ASIC

Ruteos y Capas de Interconexión
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.







Figura 3: Ruteo de un ASIC através de una celda estandar .





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



Tipos y Estructura
Algunos de los tipos mas destacados de ASIC´s son:


ASIC´s 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 término 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.





Figura 5: Esquema interno de un CBIC.





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

ASIC's Basados 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, a este diseño primario se le llama la celda primitiva. Solo la capa superior tiene definida las interconexiones entre los transistores, el cual es llamado mascara de arreglo de compuertas o MGA. 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.






Figura 7: 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.
Los tipos de ASIC's basados en arreglo de compuertas existentes son:

Arreglo de compuertas acanalados: las interconexiones pueden ser configuradas y se utiliza espacios predefinidos entre las columnas de las celdas base.




Figura 8: Esquema de un arreglo de compuertas acanalado.

Arreglo de compuertas sin acanalado: 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.





Figura 9: Esquema de un arreglo de compuertas no acanalado.



Arreglo de compuertas estructurado: Es conocido como "masterimage" y 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.




Figura 10: Arreglo de compuertas estructurado



Los ASIC´s 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.

Dispositivos Lógicos Programables PLD´s : Son IC's estándar de la familia de ASIC´s que están disponibles en configuraciones estándar desde catálogos de partes y se venden en grandes volúmenes a muchos consumidores. Sin embargo, los PLD's pueden configurarse o programarse para crear partes configurables para una aplicación específica, los PLD's utilizan diferentes tecnologías para permitir la programación del dispositivo. Entre las principales características de los PLD's se puede destacar:
No poseen mascaras o capas ni celdas lógicas configurables.
Rápido diseño.
Un solo gran bloque de interconexiones programables.
Poseen una matriz de macroceldas lógicas que usualmente consiste de un arreglo programable lógico seguido por un flip-flop o latch.

Fabricantes

La fabricación de circuitos integrados específicos ofrece un costo por ejemplar sumamente inferior al costo global de la placa (o placas) de circuitos estándar a los que sustituye y muy inferior, también, al costo de un circuito integrado programable equivalente. Nombraremos algunos de los fabricantes de los circuitos integrados ASIC a nivel mundial:

Broadcom
Capacidad de encargo del diseño del silicio de las ofertas de Broadcom para los usos donde los clientes quieren integrar su propia característica intelectual con los corazones propietarios de la característica intelectual de Broadcom. Se ha desarrollado con éxito las virutas de encargo para los usos del LAN, PÁLIDOS y de la PC. Estas virutas son los diseños complejos en los procesos avanzados.


Aplicaciones mas resaltantes de Broadcom:



Controlador Bluetooth.
Broadcom integra las capacidades de Bluetooth en los microteléfonos móviles, los receptores de cabeza sin hilos, los ordenadores personales, los dispositivos del ratón de la computadora y del teclado, los reguladores del juego, automóvil y equipo industrial.
Controlador de decodificadores de TV por satélite.
Desarrollan una gama de cajas digitales con el ofrecimiento extenso de Broadcom de las virutas para los usos de la televisión por cable y difusión de video digital. El silicio de Broadcom puede también accionar las cajas interactivas que combinan funcionalidad del acceso de Internet de alta velocidad con los gráficos de la calidad del estudio, texto y vídeo.



Controlador GSM
Broadcom apoya la generación siguiente de las tecnologías móviles de alta velocidad 3G y 4G. Como parte de la plataforma móvil de CellAirityTM, ofrece a familia los procesadores de la banda base de HSDPA (High-Speed Downlink Packet Access), de WCDMA (Múltiple-Acceso de la división de códigos de la banda ancha), del BORDE (Enhanced Data Rates para la evolución del G/M), de GPRS (servicios generales de la radio de paquete) y del G/M (Global System para la comunicación móvil) para el uso en microteléfonos, tarjetas de PC y otra celulares los productos electrónicos de consumo sin hilos-permitidos.

Controlador Sonet
Broadcom ofrece una familia completa de transmisores-receptores de SONET que permitan el desarrollo del equipo de transporte óptico barato, de alta densidad. Estas soluciones de alta densidad manejan más anchura de banda en un espacio más pequeño, permitiendo a telecomunicaciones y a proveedores de servicios acomodar mejor tráfico de los datos y de voz sobre redes existentes de la fibra.
Los fabricantes de equipamiento alcanzarán ahorros significativos de la energía y de espacio al usar las virutas avanzadas OC-48 y OC-192 de SONET de Broadcom.


Controlador DSL
Broadcom desarrolla una gama amplia de línea de suscriptor digital (DSL) Estas soluciones avanzadas del semiconductor del DSL incluyen virutas del módem del xDSL, virutas del CPE del xDSL, virutas del xDSL CO , permiten a los portadores locales del intercambio entregar a los usuarios finales servicios de banda ancha para acceso de Internet de alta velocidad, telefonía digital, teleconferencias video, vídeo digital de la difusión y los servicios a empresas de datos del IP, sobre líneas telefónicas de cobre existentes.

Controlador para redes LAN inalámbricas (WLAN)

Incorporate personal video recording capability into cable and DBS set-top boxes and consumer digital video products using Broadcom's MPEG-2 digital video/audio encoder and multiplexer chips. These advanced chips enable manufacturers to develop entertainment systems that support such features as watch and record, selective viewing, fast forward, fast reverse, skip forward, skip back, slow motion and frame-by-frame viewing. Ver la traducción
La familia de producto de AirForceTM de Broadcom ofrece las líneas más generales de los circuitos integrados Wi-Fi® en la industria para los diseños de sistema que se extienden de los dispositivos de la PC Broadcom permite a fabricantes construir los productos Wi-Fi con el funcionamiento, la interoperabilidad, la seguridad y la facilidad de empleo que los consumidores y los negocios exigen. Las soluciones de la fuerza aérea se pueden encontrar en marcas de fábrica principales del engranaje Wi-Fi tales como Apple, Belkin, búfalo, Dell, eMachines, entrada, HP, Linksys/Cisco, y Motorola.


Samsung

Samsung entrega una solución total, incluyendo maestría profunda del diseño del submicron, una lista sin igual del IP, la fabricación en grandes cantidades del silicio, y capacidades de empaquetado y de prueba avanzadas. El resultado es un ciclo de diseño acortado, un riesgo más bajo y una probabilidad mucho más alta del éxito nuevo del silicio.







Aplicaciones mas resaltantes de Samsung:




Pantalla TFT industrial 15" <>







Memoria DRAM XDR





Memoria SDRAM







Memoria flash





Microcontrolador



Toshiba: Ofrece una familia grande de protectores específicos a la aplicación del circuito integrado (ASIC) de ASIC 0.009µm (familia TC-300) al µm del ASIC 0.3 (familia TC-220).


La familia TC300 de ASICs se diseña para el alto-funcionamiento, los productos next-generation que se extienden de establecimiento de una red y los usos del servidor a los dispositivos digitales de los multimedia que manejan la información audio/video y los dispositivos portables que requieren el consumo de la energía más baja. Ha empleado la tecnología de proceso probada del Cmos de Toshiba (CMOS4) esa mezcla fácil de los permisos de los núcleos específicos del IP de la señal mezclada, de memoria DRAM y de los usos en la misma viruta.



Aplicaciones mas resaltantes de Toshiba:





Visualizador LCD




Controlador para red LON




Puerta lógica CMOS






Microcontrolador






Microprocesador


Otros fabricantes:

Chartered
cPackets
Fujitsu
Freescale
IBM
Infineon Technologies
MHS Electronics
MOSIS
NVIDIA
NEC
Texas Instruments
TSMC
UMC
X-Fab


Metodología de Diseño de un ASIC´s
Una importante clasificación dentro de este contexto es la metodología empleada para el proceso de diseño de un ASIC. A continuación tres categorías que lo describen.
  1. Diseño estático sincronizado: esta primera categoría está basada en sensibilidad de los flancos y los esquemas de bases te tiempo de fase simple. Todos los elementos de almacenamiento son sensibles a los flancos de una señal de reloj común. Si el reloj para, todo el sistema podría estar en estado estático indefinidamente, esta técnica de diseño es igualmente aplicada a los dispositivos programables los cuales son un complemento muy utilizado de los ASIC´s para muchos sistemas. Esta es una categoría importante porque la mayoría de los sistemas diseñados hoy en día están construidos bajo este estándar.

  2. Diseño multifásico estático: estos circuitos están basados sobre un sistema de detección de niveles multifásicos de reloj. Usualmente existen dos fases de reloj pero existen casos donde se emplean hasta cuatro fases. Estos diseños tienen latch´s en cascada los cuales son sensibles a los niveles de un reloj principal, estos funcionalmente son equivalentes a flip-flop´s sensibles a flancos, solo una simple modificación es requerida para hacer que el match sea sensible a los flancos. Niveles multifásicos son realmente deseables cuando el chip desarrollado es el corazón del sistema, tal como un microprocesador. Los ASIC´s son usualmente utilizados como chips auxiliares en un sistema.

  3. Diseño multifásico dinámico: estos circuitos dinámicos requieren que sus señales de reloj puedan ser prolongadas para mantener sus estados. Aquí se usa la técnica de propagación de los transistores, almacenamiento capacitivo y precarga de buses. Es la metodología más avanzada.
    Pasos para el Diseño de un Sistema Utilizando un ASIC
    En la figura 11 se muestra una secuencia lógica con los pasos para el diseño de un ASIC. Los pasos del 1-4 son parte del diseño lógico, los pasos del 5 - 9 son parte del diseño físico.






Figura 11: Pasos involucrados en el diseño de un ASIC.



1. Entrada del diseño: Un diseño es cargado en un sistema de diseño de ASIC's puede utilizarse un lenguaje de descripción de hardware HDL.
2. Síntesis lógica: Usa un HDL (VHDL o Verilog) y una herramienta de síntesis lógica que produce una lista de redes la cual consiste en una descripción de las celdas lógicas y sus interconexiones.
3. Partición del sistema: Divide un sistema en piezas detalladas del ASIC.
4. Simulación prelayaut: chequea si el sistema funciona correctamente.
5. Planeamiento de piso: Acomoda los bloques de la lista de redes de conexión en un chip.
6. Ubicación: Decide la localización de las celdas en un bloque.
7. Ruteo: Establece las conexiones entre las celdas y los bloques.
8. Extracción: Determina la resistencia y la capacitancia de las interconexiones.
9. Simulación Post-layout: en este paso se revisa si el diseño es capaz de funcionar con las cargas agregadas a las interconexiones.




DEFINICION DE VHDL

VHDL son las siglas de VHSIC (Very high speed integrated circuits) Hardware Description Language, es decir, lenguaje de descripción de hardware. Este es un lenguaje similar a los utilizados en los programas de ordenador pero que se emplea para describir circuitos de hardware de una manera formal. De este modo es posible que personas que no han participado en el desarrollo de un sistema electrónico puedan entender cómo funciona de forma rápida y sencilla. Además permite, con la ayuda del ordenador, simular el comportamiento dinámico de los circuitos antes de construirlos, e incluso sintetizarlos (es decir, traducir la descripción realizada en texto a un esquemático formado por puertas y elementos lógicos sencillos) de una manera automática, como se ha visto anteriormente.

Existen varios lenguajes de descripción de hardware. Dos son los más importantes: VHDL y Verilog. Pero existen muchos otros, aunque de menor importancia, como son: UDL/I, ELLA, HELIX, SDL/HHDL, DACAPO y M; o más específicos como ABEL o EDIF.

VHDL es un lenguaje y como tal, posee sus tipos de datos y operadores. Los datos se almacenan en objetos que contienen valores de un tipo dado.

Toda señal, variable o constante declarada debe indicar su tipo. En realidad, en VHDL no existen tipos propios, pero el lenguaje incluye los mecanismos para poder definir cualquier tipo. Las librerías incluidas en las herramientas informáticas contienen los tipos más habituales, que denominamos predefinidos.


HISTORIA VHDL

Los lenguajes de descripción hardware (HDLs, Hardware Description Languages) vienen utilizándose desde los años 70 en los ciclos de diseño de sistemas digitales asistidos por herramientas de CAD electrónico. Al principio surgieron una serie de lenguajes que no llegaron a alcanzar un éxito que permitiera su consolidación en el campo industrial o académico. En los años 80 aparecen los lenguajes Verilog y VHDL que, aprovechando la disponibilidad de herramientas hardware y software cada vez más potentes y asequibles y los adelantos en las tecnologías de fabricación de circuitos integrados, logran imponerse como herramientas imprescindibles en el desarrollo de nuevos sistemas. En la actualidad ambos lenguajes están normalizados y comparten una posición hegemónica que está arrinconando –y terminará, probablemente, en poco tiempo eliminando del mercado– al resto de lenguajes que de un modo u otro todavía son soportados por algunas herramientas de CAD.

Estos lenguajes son sintácticamente similares a los de programación de alto nivel –Verilog tiene una sintaxis similar al C y VHDL a ADA– y se diferencian de éstos en que su semántica está orientada al modelado del hardware. Su capacidad para permitir distintos enfoques en el modelado de los circuitos y su independencia de la tecnología y metodología de diseño permiten extender su uso a los distintos ciclos de diseño que puedan utilizarse. Por ello, para los profesionales relacionados de alguna manera con el diseño o mantenimiento de sistemas digitales resulta hoy en día imprescindible su conocimiento.

Los estudios para la creación del lenguaje VHDL (VHSIC HDL) comenzaron en el año 1981, bajo la cobertura de un programa para el desarrollo de Circuitos Integrados de Muy Alta Velocidad (VHSIC), del Departamento de Defensa de los Estados Unidos. En 1983 las compañías Intermetrics, IBM y Texas Instruments obtuvieron la concesión de un proyecto para la realización del lenguaje y de un conjunto de herramientas auxiliares para su aplicación. Finalmente, en el año 1987, el lenguaje VHDL se convierte en la norma IEEE-1076 –como todas las normas IEEE, se somete a revisión periódica, por lo que en 1993 sufrió algunas leves modificaciones.



VHDL (estructura y comportamiento)
Básicamente los programas en VHDL constan de dos partes: una declaración de entidad, donde se indica el nombre del elemento que estamos creando así como el interfaz que presenta hacia el exterior (qué señales entran y qué señales salen), y una o varias arquitecturas o descripciones. En el diseño de circuitos hay varias maneras de hacer las mismas cosas, y muchas más aun de contar cómo se hacen. Por eso para una misma declaración de entidad podemos tener varias arquitecturas diferentes, y en cada momento utilizar la que más nos convenga.






Podemos distinguir principalmente dos tipos de descripciones: por un lado puede ser una descripción del comportamiento del circuito (arquitectura behavioral o comportamental), donde a partir de las entradas el circuito implementa un algoritmo o receta para darnos las salidas; y arquitectura estructural.

El VHDL sería muy ineficaz si para describir un circuito complejo como un microprocesador o una UART tuviéramos que andar describiendo todos los procedimientos con detalle. Para esto surgió la arquitectura estructural, donde para un circuito dado se dice qué elementos se componen y cómo están enlazados. Estos elementos componentes a su vez pueden estar descritos de un modo o comportamental o estructural, a partir de elementos más pequeños.

En una arquitectura behavioral podemos encontrarnos los elementos típicos de otros lenguajes de programación, como funciones, bucles, decisiones simples y múltiples, variables, tipos de datos, etcétera.


Como Diseñar con VHDL

El VHDL es utilizado por miles de diseñadores de hardware en todo el mundo. Cuando un diseñador tiene necesidad de construir un sistema o circuito, piensa cómo debe funcionar, o de qué elementos se compone. Una vez que tiene la idea clara lo escribe en el ordenador utilizando el lenguaje VHDL, y compila la descripción resultante. Cuando el compilador le indica que la descripción está correctamente escrita, respetando las reglas del lenguaje, el diseñador piensa una serie de pruebas que su circuito debe superar para ser correcto, y lleva a cabo una simulación. Si su circuito no supera las pruebas deberá volver a repasar la descripción (al igual que haría con un programa en BASIC u otro lenguaje) y repetir el proceso.

Cuando el diseñador está satisfecho con su descripción, puede hacer varias cosas: sintetizar su circuito con un programa de síntesis y grabar el resultado sobre un chip programable como una FPGA, utilizando un pequeño quemador similar a los grabadores de PROMS, o también puede ir a un fabricante de ASICs y encargar una serie de chips con su diseño. Una tercera posibilidad es coger el fichero de texto donde ha grabado su descripción, y enviárselo a un amigo por correo electrónico o leérselo por teléfono, con la seguridad de que su amigo podrá interpretarlo perfectamente sin perder detalle.







Figura 1: Flujo de diseño en VHDL



El lenguaje VHDL permite representar sucesos que ocurren en un sistema de manera concurrente, es decir, a la vez. En un circuito electrónico existen múltiples procesos concurrentes, transistores y puertas emiten sus señales de forma simultánea. Además de los circuitos, la concurrencia se manifiesta en multitud de sistemas que nos rodean: las redes informáticas y de telefonía, el tráfico rodado, operaciones financieras, etcétera. Todas ellas podrían describirse y simularse en VHDL, aunque en la práctica se emplean lenguajes específicos en cada campo. El VHDL se emplea generalmente en diseñar circuitos electrónicos digitales que van a implementarse sobre PCBs, PLDs, FPGAs o sobre ASICs.

Básicamente en VHDL podemos hacer tres cosas:
• DESCRIBIR la estructura y el comportamiento de un circuito o sistema diseñado por nosotros a un fabricante, un subcontratista, un cliente o a otro colega, de una manera formal y completa.
• SIMULAR que el diseño descrito en VHDL se comporta según lo esperado, o más formalmente,
según las especificaciones del diseño.
• SINTETIZAR los diseños descritos a nivel de bloques predefinidos o de puertas lógicas y biestables con el fin de tener un esquemático que describa un PCB, que se pueda grabar en un chip programable como una FPGA, o de construir un ASIC.

No hay comentarios: