Arquitectura FPGA
Dentro de un FPGA: tablas de búsqueda, bloques lógicos configurables, enrutamiento, bloques de E/S e IP integrado.
Un FPGA (Field-Programmable Gate Array) es un mar de bloques lógicos configurables conectados por una red de enrutamiento programable. Cada bloque lógico contiene tablas de búsqueda (LUT) que pueden implementar cualquier función booleana, flip-flops para lógica secuencial y cadenas de acarreo para aritmética. Comprender la arquitectura FPGA es clave para escribir código HDL eficiente y lograr el cierre de temporización.
Objectives
- Describir los tres componentes principales del FPGA: CLB, enrutamiento y E/S
- Explicar cómo una LUT implementa cualquier función combinacional
- Comprender el papel de las cadenas de acarreo, la RAM de bloque y los bloques DSP
- Comparar tecnologías FPGA basadas en SRAM y basadas en flash
- Leer hojas de datos de FPGA y comprender la utilización de recursos
Key Takeaways
- Las LUT implementan cualquier función booleana almacenando su tabla de verdad
- Los CLB contienen LUT + flip-flops + cadenas de acarreo
- El enrutamiento (interconexión programable) consume ~80% del área del FPGA
- El IP integrado (BRAM, DSP, PLL) proporciona recursos dedicados optimizados
- Los FPGA basados en SRAM necesitan configuración externa; los basados en flash son de encendido instantáneo
Applications
- Procesamiento Digital de Señales: Los bloques DSP proporcionan multiplicadores por hardware para filtros y transformadas.
- Redes de Alta Velocidad: Los transceivers permiten enlaces serie multi-gigabit.
- Procesamiento de Video: La RAM de bloque almacena cuadros de video; las LUT procesan píxeles.
- Procesadores Personalizados: Núcleos de CPU soft (MicroBlaze, RISC-V) implementados en LUT.
Practice Problems
Problem 1: Una LUT de 4 entradas almacena ¿cuántos bits de configuración?
Problem 2: Un FPGA tiene 50.000 6-LUT. ¿Aproximadamente cuántas compuertas NAND equivalentes son?
Problem 3: ¿Por qué el enrutamiento consume la mayor parte del área del FPGA?
Problem 4: ¿Qué ventaja tiene un FPGA basado en flash sobre uno basado en SRAM?