Экспертные заключения: 0
Консультации: 0

Patchcore

Patchcore

Компактная плата на ПЛИС с несколькими детерминированными ядрами ввода-вывода и аппаратными примитивами протоколов. Нестандартные интерфейсы подключаются как готовые переносимые модули, а не реализуются вручную на GPIO, — вместо фиксированного набора периферии, который навязывают стандартные микроконтроллеры.

Технические характеристики

• Одноплатный модуль компактного форм-фактора 20 × 30 мм.

• Вычислительная часть реализована на ПЛИС и состоит из нескольких небольших ядер (ориентир — от 4 до 8, уточняется выбором ПЛИС). Каждое ядро обслуживает собственный интерфейс независимо от остальных.

• Ядра работают без прерываний и операционной системы: каждая инструкция выполняется за фиксированное число тактов, поэтому тайминги сигналов воспроизводимы.

• В конфигурацию ПЛИС входит набор аппаратных примитивов: сдвиговые движки, генерация и захват сигналов с точностью до такта, метки времени фронтов, вычисление CRC, FIFO, кодирование Manchester и NRZ. Ядра соединяют эти примитивы программой.

• Собственная система команд (ISA), ориентированная на ввод-вывод: установка состояния выводов с ожиданием заданного числа тактов, ожидание фронта с меткой времени, операции с битовыми полями, циклы без накладных расходов.

• GPIO-выводы, логика которых определяется пользовательской программой, а не жёстко зашитыми аппаратными блоками периферии. Нагрузочная способность и подтяжки настраиваются; уровни напряжения могут различаться по банкам выводов (при поддержке выбранной ПЛИС).

• Каталог модулей протоколов: UART (включая инвертированный и SBUS), SPI, I²C, 1-Wire, DShot, PPM, квадратурные энкодеры, SSI/BiSS, WS2812. Каждый модуль — пакет с манифестом (выводы, тактовая частота, параметры), тестами и описанием.

• Язык описания протоколов (PDL): пользователь задаёт формат кадра и тайминги, а инструмент генерирует код для ядра или конфигурацию примитивов.

• Собственный открытый тулчейн: ассемблер, компилятор и тактово-точный симулятор для ПК. Один и тот же код даёт одинаковый результат в симуляторе и на плате.

• Встроенный логический анализатор: ПЛИС записывает состояние выводов в буфер и передаёт его по USB с декодированием протоколов.

• Программы ядер загружаются по USB без пересинтеза ПЛИС; пересинтез нужен только при изменении набора аппаратных примитивов. Конфигурация ПЛИС и копия программы хранятся в энергонезависимом ПЗУ на плате.

• Аппаратная кнопка переключения источника загрузки (boot select) между USB и ПЗУ.

• Питание осуществляется через интерфейс USB.

• Открытые исходные коды HDL, тулчейна и каталога модулей.

Проблема, которую решает проект

Разработчики встраиваемых систем регулярно сталкиваются с протоколами, которых нет в периферии стандартного микроконтроллера: нестандартные датчики, энкодеры, проприетарные линии связи. Набор интерфейсов (число UART, SPI, I²C и т. д.) заранее определён производителем чипа, поэтому при нетипичной задаче разработчик вынужден искать обходной путь.

У существующих обходных путей есть недостатки. Программная эмуляция на GPIO нестабильна по таймингам и загружает процессор. Программируемые блоки ввода-вывода (например, PIO в RP2040) ограничены по памяти программ и средствам отладки. Плата на ПЛИС даёт полную свободу, но требует знания HDL и повторного синтеза после каждого изменения. Решение, написанное под один проект, плохо переносится в другой.

Проект превращает этот вынужденный «костыль» в осознанную архитектуру продукта: несколько детерминированных ядер ввода-вывода, аппаратные примитивы для операций с жёсткими таймингами и библиотека переносимых протестированных модулей протоколов. Протокол описывается один раз, проверяется в симуляторе и на встроенном логическом анализаторе, затем загружается на плату по USB.

Проект не конкурирует с микроконтроллерами по тактовой частоте и цене и не предназначен для скоростных интерфейсов (USB, Ethernet, SDIO). Его преимущества — число независимых ядер, аппаратные примитивы, настраиваемая электрика выводов и наблюдаемость, то есть возможность увидеть и воспроизвести тайминги


Примеры применения платы

Мост для нестандартных датчиков БПЛА. Подключается между полётным контроллером и датчиком (дальномер, сенсор оптического потока, специализированная полезная нагрузка), протокол которого не поддерживается интерфейсами контроллера. Плата реализует нужный протокол с точными таймингами, согласует уровни напряжения и передаёт данные в стандартном виде (UART, SPI или I²C). Компактность платы важна для размещения в тесном корпусе малого БПЛА.

Прототипирование нестандартных интерфейсов. Когда задаче нужен протокол или число интерфейсов, не предусмотренные стандартным микроконтроллером, разработчик берёт модуль из каталога или описывает кадр и тайминги на языке описания протоколов, затем отлаживает результат в симуляторе и на встроенном логическом анализаторе — без разработки отдельной платы под конкретный протокол.

Контроллер нестандартной периферии в робототехнике. Несколько энкодеров (в том числе SSI/BiSS) и драйверов с проприетарным протоколом обслуживаются параллельно независимыми ядрами, которые не влияют друг на друга по таймингам. Основному контроллеру данные передаются в стандартном виде.

Имитация устройства при тестировании прошивок. Плата воспроизводит протокол датчика или исполнительного устройства с заданными таймингами, в том числе с отклонениями и ошибками кадра. Это позволяет проверять поведение основной прошивки без реального устройства.

Сравнение с существующими решениями

Решение

Описание

Отличие от проекта

Raspberry Pi Pico (RP2040/RP2350)

Недорогой микроконтроллер (21 × 51 мм) с программируемыми блоками ввода-вывода (PIO).

PIO — самый близкий по смыслу аналог, но число автоматов фиксировано (8 в RP2040), память программ составляет 32 инструкции на блок, арифметических инструкций нет, возможности отладки ограничены. В проекте — несколько ядер с аппаратными примитивами (CRC, метки времени), встроенный логический анализатор и каталог модулей.

Pico выигрывает в цене и зрелости экосистемы; проект ориентирован на задачи, где возможностей PIO не хватает.

Parallax Propeller, XMOS xCORE

Микроконтроллеры с несколькими детерминированными ядрами и без фиксированной периферии. Во втором поколении Propeller добавлены аппаратные умные выводы (smart pins).

Принцип близок. В проекте набор аппаратных примитивов можно менять на уровне конфигурации ПЛИС, а протоколы оформлены как переносимые тестируемые модули с языком описания, симулятором и встроенным анализатором.

NXP FlexIO, TI PRU

Программируемая периферия внутри микроконтроллера или SoC: сдвиговые регистры и таймеры (FlexIO), отдельные ядра реального времени (PRU).

Решения привязаны к конкретным чипам, а состав и число блоков определяет производитель. В проекте набор примитивов и число ядер можно изменять, а модули переносимы между проектами.

TinyFPGA BX, iCEBreaker, Fomu

Компактные платы на ПЛИС с открытым тулчейном (Yosys/nextpnr).

Позволяют реализовать любую периферию на HDL, но каждое изменение требует знания HDL и повторного синтеза. В проекте программы загружаются по USB без пересинтеза, а типовые протоколы доступны как готовые модули.

Glasgow Interface Explorer, Bus Pirate

Инструменты с программно-определяемым вводом-выводом для работы с нестандартными протоколами; популярны у исследователей аппаратной безопасности.

Близки по гибкости, но позиционируются как инструменты анализа, подключаемые к ПК. Проект — встраиваемый модуль, который остаётся в устройстве, а встроенный анализатор нужен для отладки.


Ссылка

На страницу проекта

Направление

IT, Беспилотные авиационные системы

Рынки

AeroNet, TechNet

Сквозные технологии

Технологии информационной безопасности, Технологии сенсорики