Сейчас на рынке присутствует достаточно много разнообразных миникомпьютеров. Самые распространенные из них это Raspberry Pi, Orange Pi, Odroid. И есть очень популярная платформа Arduino. Но иногда случается, так что не хватает этих распространённых платформ.

Например, хочется какой нибудь миникомпьютер с не очень распространённым 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)


  1. Fen1xL
    19.06.2016 20:15
    +3

    Для любителей 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).


    1. vladimir_open-dev
      19.06.2016 21:17
      +2

      Цены уже не для творчества совсем…


      1. donvictorio
        19.06.2016 22:14

        ну так и платка вполне себе как промышленный плк :)


      1. d_olex
        19.06.2016 22:23
        +4

        Та ладно, zynq довольно навороченный чип, сто баксов за плату с ним это дешево (сравните с официальными дев бордами от вендора), а для людей у которых хватает знаний что бы разрабатывать под него — и подавно.


  1. EmmGold
    19.06.2016 22:37
    -1

    ещё хочется пару-четвёрку саташников…


    1. JerleShannara
      20.06.2016 14:45

      Для SATA лучше будет посмотреть на xilinx, тамошние трансиверы более приспособлены для реализации оного (плюс есть appnote как это нарисовать в красивом виде). Но контроллер прийдется писать самому в любом случае


      1. FatalRaiden
        20.06.2016 21:51

        Ну контроллер можно и тут найти http://opencores.org/project,nysa_sata


  1. NoOn3
    19.06.2016 22:39
    +1

    вот еще интересная плата такого типа (snickerdoodle) www.crowdsupply.com/krtkl/snickerdoodle


  1. tormozedison
    19.06.2016 22:54
    +1

    zanuda mode on
    Мини-ЭВМ — это небольшой мейнфрейм. Микро-ЭВМ — это персоналка.
    zanuda mode off


  1. rPman
    19.06.2016 23:47

    Подскажите, на сколько тяжело подключить модуль камеры к таким платам, чтобы обработка сигнала была доступна в FPGA модуле? Доступность (цены) камеры с возможностью подключить к плате (ну максимум распаять разъем) и возможность работы со всем этим из приложения в linux (на сколько геморной будет разработка).

    Интересуют камеры с быстрым сенсором (от 60fps) ну и под вопросом размер кадра, потянет ли такая плата обработку в реалтайме (на максимуме fps) хотя бы простейшие алгоритмы (определение центров ярких пятен цвета, N-штук, например по яркости/размерам) или по сложнее, построение карты глубины по стереокартинке (две камеры).


    1. 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 то тоже можно потестировать заранее.


      1. victor1234
        20.06.2016 12:30

        USB-камеры достаточно тормознуты, сводят на нет все быстродействие.


    1. 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


    1. leshabirukov
      20.06.2016 15:08

      http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=68&No=281 — 80$
      Мануал искать по «TRDB-D5M_Hardware specification»
      60fps — 1024x768 (в субпикселях)
      Пользовался, делал например, простой фильтр выделения границ. Реализацию помянутых «простейших алгоритмов» видимо придётся серьёзно менять под ПЛИС.


  1. FatalRaiden
    20.06.2016 00:01

    Около месяца назад взял такую в ЭФО. Вышла на 128 бачей.
    Из минусов — отсутствие возможности в ARM DS-5 Community Edition писать BareMetal приложения на само ядро и отладка приложения только под осью через ethernet.
    ps при запущенном линухе чип греется как паровоз. Не до фанатизма, конечно, но на всякий случай мелкий радиатор я к нему на пасту прилепил.


    1. VBKesha
      20.06.2016 00:24

      Вроде же с этой платой должен идти(мне она досталась без коробки и всего остального) серийник для DS-5.
      А по нагреву она и без линуха греется отлично.


      1. JerleShannara
        20.06.2016 14:47
        +2

        Неа, DS-5 в комплекте идёт только с родной altera и arrow платами, а на них цены уже совершенно невкусные (>1000 убитых енотов).


        1. VBKesha
          20.06.2016 15:10

          Да сейчас перелистал всё документацию там идёт речь о 30 дневном триале. Хорошо что сейчас можно 30 дней Ultimate получить, который привязывается к почте и MAC сетевухи ;-)


  1. father_gorry
    20.06.2016 09:17

    А вот я бы хотел такой компьютер, который мог бы аппаратную часть диагностировать так же хорошо, как, например, Parser-3 диагностирует программную.
    Чтобы в случае ошибки приходила точная проблема (а не какой-нибудь Error 903), строка с позицией, стек вызовов, рекомендации по исправлению синтаксиса, и из аппаратной части — связанный с кодом пин, его режим, входные/выходные значения или даже осциллограмма, предыдущее состояние loop'а. И конечно же, доступ ко всем классам и переменным изнутри ошибки.

    Скажите, такое уже сделали?


    1. jonic
      20.06.2016 13:48
      +1

      Это всмысле что бы взять USB разъем, воткнуть его в 220 и он сказал «выньте usb из розетки на 220 вольт, ошибка от порта USB за номером 3, использован кабель сечения 1.5 мм»?


      1. rPman
        20.06.2016 17:15

        к чему то такому идет спецификация usb 3.1 ;) еще чуть чуть и на киловаты пойдут — прямая дорога все гаджеты домашние переводить на эти стандарты.


    1. JerleShannara
      20.06.2016 17:55

      Нет, но тут у вас ПЛИС, такчто всё в ваших руках


      1. father_gorry
        20.06.2016 19:31

        Тогда жду, что к ней сделают описанную прошивку.


  1. kravtsov_dim
    20.06.2016 13:43

    Цена платы для Cyclone V достаточно низкая.
    Сама Altera Cyclone V SE 5CSEMA4U23C6N — $ 147 на digikey.


    1. Kreuzfeuer
      20.06.2016 14:37

      Так DigiKey — аналог нашего русского Чип и Дип. Поэтому неудивительно, что камень дороже.


  1. 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 его не видит), что это за непонятный разъем и т.п.)


    1. VBKesha
      20.06.2016 18:21
      +1

      Для начала нужно всё таки понять что за девкит, хотя бы фотки нужны со всех сторон. Если не получается глянуть какими идентификаторами он определяется по USB. Quartus какой версии?
      Для Aльтеры бывают HSMC или HTSC.
      И разные доп платы для них.
      У Xilinx тоже есть свои FMC
      Цены на платы часто достаточно жуткие(особенно FMC), но бывают и вполне терпимые например для альтеровского HSMC-GPIO


      1. Delics
        20.06.2016 19:17

        Спасибо! Получается разъем HSMC.

        Вот нашёл свою модель: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=816

        > И разные доп платы для них.
        > Цены на платы часто достаточно жуткие

        Т.е. напрямую его нельзя развести, как GPIO? Жаль.

        > Если не получается глянуть какими идентификаторами он определяется по USB.

        На данный момент не посмотреть, к сожалению.

        > Quartus какой версии?

        13.1


        1. VBKesha
          20.06.2016 20:04
          +1

          Тут есть USB Blaster II на картинке видно какой из MiniUSB.
          >> Т.е. напрямую его нельзя развести, как GPIO? Жаль.
          Я приводил выше HSMC-GPIO плату, по сути там и есть GPIO никаких хитрых схем там нет. Надо только на схематике девкита глянуть какие уровни у сигналов будут. Но лучше всё таки купить плату расширения и не мучатся с подпаиванием к достаточно дорогому киту.

          >> 13.1
          По идее должен подойти НО он должен быть 64-битным иначе для SoC версии чипа он разводить не станет.
          Ну и вообще уже 16 вышел.


          1. JerleShannara
            21.06.2016 03:01
            +1

            Хз, мне с 13.1 32х битным наура живётся, пока утилизация ресурсов FPGA не подходит к 60%(тут он да, вылетает с руганью, что не может 3 гига аллоцировать). Даже с родной альтеровской платой, про мини-версии с не самым жирным SoCом темболее, вполне хватит и 32 битной версии для начала.


            1. VBKesha
              21.06.2016 09:36
              +1

              Странно, у меня 13 версия писала что под этот чип собирать будет только 64 битная версия, под такой же Cyclone V но без SoC без проблем, как только ставил SoC тут же писала что нужна 64битка.


              1. JerleShannara
                21.06.2016 19:55

                Ну у меня она и ESки жрала наура. Правда вот с 14 версии всё стало определено альтерой — 64 бита и больше нифига


  1. 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 возможно прийдется править скрипты сборки и отладки.

    тьфу, промахнулся комментом, это к вышерасположенному ответ


    1. Delics
      20.06.2016 19:22

      Ясно, попробую. Спасибо!

      Модель вот такая: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=816

      На всякий случай, какое можете посоветовать терпимое к новичкам сообщество по Altera FPGA?


      1. FatalRaiden
        20.06.2016 21:46
        +1

        В вашем случае хороший выбор http://marsohod.org/ ну и http://electronix.ru тоже зайдет. На марсоходе можное много узнать новичкам и «въехать» в тему


      1. JerleShannara
        21.06.2016 03:03

        Как ни странно — https://rocketboards.org/ раз уж у вас SoC оказался. Там есть весьма приличные туториалы, которые много чего объясняют