Está en la página 1de 25

FPGA´S SINTESIS:

Field Programmable Gate Array

Una FPGA de Altera.

Una Spartan de Xilinx.

ASIC
Circuito Integrado para aplicaciones específicas (o ASIC, por sus siglas en inglés Application-
Specific Integrated Circuit) es un circuito integrado hecho a la medida para un uso en particular, en
vez de ser concebido para propósitos de uso general. Se usan para una función específica. Por
ejemplo, un chip diseñado únicamente para ser usado en un teléfono móvil es un ASIC. Por otro
lado, los circuitos integrados de la serie 74XX son circuitos lógicos (combinacionales o secuenciales)
que se pueden utilizar para una multiplicidad de aplicaciones. En un lugar intermedio entre los ASIC
y los productos de propósito general están los productos estándar para aplicaciones específicas, o
ASSP por sus siglas en inglés.
Con los avances en la miniaturización y en las herramientas de diseño, la complejidad máxima, y por
ende la funcionalidad, un ASIC ha crecido desde 5.000 puertas lógicas a más de 100 millones. Los
ASIC modernos a menudo incluyen procesadores de 32-bit, bloques de memoria
RAM, ROM, EEPROM y Flash, así como otros tipos de módulos. Este tipo de ASIC frecuentemente
es llamado sistema en 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.
Las FPGA (Field Programmable Gate Arrays, matriz de puertas programables) son la versión
moderna de los prototipos con puertas lógicas de la serie 7400 contienen bloques de lógica
programable e interconexiones programables que permiten a un modelo de FPGA ser usada en
muchas aplicaciones distintas. Para los diseños más pequeños o con volúmenes de producción más
bajos, las FPGA pueden tener un costo menor que un diseño equivalente basado en ASIC, debido a
que el costo fijo (el costo para preparar una línea de producción para que fabrique un ASIC en
particular), es muy alto, especialmente en las tecnologías más densas, más de un millón de dólares
para una tecnología de 90nm o menor.
FPGA
( Field Programmable Gate Array) es un dispositivo semiconductor que contiene bloques de lógica
cuya interconexión y funcionalidad puede ser configurada 'in situ' mediante un lenguaje de
descripción especializado. La lógica programable puede reproducir desde funciones tan sencillas
como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta
complejos sistemas en un chip.
Las FPGAs se utilizan en aplicaciones similares a los ASICs sin embargo son más lentas, tienen un
mayor consumo de potencia y no pueden abarcar sistemas tan complejos como ellos. A pesar de
esto, las FPGAs tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad al
flujo de diseño), sus costes de desarrollo y adquisición son mucho menores para pequeñas
cantidades de dispositivos y el tiempo de desarrollo es también menor.
Ciertos fabricantes cuentan con FPGAs que sólo se pueden programar una vez, por lo que sus
ventajas e inconvenientes se encuentran a medio camino entre los ASICs y las FPGAs
reprogramables.
Históricamente las FPGA surgen como una evolución de los conceptos desarrollados en las PAL y
los CPLD.

Historia: FPGA vs CPLD

Las FPGAs fueron inventadas en el año 1984 por Ross Freeman y Bernard Vonderschmitt, co-
fundadores de Xilinx, y surgen como una evolución de los CPLDs.

CPLD

Procesador de un CPLD de la marca Altera. (Imagen tomada de Wikipedia)

Del acrónimo inglés Complex Programmable Logic Device, los CPLD extienden el concepto de


un PLD (del acrónimo inglés Programmable Logic Device) a un mayor nivel de integración ya que
permite implementar sistemas más eficaces, utilizan menor espacio, mejoran la fiabilidad del diseño
y reducen costos. Un CPLD se forma con múltiples bloques lógicos, cada uno similar a un PLD. Los
bloques lógicos se comunican entre sí utilizando una matriz programable de interconexiones, lo cual
hace más eficiente el uso del silicio, conduciendo a una mejor eficiencia a menor costo. La mayoría
de los CPLDs usan una de dos configuraciones para esta matriz: interconexión mediante bloques o
interconexión mediante multiplexores.
El primero se basa en una matriz de filas y columnas con una celda programable de conexión en
cada intersección. Al igual que en las GAL esta celda puede ser activada para conectar/desconectar
la correspondiente fila y columna. Esta configuración permite una total interconexión entre las
entradas y salidas del dispositivo o bloques lógicos. Sin embargo, estas ventajas provocan que
disminuya el rendimiento del dispositivo, además de aumentar el consumo de energía y el tamaño
del componente.
En la interconexión mediante multiplexores, existe un multiplexor por cada entrada al bloque lógico.
Las vías de interconexión programables son conectadas a las entradas de un número de
multiplexores por cada bloque lógico. Las líneas de selección de estos multiplexores son
programadas para permitir que sea seleccionada únicamente una vía de la matriz de interconexión
por cada multiplexor la cual se propagara a hacia el bloque lógico. Cabe mencionar que no todas las
vías son conectadas a las entradas de cada multiplexor. La rutabilidad se incrementa usando
multiplexores de mayor tamaño, permitiendo que cualquier combinación de señales de la matriz de
interconexión pueda ser enlazada hacia cualquier bloque lógico. Sin embargo, el uso de grandes
multiplexores incrementa el tamaño de dispositivo y reduce su eficiencia.
(fuente:https://es.wikipedia.org/wiki/CPLD#:~:text=Un%20CPLD%20(del%20acr%C3%B3nimo%20ingl%C3%A9s,Device)%20es%20un%20dispositivo
%20electr%C3%B3nico)

Tanto los CPLDs como las FPGAs contienen un gran número de elementos lógicos programables. Si
medimos la densidad de los elementos lógicos programables en puertas lógicas equivalentes
(número de puertas NAND equivalentes que podríamos programar en un dispositivo) podríamos
decir que en un CPLD hallaríamos del orden de decenas de miles de puertas lógicas equivalentes y
en una FPGA del orden de cientos de miles hasta millones de ellas.
Aparte de las diferencias en densidad entre ambos tipos de dispositivos, la diferencia fundamental
entre las FPGAs y los CPLDs es su arquitectura. La arquitectura de los CPLDs es más rígida y
consiste en una o más sumas de productos programables cuyos resultados van a parar a un número
reducido de biestables síncronos (también denominados flip-flops). La arquitectura de las FPGAs,
por otro lado, se basa en un gran número de pequeños bloques utilizados para reproducir sencillas
operaciones lógicas, que cuentan a su vez con biestables síncronos. La enorme libertad disponible
en la interconexion de dichos bloques confiere a las FPGAs una gran flexibilidad.
Otra diferencia importante entre FPGAs y CPLDs es que en la mayoría de las FPGAs se pueden
encontrar funciones de alto nivel (como sumadores y multiplicadores) embebidas en la propia matriz
de interconexiones, así como bloques de memoria.
Historia
Las FPGA son el resultado de la convergencia de dos tecnologías diferentes, los dispositivos lógicos
programables PLDs y los circuitos integrados de aplicación específica ASIC. La historia de
los PLDs comenzó con los primeros dispositivos PROM (Programmable Read-Only Memory) y se les
añadió versatilidad con los PAL (Programmable Array Logic) que permitieron un mayor número de
entradas y la inclusión de registros. Esos dispositivos han continuado creciendo en tamaño y
potencia. Mientras, los ASIC siempre han sido potentes dispositivos, pero su uso ha requerido
tradicionalmente una considerable inversión tanto de tiempo como de dinero. Intentos de reducir esta
carga han provenido de la modularización de los elementos de los circuitos, como los ASIC basados
en celdas, y de la estandarización de las máscaras. El paso final era combinar las dos estrategias
con un mecanismo de interconexión que pudiese programarse utilizando fusibles, antifusibles o
celdas RAM, como los innovadores dispositivos Xilinx de mediados de los 80. Los circuitos
resultantes son similares en capacidad y aplicaciones a los PLDs más grandes. Además de en
computación reconfigurable, las FPGAs se utilizan en controladores, codificadores/decodificadores y
en el prototipado de circuitos VLSI y microprocesadores a medida.
El primer fabricante de estos dispositivos fue Xilinx [2] y los dispositivos de Xilinx se mantienen como
uno de los más populares en compañías y grupos de investigación. Otros vendedores en este
mercado son Atmel, Altera, AMD y Motorola.
Características
Una jerarquía de interconexiones programables permite a los bloques lógicos de un FPGA ser
interconectados según la necesidad del diseñador del sistema, algo parecido a un breadboard (es
una placa de uso genérico reutilizable o semi permanente) programable. Estos bloques lógicos e
interconexiones pueden ser programados después del proceso de manufactura por el
usuario/diseñador, así que el FPGA puede desempeñar cualquier función lógica necesaria.
Una tendencia reciente ha sido combinar los bloques lógicos e interconexiones de los FPGA con
microprocesadores y periféricos relacionados para formar un «Sistema programable en un chip».
Ejemplo de tales tecnologías híbridas pueden ser encontradas en los dispositivos Virtex-II PRO y
Virtex-4 de Xilinx, los cuales incluyen uno o más procesadores PowerPC embebidos junto con la
lógica del FPGA. El FPSLIC de Atmel es otro dispositivo similar, el cual usa un procesador AVR en
combinación con la arquitectura lógica programable de Atmel. Otra alternativa es hacer uso de
núcleos de procesadores implementados haciendo uso de la lógica del FPGA. Esos núcleos incluyen
los procesadores MicroBlaze y PicoBlaze de Xlinx, Nios y Nios II de Altera, y los procesadores
de código abierto LatticeMicro32 y LatticeMicro8.
Muchos FPGA modernos soportan la reconfiguración parcial del sistema, permitiendo que una parte
del diseño sea reprogramada, mientras las demás partes siguen funcionando. Este es el principio de
la idea de la «computación reconfigurable», o los «sistemas reconfigurables».

Programación
La tarea del programador es definir la función lógica que realizará cada uno de los CLB, seleccionar
el modo de trabajo de cada IOB e interconectarlos.
El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas
a implementarse en un FPGA. Un diseño puede ser capturado ya sea como esquemático, o
haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación especiales
son conocidos como HDL o Hardware Description Language (lenguajes de descripción de hardware).
Los HDLs más utilizados son:

 VHDL
 Verilog
 ABEL
En un intento de reducir la complejidad y el tiempo de desarrollo en fases de prototipaje rápido, y
para validar un diseño en HDL, existen varias propuestas y niveles de abstracción del diseño. Entre
otras, National Instruments LabVIEW FPGA propone un acercamiento de programación gráfica de
alto nivel.

Aplicaciones
Cualquier circuito de aplicación específica puede ser implementado en un FPGA, siempre y cuando
esta disponga de los recursos necesarios. Las aplicaciones donde más comúnmente se utilizan los
FPGA incluyen a los DSP (procesamiento digital de señales), radio definido por software, sistemas
aeroespaciales y de defensa, prototipos de ASICs, sistemas de imágenes para medicina, sistemas
de visión para computadoras, reconocimiento de voz, bioinformática, emulación de hardware de
computadora, entre otras. Cabe notar que su uso en otras áreas es cada vez mayor, sobre todo en
aquellas aplicaciones que requieren un alto grado de paralelismo.
Existe código fuente disponible (bajo licencia GNU GPL)1 de sistemas
como microprocesadores, microcontroladores, filtros, módulos de comunicaciones y memorias, entre
otros. Estos códigos se llaman cores.

Tecnología de la memoria de programación


Las FPGAs también se pueden diferenciar por utilizar diferentes tecnologías de memoria:

 Volátiles: Basadas en RAM. Su programación se pierde al quitar la alimentación. Requieren


una memoria externa no volátil para configurarlas al arrancar (antes o durante el reset).
 No Volátiles: Basadas en ROM. Hay de dos tipos, las reprogramables y las no
reprogramables.

1. Reprogramables: Basadas en EPROM o flash. Éstas se pueden borrar y volver a reprogramar


aunque con un límite de unos 10.000 ciclos.
2. No Reprogramables: Basadas en fusibles. Solo se pueden programar una vez, lo que las hace
poco recomendables para trabajos en laboratorios.

Ejemplo de tarjeta de desarrollo que incorpora una FPGA:


Fabricantes
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).

Enlaces externos

  Wikimedia Commons alberga contenido multimedia sobre Field Programmable Gate Array.


 Grupo HDL-FPGA Lista de correo, en idioma español, para discusión de temas relacionados con HDLs y FPGAs.
 Más información sobre FPGA. (en inglés)
 Grupos de trabajo con FPGA Lista de grupos de discusión FPGA, administrados por el MC Luis Orantes graduado de
la Universidad de Pittsburgh en EUA.
 Proyecto para intercambiar programas para FPGA (En castellano)
 Cores libres Sitio de descarga de cores libres y gratuitos. (en inglés)
 Central de FPGA: vendedor, foro, IP, webcast (en inglés)
 JCRA: Congreso español sobre Computación Reconfigurable y Aplicaciones  (En español)
 Fabricantes: Actel, Altera, Atmel, Cypress, Lattice, QuickLogic, Xilinx. (en inglés)
 Portal sobre FPGAs Argentina
 Fpga Libres Fpga Libres
 FPGA Database
Recursos

 Arquitectura de las FPGAs y CPLDs (inglés)


 ¿Cómo funcionan la lógica programable? (inglés)
 FPGA Central: Vendor, Forum, IP, Webcast (inglés)
 Almacén FPGA FAQ (inglés)
 Altera Tutorials and Lab Exercises (Inglés).  - Archivos en VHDL y Verilog HDL.
 Lista de sistemas y tarjetas FPGA (inglés)
 FPGA Tutoriales (inglés)
 DSP-FPGA.com Revista de electrónica (inglés)
 OpenFPGA
 OpenCores.org - Código abierto de algunas IP (Intelectual Property) (inglés)
 Diseño de FPGA desde cero (inglés)
 Diseño digital utilizando lógicas programables
 Conceptos claves del lenguaje VHDL Presentación en inglés con diapositivas.(Intelectual Property)
 Simulador de códigos HDL usando el compilador de C  (en inglés)
 https://www.researchgate.net/publication/321024930_Fundamentals_of_FPGA_Architecture
Utilidades

 Altium Designer - Utilidad de diseño de Altera, Xilinx, Actel, y otras familias FPGA/CPLD
 Quartus - Utilidad de diseño para los dispositivos Altera
 ISE - Utilidad de diseño para los dispositivos Xilinx
 ispLEVER - Paquete de aplicaciones para los dispositivos Lattice
 LogicSim - Herramienta de simulación FPGA
 ModelSim - Simulador de diferentes lenguajes de programación hardware HDL/Verilog
 Synplify - Herramienta de síntesis FPGA

ALGO DE HISTORIA
DISPOSITIVOS PLD
SISTEMA DE MEMORIA

Ver los siguientes videos en ese orden:


El Evento2016 - FPGAs libres - Juan González (Obijuan) 1:00:50
https://www.youtube.com/watch?v=By8x3gL88T0

QUE ES UNA FPGA, ES EL FINAL DE ARDUINO? 25:26


https://www.youtube.com/watch?v=RYAk5bZtj4U

FPGA ES FACIL CONFIGURARLO O NO? 17:40


https://www.youtube.com/watch?v=YFQeNDnbNSY

Ahora Ver y leer el siguiente PDF “EL FPGA ESPARTAN 3E DE XILINX”


http://www.utm.mx/~fsantiag/Sist_Dig/04_Spartan3E_Xilinx.pdf

Otros LINK´S Complementarios:


http://ece-research.unm.edu/jimp/415/contrib/toronto_fpga_tut.pdf :
https://nptel.ac.in/content/storage2/courses/108105057/Pdf/Lesson-20.pdf :
https://indico.cern.ch/event/557251/contributions/2245630/attachments/1310088/2144398/2017_01_31_FPGA_

Lecture_HS.pdf :
NOTA:

IDE Un entorno de desarrollo integrado o entorno de desarrollo interactivo, en inglés Integrated


Development Environment (IDE), es una aplicación informática que proporciona servicios integrales
para facilitarle al desarrollador o programador el desarrollo de software.

LUT Una LUT, que significa LookUp Table, en términos generales es básicamente una tabla que
determina cuál es el resultado para cualquier entrada (s) dada
En otras palabras, cualquier comportamiento que se obtiene al interconectar cualquier número de
puertas (como AND, NOR, etc.), sin rutas de retroalimentación (para asegurar que no tenga estado),
puede implementarse mediante una LUT.
La forma en que los FPGA normalmente implementan la lógica combinatoria es con los LUT, y
cuando el FPGA se configura, simplemente llena los valores de salida de la tabla, que se denominan
"LUT-Mask", y está compuesto físicamente de bits SRAM. Por lo tanto, la misma LUT física puede
implementar Y = AB y Y = AB ', pero la LUT-Mask es diferente, ya que la tabla de verdad es
diferente.
También puedes crear tus propias tablas de búsqueda. Por ejemplo, podría construir una tabla para
una función matemática compleja, que funcionaría mucho más rápido que en realidad calcular el
valor siguiendo un algoritmo. Esta tabla se almacenaría en RAM o ROM.
Esto nos lleva a ver las LUT simplemente como memoria, donde las entradas son la dirección y las
salidas correspondientes son los datos almacenados en la dirección dada.
LUT (Look-Up Table) is a small asynchronous SRAM that is used to implement combinational logic, while
FF (Flip-Flop) is a single-bit memory cell used to hold state.

LUTs are usually read-only and their content can only be changed during FPGA configuration. But in
Xilinx FPGAs afaik usually half of LUTs can actually be written to, so they can be used to implement many
small RAMs (so-called "distributed RAM"). Flip-flops can be written to and in fact, it is their main purpose.

Flip-flop value can be accessed directly and can be routed to any place you want, while reading LUT
content requires an address, so you can only access a single stored bit at a time. Because of this LUTs
can store more than flip-flops.

Aquí hay una instantánea de Arquitectura FPGA por Altera:


    

Una LUT de dos entradas (tabla de búsqueda) se puede representar genéricamente de esta manera:
MODELO NEXYS 2 (Disponible en el laboratorio de la UAN Neiva)
Familias de dispositivos
CPLDs

 MAX 3000A: EPM3032A, EPM3064A, EPM3128A, EPM3256A, EPM3512A


 MAX 7000: EPM7032B, EPM7064B, EPM7128B, EPM7256B, EPM7512B
 MAX II: EPM240, EPM570, EPM1270, EPM2210
FPGAs de alto rendimiento

 Stratix: anunciado el 11 de febrero de 2002


 Stratix GX: anunciado el 24 de noviembre de 2002
 Stratix II: anunciado el 2 de febrero de 2004
 Stratix II GX: anunciado el 24 de octubre de 2005
 Stratix III: anunciado el 8 de noviembre de 2006

FPGAs de bajo coste

 Cyclone: anunciado el 23 de septiembre de 2002


 Cyclone II: anunciado el 28 de junio de 2004
 Cyclone III: anunciado el 19 de marzo de 2007
 Arria GX: anunciado el 8 de mayo de 2007

Un 'Flex EPF10K20' FPGA (un producto de Altera).


ASICs estructuradas
 HardCopy Stratix: anunciado el 4 de febrero de 2002
 HardCopy II: anunciado el 24 de enero de 2005

Productos software de diseño

 Quartus II
 Quartus II Edición Web
 SOPC Builder
 DSP Builder
 MAX+PLUS II
 MAX+PLUS II BASELINE
FPGA en el mundo de Arduino:
Por Steve Leibson
Colaboración de Editores de Digi-Key de América del Norte
2019-05-01

Los arreglos programables de puertas en campo (FPGA) proporcionan una manera de resolver
problemas de diseño integrado en tiempo real con hardware cuando el firmware que se ejecute en un
microcontrolador o microprocesador sea demasiado lento. También permiten la flexibilidad periférica.
Sin embargo, el uso de FPGA ha significado aprender nuevos lenguajes de programación
(generalmente Verilog o VHDL), aprender un flujo de desarrollo completamente nuevo para generar
flujos de bits de FPGA y posiblemente gastar una cantidad significativa de dinero en una placa de
desarrollo de FPGA.

Debido a estos obstáculos, muchos ingenieros de diseño están reacios a utilizar los FPGA,
aunque sean una herramienta muy útil en la caja de herramientas de diseño. Para superar esta
reticencia, algunos proveedores están trabajando arduamente para acortar la curva de
aprendizaje de FPGA. Por ejemplo, Arduino introdujo la placa de desarrollo de FPGA
Arduino ABX00022 MKR Vidor 4000 (consulte, "Aplicar FPGA rápida y fácilmente con Arduino MKR
Vidor 4000"). El Arduino MKR Vidor 4000 agrega una manera de programar el FPGA que se integra
perfectamente con el muy popular entorno completo de desarrollo integrado (IDE) de Arduino al
mismo tiempo que obtiene un rendimiento de nivel FPGA mediante el uso de extensiones de
biblioteca especiales de Arduino.

Ahora, existe una nueva alternativa a las ofertas anteriores, incluida la placa Arduino MKR
Vidor 4000. Alorium Technology ha desarrollado una forma algo diferente de agregar el rendimiento
de FPGA al mundo del desarrollo integrado de Arduino. El enfoque de Alorium proporciona tanto
bloques IP preconfigurados para la aceleración E/S, así como bloques IP de diseño personalizado.

Este artículo analizará brevemente las formas tradicionales de usar los FPGA. Luego, analizará en
profundidad los módulos de FPGA de AloriumXLR8R22M08V5U0DI y
Snō SNOR20M16V3 compatibles con Arduino. El artículo mostrará cómo Alorium ha agregado su
propio giro al utilizar los FPGA en el continuo de Arduino tanto para utilizar una IP preconfigurada
como para crear una IP personalizada, y cómo los diseñadores pueden comenzar a aplicar los
módulos de FPGA.

Cómo acelerar un Arduino

Cientos de miles de diseñadores, ingenieros, desarrolladores, entusiastas del bricolaje y fabricantes


de todo el mundo ahora utilizan varias versiones de la serie de placas DEV Arduino para desarrollar
sistemas integrados para una gran variedad de aplicaciones. Las placas Arduino y el IDE de Arduino
se han vuelto tan populares porque son muy fáciles de usar y programar.

A medida que los usuarios de Arduino han continuado impulsando la arquitectura original de Arduino
en aplicaciones más complejas, se han encontrado con problemas de rendimiento. Parte del
problema de rendimiento ha sido la arquitectura simple de 8-bit del microcontrolador Arduino original.
Otra parte del problema es la forma en que el sistema de software de Arduino implementa muchos
periféricos en tiempo real que utilizan software cuando el microcontrolador integrado de Arduino no
tiene un bloque de hardware equivalente.

Una forma de abordar este problema de rendimiento es mediante el uso de microcontroladores más
potentes, pero todavía hay mucho que el software puede hacer en un entorno de tiempo real.
Algunos periféricos de alta velocidad en tiempo real simplemente deben implementarse en el
hardware. También es posible especificar microcontroladores con más periféricos de hardware, pero
la combinación correcta de periféricos varía de un proyecto a otro.

Los fabricantes de microcontroladores han abordado la necesidad de diferentes combinaciones de


periféricos al ofrecer docenas o, a veces, incluso cientos de variaciones en una familia de
microprocesadores. Sin embargo, ese no es un enfoque viable para productos de nivel de placa
como Arduino debido a la necesidad de conectores en placa con suficientes clavijas E/S para
satisfacer todas las necesidades. A pesar de que ahora existen muchas variantes de placa Arduino,
todavía no hay suficientes para satisfacer las necesidades de cada proyecto integrado.
Los FPGA satisfacen la necesidad de una combinación de periféricos variada

Al poner el hardware programable a disposición del diseñador integrado, los FPGA pueden satisfacer
la necesidad de una combinación de periféricos que varíe de un proyecto a otro. Una forma de
agregar la funcionalidad de FPGA a una placa de microcontrolador integrada es simplemente
agregar un FPGA a un diseño existente. Ese es el enfoque que Arduino adoptó cuando diseñó
la placa Arduino MKR Vidor 4000. La placa combina el microcontrolador de baja
potencia ATSAMD21G18A-AUT SAMD21 de Microchip Technology basada en Arm® Cortex®-
M0+ 32-bit con FPGA Intel Cyclone 10 10CL016YU484C6G.

Arduino ha agregado diversos bloques IP de hardware al IDE de Arduino, específicamente para la


placa MKR Vidor 4000. Estos periféricos están disponibles a través de dos bibliotecas
principales: VidorPeripherals y VidorGraphics. Estos bloques IP de hardware se construyen
automáticamente en el FPGA Intel Cyclone 10 en el Arduino MKR Vidor 4000 cuando la biblioteca de
periféricos relevante se incluye en un diseño Arduino, el nombre que Arduino utiliza para un
programa o unidad de código. El registro actual de bloques IP periféricos incluye:

 Puertos I2C
 Puertos de interfaz periférica serial (SPI)
 Transmisores Receptores Asíncronos Universales (UART)
 Controladores de modulación por ancho de pulsos (PWM) de alta frecuencia
 Temporizadores de alta velocidad
 Codificadores en cuadratura de alta velocidad
 Controlador LED inteligente RGB direccionable Neopixel de Adafruit Industries

También podría gustarte