Sei sulla pagina 1di 22

Introducción a las FPGAs

“Las tripas de los chips”


INFORMACIÓN TOMADA DE: FPGAWARS, EXPLORANDO EL LADO LIBRE DE
LAS FPGAS
SISTEMAS DIGITALES

La electrónica digital es la base


sobre la que están diseñados todos
los chips digitales actuales:
procesadores, controladores,
unidades de comunicación, etc. Los
circuitos digitales sólo trabajan con
bits, (0, 1), y se encargan de
manipularlos, almacenarlos y
transportarlos
Los circuitos digitales están formados por tres elementos: puertas
lógicas, para manipular bits, biestables, para almacenarlos
y cables para unir los componentes y transportar los bits
¿FPGA?
Las FPGAs son chips que
contienen en su interior
todos estos elementos
básicos sin conectar,
organizados en una retícula
FPGA
Las conexiones de los cables
son programables, de manera
que se pude configurar qué
elementos se unen a otro
elemento, formando así el
circuito digital que queremos.
También se pueden configurar las
conexiones con los pines de la
FPGA, determinando por qué
pines entra la información y por
cuáles sale
FPGA
Si ahora establecemos otras
conexiones diferentes, obtenemos
un circuito diferente.
¡Simplemente reconfigurando las
uniones de los cables!.
Por eso, a este procese se le
denominare configuración de la
FPGA. Circuitos reales, que
aparecen y desaparecen a nuestro
antojo...
Esta es la potencia de las FPGAs:
son reconfigurables. Y por tanto
tienen muchísima versatilidad.
Podemos crear circuitos con
existencia física, a nuestro antojo.
P:¿ESTO COMO FUNCIONA?
R:BITSTREAM
BITS DE CONFIGURACIÓN
Cada una de las conexiones tiene asociado
un bit de configuración que determina su
estado: Conectado (1) o NO Conectado (0).

La reconfiguración de las FPGAs se consigue asignando


valores a sus bits de configuración. Iniciamente están todos
a 0, por lo que no hay conexiones establecidas y la FPGA está
"en blanco". Al dar valores a sus bits de configuración, se
establecen las conexiones y aparece nuestro circuito
BITSTREAM
Todos los valores para los bits de El bitstream se transmite por un bus serie (spi), bit a bit,
configuración se agrupan en una tira de configurándose las conexiones de la FPGA
bits llamada bitstream, que se carga
desde el exterior
Memoria de configuración
Las FPGA son volátiles: al quitar
la alimentación pierden su
configuración. Al alimentarlas de
nuevo, están en blanco y se
quedan esperando a recibir
un bitstream para reconfigurarse
Por eso, junto a la FPGA se sitúa
una memoria serie externa, no
volátil, llamada memoria de
configuración, que almacena el
bitstream. Así, al alimentar la
FPGA lo primero que hace es
reconfigurarse con el bitstream
de la memoria de configuración

El bitstream se graba en la memoria de configuración desde un dispositivo externo:


ordenador, arduino, raspberry pi, ubuntu phone, etc.
Proceso de diseño de circuitos digitales.
Lenguajes de
descripción de hardware
Los circuitos digitales modernos se
diseñan utilizando lenguajes de
descripción hardware (HDL). Los
más extendidos son VHDL y Verilog

Desde una descripción en


HDL podemos simular el
circuito, generar el bitstream para
FPGAs o fabricar el circuito
integrado

Importante: Este tipo de pensamiento no es secuenciado, ya


que al ser descripción de hardware debemos pensar en
paralelo.
Tipos de pensamiento

FPGAs Sistemas embebidos


VHDL es un lenguaje de descripción de
hardware. Describe el comportamiento de
un circuito o sistema electrónico, desde el
cual se puede alcanzar (implementar) el
circuito o sistema físico. VHDL significa
VHSIC Hardware Description Language.

VHSIC es en sí misma una abreviatura


de Circuitos Integrados de Muy Alta
Velocidad, una iniciativa financiada por
el Departamento de Defensa de los
Estados Unidos en la década de 1980
que llevó a la creación de VHDL. Su
primera versión fue VHDL 87, más tarde
actualizada al denominado VHDL 93.

VHDL fue el primer y original lenguaje de descripción de hardware estandarizado por el


Instituto de Ingenieros Eléctricos y Electrónicos, a través del estándar IEEE 1076.
Posteriormente, se agregó un estándar adicional, el IEEE 1164, para introducir un sistema
lógico de valores múltiples.
Lenguajes de descripción de
hardware

En las FPGAs,
obtenemos circuitos reales a
partir de ficheros de texto
escritos en un lenguaje HDL. Los
circuitos "se materializan" a
partir del código HDL. A este
proceso lo denominamos síntesis
Usos de las FPGAs
Aplicaciones de las FPGAs

Algunos ejemplos: Principal aplicación


• Sistemas de visión artificial. • El rango de aplicaciones de las FPGA es muy
amplio, debido a la versatilidad y a la flexibilidad de
• Sistemas de imágenes médicas. estos dispositivos; siendo la principal aplicación de
• Radio definida por software (SDR). las FPGAs el procesamiento digital de señales
(DSP), comunicaciones, procesado de datos, etc. La
• Codificación y encriptación. elección de una FPGA para aplicaciones de
• Radioastronomía. tratamiento de señal se debe a su alta frecuencia
de trabajo, a su capacidad de procesamiento en
• Reconocimiento de voz. paralelo, y a su bajo precio en comparación con los
• Aeronáutica y defensa. ASICs. En general, la lógica de un CPLD es
insuficiente para realizar dicho procesamiento
• Data Center / Cloud.
Tipos de FPGAs

Privadas: Xillinx, Altera, etc … Open Source: FPGAs Wars


FPGAs privadas
Las FPGAs se inventaron hace más
de 30 años, por la empresa Xilinx.
Sin embargo, es una tecnología
que NO se ha popularizado entre los
makers y la comunidad de hardware
libre en general.
Se trata de una tecnología muy
cerrada, rodeada de software
privativo, en la que sólo puedes usar
lo que el fabricante te diga en las
condiciones que te diga. No hay
lugar para la innovación. No hay
lugar para la comunidad. No están
publicados los detalles internos de
la FPGA, ni del formato de los
bitstreams
FPGAS LIBRES: EL
RENACIMIENTO
Sin embargo, Clifford Wolf,
hizo Ingeniería inversa de las
FPGAs iCE40 de Lattice y en
Marzo del 2015 creó
el PROYECTO ICESTORM y se
liberó la primera toolchain de
herramientas que permiten
pasar de Verilog al bitstream
usando sólo Herramientas libres
Links de información:
• Información principal:
http://obijuan.github.io/intro-fpga.html
https://www.xilinx.com/products/silicon-devices/fpga/what-is-an-fpga.html
https://www.youtube.com/watch?v=I-NqKKKuPX0&t=9s (¿Qué es una FPGA?)
https://www.youtube.com/watch?v=K8bM14-R9Ts ("Buenos tiempos para las FPGA o porqué los
ingenieros deberían aprender a programar FPGA“)
https://www.youtube.com/watch?v=GA1lN5dsgao(FPGAs libres con Juan González ( Obijuan ))
• Aplicaciones de las FPGAs:
https://www.generatecnologias.es/aplicaciones_fpga.html
http://www.ni.com/es-cr/innovations/white-papers/08/fpga-fundamentals.html
https://www.extremetech.com/computing/133110-are-fpgas-the-future-of-password-cracking-and-
supercomputing
http://www.unipamplona.edu.co/unipamplona/portalIG/home_40/recursos/02_v07_12/revista_07/16
112011/v07_08.pdf
https://www.icrowdsp.com/2019/06/12/fpga-en-el-mercado-del-sector-de-telecomunicaciones-
analisis-de-la-industria-global-tamano-acciones-crecimiento-tendencias-y-pronostico-2019-2025/