You are on page 1of 13

SEMANA 8

Introducción a las FPGA


Estructura de las FPGA
Lenguaje de descripción de Hardware
VHDL
Ejemplo Básico

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


FPGA
FPGA: Fiel Progammabable Gate Array
Una FPGA o matriz de compuertas lógicas programables, es un
dispositivo programable que contiene bloques de lógica cuya
interconexión y funcionalidad puede ser configurada en el
momento mediante un lenguaje de descripción especializado.

Las FPGAs fueron inventadas en el año 1984 por Ross Freeman y


Bernard Vonderschmitt, co-fundadores de Xilinx. Algunos de los
principales fabricantes son Xilinx, Altera (comprado por Intel en
2015), MicroSem, Lattice Semiconductor o Atmel, entre otros.

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


FPGA
Las FPGAs son unos dispositivos nos permiten describir un circuito
digital usando un lenguaje específico (los dos más comunes son
VHDL y Verilog) y que tras cargarlo en el integrado, es creado
físicamente en el chip.
Internamente se componen principalmente de cables, puertas
lógicas, biestables, y puertos de entrada y salida. Todo ello sin
conectar, como una plantilla en blanco, hasta que se les carga un
bitstream un archivo generado a partir de la descripción del
circuito. Es posible reprogramar una FPGA tantas veces como se
necesite

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


ESTRUCTURA FPGA
Los distintos bloques, unidos por las conexiones que
programamos, hacen que físicamente se constituya un circuito
electrónico, de forma similar a como haríamos en una placa de
entrenamiento o al fabricar un chip propio.

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Lenguaje de descripción de
Hardaware
Los FPGA no se “programan” en el sentido al que
estamos acostumbrados, con un lenguaje como C, C++, o
Python. De hecho, los FPGA usan un tipo diferente de
lenguaje denominado lenguaje descriptivo, en lugar de
un lenguaje de programación.
Estos lenguajes descriptivos se denominan HDL o
Hardware Description Language. Ejemplos de lenguajes
HDL son Verilog, HDL o ABEL. Verilog es Open Source,
por lo que será uno de los que oiremos hablar con mayor
frecuencia.

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Lenguaje de descripción de
Hardaware
Es un lenguaje de programación especializado que se
utiliza para definir la estructura, diseño y operación de
circuitos electrónicos, y más comúnmente, de circuitos
electrónicos digitales. Los lenguajes de descripción de
hardware hacen posible una descripción formal de un
circuito electrónico, y posibilitan su análisis automático y
su simulación.

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


Lenguaje de descripción de
Hardaware
Posteriormente el integrador (a grandes rasgos, el
equivalente al “compilador” en lenguajes de
programación) traduce la descripción que hemos
realizado del dispositivo en un dispositivo sintetizable
(realizable) con los bloques del FPGA, y determina las
conexiones que tiene que realizar.
Las conexiones al FPGA se traducen en una determinada
trama de comunicación específica del FPGA (bitstream),
que es transmitida al FPGA durante la programación. El
FPGA interpreta el bitstream y configura las conexiones.
A partir de ese momento, el FPGA está configurado con
el circuito que hemos definido/descrito.
Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica
VHDL
VHDL es un lenguaje de especificación definido por el IEEE
(Institute of Electrical and Electronics Engineers) (ANSI/IEEE 1076-
1993) utilizado para describir circuitos digitales y para la
automatización de diseño electrónico . VHDL es acrónimo
proveniente de la combinación de dos acrónimos: VHSIC (Very
High Speed Integrated Circuit) y HDL (Hardware Description
Language).

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


EJEMPLO BASICO
ENTITY Nombre IS
PORT ( Nombre de señal: modo y tipo de señal;
...
Nombre de señal: modo y tipo de señal ) ;
END Nombre;
TIPO
Modo Características
Descripción
BIT
IN
ENTITY ejemplo1 IS
En este tipo las señales solo toman los valores de "1" y "0"
En este modo las señales solo entran en la entidad
Booleana En este tipo las señales solo toman los valores de True y False
OUT PORT ( a, b : IN bit;
Las señales salen de la entidad
En este tipo las señales toman 9 valores, entre ellos tenemos: "1", "0", "Z" (para el 3.er estado), "-" (para los
Std_logic
BUFFER Este modo se utiliza para las señales que además de salir de la entidad pueden usarse como entradas realimentadas
F : OUT bit );
opcionales).
Integer En este tipo las señales toman valores enteros. Los 1 y los 0 se escriben sin “
Este modo se utiliza para señales bidireccionales. Se emplea en salida con tres estados. Se puede asignar como
INOUT
Bit_Vector END ejemplo1
sustituto
En de;los
este tipo los valores
tres modos anteriores,
de las pero
señales son unanocadena
se aconseja pues
de unos dificulta
y ceros. la comprensión
Ejemplo: “1000” del programa.
Std_Logic_Vector En este tipo los valores de las señales son una cadena de los nueve valores permisibles para el tipo std_logic.
Character Contiene todos los caracteres ISO de 8 bits, donde los primeros 128 son los caracteres ASCII.
Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica
EJEMPLO BASICO
ARCHITECTURE nombre_arquitectura OF nombre_entidad IS
Declaración de tipos
Declaración de señales.
Declaración de constantes
Declaración de componentes
Definición de funciones
Definición de procedimientos

BEGIN
Enunciado concurrente
...
Enunciado concurrente
END nombre_arquitectura;

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


EJEMPLO BASICO
ARCHITECTURE and_2ent OF ejemplo1 IS ARCHITECTURE and_2ent OF ejemplo1 IS
BEGIN BEGIN
F <= a AND b; F <= ‘1’ WHEN a=’1’ AND b=’1’ ELSE
END and_2ent; ‘0’ WHEN a=’0’ AND b=’0’ ELSE
‘0’ WHEN a=’0’ AND b=’1’ ELSE
‘0’ WHEN a=’1’ AND b=’0’ ELSE
‘-‘;
ARCHITECTURE and_2ent OF ejemplo1 IS END and_2ent;
BEGIN
F <= ‘1’ WHEN a=’1’ AND b=’1’ ELSE
‘0’;
END and_2ent;

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


EJEMPLO BASICO

ENTITY ejemp2_3 IS --Solo se cambia el nombre de la entidad


PORT ( a, b: IN bit; F: OUT bit);
END ejem2_3;
ARCHITECTURE dos_ent OF ejem2_3 IS
BEGIN
f <= ’1’ WHEN a /= b ELSE ‘0’ ;
END dos_ent;

Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica


EJEMPLO BASICO

ENTITY Boole_4 IS
PORT ( a, b: IN Boolean;
Y: OUT Bolean);
END Boole_4;
ARCHITECTURE Boole4_a OF Boole_4 IS
BEGIN
Y <= true WHEN a = false and b = false ELSE
False;
END Bole4_a;
Curso: Circuitos Lógicos Combinacionales Escuela de Ingeniería Mecatrónica

You might also like