Проект XLR8 сочетает скорость FPGA с кодированием Arduino

Проект XLR8 сочетает скорость FPGA с кодированием Arduino
Проект XLR8 сочетает скорость FPGA с кодированием Arduino
Anonim
Изображение
Изображение

На рынке существует множество плат и клонов, совместимых с Arduino. Однако большинство из них мало что предлагают, кроме того, на что способен сам Arduino. Но, несмотря на то, что новая плата XLR8 (произносится как «Accelerate») от Alorium Technology очень похожа на Arduino Uno, она несколько отличается.

Для тех, кто не знает: FPGA или программируемая пользователем вентильная матрица максимально приближена к разработке собственного чипа. Каждая FPGA состоит из настраиваемых логических блоков (CLB), которые невероятно гибки и могут реализовать любую базовую функцию. По сути, это перепрограммируемая схема, в которой вместо реализации функциональности в программном обеспечении вы можете реализовать ее аппаратно. Преимущество FPGA в том, что вы можете настроить ее для решения практически любой задачи. Однако большая разница между FPGA и обычным микроконтроллером заключается в том, что «из коробки» он ничего не делает.

XLR8 - это плата FPGA, основанная на Altera MAX10, реализующая ATmega-совместимый микроконтроллер с тем же объемом памяти для программ и данных, что и ATmega328. На данный момент плата имеет циклическую точность до стандартного ATmega, но, по крайней мере теоретически, на FPGA достаточно места для работы ядра ATmega на тактовой частоте, более чем вдвое превышающей стандартную тактовую частоту Arduino Uno.

По сути, по крайней мере для Arduino IDE, эта плата выглядит как Arduino Uno. Настолько, что вы можете просто выбрать Uno в качестве типа платы, а затем скомпилировать и загрузить свой эскиз через USB как обычно.

Но всё не так, как кажется на первый взгляд. Также на борту FPGA находится то, что Alorium называет «блоками Xcelerator» или XB. Они обеспечивают аппаратно-оптимизированную реализацию функциональности, которая в противном случае должна быть реализована в программном обеспечении.

Из ворот они дают два типа блоков. Первый связан с математическими вычислениями с плавающей запятой - и если вам когда-либо приходилось заниматься серьезными математическими вычислениями на Arduino, вы сразу поймете, какой большой проблемой это может оказаться - другой блок отвечает за сервоуправление. Доступ к обоим блокам можно получить с помощью имеющихся библиотек Arduino.

Например, чтобы использовать ускорение, предлагаемое математическим блоком с плавающей запятой, вам необходимо преобразовать свой код для использования вызовов функций, специфичных для XLR8. Так, например:

c=a + b;

становится,

c=xlr8FloatAdd(a, b);

Но если это покажется вам слишком трудным, вы будете рады узнать, что блок сервоуправления можно добавить в ваш код без каких-либо изменений, за исключением включения другого заголовочного файла.

Это означает, что если вы собираете роботов и испытываете дрожание сервоприводов из-за прерываний обслуживания, вы можете заменить эту плату платой Arduino в своем роботе и с помощью одной строки кода устранить любые сервоприводы. дрожь. Для некоторых сборок это может спасти жизнь.

У меня на столе уже около месяца лежит предсерийное оборудование, и, хотя я не выполняю много работы с сервоприводами, мне приходится довольно регулярно впихивать математические вычисления с плавающей запятой в Arduino основе. Хотя конвертировать мой код было непросто, аппаратное ускорение значительно ускорило его выполнение. На самом деле я несколько впечатлен.

Я поговорил с Джейсоном Пекором о плате XLR8, и он сказал следующее о сервоприводах и XB с плавающей запятой:

Мы уже разработали сервоблок, который устраняет дрожание/подергивание, характерное для стандартной библиотеки сервоприводов Arduino. Мы продемонстрировали эту функциональность на изящной установке в Maker Faire Milwaukee, которая включала в себя RedBoard, нашу плату XLR8 и несколько лазерных указателей, установленных на сервоприводах, что дало очень хорошее параллельное сравнение.

Самая интересная вещь в примере с сервоприводом заключается в том, что единственная разница между эскизами, работающими на двух платах, - это строка включения библиотеки сервоприводов. Остальная часть эскиза остается точно такой же, но все функции сервоуправления вызывают аппаратные функции в структуре FPGA.

У нас также была умная демонстрация с вентиляторами, прозрачными трубками и шариками для пинг-понга, которая обеспечивала хорошее визуальное представление нашего блока с плавающей запятой по сравнению со стандартным процессором с плавающей запятой на базе Atmega.

Другие блоки, которые в настоящее время рассматриваются для включения в наш список, включают в себя: ПИД-регулятор, таймер/контроллер NeoPixel, несколько UART, аудиофункции и функции DSP.

Меня больше всего беспокоит XLR8, по крайней мере на начальном этапе, Alorium будет предоставлять лишь ограниченную поддержку пользователям, которые хотят создавать свои собственные XB. Хотя они это сказали,

В будущем мы планируем предоставить доступ к достаточному количеству исходного кода и документации, чтобы люди, владеющие Verilog или VHDL, а также Quartus, могли создавать свои собственные XB.

Я думаю, им нужно решить эту проблему раньше, чем позже. Потому что настоящий секрет этой платы связан с тем, что она является FPGA и возможностью ее использовать. На данный момент это отличный инструмент для пользователей, сталкивающихся с джиттером сервопривода или проблемами с плавающей запятой. Но при хорошей поддержке создания собственных XB он может стать серьезным инструментом для опытных создателей, сталкивающихся со всевозможными проблемами.

Сейчас XLR8 собирает средства на Kickstarter, и до кампании осталось еще две недели.