Construcción de tarjetas de adquisición de datos de alta velocidad con FPGA: por qué FMC HPC + PCIe x8 es la combinación dorada
Osciloscopios, digitalizadores, radares en fase, radios definidas por software y monitorización de vibraciones de alta velocidad: el núcleo de todos estos sistemas es «muestreo ADC de alta velocidad → empaquetado de datos → transferencia al host para su procesamiento». ¿Por qué este paso debe usar un FPGA y no un MCU, un DSP o una CPU muestreado directamente? ¿Por qué el conector FMC HPC y la interfaz PCIe x8 se han convertido en la combinación dorada de las tarjetas de adquisición de alta velocidad? Este artículo parte de un proyecto real de adquisición a 250 MSPS.
1. Por qué la adquisición de alta velocidad exige un FPGA
Empecemos por los números. Un ADC de alta velocidad típico como el AD9643: 14 bits, 250 MSPS, doble canal. Convertido a velocidad de datos:
Doble canal 14 bits @ 250 MSPS
= 2 canales × 14 bit × 250 MS/s
= 7,0 Gbps de velocidad de datos en bruto
= 875 MB/s de flujo continuo de datos
Eso significa que cada segundo se deben trasladar 875 MB de datos muestreados desde el ADC hasta la memoria del host. Si algún eslabón de la cadena no puede seguir el ritmo, se pierden muestras:
- MCU / ARM: los puertos SPI/paralelo llegan como máximo a 50 MB/s, 17 veces por debajo; las muestras se pierden de inmediato.
- DSP: los puertos DMA llegan como máximo a 200 MB/s, 4 veces por debajo; las muestras se pierden cuando se llena el buffer.
- CPU leyendo GPIO directamente: la latencia de planificación del SO hace que un ciclo único de lectura sea de ~10 μs; es como coger una cascada con un cubo.
El valor del FPGA: es un circuito hardware paralelo y determinista. El flujo de datos LVDS del ADC entra, y el FPGA usa primitivas IDDR para recibir 8 pares diferenciales en cada flanco de reloj, realizando deserialización, alineación, marca de tiempo, buffer FIFO, y luego transfiere los datos en bloque al host mediante DMA PCIe. Toda la cadena no tiene planificación del SO, ni fallos de caché, ni latencia de interrupción: los ciclos de reloj son deterministas.
Por eso el núcleo de control de toda tarjeta de adquisición industrial de alta velocidad, osciloscopio y digitalizador es un FPGA: no porque el FPGA sea más listo que una CPU, sino porque es suficientemente rápido, determinista y paralelo.
2. Arquitectura estándar de una tarjeta de adquisición de alta velocidad
El camino completo de datos tiene este aspecto:
Señal analógica ───▶ ADC de alta velocidad (mezzanina FMC) → LVDS / JESD204B → lógica FPGA (deserialización / alineación / trigger / diezmación / FIFO) → buffer DDR3 (captura en ráfaga, colchón de underrun) → PCIe 2.0 x8 DMA → memoria del host → software del host
Hay cuatro cuellos de botella críticos en este camino, y cada uno determina el rendimiento real de la tarjeta de adquisición:
1. Enlace físico del ADC al FPGA: FMC HPC
Las mezzaninas ADC de alta velocidad no se sueldan directamente sobre la placa base; se construyen como mezzaninas estándar FMC (FPGA Mezzanine Card). El conector FMC HPC ofrece:
- 8 pares serie de alta velocidad GTX (hasta 6,6 Gbps, para JESD204B)
- 168 E/S de un extremo/diferenciales (para ADC LVDS paralelos)
- Pines dedicados de reloj, trigger y señal GA
- Pines de alimentación de alta corriente (la mezzanina se autoalimenta)
Una sola ranura FMC HPC puede albergar un AD9643 (ADC 250 MSPS), un AD9152 (DAC), un AD9361 (radio definida por software), un FT601 (USB3.0) o incluso un módulo óptico FMC-a-40G. Por eso insistimos en HPC en lugar de LPC: LPC tiene solo 10 pares de E/S diferenciales y ningún GTX, de modo que no puede conectar en absoluto un ADC de alta velocidad.
2. Buffer a bordo: la DDR3 no es opcional
El ADC continuamente ofrece 875 MB/s, mientras que PCIe 2.0 x8 tiene un ancho de banda teórico de 4 GB/s; PCIe parece suficientemente rápido. Pero en un sistema real el host siempre tiene ráfagas: planificación del SO, procesamiento del software del host, E/S de disco. Sin buffer DDR3, esas ráfagas se convierten directamente en muestras perdidas.
Los 4 GB DDR3 actúan como un «depósito elástico» en este camino: todo lo que envía el ADC se acepta y se escribe primero en la DDR3, y el DMA PCIe lo traslada en bloque cuando el host está libre. Para una captura en ráfaga one-shot de 1 segundo, 875 MB de datos pueden almacenarse completamente en DDR3 sin perder una sola muestra. Con 2 GB DDR3, el tiempo de captura continua se reduce a la mitad.
3. Transferencia del FPGA al host: la diferencia real entre PCIe x8 y x2
Este es el punto más fácil de pasar por alto. Muchas placas de desarrollo FPGA exponen solo PCIe x2; parece que «hay PCIe, ya basta», pero el ancho de banda real difiere 4 veces:
| Configuración PCIe | Ancho de banda teórico | Utilizable (codificación 8B/10B + sobrecarga de protocolo) | Velocidad de adquisición sostenible |
|---|---|---|---|
| PCIe 2.0 x2 | 1,0 GB/s | ~700 MB/s | No puede sostener 14 bits doble canal 250 MSPS; se pierden muestras |
| PCIe 2.0 x4 | 2,0 GB/s | ~1,5 GB/s | Marginal para 250 MSPS de un canal |
| PCIe 2.0 x8 | 4,0 GB/s | ~3,0 GB/s | Amplio margen para doble canal 250 MSPS + trigger multicanal |
Por eso el DUK7325T / DUK7410T de Duyuan implementan ambos PCIe a x8; la placa original de terceros expone solo x2; no porque el chip no lo soporte, sino porque el diseño ahorró coste. El bloque PCIe de Kintex-7 es Gen2 x8 en hardware; solo hacen falta 4 pares diferenciales más en el PCB. Para clientes de adquisición, la diferencia entre x2 y x8 no es «un poco más rápido»: es si la velocidad de muestreo del ADC se puede sostener en absoluto.
4. Sincronización de reloj: por qué importa el oscilador diferencial de 125 MHz
La adquisición de alta velocidad es extremadamente sensible al jitter de reloj. El jitter del reloj de muestreo del ADC determina directamente la relación señal-ruido; un ADC de 250 MSPS requiere un jitter de reloj de muestreo < 1 ps. El oscilador diferencial de 125 MHz a bordo está dedicado a los transceptores GTX, y el oscilador diferencial de 200 MHz sirve a la lógica del FPGA; los dos dominios de reloj se mantienen separados para evitar contaminación mutua. Para la adquisición sincronizada JESD204B, esta calidad de reloj afecta directamente a la consistencia de fase multicanal.
3. Un caso real: construyendo un prototipo de adquisición 250 MSPS con DUK7410T
Duyuan Electronics ayudó recientemente a un cliente a construir un prototipo: un digitalizador de alta velocidad basado en DUK7410T + una mezzanina FMC-ADC9643 de terceros (AD9643, doble canal 14 bits 250 MSPS).
DUK7410T + FMC AD9643 + software del host
- FPGA: JFM7K410T, 406K LC / 1 540 DSP / 28,6 Mb BRAM
- ADC: mezzanina FMC AD9643, doble canal 14 bits 250 MSPS
- Buffer: 4 GB DDR3 a bordo
- Transferencia: PCIe 2.0 x8 DMA, medido 2,6 GB/s
- Trigger: trigger hardware del FPGA (flanco de subida/bajada, ventana), latencia < 50 ns
Resultado medido: captura continua de doble canal durante 1 segundo; 875 MB escritos completamente en DDR3, y luego trasladados al host por PCIe x8, con 0 muestras perdidas. Con el PCIe x2 de la placa original de terceros, la captura continua en la misma configuración empieza a perder muestras tras 0,6 segundos; esa es la diferencia real entre x8 y x2.
Una vez verificado este prototipo, el cliente construyó su propia placa portadora alrededor del core board del DUK7410T (83,8×64,8 mm), reemplazó la ranura FMC por un ADC soldado directamente sobre la placa, sustituyó el conector PCIe por un edge de contactos dorados (gold-finger), y lo convirtió en una tarjeta de adquisición de producción 6 meses después.
4. Elección entre las tres placas de Duyuan para adquisición
No todo proyecto de adquisición necesita un Virtex-7. Elija según la frecuencia de muestreo y el número de canales:
| Escenario | DUK7325T $1,231 | DUK7410T $1,538 | DUF7690T $3,846 |
|---|---|---|---|
| Frecuencia de muestreo ADC | ≤ 125 MSPS | ≤ 250 MSPS | ≥ 500 MSPS |
| Canales ADC | 2 canales | 2–4 canales | 8+ canales |
| Necesidad DSP | Diezmación/FIR simple | FIR/FFT en tiempo real | Compresión de pulso / radar MIMO |
| Sincronización óptica | 2× SFP+ | 2× SFP+ | QSFP 40G + 3× FMC |
| Uso típico | Monitorización de vibraciones, adquisición industrial | Digitalizadores, prototipo SDR | Radar en fase, radio definida por software |
El principio de selección es simple: calcule primero la velocidad total de datos del ADC, luego el margen de ancho de banda PCIe, y finalmente si el DSP/BRAM es suficiente para el procesamiento en tiempo real. Para el 80 % de los proyectos de adquisición de velocidad baja y media, el DUK7325T es suficiente; para doble canal 250 MSPS o FFT en tiempo real simple, suba a DUK7410T; solo para casos difíciles como radar, SDR de banda ultraancha y sincronización multicanal necesita los 36 pares GTH y las 3 ranuras FMC del DUF7690T.
La esencia de la adquisición de alta velocidad no es «qué tan rápido muestrea», sino que «ningún eslabón de toda la cadena falle». ADC suficientemente rápido, FPGA suficientemente paralelo, DDR3 suficientemente grande, PCIe suficientemente ancho, reloj suficientemente estable; escatime en cualquier eslabón y al final se convierte en muestras perdidas en la pantalla. FMC HPC + PCIe x8 + 4 GB DDR3 es la mínima configuración fiable que armamos para los clientes en este camino.
