Fundamentos de HDL y Arquitecturas de Lógica Programable: VHDL, Verilog y FPGAs

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 205,2 KB

1. Historia de los Lenguajes de Descripción de Hardware (HDL)

DécadaHito clave
1947Transistor BJT (Bell Labs) — Inicio de la electrónica de estado sólido.
1959Transistor MOS — Base de la integración a gran escala.
1960sCircuitos integrados, diseño con esquemas eléctricos y primeras herramientas CAD.
1970sPrimeros microprocesadores (Intel 4004, 8080).
1983Creación de VHDL (Departamento de Defensa de EE.UU.) y aparición de Verilog (comercial).
1990sEstandarización IEEE: VHDL = IEEE 1076, Verilog = IEEE 1364. Popularización de las FPGAs.
2000sSystemVerilog y el auge de los SoC (System on Chip).
2010sSoC-FPGA, HDL en automatización, comunicaciones y robótica.
2020sIoT, IA, edge computing y flujos HLS (High-Level Synthesis).

Comparativa: VHDL vs. Verilog vs. SystemVerilog

CaracterísticaVHDLVerilogSystemVerilog
TipadoFuerteDébilExtensión de Verilog
SintaxisRigurosaCompacta, parecida a COrientada a objetos
Uso típicoAlta confiabilidad, academiaIndustria, síntesis y verificaciónBancos de pruebas, verificación de ICs complejos
Significado de siglasVHSIC Hardware Description Language (VHSIC = Very High Speed Integrated Circuit)——


V62AWAghhBBCiH8bWTIhhBBCCCFqNAmIhRBCCCFEjSYBsRBCCCGEqNEkIBZCCCGEEDWaBMRCCCGEEKJGk4BYCCGEEELUaP8PSQgks9wgMe4AAAAASUVORK5CYII=

jSCcPLUAAAAASUVORK5CYII=


Bloques Combinacionales: Definiciones Clave

BloqueDefinición corta
CodificadorAcepta un nivel activo en UNA de sus 2n entradas y lo convierte en una salida codificada de n bits.
Codificador con prioridadSi más de una entrada está activa a la vez, produce la salida de la entrada de mayor prioridad.
Decodificadorn bits de entrada codificados en binario → 2n salidas; correspondencia directa entrada-salida.
ComparadorCompara dos palabras binarias e indica si son iguales, mayor o menor.
Medio sumador (Half-adder)Suma 2 bits sueltos, produce un bit de suma y un bit de acarreo.
Sumador completo (Full-adder)Suma 3 entradas (incluyendo un acarreo de entrada); se construye conceptualmente con dos medios sumadores.
Sumador con acarreo serieLos acarreos se propagan uno tras otro (más lento).
Sumador con acarreo paralelo (Carry Lookahead)Calcula los acarreos por adelantado (más rápido).
ALURealiza varias operaciones aritmético-lógicas según un selector de operación.
Circuito de paridadn compuertas XOR detectan la paridad de n+1 entradas.
Multiplexor (MUX)Conecta UNA de sus 2n entradas a la salida, seleccionada por n líneas de selección.
DemultiplexorLo contrario del MUX: una única entrada se dirige hacia UNA de varias salidas posibles.


Asignaciones en Verilog: Bloqueantes vs. No Bloqueantes

CaracterísticaBloqueante (=)No bloqueante (<=)
¿Cuándo se ejecuta?Inmediato, en orden (como en un lenguaje de programación convencional).Se agenda; todas las asignaciones de ese bloque se actualizan al final del ciclo, "al mismo tiempo".
¿Dónde se usa?Lógica combinacional.Lógica secuencial.
Qué modelaUn cálculo directo, paso a paso.El comportamiento real de un flip-flop (todos los registros cambian juntos en el flanco de reloj).

Reglas de Sensibilidad en el Bloque always

FormaDetectaUso típico
Sensible a flanco de subida (posedge)Cambio de 0 a 1 en la señal de reloj.Flip-flops, contadores, registros.
Sensible a flanco de bajada (negedge)Cambio de 1 a 0 en la señal de reloj.FF activados en flanco negativo.
Sensibilidad a señales por nivel (forma antigua)Se ejecuta cuando cambia cualquiera de las señales listadas.Lógica combinacional (forma antigua, propensa a errores).
Sensibilidad automática (always @*)Cambio en cualquier señal usada dentro del bloque.Recomendado para combinacional: evita olvidar señales y generar memoria accidental (latches).
Combinación mixtaFlanco de reloj O flanco de reset.Muy común en flip-flops con reset asíncrono.


Dispositivos de Lógica Programable (PLD) — SPLDs

Definición general: Un circuito integrado cuya función lógica NO está fija de fábrica; se puede configurar y modificar mediante programación para construir la lógica digital deseada.

Estructura general de un SPLD: N líneas de entrada → Arreglo AND → P líneas de producto (product-terms) → Arreglo OR → M líneas de salida.

DispositivoArreglo ANDArreglo OR
PROM (Programmable Read-Only Memory)Fijo (predefinido de fábrica)Programable
PAL (Programmable Array Logic)ProgramableFijo
PLA (Programmable Logic Array)ProgramableProgramable
GAL (Generic Array Logic)Programable (tecnología más moderna que PAL)Fija, con configuración programable de entradas/salidas.

CPLD (Complex Programmable Logic Device)

  • Se puede ver como una evolución del PAL: contiene múltiples estructuras PAL llamadas macroceldas.
  • En el encapsulado CPLD, todos los pines de entrada están disponibles para cada macrocelda, mientras que cada una tiene un pin de salida dedicado.
  • GIM (Matriz de Interconexión Global): Al reconfigurar la GIM, se pueden implementar diferentes circuitos lógicos.
  • En esencia: múltiples SPLDs (o grupos de bloques lógicos programables) contenidos dentro de un solo chip.


FPGA (Field-Programmable Gate Array)

  • Dispositivo semiconductor clasificado dentro de los FPL (Field Programmable Logic), pero es un dispositivo lógico programable complejo, muy flexible y potente.
  • Se basa en una matriz de CLBs (Configurable Logic Blocks); en terminología de Altera/Intel se les llama ALM.
  • Su arquitectura de "campo abierto" permite reconfigurar los transistores internos según el requerimiento del usuario.
  • Dependiendo del fabricante, puede incluir componentes integrados adicionales: multiplicadores, bloques DSP y bloques RAM.

Componentes Internos de la FPGA

  • LUT (Look-Up Table): Compuesta principalmente por multiplexores conectados entre sí. Los selectores funcionan como entradas de la LUT, y la tabla de verdad se obtiene de la memoria de la FPGA. Esto le permite implementar cualquier tabla de verdad posible.
  • BLE (Elemento Lógico Básico): Formado por una LUT, un flip-flop tipo D y un multiplexor. Permite implementar tanto lógica combinacional como secuencial.
  • CLB: Contiene un grupo de BLEs conectados mediante una red de interconexión interna. Incluye bloques diseñados para memorias, multiplicadores o DSPs, siendo muy eficientes en tareas específicas.


Comparativa Final: CPLD vs. FPGA

CaracterísticaCPLDFPGA
FlexibilidadBajaAlta
PrecioBajoAlto
SeguridadAltaBaja
VelocidadAltaAlta
CapacidadLimitadaAlta
AplicaciónTareas simplesDiseños complejos
Consumo energéticoMás bajoMás alto

Bloques de Entrada/Salida (I/O Blocks)

Permiten la interacción con el mundo exterior para enviar y recibir información de dispositivos externos. Generalmente se componen de registros y buffers. Suelen incluir líneas de salida, entrada y de tres estados (alta impedancia), y pueden configurarse como unidireccionales o bidireccionales. Además, incorporan protección contra sobrevoltaje o sobrecorriente.

Entradas relacionadas: