20.04.2012, Процессорный модуль для Альпаки-3

Материал из SRNS
Перейти к: навигация, поиск

После прочтения статьи Применение процессорных модулей в приборостроении возникла идея использовать процессорный модуль в дизайне Альпаки-3.

20120420 product ecobase norm.jpg

Что нам это дает?

  • Значительно упрощается разводка платы. По словам Жени развести шину между процессором и памятью - основная сложность. Мы покупаем готовый процессорный модуль и ваяем к нему baseband, включающий ПЛИС и интерфейс с фронтендом.
  • При изменении задач мы всегда сможем сделать другой baseband: с большим числом ПЛИСин, дополнительными ЦАПами и т.д. При этом весь базовый софт останется отработанным, не нужно будет паять бОльшую часть железа и т.д.
  • Вместе с готовым процессорным модулем мы получим готовый bsp, драйвера, сообщество пользователей. По-максимуму сократим системное программирование.
  • Стоимость процессорных модулей сопоставима со стоимостью компонентов для её сборки.
  • Мы сможем начать работу над новой Альпакой хоть с завтрашнего дня.


20120420 Modules.png


Слова для гугла: процессорный модуль, Computer-on-module (CoM), System-on-module (SoM), CPU Board, CPU-on-board

Содержание

Критерии

Гугл подсказывает, что процессорных модулей производится великое множество. Мне бы хотелось видеть модуль:

  1. Включающий CPU с float point (желательно ARM), RAM, RTC, flash
  2. Удобный коннектор к baseboard, возможность нормально заводить прерывания и внешние данные (шина данных/адреса на коннекторе?)
  3. Поддержку QNX Non Commercial из коробки, нормальное сообщество пользователей и разработчиков (лучше русскоязычное)
  4. Приемлемую цену за модуль и отладочную baseboard
  5. Долговременной поддержкой, возможностью купить

Претенденты

Гуглил долго и много. Выкладываю сухой остаток.

Varicate

Как ни странно, модули, представленные в статье, кажутся самыми интересными. Израильская контора, собирающая SoM. Есть представительство у нас, wiki.

Главный минус этих модулей - стартовый baseboard идет с экраном, стоит достаточно дорого - под штуку баксов.

Сводная таблица по модулям.

VAR-SOM-AM35

Достаточная для нас функциональность, в розницу цена порядка $150. Под 3517 есть готовый bsp QNX'а.

VAR-SOM-ОM37

Гигагерцовый.

VAR-SOM-OM44

Два ядра, полтора гигагерца. Позиционируется как самый мощный SoM, есть статья на Хабре. Саше для 27-компонентного комплексирования =)

Mentor Electronics

Отечественная контора. Полуподвальное производство, судя по всему. Зато дешево) Старт-кит стоит 10.5 т.р.

Нас интересует BlueShark. На сайте, в вики. Судя по всему, это переделка знаменитой платформы BeagleBoard под SO-DIMM формат. По Beagle Board куча информации, есть bsp QNX'a.

За бугром

Есть куча других няшек, но их надо везти:


Кстати, вот список модулей, с которыми не должно быть вообще никаких проблем с QNX: http://service.swd.ru/sup_hardware/boards.php?cat_id=1

Есть список модулей на базе TI: http://processors.wiki.ti.com/index.php/ARM_MPU_SOM/SBC


[ Хронологический вид ]Комментарии

Да, это было бы просто, за 4 т.р. решить кучу проблем...

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

А что нам нужно? Сделать приёмник. А основная часть приёмника - это не процессор, а блок цифровой обработки, который мы будем делать на ПЛИС. Для общения с ПЛИС нужна шина. Мне бы сейчас хотелось бы видеть PCI-Express, т.к. это многое бы упростило, но если параллельную шину - то 32 разрядную.

Из всех готовых модулей вообще мало в каких есть шина в принципе. Среди тех, что приведены в заметке, внешная шина есть у плат VAR-SOM-AM35 и VAR-SOM-ОM37. У топового модуля Varicate внешней шины уже нет - они там напихали ещё больше периферии, на шину места не осталось, а обычно она никому не нужна, всем нужно навешивать много периферии. Эти модули - они, как готовые навигационные приёмники, продукт почти для конечного потребителя. Они мультимедийно-ориентированные.

Так вот, в перечисленных платах шина данных нам не подходит. Там 16 разрядов данных и 10 разрядов адреса. 10 разрядов адреса пережить можно (в Альпаке была 21 линия). Но вот 16 линий данных - это уже через чур. У нас внутренние регистры - принципиально 32-разрядные. И процессор 32-разрядный. Значит, чтобы преодолеть "бутылочное горлышко" из 16 разрядов, придётся поработать.

В принципе, это возможно, но стоит ли на это закладываться?

Отсутствие PCI-E и 16-разрядные данные меня тоже огорчили. Но не обязательно же вешать ПЛИС на шину процессорную. Помимо PCI-E есть и другие интерфейсы. SPI, I2C, Ethernet. Всякие electronix да хабры говорят, что их можно вместо PCI-E использовать. Но так ли это - тебе виднее.

Все шины - они для обмена данными. Но ты предлагаешь общаться с коррелятором по SPI?!

Судя по сарказму, скорости по SPI не хватит... I2C, я так понимаю, ещё медленнее. Нужен PCI-E и только он (акромя полноценной шины данных)? Буду тогда искать PCI-E платы. Обойдемся без SO-DIMM, воткнем в PCI-E слот.

Или как насчет LVDS? В BlueShark есть.

SPI и I2C - последовательные шины, не предназначенные для применений, подобных нашим. Даже если не принимать во внимание полосу, с ними просто сложно будет работать.

Про полноценные - нет, не только PCI-Express. Откуда PCI-Express возник? Аппаратная поддержка PCI-Express есть и в MPC8640 с одной стороны, и в Xilinx Xpartan6 с другой. Т.е. не нужно городить ничего лишнего. А чем интересна PCI-Express вообще, почему не обычная параллельная шина? Меньше проводов. Для PCI-Express 1x достаточно развести две дифференциальные пары - четыре провода. А параллельная шина - в Альпаке сейчас шина - это 32+21+4=57 проводов. Больше проводов - это и больше сложностей при разводке, больше шансов накосячить. И потом, дифференциальные линии позволяют "проще" гонять высокоскоростные потоки данных, для обычных линий больше шансов нарваться на звон фронтов и прочие прелести жизни. Но PCI-Express - не единственная подобная шина, просто это стандарт сегодня. Есть в Spartan6 ещё выскоскоростной последовательный приёмо-передатчик GTP, из которого, в частности, можно PCI-Express, Ethernet, DisplayPort и другие интерфейсы сделать - но такой штуки нет на стороне процессора.

На счёт LVDS - это слишком общее название, электрический интерфейс на физическом уровне. PCI-Express - это тоже LVDS, как и USB, HDMI и куча всёго другого. Нам нужена именно процессорная шина. Тут надо конкретнее смотреть. Я посмотрел - там они LVDS-ом называют интерфейс с LCD.

А что они подразумевают под Ethernet?

Ну как - Ethernet и подразумевают. Практически у всех 10/100 МБит/с. На мой взгляд, очень полезная фича для нашего макета.

К сожалению, сколько я не смотрел в сети, на данный момент я не нашёл подходящего нам готового модуля. Они все ориентированны на другое применение.

PS Был там ещё вариант с PC104 - это вообще 8-разрядная шина ISA из IBM PC/XT 1981 года. На это закладываться - уже совсем ни к чему.

Картинка с профитом (Profit -> profit -> profit) позабавила. Этот подход больше подходит для экспериментальных макетов, как у нас. При производстве серий на продажу это уже совсем не то. Но нам бы как раз подошло.

Ещё, насчёт QNX - я против. Ты не поверишь, мы занимаемся коммерческой деятельностью! QNX Non-commercal быть может, можно ещё применить в учебном процессе - но и тогда, скорее всего, придётся приобретать какую-нибудь академическую лицензию. На западе учебный процесс - это тоже коммерческая деятельность! А нам НИРы и ОКРы сдавать. QNX - это ДОРОГО.

А потом, она хоть и реального времени, но уже тяготеет к полудесктоповой, даже к десктоповой системе.

Зато: 1) Будет возможность получить полноценную поддержку от развитого сообщества 2) Мы и наши студенты поимеем опыт работы с одной из самых распространенных RTOS 3) Системная часть заработает "из коробки", а не после года приседаний

Да, идея взять всё на готовенькое была ещё во времена первой Альпаки, но и тогда ничего не нашлось :( Думаю, мы заходим не с того бока. PCI-Express сейчас есть в любом PC. Обработка прерываний наверняка есть в прототипе драйвера устройства PCI-Express под Линукс. Девайсов с FPGA+PCI-Express, подобных вот этому: http://www.hitechglobal.com/Boards/Stratix4GX.htm много. Необходимо выбрать такой, у которого на I/O заведены GCLK для тактирования от фронтенда. Наша задача сведётся к созданию мезонинного модуля с фронтендом.

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

Войдите, чтобы комментировать.

Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты