Vous êtes sur la page 1sur 25

FPGA

Dispositivo reprogramable, basado en memorias RAM.

Se programa las memorias y los accesos a las memorias.

Los circuitos se ejecutan más rápido, debido al paralelismo.

Trabajan a 3,3 V y 250 mA

BLOQUES:

1. CLB. – se implementan los circuitos lógicos.


2. IOB. – se conectan las configuraciones internas con pines de entrada y salida.
3. DCM. – permiten entregar señales de reloj a toda la FPGA.

ARQUITECTURA:

- SLICE. - Elemento que permite implementar los circuitos combinacionales como


secuenciales. Es la base de la CLB.

Buffer tri-estado (TRI)


Permite o impide el paso de datos de acuerdo a una señal de control.

Look-up Table (LUT)

En esencia es una memoria RAM con valores predefinidos.

Flip-FLop

Multiplexor

Open-drain

Fanout

Cuantas entradas de una familia lógica pueden conectarse a una misma salida.

fanout = Isalidamax / Ientradamax

TTL 5V LVTTL 3,3V

COMBINACIONALES – LUT

SECUENCIALES – FLIP FLOP


CIRCUITOS LÓGICOS COMBINACIONALES

Combinacional. – la salida depende sólo de las entradas. No se pueden realizar bucles de


retroalimentación.

Secuencial. – la salida depende de las entradas y del estado actual del circuito (entrada +
memoria).

ANÁLISIS. – tengo el sistema y doy valores a las entradas y salidas. Plantear el circuito y pedir la
tabla de verdad y la función de salida.

SÍNTESIS. – conozco las entradas y las salidas y diseño el sistema. Plantear la tabla de verdad o
función de salida y a partir de ella diseñar el circuito.

MEMORIAS

- Se requiere buses de datos (lectura y escritura) y buses de direcciones.


- Se requiere enable (lectura, escritura).

BUS DE DATOS

MEMORIA= 2N * n

N palabras
n bits cada palabra

SIMULAR HDL V (Verilog), VHDL (archivo que describe el HW)

SINTESIS HW (% recursos utilizados)

PandR PUERTOS O PINES (archivo que describe puertos y pines)

VERILOG

Utilizado para describir sistemas digitales, tales como procesadores, memorias o un simple flip-
flop.

GUARDAR EL ARCHIVO CON EL NOMBRE DEL MÓDULO


Ejemplo1.v
APLICACIÓN:
Análisis – Circuit Scramble

1. Realiza el diseño
2. Crea un fichero HDL (VHDL, Verilog). Simular.
3. Crea un archivo par las conexiones de los periféricos de entrada y salida.
4. Crea un bitstream.
5. Configura.

ICESTUDIO (https://github.com/FPGAwars/icestudio)

Herramienta visual.

Funciona con la tarjeta Icezum Alhambra V1.1 (https://github.com/FPGAwars/apio)

INSTALACIÓN:
Cmd
EJEMPLO COPIADO:

SINTETIZABLE
//----------------------------------------------------------------
--
//-- Hello world example
//-- Turn on all the leds
//-- This example has been tested on the following boards:
//-- * Lattice icestick
//-- * Icezum alhambra (https://github.com/FPGAwars/icezum)
//----------------------------------------------------------------
--

module leds(output wire LED0, MÓDULO LLAMADO LEDS


output wire LED1,
output wire LED2,
output wire LED3,
output wire LED4);

assign LED0 = 1'b1; ASIGNACIÓN DESDE LA DERECHA


assign LED1 = 1'b1; TAMAÑO 1 EN FORMATO BINARIO
assign LED2 = 1'b1;
assign LED3 = 1'b1;
assign LED4 = 1'b1;

endmodule
PARA PRUEBAS
//----------------------------------------------------------------
---
//-- leds_tb.v no es sintetizable
//-- Testbench
//----------------------------------------------------------------
---
//-- Juan Gonzalez (Obijuan)
//-- Jesus Arroyo Torrens
//-- GPL license
//----------------------------------------------------------------
---
`default_nettype none
`define DUMPSTR(x) `"x.vcd`"
`timescale 100 ns / 10 ns

module leds_tb();

//-- Simulation time: 1us (10 * 100ns)


parameter DURATION = 10;

//-- Clock signal. It is not used in this simulation


reg clk = 0;
always #0.5 clk = ~clk;

//-- Leds port


wire l0, l1, l2, l3, l4;

//-- Instantiate the unit to test


leds UUT ( llamo al modulo leds
.LED0(l0), interconecto las entradas con las salidas
.LED1(l1),
.LED2(l2),
.LED3(l3),
.LED4(l4)
);

initial begin

//-- File were to store the simulation results


$dumpfile(`DUMPSTR(`VCD_OUTPUT));
$dumpvars(0, leds_tb);

#(DURATION) $display("End of simulation");


$finish;
end

endmodule
Ayuda de Apio
Dispositivos para programar
Creamos un archivo para sintetizar (HW)

Creamos un archive
set_io LED4 99
set_io LED3 98
set_io LED2 97
set_io LED1 96 LED1 nombre en el sistema
set_io LED0 95
Sintetizar
Programar la tarjeta

Habilitar los drivers


EJERCICIO PUERTA NOT

NOTG.V
module notg(i,o);
input i;
output o;
wire o;
assign o=!i;
endmodule

NOTG_TB.V
//----------------------------------------------------------------
---
//-- leds_tb.v
//-- Testbench
//----------------------------------------------------------------
---
//-- Juan Gonzalez (Obijuan)
//-- Jesus Arroyo Torrens
//-- GPL license
//----------------------------------------------------------------
---
`default_nettype none
`define DUMPSTR(x) `"x.vcd`"
`timescale 100 ns / 10 ns

module notg_tb();

//-- Simulation time: 1us (10 * 100ns)


parameter DURATION = 10;

//-- Clock signal. It is not used in this simulation


reg clk = 0;
always #0.5 clk = ~clk;

//-- Leds port


wire l0, l1;

//-- Instantiate the unit to test


notg UUT (
.o(l0),
.i(clk)
);
initial begin

//-- File were to store the simulation results


$dumpfile(`DUMPSTR(`VCD_OUTPUT)); dejamos tal cual
$dumpvars(0, notg_tb); nombre del archivo

#(DURATION) $display("End of simulation");


$finish;
end

endmodule
module icezum(SW1,LED0);
input SW1;
output LED0;
wire LED0;

notg compuertas (SW1, LED0);


endmodule
//----------------------------------------------------------------
---
//-- leds_tb.v
//-- Testbench
//----------------------------------------------------------------
---
//-- Juan Gonzalez (Obijuan)
//-- Jesus Arroyo Torrens
//-- GPL license
//----------------------------------------------------------------
---
`default_nettype none
`define DUMPSTR(x) `"x.vcd`"
`timescale 100 ns / 10 ns

module notg_tb();

//-- Simulation time: 1us (10 * 100ns)


parameter DURATION = 10;

//-- Clock signal. It is not used in this simulation


reg clk = 0;
always #0.5 clk = ~clk;

//-- Leds port


wire l0;

//-- Instantiate the unit to test


icezum UUT (
.LED0(l0),
.SW1(clk)
);
initial begin

//-- File were to store the simulation results


$dumpfile(`DUMPSTR(`VCD_OUTPUT));
$dumpvars(0, notg_tb);

#(DURATION) $display("End of simulation");


$finish;
end

endmodule
PARA MODIFICAR EL MODULO PRINCIPAL

- Modifico icezum.v
- Modifico icezum.pcf

Vous aimerez peut-être aussi