El diseño full custom y el diseño basado en FPGA’s

Layout de un sumador completo

Los diseños electrónicos tienen que cumplir varios requisitos a nivel de prestaciones, consumo y área. Cuando trabajamos con diseños sencillos se utilizan componentes con encapsulados grandes de agujero pasante (DIP). Estos componentes se pueden coger con la mano sin problemas. Los componentes se colocan sobre una placa de prototipos o una placa de circuito impreso (PCB). Si necesitamos que el área que ocupa el circuito sea reducida podemos emplear componentes de montaje superficial (SMD). Los componentes SMD ocupan menos espacio y mantienen las propiedades de los componentes más grandes.

A medida que aumenta la complejidad del diseño llega un momento en el que el área que ocupan los componentes es mayor que el soporte que contiene el circuito. Un ejemplo que muestra esto es un teléfono móvil. Necesitamos por una parte una potencia de procesado grande, un consumo reducido y al mismo tiempo un área pequeña. Aunque funcione perfectamente, no podemos vender un teléfono móvil si tiene un tamaño mucho mayor que los de la competencia. En estos casos es necesario integrar todas las funciones en un único chip (SoC – System On a Chip).

Dentro del mismo circuito integrado podemos tener varios microcontroladores / procesadores, memorias, convertidores de señal y módulos de comunicaciones. Para integrar todos los elementos podemos recurrir a dos tipos de diseño: el diseño full custom y el diseño con FPGA’s. En el primero conseguimos las mejores prestaciones así como unos consumos reducidos y un área de ocupación muy pequeña. En el segundo tipo de diseño sacrificamos algunas de estas ventajas para poder utilizar dispositivos programables. Con lo que he comentado hasta este momento es natural pensar que, si el diseño full custom nos proporciona las mejores prestaciones, hay que usarlo siempre. Como veremos esto es cierto pero con ciertas matizaciones.

Cuando montamos un circuito con componentes tradicionales (agujero pasante) podemos coger los componentes sin problemas con la mano. Si estamos usando un transistor tendremos una pequeña oblea de silicio con el transistor construido físicamente, un encapsulado que lo protege y nos permite cogerlo y unos terminales de conexión que comunican el transistor con el exterior. Dependiendo de la tecnología de fabricación empleada el transistor en la oblea de silicio puede ser más o menos grande pero se puede decir que respecto a las dimensiones del encapsulado su tamaño es prácticamente despreciable. Hay casos en los que las dimensiones son grandes como en los transistores de potencia pero en este artículo pretendo tratar el tema de forma general.

El diseño full custom lo que hace básicamente es coger el transistor, quitarle el encapsulado y los terminales de conexión y colocarlo directamente sobre la oblea de silicio. Al trabajar de esta forma el espacio que ocupa el transistor se reduce de forma drástica. En la siguiente figura podemos ver un circuito digital (un sumador completo) en un diseño microelectrónico.

Layout de un sumador completo

 

Layout de un sumador completo (http://pages.cs.wisc.edu/~david/courses/cs755/cs755/tutorials/tutorial6/tutorial6.html)

En un diseño full custom obtenemos unos valores de prestaciones, consumos y superficie ocupada óptimos. Al mismo tiempo conseguimos un coste por unidad muy reducido que nos permite ser muy competitivos. No todo son ventajas sino que hay también algunos inconvenientes importantes.

  • Es necesario contar con personal muy especializado.
  • En la escala nanométrica hay efectos físicos que pueden degradar el funcionamiento del circuito si no se tienen en cuenta.
  • Los tiempos de diseño, fabricación y verificación son largos (desde varios meses a un año).
  • El proceso sólo es rentable si superamos un número mínimo de unidades fabricadas.
  • Si aparece un error en el diseño la única alternativa es tirar la oblea de silicio y empezar de nuevo.

A partir de los beneficios e inconvenientes podemos decir que realizar un diseño full custom no es algo que una empresa pueda hacer de forma sencilla. Si queremos evitar estos inconvenientes podemos utilizar un diseño basado en FPGA’s. No conseguiremos todos los beneficios del diseño full custom pero si evitaremos muchos de sus inconvenientes. El primero de ellos es que la complejidad del diseño que se reduce de forma importante. El segundo es que el diseño es reprogramable permitiendo corregir los errores que se detecten sin tener que fabricar todo de nuevo.

Las FPGA’s son circuitos integrados que se venden comercialmente. El fabricante pone un conjunto de recursos genéricos como puertas lógicas o memorias y el diseñador debe conectarlos de forma adecuada para que realicen una función. Un microcontrolador incluye de serie recursos de alto nivel como memorias o módulos de comunicaciones. En la FPGA podemos usar recursos de ese tipo pero no estamos sujetos a las limitaciones del microcontrolador. Por ejemplo si queremos usar dos CPU en un microcontrolador tenemos que comprar dos integrados y comunicarlos entre ellos.

En la FPGA simplemente colocamos dos microcontroladores en el diseño y los conectamos en el mismo integrado. Lo mismo se aplica si queremos añadir más memoria o insertar bloques hardware dedicados con diseños a medida. Una operación que de forma secuencial puede costar 10 ciclos de ejecución en un microcontrolador se puede paralelizar (ejecutar en paralelo) en una FPGA y realizarse únicamente en 1 ciclo. Esta flexibilidad obliga a que el diseñador tengo unos niveles de conocimiento superiores a los necesarios para usar un microcontrolador pero le permite obtener prestaciones similares a las de un diseño full custom sin sus inconvenientes.

Para trabajar con una FPGA necesitamos una PCB que incluya tanto la FPGA como los componentes auxiliares que son necesarios para que funcione. Si estamos realizando un prototipo de un producto lo más sencillo es comprar un entrenador que incluye todo lo necesario para trabajar. Comercialmente podemos encontrar entrenadores que valen unos 60 € para las FPGA’s de gama baja. Las FPGA’s de gama alta también tienen entrenadores pero su precio aumenta de forma importante pudiendo superar los 1000 €. Una vez tenemos el entrenador, podemos programar la FPGA usando lenguajes de descripción de hardware como VHDL o Verilog o lenguajes de alto nivel como C si hemos insertado un microcontrolador como el Nios2. No estamos limitados a microcontroladores sino que podemos añadir una CPU ARM e incluso tarjetas gráficas embebidas.

Conclusiones

Este artículo es una pequeña introducción a los integrados SoC y a las tecnologías que nos permiten usarlos. Dependiendo de las prestaciones que busquemos los recursos necesarios para trabajar pueden ser económicos o ser accesibles únicamente para empresas grandes. Un ejemplo de esto lo tenemos en la fotografía que encabeza el artículo y que corresponde a un entrenador DE0-Nano de Terasic. El entrenador cuesta unos 60 € y lo podemos programar en VHDL o Verilog. Como  entorno de puede utilizar Quartus II, así como implementar el procesador Nios2 y programarlo en C directamente. Podemos implementar funciones hardware dedicadas y añadirlas como instrucciones personalizadas al microprocesador de forma que conseguimos por una parte el rendimiento de un hardware que se ejecuta en paralelo con la posibilidad de programarla en un lenguaje de alto nivel.

Recursos

 

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *