Высокоскоростной сбор данных на FPGA: почему FMC HPC + PCIe x8 — золотая комбинация
Осциллографы, дигитайзеры, фазированные антенные решётки, программно-определяемые радиостанции и высокоскоростной мониторинг вибрации — ядро всех этих систем: «высокоскоростная оцифровка АЦП → упаковка данных → передача на хост для обработки». Почему этот этап должен выполняться на FPGA, а не на МК, ЦСП или CPU, который оцифровывает напрямую? Почему разъём FMC HPC и интерфейс PCIe x8 стали золотой комбинацией для плат сбора данных? Эта статья начинается с реального проекта сбора данных на 250 МГц.
1. Почему высокоскоростной сбор данных требует FPGA
Сначала посмотрим на цифры. Типичный высокоскоростной АЦП, например AD9643: 14 бит, 250 МГц, двухканальный. Пересчитаем в скорость передачи данных:
Двухканальный 14 бит @ 250 МГц
= 2 канала × 14 бит × 250 Мвыб/с
= 7,0 Гбит/с исходная скорость
= 875 МБ/с непрерывный поток данных
Это означает, что каждую секунду 875 МБ данных оцифровки нужно переместить из АЦП в память хоста. Если какое-то звено цепи не успевает — данные теряются:
- МК / ARM: SPI/параллельный порт даёт максимум 50 МБ/с, в 17 раз меньше — потеря сразу
- ЦСП: порты DMA дают максимум 200 МБ/с, в 4 раза меньше — потеря при заполнении буфера
- CPU, читающий GPIO напрямую: задержка планировщика ОС делает один цикл чтения на уровне 10 мкс — как ловить водопад ведром
Ценность FPGA: это параллельная, детерминированная аппаратная схема. Поток данных LVDS от АЦП поступает внутрь, и FPGA с помощью примитивов IDDR принимает 8 дифференциальных пар на каждом фронте такта, выполняя десериализацию, выравнивание, отметку времени, буферизацию в FIFO, а затем массово передаёт данные на хост через PCIe DMA. Во всей цепи нет планирования ОС, нет промахов кэша, нет задержки прерываний — тактовые циклы детерминированы.
Именно поэтому управляющим ядром каждой промышленной платы высокоскоростного сбора данных, осциллографа и дигитайзера является FPGA — не потому, что FPGA умнее CPU, а потому, что она достаточно быстрая, детерминированная и параллельная.
2. Стандартная архитектура платы высокоскоростного сбора данных
Полный путь данных выглядит так:
Аналоговый сигнал ───▶ Высокоскоростной АЦП (дочерняя плата FMC) → LVDS / JESD204B → Логика FPGA (десериализация / выравнивание / триггер / прореживание / FIFO) → Буфер DDR3 (захват пачек, буфер от нехватки данных) → PCIe 2.0 x8 DMA → Память хоста → ПО хоста
На этом пути есть четыре критических узких места, и каждое определяет реальную производительность платы сбора данных:
1. Физический канал от АЦП к FPGA: FMC HPC
Высокоскоростные дочерние АЦП-платы не припаиваются напрямую к материнской плате — они выпускаются как стандартные дочерние платы FMC (FPGA Mezzanine Card). Разъём FMC HPC предоставляет:
- 8 высокоскоростных сериализационных пар GTX (до 6,6 Гбит/с, для JESD204B)
- 168 однофазных/дифференциальных I/O (для параллельных LVDS-АЦП)
- Выделенные выводы тактирования, триггера и сигнала GA
- Выводы питания с большим током (дочерняя плата питает себя сама)
В один слот FMC HPC можно установить AD9643 (АЦП 250 МГц), AD9152 (ЦАП), AD9361 (программно-определяемое радио), FT601 (USB3.0) и даже модуль FMC-40G-оптика. Именно поэтому мы настаиваем на HPC, а не LPC — у LPC только 10 дифференциальных I/O-пар и нет GTX, подключить к нему высокоскоростной АЦП вообще невозможно.
2. Буферизация на плате: DDR3 нельзя экономить
АЦП непрерывно выдаёт 875 МБ/с, а теоретическая пропускная способность PCIe 2.0 x8 — 4 ГБ/с: PCIe выглядит достаточно быстрым. Но в реальной системе у хоста всегда есть всплески: планирование ОС, обработка ПО хоста, дисковый I/O. Без буфера DDR3 эти всплески превращаются в потерянные данные.
Роль 4 ГБ DDR3 на этом пути — «эластичное водохранилище»: что бы ни выдавал АЦП, всё сначала записывается в DDR3, а PCIe DMA забирает данные пачками, когда хост свободен. Для одиночного захвата пачки длительностью 1 секунду 875 МБ данных полностью помещаются в DDR3 без потери ни одного отсчёта. С 2 ГБ DDR3 время непрерывного сбора сокращается вдвое.
3. Передача с FPGA на хост: реальная разница между PCIe x8 и x2
Это самый легко упускаемый момент. Многие платы разработки FPGA выводят только PCIe x2 — кажется, «PCIe есть, этого достаточно», но реальная пропускная способность отличается в 4 раза:
| Конфигурация PCIe | Теоретическая полоса | Реально доступно (кодирование 8B/10B + служебные данные) | Поддерживаемая частота сбора |
|---|---|---|---|
| PCIe 2.0 x2 | 1,0 ГБ/с | около 700 МБ/с | Не тянет 14-битный двухканальный 250 МГц — потери |
| PCIe 2.0 x4 | 2,0 ГБ/с | около 1,5 ГБ/с | Едва хватает на одноканальный 250 МГц |
| PCIe 2.0 x8 | 4,0 ГБ/с | около 3,0 ГБ/с | Достаточный запас для двухканального 250 МГц + многочастотный триггер |
Именно поэтому DUK7325T / DUK7410T от Duyuan реализуют PCIe на x8 — сторонняя оригинальная плата выводит только x2; не потому, что чип не поддерживает, а потому, что в конструкции сэкономили. Блок PCIe в Kintex-7 аппаратно рассчитан на Gen2 x8; на плате нужно лишь на 4 дифференциальные пары больше. Для заказчиков, занимающихся сбором данных, разница между x2 и x8 — не «чуть быстрее», а сможет ли вообще поддерживаться частота оцифровки АЦП.
4. Синхронизация тактов: значение дифференциального кварцевого генератора 125 МГц
Высокоскоростной сбор данных крайне чувствителен к джиттеру тактов. Джиттер такта оцифровки АЦП напрямую определяет отношение сигнал/шум — АЦП на 250 МГц требует джиттер такта оцифровки < 1 пс. Встроенный дифференциальный генератор 125 МГц предназначен для приёмопередатчиков GTX, генератор 200 МГц обслуживает логику FPGA; два тактовых домена разделены, чтобы не мешать друг другу. При синхронном сборе JESD204B это качество тактов напрямую влияет на согласованность фаз по каналам.
3. Реальный пример: прототип сбора данных 250 МГц на DUK7410T
Компания Duyuan Electronics недавно помогла заказчику собрать прототип: высокоскоростной дигитайзер на базе DUK7410T + сторонней дочерней платы FMC-ADC9643 (AD9643, двухканальный 14-битный 250 МГц).
DUK7410T + FMC AD9643 + ПО хоста
- FPGA: JFM7K410T, 406K LC / 1 540 DSP / 28,6 Мбит BRAM
- АЦП: дочерняя плата FMC AD9643, двухканальный 14-битный 250 МГц
- Буферизация: встроенные 4 ГБ DDR3
- Передача: PCIe 2.0 x8 DMA, измерено 2,6 ГБ/с
- Триггер: аппаратный триггер FPGA (фронт нарастания/спада, окно), задержка < 50 нс
Измеренный результат: двухканальный непрерывный сбор в течение 1 секунды — 875 МБ полностью записаны в DDR3 и затем переданы на хост по PCIe x8, 0 потерянных отсчётов. Со сторонней оригинальной платой на PCIe x2 в той же конфигурации непрерывный сбор начинает терять отсчёты после 0,6 секунды — вот реальный разрыв между x8 и x2.
После проверки прототипа заказчик построил собственную несущую плату на базе модуля DUK7410T (83,8×64,8 мм), заменил слот FMC на АЦП, припаянный напрямую к плате, заменил разъём PCIe на позолоченную кромку и через 6 месяцев превратил его в серийную плату сбора данных.
4. Как выбрать среди трёх плат Duyuan для сбора данных
Не каждому проекту сбора данных нужна Virtex-7. Выбирайте по частоте оцифровки и числу каналов:
| Сценарий | DUK7325T $1 231 | DUK7410T $1 538 | DUF7690T $3 846 |
|---|---|---|---|
| Частота оцифровки АЦП | ≤ 125 МГц | ≤ 250 МГц | ≥ 500 МГц |
| Каналы АЦП | 2 канала | 2–4 канала | 8+ каналов |
| Требования к DSP | Простое прореживание/FIR | Реальное время FIR/FFT | Сжатие импульсов/MIMO-радар |
| Оптическая синхронизация | 2×SFP+ | 2×SFP+ | QSFP 40G + 3×FMC |
| Типичное применение | Мониторинг вибрации, промышленный сбор | Дигитайзеры, SDR-прототипы | Фазированная решётка, программно-определяемое радио |
Принцип выбора прост: сначала рассчитайте суммарную скорость данных АЦП, затем запас полосы PCIe и, наконец, хватает ли DSP/BRAM для обработки в реальном времени. Для 80 % проектов сбора данных с низкой и средней скоростью достаточно DUK7325T; для двухканального 250 МГц или простого БПФ в реальном времени переходите на DUK7410T; только для сложных задач — радар, сверхширокополосное SDR, многочастотная синхронизация — нужны 36 пар GTH и 3 слота FMC платы DUF7690T.
Суть высокоскоростного сбора данных — не «как быстро вы оцифровываете», а «чтобы ни одно звено всей цепи не подвело». Достаточно быстрый АЦП, достаточно параллельная FPGA, достаточно большой DDR3, достаточно широкий PCIe, достаточно стабильный такт — сэкономите на любом звене, и в итоге получите потерянные отсчёты на экране. FMC HPC + PCIe x8 + 4 ГБ DDR3 — это минимальная надёжная конфигурация, которую мы собираем для заказчиков на этом пути.
