Notice: Memcache::get(): Server localhost (tcp 11211) failed with: Connection refused (111) in /home/a146/www/we.easyelectronics.ru/engine/lib/external/DklabCache/Zend/Cache/Backend/Memcached.php on line 134
Плата разработчика DE1-SoC. Обзор / ПЛИС / Сообщество EasyElectronics.ru

Плата разработчика DE1-SoC. Обзор


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

На сей раз мой взор упал на плату DE1-SoC от Terasic Technologies. Помимо того что это более новое поколение плис — Cyclone V (ну ладно не такая уж и большая разница между CycloneIV на DE0-nano, и Cyclone V, но явно круче чем Cyclone II на платах с ибэй) чип имеет важное преимущество – встроенный ARM процессор(Harware Processor System в терминологии Altera или HPS ). Что собственно и отражено в названии платы SoC-system on chip. Конечно, во многих случаях можно обойтись FSM или тем же NIOS II, но полноценный dual core ARM с запущенным на нем Linux звучит солидно. Ну и не маловажный факт, в том что Academical Price -$175, таким образом с доставкой мне плата обошлась в $230 (летом цена на плату была еще $150).
Лирическое отступление (тут и далее буду выделять, так что можно пропустить)
Лично для меня наличие процессора также было не маловажным фактором. Да, много задач можно решить и без него. Но вот, например, я долго мучился с правильной настройкой камеры по I2C. Через Си программу это 10сек компиляции. А вот рекомпилировать весь дизайн (около 5 минут) за ради смены одного единственно байта не очень интересно. Поначалу проблему решал софтовый NIOS II, но беда его в том что его economy версия жутко тормозная несмотря на частоту 50 МГц (по ощущениям мега8 на 16МГц).За fast же версию надо платить, иначе отвалится как только отключишь от компьютера.
Комплект поставки


Плата находиться довольно большой коробке, разделенной на два отделения. В первом находится сама плата хорошо защищенная от повреждений паралоновой формой. А под ней находятся: кабель USB (A to B), кабель USB (A to Mini-Usb), блок питания 12V 3.5А (штекер у него под американские розетки, так что понадобится переходник), Quick Start Guide и не много рекламной мукулатуры. Дисков с ПО также нет, придется качать с оффсайта.
Чего мне не хватало для старта, так это кабеля Ethernet хотя бы метр и microSD карточки, стоит это не много так что могли бы и вложить.
Отдельно стоит упомянуть сюрприз в виде дополнительных вложений:

Назначение мелкого пакета я не понял до сих пор :-).
Ну а в крупном находилась демо-плата DC934A — ЦАП и АЦП от Linear Technology, толку с нее не много но об этому чуть позже.

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

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

FPGA

Cyclone V SoC 5CSEMA5F31C6 Device, 85K Programmable Logic Elements, 4,450 Kbits embedded memory, 6 Fractional PLLs ,2 Hard Memory Controllers;
Пожалуй тут надо остановится на цифре 85K LE. Каково же было мое удивление, когда после компиляции примера, Quartus выдал что то вроде used 8000 from 31000 LE. Воу-воу, а где остальное?
Все дело в том что в новых чипах Altera перешли с 4-входовых LE объединенных в блоки LAB, к 6-входовым LE (объединенных в так называемые ALM), которая если можно так сказать является совмещением 2 4-входовых LE.
В процессе разработки на это внимание обращать не стоит – Quartus сам все разрулит. Но если речь идет о высокопроизводительных схемах, где много мультиплексоров или сложений, то про архитектуру все же необходимо помнить, подробнее в Altera Recommended HDL Coding Styles страница 12-44.

Dual-core ARM Cortex-A9 (HPS)


Описание процессора в даташите занимает и овер 500 страниц, так что к картинке могу добавить разве что то, что это полноценный ARM процессор, и помимо 2 ядер и развитой периферии имеет матрицу коммутации. Так что выводы периферийных устройств с некоторыми ограничениями можно подключить как к разным выводам самого HPS, так и к логике FPGA.
Надо сразу сказать, что с точки зрения имевшихся знаний эта плата для меня была (да по некоторым моментам и есть) огромным шагом в неизвестность. Так как опыта работы ни с Линукс, ни с АРМами у меня не было. Потому простите за скудное описание процессора, если надо что добавить прошу прокомментировать.
Для работы с FPGA процессоры HPS также имеют специально выделенные мосты:
HPS-to-FPGA: configurable 32, 64, or 128 bit AMBA AXI interface
FPGA-to-HPS: configurable 32, 64, or 128 bit AMBA AXI interface
Используются для высокоскоростных приложений (например передача данных из памяти HPS в FPGA с помощью DMA). Удобной же особенностью моста FPGA-to-HPS является то, что устройства из FPGA могут напрямую обращаться к периферии HPS.
Для управления же более простыми и низкоскоростными устройствами предназначена шина Lightweight HPS-to-FPGA имеет 32 разряда и удобна для управления периферией FPGA (например настройка какого то IP блока ).
HPS также имеет средства для программирования FPGA, так что можно иметь не одну а не сколько прошивок и менять их по мере необходимости без внешних программаторов.

Конфигурация
Quad Serial Configuration device – EPCQ256 on FPGA
On-Board USB Blaster II (Normal type B USB connector)

Память
64MB (32Mx16) SDRAM on FPGA
1GB (2x256Mx16) DDR3 SDRAM on HPS
Micro SD Card Socket on HPS


Периферия


Хотелось бы отметь, что платы от Terasic конечно имеют очень развитую периферию. Но все же, может когда ни будь они придут к модульности. Например, кому то нужно больше I/O, а кому то наоборот акселерометр. Так бы докупил платку и поставил, а не так как у меня акселерометр так и не работает дальше примеров, так как не нужен.
Two Port USB 2.0 Host (ULPI interface with USB type A connector)
Полноценный USB хост, особенно порадовало, что поддерживает usb-хаб (например у меня клава и мышь включенные через хаб нормально заработали).
USB to UART (micro USB type B connector)
Применительно к системе крайне полезная вещь, выполненная на базе FT232.
10/100/1000 Ethernet
PS/2 mouse/keyboard

Последняя штука тут явно лишняя и перекочевала с платы DE1. Зачем, спрашивается, на плате устаревший интерфейс, если клавиатуру к тому же HPS через него без плясок с бубном не подключишь.
IR Emitter/Receiver
Two 40-pin Expansion Headers (voltage levels: 3.3V)
Бесспорный вин, два IDC 40 коннектора (36 GPIO доступно на каждом), кроме того имеют тогоограничительные резисторы и защитные диоды по каждому входу. Во многом склонили меня к этой плате.
One 10-pin ADC Input Header
One LTC connector (One Serial Peripheral Interface (SPI) Master ,one I2C and one GPIO interface )

Про этот конектор ничего хорошого сказать не могу, мало того что он имеет не шибко распостроненный шаг в 2мм, так еще гляньте на его схему:

Зачем эти все навороты с отдельным коммутатором линий (понятно что это спецификация demo board от Linear Technologies), но лучше бы просто вывели GPIO от HPS.

Аудио и Видео
24-bit VGA DAC, 24-bit CODEC, Line-in, line-out, and microphone-in jacks, TV Decoder (NTSC/PAL/SECAM) and TV-in connector


АЦП
Up to 1 MSPS, 8 channel, 12bit DAC.

Кнопки, переключатели, индикаторы:
4 User Keys (FPGA x4), 10 User switches (FPGA x10), 11 User LEDs (FPGA x10; HPS x 1)
2 HPS Reset Buttons (HPS_RST_n and HPS_WARM_RST_n)

За эту часть можно смело ставить 5. Кнопки и переключатели большие и удобные.
Six 7-segment displays
Хм, не однозначное решение. 42 два пина на семисигментник, зато десятичные точки подключить забыли: (.
Сенсоры: G-Sensor on HPS
Питание: 12V DC input

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

Средства разработки

Можно разделить на две части для FPGA и для HPS.
Для FPGA все более менее традиционно используем Quartus II. При этом первичная настройка матрицы коммутации HPS, тактирование и работа с SDRAM также происходит в Quartus II посредством Qsys. Быстрый старт есть как в мануалах Терасика, так и от любителей в интернете, например: https://www.youtube.com/watch?v=2WUkEt4-Q7Q
Единственное что следует упомянуть, так это следующую надпись на странице спецификаций платы:
64-bit OS and Quartus II 64-bit  are required to compile projects for DE1-SoC

В чем ее смысл я так и не понял, так как все демопроекты при первом открытии сообщали, что они разработаны в 32-х разрядной версии квартуса. Но поскольку следующие версии Quartus II (начиная с 14.0) будут поддерживать только 64 разрядную ОС, сделать апдейт винды все же пришлось. При этом часть из представленных демопроектов не хотели собираться под последним (на данный момент версии 14.1) Quartus –ом, так что я вернулся на версию 13.1, хотя в 14.1 есть разные улучшения.

Для HPS выбор довольно большой. Но в первую очередь необходимо поставить SoC Embedded Design Suite ) основанный на ARM Development Studio 5 (DS-5) Altera Community Edition Toolkit даже если ей не пользоваться к ней в нагрузку идет тулчейн для работы c АРМ от Альтеры. А кроме того так называемый Embedded Command Shell, позволяющий выполнять UNIX приложения под Windows. Подробная инструкция по установке дается Terasic.
И так для разработки приложений HPS применимы следующие способы:
  1. Путь тру суровых нердов: блокнот-мейк файл-плата(основной способ предлагаемый в мануалах terasica) при этом на плате должен быть установлен Линукс.
  2. Разработка под Altera University Program. Почти тоже, но имеет предсобранный образ системы, позволяет проводить отладку по ассемблерному коду, а также имеет ряд примеров и бесплатных IP для конфигурации платы и обработки видео. Работает только до версии 13.1 Квартуса (включительно).
  3. Уже упомянутая ARM Development Studio 5 (DS-5), мощный инструмент позволяющий делать все от написания «голых» приложений(не знаю, есть ли у нас термин для Bare Metal), так и написания и отладку драйверов под Linux, сборку системы и еще кучу плюшек.Но увы, в бесплатной версии доступно лишь написание программ под Linux.
  4. Расслабился я, честно говоря, с «плохим» и жутко проприетарным MS Visual Studio, где за 4 года так и не встретил препятствий для своих скромных потребностей. И такого вот удара от OpenSource не ожидал, ну ладно драйвера и linux, но не дать средств разработки для своего же процессора (Bare Metal)это как то странно. Конечно это OpenSource, так что можно найти библиотеку прикрутить к своему компилятору, но все это довольно сложно.
  5. Ну и для тех кто хочет не только светодиодиком помигать, но и вдарить ГУЙем по консоли возможна разработка приложений в Qt на С++.
    Подробно как это сделать также расписано в мануале от Terasic. Правда там они предлагают разрабатывать под Ubuntu 12.0 в виртуальной машине. Я не очень разбирался, но у меня Ubuntu 14 имея в безраздельном владении (если верить VMware Player) гиг оперативы, одно ядро и по факту отдельный физический диск все равно тормозит.
    Так что если бы установка дуал бута не была сопряжена с возможными проблемами с виндой, то я бы установил такую конфигурацию.


Linux BSP (Board Support Package)

Как можно понять, из вышеприведенного текста, написание программ для платы, без покупки лицензий, возможно лишь под линукс. И тут нам везет, так как не надо ничего компилировать и собирать, потому как Terasic предлагает уже готовый образ системы, только на флешку записать, да в слот на плате вставить.
Но есть и обратная сторона медали. Из всех холиваров про Линукс я понял только одно, система не хорошая и не плохая ее готовить уметь надо. И Terasic постарались и выкатили аж целых 4 образа (уже 5), хотя лучше бы один…
Дело в том что образы основаны на ядре версии 3.12, в котором толи специально выпилены, толи на момент выхода ветви отсутствовали драйвера для работы с внешней периферией, и потому например упомянутая в начале демо плата DC934A не работает, так как требует наличия /sys/class/gpio которого нет, но который есть в версии ядра 3.13 поставляемой с DS-5 Studio.
Вообщем имеем следующие образы:
  • Linux Console – тут все просто базовые функции и консольный ввод/вывод. Требует флешки 4ГБ.
  • Linux Console with framebuffer – тоже самое, но с фреймбуфером идеально подходит для приложений на Qt, размер тот же.
  • Linux LXDE Desktop – поддерживает графическую систему LXDE, требует уже 8ГБ флеши.
  • Linux Ubuntu Desktop – да на плату можно поставить Ubuntu 12, тоже не менее 8ГБ флеши.
  • DE1-SoC OpenCL BSP – вышла совсем не давно — это линукс для использования при разработке OpenCL приложений. Попробовать еще не успел, потому что за зверь не знаю.
Кто не знает, OpenCL позволяет писать приложение на Си с векторной обработкой, при этом если верить altera, ихний компилятор постарается создать соответствующую схему на FPGA и таким образом значительно ускорить вычисления. При этом программист не лезет в дебри ПЛИС.
Несмотря на наличие инструкций от терасика по запуску этих образов, не все так гладко как хотелось (особенно для тех, кто вчера узнал разницу между командами LS и CD). Что я и постараюсь осветить в своем следующем посте.

Полезные ссылки:

  1. Сообщество по поддержке SoC плат от альтеры, а также куча информации для установки и сборки линукс для них http://www.rocketboards.org/
  2. Очень хороший мануал по работе c altera ARM SoC от Howard Mao: https://zhehaomao.com/

Комментарии (20)

RSS свернуть / развернуть
Монументально описано:) Читал с удовольствием.
0
  • avatar
  • PRC
  • 16 декабря 2014, 23:17
Спасибо, главное выделить время на второю часть. Там тоже есть чем поделится.
0
Так что если бы установка дуал бута не была сопряжена с возможными проблемами с виндой, то я бы установил такую конфигурацию.
С виндой у меня проблем не возникало (если, конечно, не лохануться на этапе раздачи диска при установке). А если еще и не монтировать виндовые рзделы — линух их вообще не тронет. По идее.
0
  • avatar
  • Vga
  • 17 декабря 2014, 01:30
Это типа детская фобия, когда то грохнул винду линуксом. И теперь вроде как знаю как правильно установить, но боязно…
С другой стороны, бывает надо что то исправить в прошивке FPGA, так виртуалку свернул, а с дуалбутом придется перезагружатся.
Погуглюка я оптимизацию линукса на виртуалке. А то как то странно в ней гуй то сильно тормозит, то нет.
0
А почему VMware, кстати? VirtualBox вроде получше дружит с ускорением графики внутри виртуалки.
Ну и гиг по современным меркам мало. Может поэтому тормозить.
0
Терасик дал подробную инструкцию по установке в нем. Ну а мне было в принципе все равно.
0
Круто! Всегда завидовал людям, способным обуздать такие платки. Это хобби или работа?
0
  • avatar
  • Flash
  • 17 декабря 2014, 13:31
Ой, до обуздать еще как до неба раком…
Нечто среднее, доучиваюсь в аспирантуре, так что с одной стороны работа с другой хобби.
0
Железяка просто шикарна! А в науке она у вас как применяется? Нечто из области ЦОС?
0
Нет, обработка изображнений. Хотя если реализовать все хотелки моего научрука, то мне бы и топовых ПЛИС не хватило. Но, так как действует «формула»: ну вы там купите, а мы вам вернем. То приходится оглядыватся выбирать.
0
написания «голых» приложений(не знаю, есть ли у нас термин для Bare Metal)
Bare_metal — это пошлый/не точный термин, обычно говорят о тулчейне типа EABI (Embedded Application Binary Interface).
0
т.е. none-eabi, если быть точным.
0
Спасибо, я то думаю что значит gnueabihf ( осталось две последнине буквы расшифровать).
А термин, хз сам впервые сним столкнулся только при описании этой платы. Жаргон может?
0
осталось две последнине буквы расшифровать
ARM hard float
0
Странно, что вам мерещится пошлось в словосочетании «голое железо» (а именно так переводится bare metal).
0
пошлось в словосочетании «голое железо»

BARE METAL

0
Как говорится, кому что болит, тот о том и говорит…
+1
Вы как я понимаю в теме. Не подскажите хороший мануал по верилогу? А то аналогичная плата первого поколения лежит без дела. Дальше моргания светодиодами и простых логических элементов дело не пошло. А поковырять плату уж больно охото, а откуда подступиться-не знаю.
0
Как ни странно, но мне очень помог мануал на сайте марсохода Verilog. Плюс примеры в сети.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.