PDA

Просмотр полной версии : Компьютер "Megatron"



Patison
16.10.2017, 22:17
В данной теме хотелось бы обсудить будущий минималистический модульный однокристальный компьютер, предназначенный для довольно широкого круга применений: робототехника, искусственный интеллект, специализированные серверы, встраиваемые и игровые системы и т.д.

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

Модули будут двух типов:
1. Программные модули на языке Verilog. Модулями могут являться процессоры, видеоподсистемы, интерфейсы, таймеры и т.д.
2. Внешние модули, которыми можно дооснащать компьютер: камеры, 3G модемы, чипы памяти и т.д.
Кроме того, хотелось бы на основе данного компьютера легко создавать мультикомпьютерные системы.

Компьютер будет не самым дешевым, т.к. я на данный момент выбрал микросхему Altera/Intel FPGA MAX10. Надеюсь, что можно будет использовать и другие аппаратные платформы. Чуть позже представлю фото внешнего вида компьютера и опишу имеющиеся на плате интерфейсы.

У прототипа имеется:
1. 16-битный Forth процессор с 16 кбайтами общей памяти.
2. Графический контроллер LRGA (Low Resolution Graphic Adapter) с разрешением 320х180 16-битный цвет для каждой точки и выводном на HDMI (1280х720 60 гц).
3. Модуль таймера.
4. Модуль I2C контроллера.
5. Модуль UART со скоростью до 4 мбод.
6. Модуль видеокамеры 640х480 16 битный цвет.
7. Модуль управления шаговым двигателем с аппаратным плавным изменением скорости.

Процессор компьютера выполняет все операции за один такт. Сейчас надежно работает на частоте 74 Мгц. Первые, более простые варианты работали на 111 Мгц.

vlad
16.10.2017, 23:19
В данной теме хотелось бы обсудить будущий модульный однокристальный компьютер
Модульный однокристальный компьютер? Один кристал, который можно дооснащать внешними модулями? Это как?
Этот (http://www.ixbt.com/news/hard/index.shtml?17/54/12) что-ли? Да неужели, решили идти по стопам?

http://www.ixbt.com/short/images/2014/Jan/razer-christine-gallery-02.jpg

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


Компьютер будет не самым дешевым, т.к. я на данный момент выбрал микросхему Altera/Intel FPGA MAX10.
Интересно, какую из (https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/pt/max-10-product-table.pdf)?

Так уже давно есть под ваш концепт (может разумнее использовать готовое решение, чем тратить время на разработку с нуля?):

DE10-Lite Board (https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=218&No=1021&PartNo=1) $85
Марсоход3 (https://marsohod.org/howtostart/plata-marsokhod3) $184

Error404
17.10.2017, 11:42
КМК, у такой системы никаких шансов супротив PiZero/OrangePi:
- ресурсов меньше на порядки
- при этом получится дороже
- интерфесы сугубо "радиолюбительские"
- могла бы быть интересна ретроманьякам, клюющим на ключевые слова Форт и 16кб, но не будет, т.к. и не ретро и не вариант воспроизведения известной ретроплатформы на новой базе

Система получится класса Ардуины по ресурсам (ну ладно, чуть мощнее), но дороже, не совестимая (Форт), сложная в освоении (Форт), в-общем, я бы не купил. Говорю т.к. много к чему присматривался, в итоге владею OrangePi PC для домашнего медиацентра/Linux и Ардуиной для поделок, и счастлив. :)

AlexG
17.10.2017, 14:22
для п1 и п2
http://store.digilentinc.com/arty-z7-apsoc-zynq-7000-development-board-for-makers-and-hobbyists/

Patison
17.10.2017, 15:38
Модульный однокристальный компьютер? Один кристал, который можно дооснащать внешними модулями? Это как?...
О, нет, не так. Всем известно, чем отличается Arduino от обычных ATMega328p? Наверное, прежде всего тем, что для обегчения работы с однокристальным контроллером была разработана специальная IDE со встроенным компилятором С++ подобного языка, создано довольно много различных программных библиотек. Сам контроллер имеет специальную прошивку. В дополнение к этому появилось множество Ардуино-совместимого оборудования. Подтянулся народ, появилось сообщество, которое стало на всеобщее обозрение представлять опенсурсные примеры применения. По сравнению с чистым микроконтроллером Arduino проигрывает во многом, но, согласитесь, много полезного Arduino и дает. Тут каждый делает выбор сам.
Где-то так. Если ошибся - поправьте.
Но у Arduino, несмотря на появление более мощных 32-битных контроллеров, имеется существенное ограничение на гибкость встроенных аппаратных средств.
Я предлагаю создать для FPGA нечто подобное, хотя и более сложное по вхождению в тему. Я далек от наполеоновских планов развить большое сообщество любителей данного явления. Меня больше интересуют компактные BareMetal системы реального времени, которые могут использоваться в вышеописанных мною областях.

Некоторое время назад по моему заказу товарищи из https://marsohod.org модифицировали свой Marsohod3 с целью его упрощения, увеличения количества GPIO. Вот что из этого получилось:
https://drive.google.com/open?id=0B2eKzpZqaO6zNEE1REFobTBwSm8
https://drive.google.com/open?id=0B2eKzpZqaO6zbld0OTAwUGhHOXc
Разумеется, и на любых других платах , где имеется аналогичный чип, предлагаемое мною решение будет работать. Нужно лишь переназначить внешние порты микросхемы. И появятся различные ограничения или наоборот, расширения по сравнению с предлагаемым устройством Marsohod3nano.

Сейчас больше ориентируются на SoC системы, и на это есть свои причины - у одноплатных высокоинтегрированных компьютерных систем большая надежность по сравнению с модульными.
Полностью с вами согласен. Я предлагаю SoC, где можно по желанию разместить в одном кристалле несколько (5-10) процессоров с собственной памятью. И разместить там же другие специализированные процессоры и сопроцессоры, а также требуемые аппаратные узлы. Все это я называю внутренними модулями.
Внешние модули - это любое оборудование, логически и электрически совместимое с внутренними модулями. Не более того. Никаких внешних однотипных коробочек.

AlexG
17.10.2017, 15:54
1) берём ПЛИС на Verilog пишем процессор, перефирию - получаем результат.
2) берём ПЛИС на С (С++) пишем программу main(), где заодно описываем периферию - получаем результат.
Что удобнее то и выбираем.
https://www.xilinx.com/products/design-tools/software-zone/sdsoc.html
Задачи типовые: машинное зрение, искусственный интеллект, обработка видео и звука в реальном времени...

Patison
17.10.2017, 16:06
1) берём ПЛИС на Verilog пишем процессор, перефирию - получаем результат.
2) берём ПЛИС на С (С++) пишем программу main(), где заодно описываем периферию - получаем результат.
Что удобнее то и выбираем.
Я вовсе не против таких решений. Они существуют и отлично. Я предлагаю альтернативный вариант, не более того. Вариант, при котором можно было бы собирать требуемую конфигурацию внутреннего содержимого FPGA даже без применения программирования, пользуясь специальным IDE.
Мой процессор в зависимости от набора команд занимает чуть более 2000 LUT. Весь компьютер включая RAM с видеоадаптером и его отдельным кадровым буфером и кучей периферии занял на кристалле 10 процентов логики. При этом при включении питания вся конфигурация FPGA загружается из встроенной в чип FLASH памяти.

OrionExt
17.10.2017, 16:19
Вел ком в ряды энтузиастов одиночек:)

Patison
17.10.2017, 16:54
Вел ком в ряды энтузиастов одиночек:)
Мне не привыкать. Я и так энтузиаст-одиночка. Делать то, о чем пишу, продолжу независимо от общественного признания. Для этого проекта написано много вспомогательных утилит. Еще многое предстоит сделать. Например, хочу испытать MRAM внешнюю память с данным процессором. Сами понимаете, что делать только для себя гораздо легче, чем подготавливать к публикации. Мне лично этот проект нравится и я точно знаю, где его применю. И уже применял в промышленном изделии.

bigral
17.10.2017, 21:36
Я НЕ особенно разбираюсь "в теме" fpga\плис, но если есть такой проект как у Вас то он напрашивается быть на https://opencores.org/. Ну и там есть некий стандарт на модули, они обьединяются шиной wishbone которая специально для этого и задумана. Сам ниразу не применял wishbone, потому что это такое на деле и на сколько оптимально не скажу. Но на первый взгляд кажется идея заманчивой иметь ОГРОМНУЮ библиотеку с законченными устройствами-модулями с интерфейсом wishbone. Но конечно вариант модуля с МИНИМАЛЬНЫМ количеством проводов тоже иметь нужно на случай если кто-то не нуждается в wishbone и хочет приделать свой интерфейс (скажем ZX-BUS или МПИ).

Patison
17.10.2017, 23:15
...они обьединяются шиной wishbone которая специально для этого и задумана.
Да, я использовал некоторые устройства с данной шиной. Но при их использовании в моем проекте вместо одного такта процессору приходилось тратить два и более тактов. Остальные устройства работают со скоростью процессора - за 1 такт. Думаю, что можно сделать синхронную быструю шину попроще чем эта. Кстати, проект, для которого Wishbone шина предназначалась, скорее мертв, чем жив.

bigral
18.10.2017, 14:04
Как я понимаю условно задачи такого железа можно разделить на 2 части:
1) "общевычислительная" (там где большие обьемы данных, сложный алгоритм, но не особо важна скорость вычислений и скорость реакции на события);
2) "железорешаемая" (там где невозможно достичь нужной скорости при помощи "общевычислительной" части);

Первую часть решают ARM ядром со встроенным контроллером DDR SDRAM, с этим конкурировать изобретая свой процессор почти бесполезно. Разве что в академических целях для обучения и практики. А что у Вас сделанно или предпологается делать из "второй части" ?

Хороший пример проект MISTer в котором на arm ядре крутится linux с адаптированным софтом от платы MIST (это в теории дает поддержку ВСЕХ протоколов, кодеков и файловых систем) а на FPGA части крутится виртуальное железо ретроплатформ требующее точнейшей "по тактам" симуляции.