Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Registered
- Activity
Specialization
Chief Technology Officer (CTO), Hardware Engineer
Lead
Git
PCB design
Wireless technology
FPGA
Embedded Linux
Python
C
Programming microcontrollers
Software development
Linux
Да, идея с UIO действительно хорошая — особенно когда нужен простой и быстрый доступ к регистрам через AXI Lite (BAR).
Но в моём случае я использую DMA-каналы (H2C / C2H), так что UIO не подойдёт. Для потоковых данных нужно полноценное взаимодействие с буферами, прерываниями и адресным пространством — поэтому задействован драйвер xdma от Xilinx и свой.
Параллельно собираю "свой танк" — с полным контролем над PCIe, SDR-цепочкой и всей архитектурой.
UART у меня подключён только к GPS-модулю, и никаких ограничений по скорости нет — при желании вы легко можете менять параметры (скорость, формат, режим работы) под свои задачи.
Как справедливо было замечено —
зачем изобретать велосипедзачем писать PCIe с нуля, когда есть отличные ядра от вендоров и целый набор достойных open-source решений, в которые уже кто-то выложился по полной.Моя цель была не в том, чтобы изобрести новое ядро, а чтобы поднять всю систему целиком — от SDR-модуля до работающего baseband-процессора со связью, навигацией, сенсорами, и, конечно, общением с хостом через PCIe. Дел — непочатый край: HDL, драйверы, пламенные костыли, память, DMA, управление потоками.
🔥 Огонёк — есть. В сердце, в душе, ну и иногда на плате — там с этим строго: светодиодов достаточно 😄
Аппаратную часть обязательно покажу — layout, трассировка, разводка, схемотехника. Будет жарко (и аккуратно).
Это моя собственная SDR-плата, полностью разработанная мной с нуля.
Использую её вместе с LattePanda Sigma (x86) и Nano PC T6 (ARM) — основная идея: компактный, полностью автономный SDR-модуль с 2×RX и 2×TX до 6 ГГц, на котором можно поднять полноценную связь, включая собственный проприетарный baseband.
Что на борту:
FPGA Xilinx Artix-7 (опции: 35T / 75T / 100T / 200T)
RF-трансивер: AD9361 / AD9364 / AD9363
DDR3-память
GPS-модуль SIM68
MPU9250 (акселерометр, гироскоп, магнитометр)
Датчик давления
Плата подключается через PCIe x4 (формат M.2 2280).
У меня немного другой случай — UART IP реализован в FPGA и доступен (его адресное пространство, регистры) через PCIe как AXI memory-mapped устройство. Использую AXI Lite, подключённый к PCIe BAR. На хосте доступ идёт через XDMA IP от Xilinx (или свой драйвер), но только memory-mapped интерфейс — DMA здесь не используется, он просто не нужен для UART.
UART используется для получения сообщений от GPS приемника. Поэтому достаточно обычного доступа к регистрам через
mmap
, как к памяти. Основной поток данных (например, для SDR) передаётся через другие интерфейсы с DMA.Да, это вполне рабочая схема — можно стримить I/Q через PCIe, USB или Ethernet и обрабатывать всё на CPU/GPU (например, в GNU Radio , Python или C). Но если важна минимальная задержка или требуется real-time, лучше выполнять обработку прямо в FPGA: NCO, микшер, фильтрация, демодуляция — всё это реализуемо как в виде одного пайплайна, так и через набор сопроцессорных ядер.
У меня оба подхода реализованы в разных проектах:
Один — SDR с обработкой на хосте.
Второй — полноценный трансивер с OFDM и MIMO, где все расчёты идут внутри FPGA.
Для передачи данных используются каналы C2H и H2C через XDMA:
Потоки разделяются по направлениям: RX → C2H, TX ← H2C
Пример скорости передачи данных:
В одну сторону (2 канала, 61.44 MSps, 16-бит I/Q): ~3.93 Гбит/с
В обе стороны: ~7.86 Гбит/с
PCIe Gen1 x4 (4 × 2.0 Гбит/с) справляется с такой нагрузкой, но на практике узким местом чаще становится RAM или CPU хоста, особенно при непрерывной high-rate передаче.
О, круто! KC705 — отличная плата, а с PCIe можно много всего интересного сделать.
Понимаю насчёт времени — у самого вечно дилемма между хотелками и дедлайнами 😅
Рад, что статья добавила мотивации!
Какая то провокационная статья, перечисление вопросов) где тезисы, аргументы (за и против) и конечно же выводы? В чем заключена самоуверенность? Инвентаризация выполнена не полностью (мало обьектов проинвентаризованно). У нас в мире столько идей что утонуть можно, другой вопрос: ресурсов (как материальных так и не) нехватает все их исследовать.
Поставить вопрос легко, правильный вопрос сложнее, выработать план поиска ответа — очень тяжело, найти ответ или опровержение — почти не реально, усомниться в своем вопросе — не в этом мире, найти простой выход — а зачем?
Автор: конкретика путь к нахождению ответа, расплывчатость — путь к философии.
Предложите свои идеи (ответы — на Ваши вопросы). Это уже предмет обсуждения.
Обожаю философию — она как океан плавай как хочешь)
Цитата: "Надо провзаимодействовать с любым внешним объектом, хоть в чём либо превышающим ваши способности, и затем проверить результат" — а Вы уверены, что обьект является внешним и превышает ваши способности????????