Vous êtes sur la page 1sur 20

Universidad de El Salvador

Facultad de Ingeniería y Arquitectura


Escuela de Ingeniería Eléctrica
Sistemas Digitales I

Guía 1: Introducción al FPGA.


¿Qué es un FPGA?
Un FPGA es un chip lógico digital programable, el cual puede realizar casi cualquier función
digital.

El proceso de programación de un FPGA es similar al de un microcontrolador:


1. Se describe la función lógica del circuito utilizando un lenguaje de programación
adecuado (como VHDL y Verilog).
2. Se compila esta función utilizando el software que proveen los fabricantes del
dispositivo (en este caso, se utilizarán FPGAs de la compañía Xilinx, que se
programan en una suite de diseño llamado Vivado). Posterior a esta compilación, el
software creará un archivo binario, que puede ser cargado a la FPGA.
3. Se le transfiere el archivo desde el computador a la FPGA mediante un cable. Al ser
cargado este archivo, el FPGA debería comportarse según las instrucciones de la
función lógica.

Hay ciertas peculiaridades con respecto a las FPGAs, y es que al igual que varias placas, esta
puede ser programada tantas veces como se desee, pero al contrario de las placas Arduino,
Raspberry Pi, un CPLD, etc, las FPGAs cuando son desenergizadas, requieren que se les cargue
el software nuevamente para funcionar.

Diferencias entre un CPLD y una FPGA: Ambos son placas lógicas digitales programables,
fabricadas por las mismas compañías, pero difieren en algunas características:
1. Las FPGAs contienen hasta 100,000 pequeños bloques lógicos con flip flops,
mientras un CPLD contiene máximo unos centernares de estos bloques.
2. Las FPGAs se basan en memoria RAM, por lo que deben ser configuradas cada vez
que se energizan, mientras que los CPLDs están basados en memoria EEPROM y no
requieren que se les cargue el programa después de haberse desenergizado.
3. En los FPGAs se pueden implementar eficientemente funciones aritméticas, como
contadores binarios, sumadores, comparadores, etc, ya que tiene interconexiones
de acarreo de alta velocidad, mientras que en los CPLDs no las hay.
4. En general, los diseños que puede soportar un FPGA son mucho más grandes y
robustos que los que soporta un CPLD.

Las FPGAs están construidas a partir de una celda lógica replicada miles de veces dentro
de la placa. Esta celda lógica se compone de:

1. Una pequeña LUT: (LookUp Table, que para efectos prácticos, se puede definir
como una tabla de verdad), es un segmento combinacional, al que se le puede
definir la salida, de acuerdo a determinadas entradas. La ventaja de esta forma de
definir una función recae en la velocidad de operación. Si se definiera un algoritmo
para determinar la salida, el proceso se haría mucho más largo.
2. Un flip flop D.
3. Un mux de 2 a 1, utilizado generalmente para poder saltarse en flip flop.

Todas estas pequeñas celdas lógicas están interconectadas entre sí, y también tienen
comunicación con celdas I/O de entrada y salida que se conectan a los pines de la FPGA, y
que sirven como puentes entre estímulos exteriores y la lógica interna del chip.

Fig. 1 – Interconexión interna de un FPGA


Configuraciones iniciales del proyecto en VIVADO.
En esta parte de la práctica se realiza las configuraciones necesarias en vivado para iniciar un
proyecto, en la cual se especifica tanto el nombre del proyecto como la ubicación del mismo, el
tipo de lenguaje a usar para la programación y la ubicación de su archivo fuente, además se debe
especificar el tipo de hardware a ser programado.

1- Abrir un nuevo proyecto y le presionar next en la pestaña emergente.

2- Se le da un nombre al proyecto y su ubicación, luego presionar next.


3- Se presiona next.

4- Se cambia simulator lenguaje de Mixed a VHDL y se presiona create file.


5- Se nombra el archivo , luego se da ok.

6- Luego se presiona next.


7- En la siguiente ventana se presiona Next.

8- Se selecciona la opción create file, se da el nombre de la archivo se presiona ok y luego


next.
9- Se definen las especificaciones del fpga de acuedo a su modelo de controlador como
sigue:
10- Luego se finaliza la configuración

11- Luego se pide asignar los pines in y out, para esta práctica se definirán dentro del código.
12- Se abre el archivo .vhd

Y listo se puede iniciar a programar en VHDL.

Ejemplo: Convertidor binario de 3 bits a 7 segmentos.

Codigo VHDL :

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity convertidor is

Port ( Entrada: in STD_LOGIC_VECTOR (2 DOWNTO 0) ;

Salida: out STD_LOGIC_VECTOR (6 DOWNTO 0);

display1: out STD_LOGIC;

display2: out STD_LOGIC;

display3: out STD_LOGIC;

display4: out STD_LOGIC);

end convertidor;
architecture Behavioral of convertidor is

begin

display1 <= '0';

display2 <= '1';

display3 <= '1';

display4 <= '1';

process (Entrada)

begin

case Entrada is

when "000"=> Salida <= "0000001"; --0

when "001"=> Salida <= "1001111"; --1

when "010"=> Salida <= "0010010"; --2

when "011"=> Salida <= "0000110"; --3

when "100"=> Salida <= "1001100"; --4

when "101"=> Salida <= "0100100"; --5

when "110"=> Salida <= "0100000"; --6

when "111"=> Salida <= "0001111"; --7

end case;

end process;
Configuración para la implementación en la FPGA.
Luego de haber programado en VHDL se debe realizar la síntesis en vivado lo cual cumple con
lo siguiente:

1- Luego de haber programado en VHDL se debe realizar la síntesis en vivado lo cual cumple
con lo siguiente:

Para esto se presiona Run Synthesis.


2- Si previa mente no se ha guardado aparecerá :

3- Se le da ok a las siguiente ventanas.

4- Luego se presiona Run Implementation ,se da OK y se espera hasta que termine el


proceso.

5- En la siguiente ventana se presiona ok.


6- Se presiona ok.

Asignación de Pines de la FPGA.

7- Abrir I/O ports

8- Se muestra lo siguiente
9- En esta parte se debe asignar los pines a usar en nuestra FPGA para ello vemos la
arquitectura de este:
Luego se asignan los pines como sigue:

Observación cambiar el nivel de voltaje a LVCMOS33*

10 - presionamos en guardar

Y ok

11- Luego presionamos en implementar y esperamos hasta que termine el proceso.


11 -Le damos en ok

13- Luego seleccionamos la opción generate bitstream


14- Luego aparece la siguiente pestaña.

Con este último paso se genera el archivo .bit el cual se ingresara a la FPGA.
Referencias:

Proceso de programación de fpga:


http://studyres.es/doc/1321206/fpga--herramientas-de-dise%C3%B1o

Datasheet del fpga:


https://reference.digilentinc.com/_media/basys3:basys3_rm.pdf

Vous aimerez peut-être aussi