Вот сейчас школьников учат программировать Ардуино и другие устройства на основе микроконтроллеров и встроенных процессоров (Лего, Расберри Пай итд). А вот в 1970-е годы школьников учили здесь же, в Калифорнии, собирать схемы на макетной плате, на транзисторах и микросхемах малой степени интеграции (7400 TTL, CMOS 4000 итд) с элементами И-ИЛИ-НЕ и D-триггерами. Это как бы и прогресс — на микроконтроллере можно написать программу, которая бы осмысленно двигала роботической рукой, чего трудно сделать на индивидуальных логических элементах, но как мы вырастим школьников, которые бы умели проектировать (не программировать) сами микроконтроллеры?
Ответ в общем-то очевиден: между индивидуальными логическими элементами и выпущенными на фабрике микроконтроллерами можно поместить программируемые логические интегральные схемы (ПЛИС / FPGA) и использовать триаду «индивидуальные элементы — ПЛИС-ы — микроконтроллеры» чтобы сформировать у детей более полную картину мира, в которой есть не только софтвер и немножко интерфейсинга, но системное мышление, в которой задачи распределяются между программированием и схемотехникой, и, пусть на очень простом уровне средней школы, понятны все уровни технологии — от физики полупроводников до транзисторов до логических элементов — до уровня регистровых передач — до уровня микроархитектуры/блочного устройства процессора — до уровня архитектуры/системы команд — до уровня программирования на Си и Питоне — до роботов итд.
Идея учить школьников по всему фронту цифровой схемотехники и встроенного программирования звучит хорошо теоретически, но как воплотить это в жизнь?
У Arduino уже появились недорогие платы с ПЛИС, да и производители ПЛИС стали распостранять бесплатный софтвер для синтеза без сложных лицензий. Однако на пути к нирване стоят:
- Недружелюбность софтвера для синтеза схем и конфигурация ими ПЛИС-а
- Серьезное отличие параллельной ментальной модели кода на языке описания аппаратуры SystemVerilog от интуитивной понятной ментальной модели последовательного программирования
- Специфически детские проблемы, например: даже младшие школьники (7-10 лет) относительно легко понимают концепцию электрического тока, сопротивления и конденсаторов, комбинационных логических элементов, двоичных арифметических операций — но вот с пониманием последовательностной логики (D-триггеров, счетчиков, сдвиговых регистров, конечных автоматов) происходит затык, хотя это понимают старшие школьники.
Если вы не знаете, что такое ПЛИС, вы сможете прочитать мои старые тексты «Как начать разрабатывать железо, используя ПЛИС — пошаговая инструкция», а также «Введение в дизайн харвера микросхем для тех программистов, которые этим никогда не занимались».
Про ментальные модели и детские проблемы я напишу отдельные посты, а сейчас остановлюсь только на недружелюбности софтвера для синтеза кода на языке описания аппаратуры. Этот софтвер выглядит тяжелым для ребенка даже из скриншотов:
Altera Quartus II:
Xilinx Vivado:
Понятно, что для детей такой GUI не годится. Детям нужен простой чистый GUI типа Ардуино, но с некоторой спецификой синтеза языков описания аппаратуры — например GUI должен показывать размер схемы и максимальную тактовую частоту, на которой может работать схема, не перегружая лишними деталями. А также показывать синтезированную схему:
Написать простой GUI в стиле Ардуино должно быть не очень сложной задачей, так как и Xilinx, и Altera содержат в своих пакетах программы, которые выполняют синтез и трассировку с командной строки, и GUI может вызывать эти программы. Осталось найти, кто бы хотел этим заниматься в виде народного open source проекта. Я пообещал товарищам из Arduino.org посмотреть среди моих российских, украинских и т.д. контактов, кто бы мог этим заняться. Предлагаю обсудить это в комментариях.
Вопрос: А зачем синтезировать схему прошиваемую в ПЛИС из описания на языке Verilog / SystemVerilog / VHDL? Ведь есть туля для высокоуровневого синтеза, которые позволяют синтезировать схему из алгоритма на Си?
Ответ: Тулы этого рода имеют серьезные ограничения на типы схем, которые они могут произвести. Попытайтесь на таком туле спроектировать конвейерный процессор с stalls и forwarding.
Вопрос: А вот я нашла на вебсайте этой самой ардуинной платы c ПЛИС ( http://www.cnx-software.com/2016/10/21/alorium-xlr8-arduino-compatible-altera-max-0-fpga-board-sells-for-75/ ), что ее можно программировать обычной средой Ардуино, с обычными скетчами.
Ответ: Просто производитель синтезировал микроконтроллер AVR и прошил его в ПЛИС. Использовать ПЛИС таким образом — это как использовать CD-ROM дисковод в качестве подставки для кофе. Это делать можно, но этим не исчерпывается суть дисковода. На ПЛИС можно делать самые разные схемы, начиная от простого элемента И и мигания лампочками схемотехническим способом, а не только прошивая большой процессор, спроектированный другими людьми.
Комментарии (141)
tmin10
22.03.2017 10:51+2В altera quartus можно и руками схемы из элементов собирать и код на VHDL писать, изучали в университете, сложностей особо не было именно с GUI, главное понять логику работы.
YuriPanchul
22.03.2017 10:53Да и для старших школьников это не проблема. Было бы интересно показать FPGA младшим школьникам. Например для 10-летнего Quartus тяжел имхо.
Rumlin
22.03.2017 11:00+2Нужен определенный уровень понимания математики, логики, абстракции.
YuriPanchul
22.03.2017 11:12Ну то что второклассники осваивают двоичные числа — это факт, наблюдал. Логику и-или-нет тоже. Вот последовательностная логика идет более туго, но можно начать с упражнений с простыми D-триггерами вот такого рода, а потом объяснить как из этого вытекают конечные автоматы (но это для более старшего возраста ):
REPISOT
22.03.2017 12:10+3Да тут проблема не с интерфейсом. «Для 10-летнего» проблема — электроника в принципе. Вундеркинды не в счет. Они и Quartus освоят.
SADKO
22.03.2017 14:54Из личной практики, шестилетние дети с интересом играются в симулятор логики, интересные поделки перенося на хлеборезку…
… да и с последовательной логикой нет проблем, из логики клепают триггеры, из триггеров регистры, это-же прикольно, бегущий огонёк
PS.Правда ребята, монтессорята, и не то что бы они все были гениями by design, некоторые очень даже наоборот…
PPS.Что с удивлением отметил некогда для себя, симуляторы им нравятся даже больше чем хлеборезка!Mogwaika
22.03.2017 15:01Только после вашего коммента понял, что это хлеборезка, а не доска с «бородой» (beardboard) из проводов, а всего лишь пару букв поменял местами при первом прочтении и дальше не обращал внимания…
iv_k
22.03.2017 10:51+2Как мне кажется, дети достаточно хорошо могут освоить и полноценный софт. Покажите им последовательность действий для выполнения задания, они поначалу повторят по-попугайски, потом привыкнут и будут понимать что делают. А вот задание, чтобы заинтересовать — другой вопрос.
Про ардуину. Человек, который начал программировать в их IDE очень тяжело переходит на «взрослые» IDE. Привык потому что. И не понимает того, что там под капотом делается.GreenStore
22.03.2017 11:06> Человек, который начал программировать в их IDE очень тяжело переходит на «взрослые» IDE
Считаю это мифом. Откуда он взялся вообще?iv_k
22.03.2017 11:15> Считаю это мифом. Откуда он взялся вообще?
Считайте мифом.
Я озвучиваю свое мнение. Ардуинщиков, переходящих в профессиональное программирование микроконтроллеров не наблюдаю. Те, которых знаю, сразу начинали на «больших» IDE.GreenStore
22.03.2017 11:23Не наблюдаете, значит им это просто не надо. На новый инструмент переходят, когда текущего перестает хватать и за это имеет смысл заплатить.
iv_k
22.03.2017 11:29> Не наблюдаете, значит им это просто не надо.
Вот именно.
> На новый инструмент переходят, когда текущего перестает хватать и за это имеет смысл заплатить.
И их надо учить почти с самого начала. Пробовал как-то. В итоге люди бросают, говорят что нафиг им это не надо, сложно.GreenStore
22.03.2017 11:35+1Учить что-то новое нужно с какой-то целью. С целью решения более сложных задач, с целью нахождения работы с большей зарплатой…
Учить новый инструмент ради инструмента — какой смысл?iv_k
22.03.2017 11:44> Учить новый инструмент ради инструмента — какой смысл?
Никакого. Но на работу с более менее приличной зарплатой требуется не знание Arduino IDE, а знание профессиональных инструментов. Поэтому вот так. Эту пропасть просто так не перепрыгнуть.GreenStore
22.03.2017 12:29Для работы с более менее приличной зарплатой объем знаний инструмента много меньше других общих и специальных знаний.
Zenitchik
22.03.2017 17:46+2Более-менее приличную зарплату я в другой области деятельности получаю. Arduino — оно не для работы.
vconst
22.03.2017 11:25+2Ардуинщиков, переходящих в профессиональное программирование микроконтроллеров не наблюдаю
Так Ардуино это хобби на уровне «смастерить дома по мелочи», а программирование микроконтроллеров — это зарабатывание денег, для которого нужен осознанный выбор профессии и серьезная база.
REPISOT
22.03.2017 13:17Человек, решивший перейти с ардуино, открыв нрмальную IDE вроде CVAVR или AtmelStudio, сталкивается с тем, что вообще не знает что делать после создания проекта.
Arduino это не IDE, это концепция программирования «черного ящика» (то есть абстрактного микроконтроллерав вакуумена отладочной плате) «готовыми» функциями. Без знаний принципа работы, внутреннего устройства, архитектуры. Для детей поиграть — пойдет. Сделать за вечер термометр, который завтра уже разберешь — пойдет. Сделать промышленное устройство — уже нет.
И кстати,
Ардуинщиков, переходящих в профессиональное программирование микроконтроллеров не наблюдаю
наоборот — тоже не вижу.vconst
22.03.2017 13:38+1Хочется мне сделать самому дистанционный диммер для домашнего освещения, я покупаю в местном магазине Леонардо, Нано, пару модулей и колхозю самоделку. Получается работающая неказистая штуковина условно — за тысячу-полторы рублей.
Хочется мне во всей квартире сделать такое управление, заказываю мелким оптом с Али Лилипадов, Нано и модули — получаю несколько рабочих устройств, каждое за условные 500 рублей.
Если надо мне сделать все еще миниатюрнее и работающее от батарейки не год, а три — покупаю мелким оптом подобные контроллеры и, уже немного посложнее, программирую сходным образом и получаю ящик устройств по 100 рублей.
Для продажи умного дома по своему протоколу — покупаю узкоспециализированные микроконтроллеры, осваиваю соответствующее программирование, получаю девайсы за 30 рублей, которые можно реально продавать и зарабатывать конвейерным потоком.
Каждый новый уровень сложнее и требовательнее к навыкам — примерно на порядок. Что совершенно логично. А количество специалистов на каждом уровне — меньше на порядок, что тоже не удивительно. На каждые каждые десять тысяч самоделкинов-ардуинщиков, приходится один разработчик ПЛИС.
iig
22.03.2017 19:29+2Для того, чтобы помигать лампочкой, не нужны глубокие знания архитектуры. Но если понадобится — никто ж не запрещает почитать про архитектуру ATMEGA. И залить внутрь
ардуиныотладочной платы свою прошивку, написанную на благородном асме ;)
Rumlin
22.03.2017 10:53Xilinx Vivado напоминает Eclipse. Скорее всего его можно доделать.У Texas Instruments подобно сделан CCS, но обвешан всякими плюшками типа Grace, GUI Composer
http://mcuhq.com/11/msp430-launchpad-gui-composer-example
Очень наглядная вещь.
Alcor
Нормальный интерфейс, на мой взгляд.
В возрасте многих текущих детей, которые сейчас радостно пишут на Arduino IDE, мы благополучно писали на Delphi и Builder, и, черт возьми, неплохо это было.
У современной Arduino IDE от IDE — только название, и, на мой взгляд, это неправильно.