Например, хочется какой нибудь миникомпьютер с не очень распространённым CAN, хочется десять UART, а может просто надо два десятка быстрых GPIO ног. Как же быть?
FPGA+CPU или в данном случае Cyclone V SoC
Один из вариантов решения проблемы может быть DevKit DE0-Nano-Soc. Данное решение построено на базе чипа Altera Cyclone V SE, а именно 5CSEMA4U23C6N. Который в свою очередь является комбинацией аппаратного ядра ARM Cortex A9 в данном случае двуядерным, и FPGA Cyclone V. Зачем может понадобиться такой тандем? А нужен он достаточно часто: FPGA хорошо подходит для быстрой обработки сигналов, обычные IO пины спокойно могут работать на сотнях мегагерц, а в моделях с аппаратными трансиверами и до шести гигагерц. А также для параллельной, конвейерной обработки поступающих сигналов. Однако описывать всё на языках вроде Verilog или VHDL достаточно сложно, медленно и неудобно. Поэтому достаточно часто была практика ставить в дизайн на FPGA реализацию процессора: специализированных NIOS II для Altera, MicroBlaze для Xilinx, варианты AVR ядер написанных энтузиазитстами и тому подобное. Из плюсов такого решения это простота, добавил в дизайн процессор и периферию и пиши себе программу на C/C++ для них, к минусам можно отнести то, что они во первых занимают ресурсы FPGA (логические ячейки, блоки памяти, PLL), во вторых достаточно медленны. Ну и в третьих несмотря на разнообразную периферию, она обычно достаточно проста, то есть поддержки DMA для UART в базовом наборе вы вряд ли найдёте, можно конечно написать своё, но это долго и достаточно сложно. С полными характеристиками чипа можно ознакомится здесь. Но рассмотрим детальней наш devkit.
DE0-Nano-SoC
Основной чип: Altera Cyclone V SE 5CSEMA4U23C6N
Часть аппаратного ядра(HPS):
- 1GB DDR3 SDRAM (32-bit data bus)
- 1 Gigabit Ethernet
- USB OTG Port, USB Micro-AB(работает как в режиме хоста так и девайса)
- Micro SD
- UART to USB, USB Mini-B connector
- Accelerometer (I2C interface + interrupt)
- Кнопки: cold reset, warm reset, user button
- Светодиод
- LTC разём расширения
Часть FPGA:
- EPCS128 для хранения конфигурации FPGA
- Две кнопки
- Четыре переключателя
- Восемь светодиодов
- Два 40пиновых разъёма(36 GPIO+2GND+5V Pin+3V Pin) стандарный для плат от Terasic.
- Разъём расширения совместимый с Arduino Uno R3
- Аналого цифровой преобразователь 8ми канальный
Выводы
Плата достаточно мощная, имеет гибкую конфигурацию, может быть использована в домашних разработках, если нужна высокая скорость или нестандартные интерфейсы, которые можно реализовать на FPGA стороне. Отлично подойдёт для повышения скила как в разработке для FPGA, так и в программировании ARM. Однако, для начального обучения FPGA я бы её не посоветовал из-за малого количества установленной периферии. Она всё же больше плата для использования, в каком либо устройстве, как готового блока управления. Ну и немного подводя итоги:
Плюсы:
- ARM Cortex A9
- FPGA часть на базе Cyclon V(на данный момент самый современный чип семейства Cyclone)
- Гибкая конфигурация: FPGA часть может использовать большую часть пинов HPS части, а в свою очередь HPS часть может направлять сигналы с периферии(UART/SPi/I2C/CAN) «внутрь» FPGA а не только на заданные ноги.
- 72 GPIO выведенных с FPGA части.
- 8 каналов ADC
- 1 Gb Ethernert
- USB OTG порт
Минусы:
- Цена: 99$ что достаточно дорого на фоне Raspberry Pi и её аналогов
- Сложность: придётся работать как с FPGA так и с ARM частью
- документация: документация на сам devkit очень подробна, а вот с документацией на сам чип местами всё достаточно плохо, если FPGA часть описана хорошо, то вот с HPS не так всё радужно, некоторые моменты описаны совсем не интуитивно и можно сказать поверхностно, хотя основные моменты всё же описаны хорошо.
- Сообщество: его можно сказать нет
Достаточно мощная и интересная плата, но как всегда за гибкость приходится платить сложностью в освоении. Если есть, какие либо вопросы по этой плате, задавайте в комментариях, постараюсь ответить.
Комментарии (36)
EmmGold
19.06.2016 22:37-1ещё хочется пару-четвёрку саташников…
JerleShannara
20.06.2016 14:45Для SATA лучше будет посмотреть на xilinx, тамошние трансиверы более приспособлены для реализации оного (плюс есть appnote как это нарисовать в красивом виде). Но контроллер прийдется писать самому в любом случае
NoOn3
19.06.2016 22:39+1вот еще интересная плата такого типа (snickerdoodle) www.crowdsupply.com/krtkl/snickerdoodle
tormozedison
19.06.2016 22:54+1zanuda mode on
Мини-ЭВМ — это небольшой мейнфрейм. Микро-ЭВМ — это персоналка.
zanuda mode off
rPman
19.06.2016 23:47Подскажите, на сколько тяжело подключить модуль камеры к таким платам, чтобы обработка сигнала была доступна в FPGA модуле? Доступность (цены) камеры с возможностью подключить к плате (ну максимум распаять разъем) и возможность работы со всем этим из приложения в linux (на сколько геморной будет разработка).
Интересуют камеры с быстрым сенсором (от 60fps) ну и под вопросом размер кадра, потянет ли такая плата обработку в реалтайме (на максимуме fps) хотя бы простейшие алгоритмы (определение центров ярких пятен цвета, N-штук, например по яркости/размерам) или по сложнее, построение карты глубины по стереокартинке (две камеры).VBKesha
20.06.2016 00:12+1>> Подскажите, на сколько тяжело подключить модуль камеры к таким платам, чтобы обработка сигнала была доступна в FPGA модуле?
Вот одна из статья с подключением камеры https://habrahabr.ru/post/283488/ вроде камеры эти недорогие и вполне доступны.
>>возможность работы со всем этим из приложения в linux (на сколько геморной будет разработка).
Если хочется под линукс работать именно с камерой, то может взять USB камеру и работать, если надо кадры обрабатывать на FPGA то из HPS сбрасывать кадры в оперативку через DMA а уже потом из FPGA эти кадры обрабатывать.
Если же хочется именно брать буфер из FPGA то придётся писать дизайн который берет данные с камеры кидает в буфер а на стороне линукса уже писать дрова чтобы устройство было источником видео(если обрабатывать хочется стандартными программами если нет можно что то своё сгородить чтобы готовые буферы перекидывало).
>> Интересуют камеры с быстрым сенсором (от 60fps) ну и под вопросом размер кадра, потянет ли такая плата обработку в реалтайме (на максимуме fps) хотя бы простейшие алгоритмы (определение центров ярких пятен цвета, N-штук, например по яркости/размерам) или по сложнее, построение карты глубины по стереокартинке (две камеры).
Захватить то по идее без проблем, а вот с обработкой сложней, зависит от того где обрабатывать прямо на FPGA или ARM части или частями. Если на FPGA то можно попробовать написать дизайн и глянуть сколько он займёт и на какой частоте сможет работать и хватит ли её. Если на ARM то тоже можно потестировать заранее.
VBKesha
20.06.2016 00:16+1Вот ещё статьи которые думаю могут заинтересовать, правда на английском:
https://rocketboards.org/foswiki/view/Projects/VIPCameraWithTheHPSDDR3OnAtlasSoCKit
https://rocketboards.org/foswiki/view/Projects/5MegaCameraDisplayWithLCDOnAtlasSoCKit
https://rocketboards.org/foswiki/view/Projects/OpenCLMandelbrotDemoOnAtlasSoC
leshabirukov
20.06.2016 15:08http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=68&No=281 — 80$
Мануал искать по «TRDB-D5M_Hardware specification»
60fps — 1024x768 (в субпикселях)
Пользовался, делал например, простой фильтр выделения границ. Реализацию помянутых «простейших алгоритмов» видимо придётся серьёзно менять под ПЛИС.
FatalRaiden
20.06.2016 00:01Около месяца назад взял такую в ЭФО. Вышла на 128 бачей.
Из минусов — отсутствие возможности в ARM DS-5 Community Edition писать BareMetal приложения на само ядро и отладка приложения только под осью через ethernet.
ps при запущенном линухе чип греется как паровоз. Не до фанатизма, конечно, но на всякий случай мелкий радиатор я к нему на пасту прилепил.VBKesha
20.06.2016 00:24Вроде же с этой платой должен идти(мне она досталась без коробки и всего остального) серийник для DS-5.
А по нагреву она и без линуха греется отлично.JerleShannara
20.06.2016 14:47+2Неа, DS-5 в комплекте идёт только с родной altera и arrow платами, а на них цены уже совершенно невкусные (>1000 убитых енотов).
VBKesha
20.06.2016 15:10Да сейчас перелистал всё документацию там идёт речь о 30 дневном триале. Хорошо что сейчас можно 30 дней Ultimate получить, который привязывается к почте и MAC сетевухи ;-)
father_gorry
20.06.2016 09:17А вот я бы хотел такой компьютер, который мог бы аппаратную часть диагностировать так же хорошо, как, например, Parser-3 диагностирует программную.
Чтобы в случае ошибки приходила точная проблема (а не какой-нибудь Error 903), строка с позицией, стек вызовов, рекомендации по исправлению синтаксиса, и из аппаратной части — связанный с кодом пин, его режим, входные/выходные значения или даже осциллограмма, предыдущее состояние loop'а. И конечно же, доступ ко всем классам и переменным изнутри ошибки.
Скажите, такое уже сделали?jonic
20.06.2016 13:48+1Это всмысле что бы взять USB разъем, воткнуть его в 220 и он сказал «выньте usb из розетки на 220 вольт, ошибка от порта USB за номером 3, использован кабель сечения 1.5 мм»?
rPman
20.06.2016 17:15к чему то такому идет спецификация usb 3.1 ;) еще чуть чуть и на киловаты пойдут — прямая дорога все гаджеты домашние переводить на эти стандарты.
kravtsov_dim
20.06.2016 13:43Цена платы для Cyclone V достаточно низкая.
Сама Altera Cyclone V SE 5CSEMA4U23C6N — $ 147 на digikey.Kreuzfeuer
20.06.2016 14:37Так DigiKey — аналог нашего русского Чип и Дип. Поэтому неудивительно, что камень дороже.
Delics
20.06.2016 17:56Так получилось, что у меня есть подобный DevKit, немного другой конфигурации (с дисплеем и непонятными выводами вместо GPIO — типа как здесь https://www.altera.com/products/boards_and_kits/dev-kits/altera/kit-cyclone-v-gt.html),
но пока не знаю, как к нему подобраться :)
Что можете посоветовать для начала работы? (чем программировать встроенный компьютер, где брать дрова (quartus его не видит), что это за непонятный разъем и т.п.)VBKesha
20.06.2016 18:21+1Для начала нужно всё таки понять что за девкит, хотя бы фотки нужны со всех сторон. Если не получается глянуть какими идентификаторами он определяется по USB. Quartus какой версии?
Для Aльтеры бывают HSMC или HTSC.
И разные доп платы для них.
У Xilinx тоже есть свои FMC
Цены на платы часто достаточно жуткие(особенно FMC), но бывают и вполне терпимые например для альтеровского HSMC-GPIODelics
20.06.2016 19:17Спасибо! Получается разъем HSMC.
Вот нашёл свою модель: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=816
> И разные доп платы для них.
> Цены на платы часто достаточно жуткие
Т.е. напрямую его нельзя развести, как GPIO? Жаль.
> Если не получается глянуть какими идентификаторами он определяется по USB.
На данный момент не посмотреть, к сожалению.
> Quartus какой версии?
13.1VBKesha
20.06.2016 20:04+1Тут есть USB Blaster II на картинке видно какой из MiniUSB.
>> Т.е. напрямую его нельзя развести, как GPIO? Жаль.
Я приводил выше HSMC-GPIO плату, по сути там и есть GPIO никаких хитрых схем там нет. Надо только на схематике девкита глянуть какие уровни у сигналов будут. Но лучше всё таки купить плату расширения и не мучатся с подпаиванием к достаточно дорогому киту.
>> 13.1
По идее должен подойти НО он должен быть 64-битным иначе для SoC версии чипа он разводить не станет.
Ну и вообще уже 16 вышел.JerleShannara
21.06.2016 03:01+1Хз, мне с 13.1 32х битным наура живётся, пока утилизация ресурсов FPGA не подходит к 60%(тут он да, вылетает с руганью, что не может 3 гига аллоцировать). Даже с родной альтеровской платой, про мини-версии с не самым жирным SoCом темболее, вполне хватит и 32 битной версии для начала.
VBKesha
21.06.2016 09:36+1Странно, у меня 13 версия писала что под этот чип собирать будет только 64 битная версия, под такой же Cyclone V но без SoC без проблем, как только ставил SoC тут же писала что нужна 64битка.
JerleShannara
21.06.2016 19:55Ну у меня она и ESки жрала наура. Правда вот с 14 версии всё стало определено альтерой — 64 бита и больше нифига
JerleShannara
20.06.2016 18:11+1Дайте фото вашего кита, а то получается гадание на кофейной гуще. На плате поидее распаян Usb-Blaster 2, дрова на него есть в самом квартусе (нужна версия 13.0sp1 хотябы, лучше не ниже 13.1) /altera/xx.x/quartus/drivers/usb-blaster-ii. Кроме квартуса надо скачать ARM DS-5 Altera Edition. Далее в квартусе создаем qsys проект, настраиваем hps, делаем компиляцию (получаем hardware handoff файлы, которые будут нужны далее), подсовываем полученные файлы в DS-5 и начинаем работать. Более подробно если описывать — будет целая статья, кроме того всё это дело уже было описано на хабре/гиктаймсе, ещё есть и appnote у альтеры, как начать работать. Если будете использовать старые версии квартуса/ds-5 и разработку под baremetal возможно прийдется править скрипты сборки и отладки.
тьфу, промахнулся комментом, это к вышерасположенному ответDelics
20.06.2016 19:22Ясно, попробую. Спасибо!
Модель вот такая: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=816
На всякий случай, какое можете посоветовать терпимое к новичкам сообщество по Altera FPGA?FatalRaiden
20.06.2016 21:46+1В вашем случае хороший выбор http://marsohod.org/ ну и http://electronix.ru тоже зайдет. На марсоходе можное много узнать новичкам и «въехать» в тему
JerleShannara
21.06.2016 03:03Как ни странно — https://rocketboards.org/ раз уж у вас SoC оказался. Там есть весьма приличные туториалы, которые много чего объясняют
Fen1xL
Для любителей Xillinx я бы посоветовал вот эту http://www.myirtech.com/list.asp?id=502.
Там ZYNQ. Тоже 2 ядра ARM Corex-A9. 1 Gb Ethernet. И т.д. Стоимость:
— За Xilinx XC7Z010-1CLG400C — 99$.
— За Xilinx XC7Z020-1CLG400C — 119$.
У самого есть, работает). Взял как замену Adapteva Parallella board (у параллеллы, к тому же, очень неудобный JTAG).
vladimir_open-dev
Цены уже не для творчества совсем…
donvictorio
ну так и платка вполне себе как промышленный плк :)
d_olex
Та ладно, zynq довольно навороченный чип, сто баксов за плату с ним это дешево (сравните с официальными дев бордами от вендора), а для людей у которых хватает знаний что бы разрабатывать под него — и подавно.