Intesc empieza como una empresa que se dedica al diseño de sistemas embebidos basados en FPGA (Algo así como Arreglo de Compuertas Programable en Campo) para posteriormente comenzar el diseño de tarjetas de desarrollo. Así que no podemos evitar aprovechar cualquier espacio para hablar de la tecnología que tanto nos gusta y hacer una breve, pero importante, comparativa de su comportamiento frente a los famosos microcontroladores. Además, podemos aclarar algunos conceptos que suelen escucharse en FPGAs, como Descripción de Hardware.

Hablaremos primero de la estructura interna de un FPGA. Éstos están llenos de componentes conocidos como Bloques Lógicos Configurables (CLB, por sus siglas en inglés) que están conectados con otros CLB a través de buses de conexión, como muestra la figura 1. Por ejemplo, piensa en un rompecabezas, donde cada pieza embona por sus 4 lados con otras 4 piezas, el concepto es el mismo en un FPGA. Cuando descargas el archivo de programación hacia el FPGA, las conexiones entre los diferentes CLB se habilitan o deshabilitan de acuerdo al diseño que estas construyendo.

Figura 1. CLB y conexiones internas

Pero eso sólo son las conexiones, ahora, ¿Cómo se implementa el sistema que estás diseñando dentro del FPGA?, la respuesta reside dentro de los mismos CLB. Sin entrar en mucho detalle, existen 3 bloques básicos dentro de cada CLB: una LUT (Look-Up Table), un Flip Flop D y un Multiplexor, ver figura 2.

Figura 2. Estructura simplificada de un CLB

El primer componente, la LUT, es en esencia una memoria RAM y es utilizada para implementar los diseños combinacionales: el software, a través del lenguaje de descripción de Hardware, obtiene la tabla de verdad del sistema que estas construyendo y la almacenan en las LUT para que éstas emulen el comportamiento combinacional que estas diseñando. En los FPGA Spartan 3E de Xilinx, las LUT son de 4 bits de entrada por 1 bit de salida. Entonces, en cada LUT de un Spartan 3E se pueden almacenar las respuestas de una ecuación booleana de hasta 4 bits de entrada. La figura 3 muestra un ejemplo de implementación de un detector de números primos de 4 bits. En la figura 3a, se pueden observar la tabla de verdad y su ecuación obtenida usando mapas de Karnaugh, mientras que la figura 3b exhibe el resultado obtenido del sotware ISE Design Suite de Xilinx. Aunque a primera vista parecieran resultados diferentes, en realidad tanto las tablas como las ecuaciones son completamente iguales.

Figura 3. Tablas de verdad y ecuaciones booleanas usando mapas de Karnaugh (a) y utilizando ISE Design Suite ver. 14.7 (b)

Sin embargo, los sistemas digitales no sólo son combinacionales, sino también pueden ser secuenciales y es aquí donde entran el Flip Flop D de cada LUT. Dentro del CLB, existe una conexión directa entre la LUT y el Flip Flop D (ver figura 2), creando así un sistema secuencial. Sin embargo, si esos dos fueran los únicos componentes, entonces las LUT siempre entregarían como resultado una señal sincronizada a un reloj, debido al Flip Flop D, pero los FPGA son capaces de implementar sistemas digitales combinacionales y secuenciales por igual. Para lograr esto, entra en juego el tercer componente dentro del CLB: el multiplexor (ver figura 2). A las entradas de este componente, llegan la LUT y el Flip Flop D, permitiendo así seleccionar la salida del CLB adecuada de acuerdo al sistema digital diseñado, sea éste combinacional o secuencial.

Dado que su comportamiento se basa en una tabla de verdad, cuando hablamos de diseño en FPGA hablamos de que éstos dispositivos son capaces de emular el comportamiento del sistema digital, es decir, se comportan como el sistema digital que estas tratando de implementar. Por ejemplo, si te encuentras diseñando un sumador de 2 bits, el FPGA se comporta como el sumador o hablando de algo más complejo, si diseñas un microcontrolador en el FPGA, éste se comportará como dicho microcontrolador. Otros dispositivos, como los microcoprocesadores, simulan el comportamiento, es decir, si quieres hacer la operación AND entre 2 entradas, el microprocesador te entregará el resultado correcto, pero no se comporta como compuerta AND.

Podría extenderme considerablemente, pero finalizaré mencionando que en un FPGA debes estar siempre consiente de que estás diseñando Hardware y lo más importante es que conozcas correctamente la sintaxis del lenguaje para que funcione lo que tu quieres. Los resultados que puedes obtener cuando diseñas usando VHDL con FPGAs pueden ser increíbles y las áreas de aplicación van desde diseño de sistemas digitales combinacionales y secuenciales para asignaturas en ingeniería, hasta diseño de microprocesadores.

Lo siento, debes estar conectado para publicar un comentario.
Menú