Instituto Tecnológico de Puebla
Ingeniería: Electrónica
Materia: Diseño digital con VHDL
Trabajo: Practica 3 (FPGA)
Alumno: Lionel Alexander Reyes Martínez
Profesor: José Estaban Torres León
Periodo: Enero-junio
Semestre: 6to
Dispositivos programables
Son circuitos integrados que pueden ser configurados para realizar diferentes
funciones.
Características
Son reprogramables, lo que les da una gran flexibilidad
Son una buena opción para la creación de prototipos
Son una buena opción para la computación de alto rendimiento (HPC)
Son una buena opción para la diferenciación en un entorno que cambia
rápidamente
Teoría de los FPGAs
Los FPGAs (Field-Programmable Gate Arrays) son circuitos integrados
programables diseñados para implementar funciones lógicas de manera flexible. A
diferencia de los ASICs (Application-Specific Integrated Circuits), que tienen una
configuración fija, los FPGAs pueden ser reprogramados cuantas veces sea
necesario para adaptarse a diferentes aplicaciones.
Un FPGA está compuesto por los siguientes bloques principales:
🔹 Matriz de Celdas Lógicas (CLBs - Configurable Logic Blocks)
Contienen LUTs (Look-Up Tables), multiplexores y flip-flops.
Se utilizan para implementar funciones lógicas y almacenamiento de datos.
🔹 Conexiones Programables (Routing Fabric)
Interconectan las CLBs y otros bloques del FPGA.
Permiten cambiar la configuración del circuito sin necesidad de hardware
adicional.
🔹 Bloques de Entrada/Salida (I/O Blocks)
Se encargan de la comunicación entre el FPGA y dispositivos externos.
Soportan distintos estándares de señal como LVTTL, LVCMOS, PCI, entre otros.
🔹 Bloques Especializados
Algunos FPGAs incluyen:
✔ Memorias RAM embebidas → Para almacenamiento interno.
✔ Multiplicadores y DSPs (Digital Signal Processing Units) → Para cálculos de alta
velocidad.
✔ Interfaces de Alta Velocidad → USB, Ethernet, PCIe.
Programación y Configuración
Los FPGAs no ejecutan instrucciones como una CPU; en cambio, su hardware se
configura para realizar una tarea específica. Esta configuración se hace a través
de:
✅ Lenguajes de Descripción de Hardware (HDL) como VHDL y Verilog.
✅ Herramientas CAD como Xilinx ISE, Vivado, Quartus Prime (Intel).
✅ Archivos de configuración (Bitstream) que definen la interconexión interna del
FPGA.
Descripción de la tarjeta FPGA a utilizar (módulos)
1. FPGA Principal
Modelo: Xilinx Spartan-6 XC6SLX9
Recursos Internos:
11,440 Flip-Flops
576 Kb de Block RAM
16 Slices DSP
Frecuencia de Reloj: Oscilador integrado de 50 MHz
2. Memoria
Block RAM: Integrada en el FPGA, con una capacidad total de 576 Kb, adecuada
para almacenamiento temporal de datos y buffers.
3. Alimentación
Fuentes de Voltaje:
3.3V y 1.2V para el FPGA, derivadas de una entrada de 5V proporcionada por el
puerto USB.
Control de Energía: Interruptor de encendido ubicado sobre el puerto USB de
programación, permitiendo un fácil control de la alimentación de la tarjeta.
4. Interfaces de Entrada/Salida
Entradas:
8 interruptores DIP para señales digitales.
Botón de reinicio para restablecer el sistema.
Salidas:
8 LEDs indicadores para visualización de estados lógicos.
5. Puertos de Expansión
Conectores:
Dos puertos de expansión (P1 y P2) que ofrecen acceso a 36 pines de propósito
general (GPIO), facilitando la conexión con módulos externos y protoboards.
Compatibilidad: Posibilidad de conectar módulos adicionales como ADCs o DACs
para manejo de señales analógicas.
6. Programación y Depuración
Conexión USB: Puerto USB para programación y comunicación, compatible con el
software de desarrollo Xilinx ISE Design Suite.
Software de Programación: Compatible con herramientas como Xilinx ISE y el
software INTegra, desarrollado específicamente para la programación de la AMIBA
2.
1. Crear un Proyecto:
Abre Xilinx ISE y crea un nuevo proyecto. Asegúrate de seleccionar el dispositivo
correcto, que sería Spartan-6 XC6SLX9 para la AMIBA2.
2. Escribir el Código HDL:
Abre el editor de código y escribe el diseño en VHDL o Verilog, describiendo la
lógica que deseas implementar en la FPGA.
3. Síntesis (Synthesis):
Ejecuta el proceso de síntesis para convertir el código HDL en una netlist
optimizada que pueda ser implementada en la FPGA.
4. Simulación:
Utiliza ISim para realizar simulaciones funcionales y verificar que el
comportamiento de tu diseño es el esperado.
5. Implementación (Place and Route):
Después de la síntesis, realiza la implementación para asignar el diseño a los
recursos físicos del FPGA (por ejemplo, LUTs, Flip-Flops, etc.).
6. Generación de Bitstream:
Después de la implementación, genera el archivo bitstream que contiene la
configuración final para la FPGA.
7. Programación:
Utiliza la herramienta iMPACT para cargar el archivo bitstream en la tarjeta
AMIBA2 mediante el puerto USB.
Mostrar el uso de la tarjeta con un ejemplo
CODIGO:
Port ( clk : in STD_LOGIC; -- Reloj de la FPGA (50 MHz)
reset : in STD_LOGIC; -- Botón de reset
leds : out STD_LOGIC_VECTOR (1 downto 0) -- Salida a 2 LEDs
);
end LED_Toggle;
architecture Behavioral of LED_Toggle is
signal counter : STD_LOGIC_VECTOR (23 downto 0) := (others => '0');
-- Contador para dividir frecuencia
signal led_state : STD_LOGIC_VECTOR (1 downto 0) := "01"; -- Estado
inicial de los LEDs
end process;
end Behavioral;
Ejemplo básico del uso de la tarjeta Amiba2, solo para demostrar su
funcionamiento en el uso de encender dos diferentes tipos de leds y sus
diferentes colores .