abril 15, 2024

BitCuco

¡Hola Mundo!

El FPGA y otros dispositivos programables

FPGA

FPGA

Un FPGA es circuito electrónico programable. Es capaz de ejecutar procesos concurrentes o paralelos y secuenciales. Hoy en día podemos encontrar estos dispositivos en electrodomésticos, equipos médicos, sistemas automotrices y de control industrial, entre otros.

Con la evolución de la electrónica, cada día tienen mejores y mayores características a ofrecer. También su costo se ha reducido. Asimismo, las herramientas para su programación, simulación y desarrollo son mas accesibles. Por lo tanto, cada día crecen más sus aplicaciones.

En esta publicación,inicialmente te voy a platicar sobre las generalidades de los dispositivos programables. Te mencionaré los tipos que existen. En seguida te hablaré sobre el FPGA.

Asimismo, te platicaré sobre el lenguaje de descripción de hardware. Es imprescindible para el desarrollo de sistemas basados en estos dispositivos, principalmente FPGA.

El diseño electrónico de las FPGA

fpga

Para comenzar, el Diseño Asistido por Computadora (CAD), es un término utilizado para todas las herramientas tecnológicas usadas en el diseño. También, se creé que este término se emplea únicamente para el tipo de herramientas del área de ingeniería mecánica.

Sin embargo, es un término general. Se puede utilizar en herramientas que apoyan en desarrollo de cualquier proyecto. Por ejemplo de tipo contable, arquitectónico, electrónico, entre otros.

Cabe señalar, que el grupo de herramientas, tanto de hardware como de software, que apoyan en el desarrollo de proyectos electrónicos, reciben el nombre de EDA. Que significa Electronic Design Automation.

Asimismo, tanto por el lado del software o programas, tenemos herramientas que nos ayudan considerablemente. Permiten representar mediante esquemas un circuito electrónico.

Otros programas nos permiten simularlos. También, existen programas que permiten simular un sistema mediante modelos o expresiones matemáticas. Estos ayudan a conocer su dinámica o comportamiento.

Asimismo, en el área del hardware, tenemos gran variedad de dispositivos que apoyan en el diseño electrónico. Todo esto con el fin de desarrollar un sistema electrónico de tipo comercial. Cabe señalar, que estos dispositivos reducen el costo y tiempo del desarrollo de un proyecto de sistemas electrónicos.

De forma general, estos dispositivos reciben el nombre de Circuito Integrado de Aplicación Específica (ASIC). Los dispositivos programables, donde el FPGA es un ejemplo de este tipo de dispositivos, cada día se involucran más en el desarrollo de ASICs.

Los Circuitos Integrados de Aplicación Específica

asic

Como se mencionó antes, los ASICs son dispositivos electrónicos. Permiten el desarrollo de circuitos integrados para una aplicación en particular. También, de forma general se clasifican en Full custom, Celdas estándar. Incluye los Arreglos de Compuertas y de Lógica Programable.

Los de tipo Full Custom, son diseños sobre medida. Cada transistor, compuerta o elemento requerido en el circuito es conectado, desarrollado y mandado a fabricar. También, son altamente eficientes y veloces. Sin embargo, tienen un alto costo. El fabricante tendrá que adecuar su sistema de producción a las características que requiere un diseño de este tipo.

Las celdas estándar contienen bloques lógicos y funcionales predefinidos. Estos son compuertas lógicas, flip-flops, multiplexores, registro, etc. Cabe señalar, que este tipo de celdas son plantillas predefinidas. Se utilizan en cada etapa del proceso de fabricación del dispositivo. Es decir, no son diseños únicos como suele suceder en los dispositivos de tipo Full Custom.

Los arreglos de compuertas son circuitos con un número predefinido de compuertas y elementos lógicos. Asimismo, son interconectados momentos antes de finalizar su producción o fabricación. Esto es acorde a las especificaciones requeridas. Son más económicos que los anteriores. Se producen en gran volumen y son personalizados hasta el final. Es decir, diseños similares compartirán características generales. Antes de que termine su fabricación son particularizados.

Un dispositivo de lógica programable es aquel que su estructura lógica final es directamente configurada por el usuario. No hay necesidad de hacer uso del algún proceso de fabricación. También se les llama FPIC. Significa, circuito integrado de programación en campo. Es decir, que utiliza herramientas accesibles para el usuario. Es decir, no son especiales y costosas y los pueden configurar o programar. En este grupo de dispositivos tenemos los PLDs, ASPL, Microcontroladores, Memorias y FPGA.

El FPGA y otros dispositivos de Lógica Programable

fpga

Un Dispositivo Lógico Programable, PLD por sus siglas en inglés, es un dispositivos electrónico. Permite la modificación se sus características mediante programación. Es decir, en su interior cuenta con diversos dispositivos. Pueden se conectados y utilizados de la forma en que mejor convenga al diseño y funcionamiento requerido. Son dispositivos que sirven para el desarrollo de hardware a la medida por el usuario.

Dentro de los PLDs tenemos los PAL (Lógica de arreglo programable). También a los PLA (arreglo lógico programable). Ambos consisten de arreglos de compuertas AND y OR. Con la particularidad de que en los PAL, el arreglo OR es fijo. No puede configurarse. En los PLA, ambos arreglos son configurables por el usuario.

Un ASPLD, Dispositivo Lógico Programable de Aplicación Específica, básicamente es un PLD. Tiene la característica de que su diseño se enfoca en desarrollar funciones específicas. Tales pueden ser decodificadores, secuenciadores, entre otras. Asimismo, sigue siendo un elemento con un conjunto de bloques y funciones generales. Son configurados totalmente por el usuario. Como ya se mencionó, está optimizado para aplicaciones muy particulares.

Un microcontrolador, es un dispositivo electrónico basado en un microprocesador. Está acompañado de diversos elementos que le permiten hacer la función una computadora pequeña. Es decir, aparte del microprocesador, cuentan con bloques de memoria y unidades de comunicación. Incluye periféricos que le permiten procesar las instrucciones indicadas por el usuario.

Los diversos tipos de memorias como PROM (memoria programable de sólo lectura), EPROM (memoria programable y borrable de sólo lectura) y EEPROM (memoria programable y borrable electrónicamente de sólo lectura), pueden considerarse PLDs. Permiten implementar funciones lógicas. Esto es almacenando de cierta forma su tabla de verdad. También permiten el desarrollo de sistemas secuenciales.

El FPGA serán detallados más adelante.

El FPGA

FPGA
Programación FPGA

Comencemos por aclarar que FPGA significa Arreglo de Compuertas Programables en Campo. Cabe señalar que consiste de un arreglo de bloques lógicos configurables y bloques de entrada y salida. Incluye bloques de memoria RAM y bloques para el procesamiento digital de señales, principalmente. También, puede ser configurado o programado en campo por los usuarios. Es utilizado extensivamente en el diseño de circuitos electrónicos digitales complejos.

Asimismo, se utilizan ampliamente debido a la gran diversidad de marcas y características con que se pueden encontrar de forma comercial. Así como la disponibilidad de programas para el desarrollo de proyectos basados en ellos. También se pueden incluir y usar librerías desarrolladas por otros usuarios o fabricantes para aplicaciones. Por ejemplo, de procesamiento de video, procesamiento digital de señales y otra gran variedad de soluciones.

Los bloques lógicos configurables permiten desarrollar e implementar sistemas lógicos combinacionales y secuenciales. Aquellos de entrada y salida establecen la comunicación entre el mundo exterior y los bloques lógicos configurables. Los bloques de RAM apoyan en la ejecución de diversas operaciones. Facilitan el almacenamiento y transferencia de información entre procesos. Los bloques de procesamiento de señales se configuran para procesos específicos como filtrado de señales, entre otros.

Actualmente el FPGA puede soportar interfaces de comunicación de alta velocidad. También protocolos Ethernet, USB y AHB, entre otros. Cada FPGA tiene tiene múltiples recursos de ruteo o conexión. Son utilizados para establecer la comunicación entre sus diversos componentes internos y bloques.

Existe una gran reto para una empresa que desarrolla sistemas electrónicos. Este es, desarrollarlos con diseños de funcionalidad mejorada en circuitos integrados de menor tamaño. Los FPGAs son la mejor solución parta este tipo de retos. Reducen el tiempo de desarrollo de ASICs, así como el riesgo de inversión.

La descripción de hardware, base para configuración del FPGA

vhdl

En el proceso del diseño electrónico, después de concebir la idea del sistema que se desea desarrollar se debe describir lo que se pretende lograr. Hace varios varios años surgieron las herramientas CAD y EDA. Pero se limitaban únicamente a programas dedicados al dibujo. En el caso de la electrónica, el dibujo de circuitos de este tipo.

Posteriormente se incorporaron programas, que aparte de permitir desarrollar el esquema electrónico, lo simulaban. Lo que ayuda a conocer si el diseño es funcional o no. Permitiendo la identificación temprana de errores. También aparecieron los programas para el dibujo del circuito. Pero incluyen la generación de plantillas para su fabricación en tarjetas de circuitos o PCBs.

Casi a la par de los anteriores se desarrollaron lenguajes utilizados para describir circuitos de forma textual. Inicialmente, el primer formato establecido se conoce como Netlist. Consiste únicamente de una lista de componentes. También interconexiones e indicaciones sobre entradas, salidas e interfaces de comunicaciones. El estándar industrial EDIF es un ejemplo de este tipo de descripción. Posteriormente, fabricantes y diseñadores se dieron cuenta de que no era suficiente describir los elementos que integraban un circuito y sus interconexiones. Era necesario explicar su funcionamiento. Lo anterior, complementó la aparición de los lenguajes de descripción de hardware.

Hoy en día, han evolucionado el diseño y tecnologías de manufactura. Por lo tanto, la mayor parte de lo diseños de circuitos integrados de aplicación específica son descritos e implementados en VHDL y Verilog. Asimismo, ambos son lenguajes de descripción de hardware. Cada uno tiene sus características, bondades y ventajas. Sin embargo, el VHDL es el más utilizado.

Bases del VHDL

Cabe resaltar que ni Verilog o VHDL son lenguajes de programación. Como ya se mencionó, sirven para describir hardware. Tanto los lenguajes de programación y de descripción indican funcionalidad. VHDL y Verilog incluyen la parte de indicar el hardware a utilizar. Un lenguaje de programación sólo trabaja con instrucciones secuenciales. Un lenguaje de descripción de hardware aparte de éstas, incluye concurrentes. Es decir, de ejecución paralela. También, se debe recalcar que la descripción de hardware únicamente se utiliza para el diseño de circuitos electrónicos. Se requiere de un amplio conocimiento de esta área para poderse efectuar de forma correcta y eficiente.

VHDL es un término que viene del ingles Very-High-Speed Integrate Circuit Hardware Description Languaje. Posteriormente se acortó al término VHDL. También, como ya se mencionó, es un lenguaje utilizado para describir elementos. Incluyendo conexiones y funcionalidad de un circuito integrado. Asimismo, es un lenguaje utilizado para la configuración final de cualquier FPGA. También se utiliza con los PALs y PLAs. Cabe señalar que fue desarrollado por el departamento de defensa de Estado Unidos. Su versión inicial es el estándar IEEE 1076-1987. Cabe resaltar, que dicho estándar es de tipo open source. Ha ido evolucionando para mejorar su funcionalidad, El 2019 es el año en que salió su última versión.

Secciones en VHDL

La descripción de un circuito en VHDL consiste de las siguientes partes:

1. Librerías. Se indica otro tipo de descripciones, así como bajo que estándar se van a utilizar
2. Package. Indica el estándar electrónico que se va a utilizar.
3. Entidad (entity). Se indican entradas y salidas.
4. Arquitectura. Indica el funcionamiento.
5. Componentes. Describe funcionalidad lógica y asocia arquitecturas con la entidad.
6. Configuración. Define la relación entre componentes, la entidad y arquitecturas.
7. Subprogramas o procedimientos. Múltiples objetos o rutinas a utilizarse en las arquitecturas.

Las características y tipos de descripciones de los lenguajes VHDL y Verilog deben estudiarse profundamente. Esto permitirá desarrollar descripciones y circuitos altamente eficientes. Por lo tanto, si te interesa adentrarte en esta área te recomiendo acudir a bibliografía especializada.

Conclusiones

En esta publicación has aprendido las bases para comprender términos y procesos del diseño de circuitos electrónicos. También, te expliqué los diversos dispositivos que existen para el desarrollo de ASICs. Partimos de aquellos que se configuran de fábrica. Finalizamos con los que podemos configurar los usuarios finales.

Asimismo, vimos que existen diversos tipos de dispositivos programables. Podemos destacar los PAL, PLA, Memorias, Microcontroladores y FPGA. También resaltamos que gracias al avance tecnológico los FPGAs son la alternativa para diseños complejos. También reducen el riesgo de inversión y aceleran el proceso o ciclo de diseño.

Finalmente, vimos que para la programación o configuración de diversos dispositivos como los FPGAs se requiere la descripción de hardware.

El lenguaje de descripción de hardware permite explicar los elementos que integran un circuito . También sus conexiones y funcionamiento de cada elemento. Los principales son el VHDL y Verilog, siendo el primero el que mas destaca.