Pull to refresh

Comments 131

А я вот не согласен с такой категоричностью. Ученик должен понимать, что такое напряжение и ток, для чего нужны резисторы и как используются в тех или иных случаях. Никаких 3 курсов вуза для усвоения этого не требуется, и изучению цифровой электроники ни разу не мешает -- а вот помочь может. Скажем, начнёт ученик что-то делать самостоятельно, захочет прицепить микруху по I2C -- а у него нифига не работает, поскольку нет подтягивающих резисторов, о которых он и слыхом не слыхивал.

То же самое относится и к генераторам: нет никаких проблем показать и 555, и вообще мультивибратор на транзисторах, а заодно намекнуть, что там, где раньше требовались эти два транзистора, сейчас ставят 4-ядерный проц с 100500 млрд транзисторов -- лишь бы мозги не включать.

Ну а FIFO -- вещь продвинутая, явно не для первых занятий.

Я стараюсь провести школьника сначала к твердому пониманию комбинационной и последовательностной логики (абстракции на уровне модели Хаффмана), а потом - к микроархитектурным конструкциям основанным на ней (конечный автомат, конвейер, FIFO), чтобы подсоединить это к взрослой профессии RTL-проектировщика и микроархитектора цифровых блоков. Если я буду заходить в аналоговую электронику, а тем более разбор с дифференциальными уравнениями 555, то у него утеряется внимание и до конца мы не дойдем.

Но вы можете сделать свой курс разумеется.

мне понравилось, типа кратчайший путь заинтересовать детей, дальше incremental bootstrapping, imho так надо всему учиться кроме возможно математики

Если вы готовите людей, которые проектирую чипы, то зачем вообще демонстрировать работу железа вживую?
Можно показать, как простые узлы в симуляторе работают, а дальше уже переходить к программированию на HDL.
Убирать резисторы из "железа" - это отрывать работу с "железом" от ... работы с "железом".

Симуляторы на уровне schematic entry (например wokwi) нудные. Чем возить мышкой по экрану, лучше воткнуть провод на макетной платке.

А симулятор на уровне register transfer level (RTL) может не соотвествовать тому что происходит в реальном железе.

Вообще занятия с микросхемами малой интеграции на макетной плате хорошо ставят мозг именно перед HDL, чтобы на нем именно не "программировали", а строили комбинационные облака (из логических элементов) и элементы состояния (D-триггеры).

С микросхемами малой степени интеграции хорошо еще и то, что с ними можно проводить семинары хоть в лесу в местности без доступа к электричеству и интернету. Даже компьютер не нужен, если от батарейки питать. Только компоненты, ручка, бумага, преподователь и дети с родителями.

На счёт симуляторов, вы не смотрели Turing Complete? Мне в своё время очень зашло (хотя я не электронщик ни разу). Когда дети подрастут, попробую их тоже подсадить их на эту игрушку.

В 2.0 alpha автор убрал весь сюжет и юмор, но надеюсь, ещё вернёт к релизу.

"Из обучения школьников цифре на макетке нужно", а далее оказывается что обучают "работе проектировщика современного чипа". Тут мерещится обман, вот о чём речь

JK-триггеры и SR-защелки - это неотъемлемая часть цифровой логики

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

В итоге таких модернизаций получаем "спецов", которые кодят на vhdl/verilog конструкции, которые физически не ложатся на железо и искренне не понимают почему - язык ведь позволяет так писать!

Какое отношение имеет сборка таймера 555 к синтезируемости верилога? А, я догадался: при соединении на макетной плате микросхемы таймера 555 с двумя конденсаторами и тремя сопротивлениями - тренируется мелкая моторика пальцев. Которая потом позволяет быстрее нажимать на клавиатуру при вводе кода на SystemVerilog в компьтютер.

тренируется мелкая моторика пальцев. Которая потом позволяет быстрее нажимать на клавиатуру при вводе кода

Мелкая моторика при работе с макеткой не тренируется. Там не требуется точных малых движений пальцев и руки. И ввод с клавиатуры тоже никакого отношения к мелкой моторике не имеет.

Есть определённый здравым смыслом предел того, насколько глубоко в "базу" надо лезть. Так-то, реальной базой электроники является квантовая физика, но так глубоко никто ведь не копает.

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

и инженер-гидравлик это в принципе знает, но в своей работе старательно игнорирует, рассматривая гидрожидкость не как группу молекул, а как "рабочее тело"

... до тех пор, пока в инженерной системе не начнут происходить чудеса, объяснить которые на уровне «рабочего тела» не представляется возможным.

Да, "чудеса" бывают, но они, в общем-то, типовые, как и решения. Например, если жидкость в в гидросистеме закипит (что для неё нормально, если вспомнить о том, что она -- жидкость, но противоречит концепции "рабочего тела"), это нарушит её работу -- но это, в общем, типовая проблема с типовым решением: меняем жидкость на более высокотемпературную, или просто меняем условия работы, чтоб жидкость не могла перегреться.

Так и в цифровой электронике. Закон Ома не обязателен, но нужно знать, что один выход такой-то микросхемы тянет не более N входов: надо больше -- используй повторители, буферы и шинные формирователи.

к мероприятию торговой палаты города Маунтин-Вью, Калифорния

Тут вроде речь об американских школьниках.

Я это разрекламировал преимуществено в русско-эмигрантских группа фейсбука, хотя пришли и пара индусов и один китайский школьник. Просто у меня на этом мероприятии будет стенд http://verilog-meetup.com , поэтому я и решил привлечь детей русских иммигрантов чтобы сделать это интереснее. Типа они там будут там стоять и показывать всякие проекты.

вероятно сейчас пришло время учить детей robotics, подобно Вашей программе, отдельно от всего основного, не по VEX как в школе, ближе к уровню книги Peter Corke "Robotics, Vision, Control ..." (адаптированной), это может быть супер интересно и полезно, не знаю есть ли люди способные это сделать, это настолько важно, что imho тянет на свою школу, подобную RSM

То есть я удалил как кучу лишних резисторов на плате, так и необходимость объяснять законы Ома и Кирхгофа.

Как можно объяснять что-то связанное с электричеством, игнорируя закон Ома?

Смысл его тактики понятен. Мы же не изучаем строение x86 чтобы программировать, к примеру, на пайтоне? Но с точки зрения электроники решение не верное.

И, подозреваю, реально приведёт к "дебилизации": когда типовые решения будут успешно делать, но при этом толком не понимать, а как оно в действительности работает...

Вовсе нет. Если другой преподаватель (скажем вы) проведет детей через аналоговую / mixed signal ориентацию -то все будет хорошо. А вот если вы уговорите меня поменять программу и рассказывать им про внутренности 555 - то они не дойдут до результата - реализации микроархитектурных конструкций.

Вы кидаетесь из крайности в крайность. ЗАЧЕМ нужны какие-то дифуры, чтобы просто собрать работающий генератор на 555? ЗАЧЕМ нужно подробно изучать его внутреннее устройство, чтобы просто его использовать в качестве генератора?

Так я его и использую. Как уже собранный модуль.

А зачем его использовать как генератор не понимая как он работает, тут путь Юрия ближе, используем готовый генератор, результат тот же, что и простое повторение схемы на 555.

Человеку, например, может потребоваться генератор на другую частоту. Так что показать, как 555 использовать и как изменение номиналов резисторов-конденсаторов влияет на частоту, вполне можно и нужно -- дифуры для этого не требуются. Зато полезно сказать, почему в глубины функционирования 555 погружаться не будем (это аналоговая электроника, а наш курс посвящён "цифре", поэтому аналоговыми вещами занимаемся лишь в минимально необходимом объёме; в данном случае, нам нужен генератор сигналов, а как именно он работает внутри, нам без разницы), а заодно указать, где и что могут почитать те, кому интересно узнать об этих вещах более подробно.

Так на этом модуле можно частоту просто отверткой подкрутить или ногтем - там переменное сопротивление стоит. И в чем смысл давать детям формулу вывода частоты из двух сопротивлений и емкости если к ней нет ее вывода?

Чтобы знали что формула существует. Никто же не изобретает генератор на 555 с нуля? Есть уже изобретенная схема, и выведенная заранее формула.

Ваша аналогия особенно верна в том, что x86 плох даже для обучения процессорам - он хранит для обратной совместимости тупики 1970-х например сегментные регистры. Сейчас надо учить на risc-v , это уже де-факто новый академический стандарт.

Тоже крайность. Изучение ошибок зачастую полезнее изучения "лучших практик" без указания на возможные ошибки и почему именно это является ошибкой.

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

про RISC-V правильно, если для общего развития можно CDC 6600, красивая машина, и хорошая история

Не просто можно, а нужно. Дело в том, что теория логических схем с электричеством связана примерно никак. Какой-нить RS-триггер совершенно одинаково работает хоть электрический, хоть гидропневматический или механический. Закон Ома -- это частность, необходимая для конкретной реализации этого триггера в виде именно электрической схемы.

Здесь, я напомню, что некоторые характеристики работы будут заметно различаться в случае когда за этим триггером будет следовать один другой триггер и в случае когда за этим триггером будет 1 миллион триггеров. Тоесть в случае когда у драйвера ‘Q’ один потребитель и в случае когда их очень много. Хотя бы поверхностное понимание “ёмкости” может подарить понимание что будет происходить и почему. Понимание основ аналоговой части будет отражаться на финальном дизайне цифровой части. С этим рано или поздно придется знакомиться, хотя и соглашусь что это можно сделать не на ранних этапах.

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

Это как с программированием.

Что нагляднее объясняет суть переменных и циклов, такой вот код:

LET a = 1 
LET b = 1
PRINT a
PRINT b
FOR n = 3 TO 10
  LET c = a + b
  PRINT c
  LET a = b
  LET b = c
NEXT n

или километр листинга, который вывалит дизассемблер, которому скормили Win32-приложение, скомпилированное из этого кода?

Да даже если в листинг выше добавить необязательные в бейсике декларации переменных, уже намного непонятнее будет, ученик будет вынужден отвлечься от понимания концепции переменных как таковых на ненужные ему СЕЙЧАС подробности о способах их хранения. А если завернуть код в SUB main (), как стало принято в более новых, чем GW, версиях бейсиков -- придётся ещё объяснять ученику концепцию процедур и функций, которая на данном этапе изучения предмета ему нафиг не нужна. Ну, или как было на уроках поцкала в школьной программе -- "вот это для дела, а вот на это не обращайте внимания, это такая специальная магия, так надо. нет, комьютер не тупой, но без ; он не поймёт, что строчка кончилась. просто так принято.".

А уж что творилось в головах тех бедняг, которые начали знакомство с программированием с паскаля, мне и представить страшно, там на каждый полезный символ программы приходится по одному мусорному (без шуток, на бейсике сто байт текста, на паскале двести)

Видимо, это уже какой то следующий уровень абстракции. А ведь когда то Ардуино казалось мне неполноценной при сборке устройств из готовых модулей...

В школе изучают закон Ома. Какая проблема его применить, рассчитав нужное значение резистора? Думаю это гораздо полезнее, чем просто сборка без понимания.

Когда я школьником начал заниматься радиолюбительством, то не страдал ограниченным количеством внимания. А вот информации тогда было значительно меньше чем сейчас. Сейчас дети нежные какие-то...

Так может и не было дефицита внимания из за того, что информации было сильно меньше чем сейчас?

Был. А ещё дети часто предпочитают конфеты а не полезную пищу. С информацией так же как и с углеводами. Мне в свое так же время хотелось сразу перейти к триггерам и регистрам, не останавливаясь на транзисторах, конденсаторах и резисторах. И как же я потом жалел, что в своё время не строил скучные ВАХ транзистора/тиристора/диода, а играл в светомузыку.

Хорошо, но вы умеете решать микроархитектурные задачи с конвейерными вычислениями, fifo и контролем потока данных? Вот я хочу их до этого довести с минимальными потерями внимания по дороге. Тогда они могут строить схемы на fpga и asic - процессоры, цос, графику итд.

Я отправился в комменты, взвалив на плечо дежурный сарказм. Как же, кто-то там удалил необходимость изучать закон Ома!

Почитал комментарии. Понял вашу мысль. Вы правы.

Законъ св. Ома надо объяснить хотя бы в контексте Z-состояния и нагрузочной способности выходов.
С остальным - вполне согласен.

А z-состояние внутри совренных блоков систем на кристалле не используется. Где z-состояние например в протоле AXI? Оно нужно для экономии пинов на выходе из микросхемы. Поэтому его можно не упоминать, если мы хотим провести школьника к микроархитектурным конструкциям без увязания в болотах и тупиках.

При чём тут экономия пинов? Исходно Z-состояние появилось для организации шин. В типичной ЭВМ на каждый провод шины данных прицеплены выходы десятков узлов (сам проц, озу, пзу, специализированные контроллеры). Все висят на общей шине, а специальные схемы определяют, кому в данный момент разрешено выдавать на неё сигналы.

Скажем, процессор поднимает флажок "запрос к памяти" и выставляет на шину адреса нужный ему адрес. По этому флажку срабатывает селектор-дешифратор старших битов адреса, определяет, к какому именно чипу памяти адресован запрос (младшие биты напрямую идут ко всем чипам), и даёт ему разрешение выдать на шину данные из его ячейки памяти, определённой младшими разрядами адреса. А все остальные 100500 чипов в это время сидят в Z-состоянии и не мешают.

Сборка такого блока самому не дает ничего полезного для обучения цифровому проектированию по направлении к микроархитектуре

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

Именно! 555 - это целый мир. И где 555 в современном смартфоне?

Открытый коллектор внутри блоков современных систем на кристалле не возникает - см. коммент выше.

Про задержки - хороший вопрос. Их можно показать как данное в отчете статического анализа тайминга от FPGA или ASIC тулчейнов.

Вот мои слайды про задержки:

А что, в микроконтроллерах нет ног с открытым коллектором? Шли шину I2C без подтяжки можно использовать?

Мне как-то понравилось в обсуждении подобной тематики (вообще) фраза комментария "зачем дети учатся ползать, лучше сразу бы изучали стратегию марафонского бега!

Фишка в том, что детей совершенно необязательно выводить за уровень абстракции модели Хоффмана и статического анализа тайминга из тулов. Сделать логические элементы и триггеры черными ящиками - и вперед. Где вы видите вот здесь закон Ома?

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

Я не считаю, что можно получить действительно грамотного специалиста, если он не знает ничего вокруг своей узкой специальности. Ну а все ваши "конвейерные микроархитектуры" существуют не в сферическом вакууме и не ради самих себя. Ну а лично Вы являетесь действительно грамотным специалистом как раз во многом благодаря тому, что Ваши знания и умения выходят далеко за тот уровень, которым Вы хотите ограничивать учеников (ага, в том числе потому, что Вы знаете, что такое JK-триггер :) ).

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

Это не анекдот — это Маяковский (В. В.)

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

— «Моё открытие Америки» (1926)

Так им тогда и железо давать не надо. Давайте учить verilog и комбинаторной логике.

Ну, собственно, автор именно это и предлагает. Причём даже логику в минимальной степени, ведь HDL скрывает подробности реализации (скажем, чтобы описать на Верилоге регистр, не требуется понимать, как устроен триггер -- надо знать, как написать текст на языке).

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

Ну ок, но идею вы поняли: выкидываем макетку вообще, всё равно понимания при вашем подходе не будет.

Где вы видите вот здесь закон Ома?

Если копнуть, неподалёку от закона Ома будет Elmore delay, про которую можно узнать факультативно, чтобы представлять, как для этих облачков будут считаться тайминги и как работали EDA-тулы на низком уровне. Детишкам при знакомстве с RTL об этом точно знать не надо.

Нет, про статический анализ тайминга внутри такта нужно знать с самого начала, иначе непонятно как разбивать вычисления на стадии конвейера например. Но достаточно сказать что критический путь выводится тулами из задержек на комбинационной логике, проводах, в D-триггере и из-за неравномерностей clock tree. Просто показывать на отчет в Vivado, Quartus или LibreLane и говорить: "вот видишь, когда ставим умножение, снижается тактовая частота из-за длинного комбинационного пути между D-триггерами".

FIFO включить надо, согласен, но и сделать, чтобы они узнали, что такое резисторы, как и где их применять, тоже необходимо.

Imho крайне неправильный подход. Чтобы отказаться от подтягивающих и токоограничивающих резисторов – надо для начала знать, что это и зачем.

Ну вот в школьной физике дают s=vt+at^2/2 до интегралов и не сильно парятся.

дак эта формула выводится без всяких интегралов

Объяснять ученикам, как расчитать ограничительный резистор для светодиода не требуется. Дело в том, что если это не радиокружок для малышей, а ученик закончил среднюю школу, то он уже должен уметь это делать. Если он не умеет это делать, то он не совсем правильно выбрал специальность. Булеву логику тоже проходят в средней школе, если не ошибаюсь в 7 или 8 классе. Я случайно попал в школе на такой урок… Что дает возможности разобраться в любых логических элементах. Инженер будущий, который сегодня видит как я подключаю светодиод к 5 вольтам, получает вместе с нужным знанием о цифре одно не правильное знание. Он думает что светодиод бывает на 5 вольт, или какое другое напряжение. А это не совсем светодиод, это изделие, в котором вместе со светодиодом установлен резистор, или другой ограничитель тока, в одном корпусе. Годами мы обсуждали эту проблему, как проблему “ардуинщиков” (относится не к каждому любителю ардуино), которые не знают железа, не знают логики, пишут программу в десять строк за счет библиотеки, и не понимают совершенно как работает то, что он сделал как на уровне железа, так на уровне софта. А сейчас вы эту концепцию хотите защитить. На ХАБРЕ. В жизни людей, которые не умеют подключить светодиод, при этом бьют себя в грудь, с восклицанием Я ИНЖЕНЕР, очень много. Цель обучения, чтобы их стало меньше, а не больше.

Понимаете, если вы уделите время на это, потом еще на JK-триггер, потом еще на карты Карно (которые устарели еще в 1960-е годы, а потом оптимизация в Espresso logic optimizer в 1980-е вообще сделала ручную оптимизацию ненужной), потом упомянете что счетчики можно строить на T-триггерах, пусть даже это не вписывается в современную методологию

- пока вы будете этим всем заниматься, ученика затянет в это болото и он не дойдет до нужного. Например почти никто из недавно окончивших вуз не знает что такое контроль потока данных с помощью кредитных счетчиков (credit based flow control), хотя это необходимое знание во всех электронных компаниях, особенно которые заняти сетевыми и графическими чипами.

Мы это уже обсуждали. Лично я только частично с Вами согласен. То, что требует длительного разбора -- да, наверное, лучше пропустить. То, что много времени не потребует -- скорей, лучше посмотреть. Ну а уж фундаментальные вещи для электроники типа тока, напряжения и сопротивления -- они попросту обязательны, и особенно для детей, чтоб они пускай поверхностно, но изучали мир во всех его проявлениях. Если на то пошло, знание элементарной не электроники даже, а электротехники в 100500 раз важней всех этих конвейеров с кредитными счётчиками -- потому что последними занимается 0,0000000001% населения Земли, а починить розетку или кинуть провод на даче может потребоваться каждому.

Ну я вот, например, помню законы Ома, Кирхгофа, помню как рассчитать импеданс в цепи и много чего еще из курса электротехники. Но я бы не рискнул чинить проводку у себя в доме

Я бы тоже предпочёл доверить профессионалу -- хотя б потому, что я слепой. Но:

  • иногда надо сделать вотпрямща, а пригласить специалиста по каким-то причинам невозможно;

  • а эти специалисты есть? Если ко мне придёт условный узбек, могу ли я рассчитывать на то, что он сам проложит мне достаточно толстый провод, чтобы мои 100500 компутеров не вызвали его недопустимый нагрев? Я вот сильно не уверен, что он всё сделает правильно, и предпочту сначала сам посчитать, провод какого сечения мне необходим, а затем, возможно, и купить его самому.

Тоже мне бином Ньютона закон Ома ;)

Кидайте 2.5 мм до розетки и не парьтесь ;) Бытовых розеток на больший ток не бывает, а меньшее сечение не нужно - вдруг кто то захочет воткнуть в ту розетку утюг или микроволновку ;)

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

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

Но на том же Линухе по "прерываниям" зачастую невозможно: их просто нет на уровне задач (процессов) пользователя. Вот мне буквально сейчас нужно связать две платы: Распберри 5, которая работает мордой (дисплей с сенсорным экраном, Ethernet для связи с чем-то более высокого уровня и всё такое), и микроконтроллерной платкой, которая реализует собственно прибор (производит замеры с помощью своего АЦП, управляет всякими там клапанами и прочая). Обмен между ними вполне себе асинхронный, объёмы передачи небольшие, так что логично использовать UART. Но в Линухе я не могу запустить операцию ввода с UART и не ждать её окончания, как я сделал бы это в Винде, в VAX/VMS, RSX-11 или даже в древней и ни разу не реального времени OS/360 -- поскольку асинхронного ввода-вывода там нет, в отличие от всех перечисленных ОС. По сути, единственный способ -- спамить опрос UARTа с помощью select/poll и выполнять чтение, когда опрос сообщит, что есть что читать. Ну или запускать второй процесс, который будет запрашивать в чтение и останавливаться, пока оно не будет выполнено, в то время как другой процесс общается с пользователем (рисует картинки, обрабатывает сенсорный экран и т.п.).

Ну микроконтроллеры это все-таки не Линукс, там другая кухня, и в bare metal и в RTOS. И Ардуино это все-таки микроконтроллер как ни крути. Вот в Расберри-Пай я бы этого не требовал, но там бы я хотел чтобы детям показали Pthreads какие-нибудь.

Тут я больше к тому, что профессиональные программисты тоже вынуждены иногда идиотизмом заниматься -- пусть и из-за идиотизма платформы, которую должны по той или иной причине использовать. Но, с другой стороны, и на МК опрос иногда проще и лучше. Скажем, был у меня другой прибор, где всё крутилось в главном цикле (задача простая, лепить туда какую-нить недоОСРВ смысла никакого). Оказалось, что мне проще проверять факт нажатия кнопок именно обычным опросом в рамках главного цикла, не делать прерывания по их нажатию (а вот обмен данными по UART и SPI был уже с использованием прерываний).

 факт нажатия кнопок именно обычным опросом в рамках главного цикла, не делать прерывания по их нажатию

Прерывание - это практически мгновенная реакция на событие. В случае кнопок (HMI - интрефейс человек-машина) оправдано в одном с половиной случаев случае - выводим МК из сна с низким энергопотреблением и "большая красная кнопка стоп, самоуничтожение".

Прерывание -- это концевой выключатель на роботе, энкодер, но, какая к чертям кнопка, чтоб по менюшкам ходить?

Ну, так оно и есть.

Серьёзно? Мне всегда казалось, что в unix-системах "всё есть файл", а уж работа с файлами отработана до мелочей, включая асинхронный ввод/вывод. Я, правда, с пинами на распберри сталкивался только один раз, но работал именно через псевдофайлы.

Uart - очень особенный файл. Все, чем он особенный, подперто ioctl

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

Ардуинщики - это те, кто преподает про ардуинки, или кто пользуется?

Если первое, то сколько я видел таких, про прерывания рассказывают если не на первом уроке, то на втором, ибо очень полезная вещь.

Если второе, то это обычно от желания быстро сделать нечто простое. Там не то что до прерываний не доходит, но и до прямого обмена с периферией вообще, все прячется за библиотеки (и по барабану, что там внутри, опрос или прерывание).

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

Если первое, то сколько я видел таких, про прерывания рассказывают если не на первом уроке, то на втором, ибо очень полезная вещь.

Ну если так то хорошо

А к профессиональным разработчикам архитектуры usb шины у вас нет претензий? Где поллинг хостом это единственный способ target’у сообщить о событии?

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

У преподавателя есть два варианта:

  1. Полагаться на формальные предпосылки курса (что все пришедшие уже знают электротехнику, хотя бы)

  2. За первые полчаса проверить, есть ли эти предпосылки в реальности.

Второй вариант почти всегда дешевле. Даже если 80% учеников всё знают, краткое повторение «синхронизирует» терминологию (между всеми участниками): что преподаватель называет током, напряжением, землёй, логическим уровнем, входом, выходом, подтяжкой. А заодно обнаруживаются опасные пробелы у остальных 20%. Иначе они могут несколько занятий механически переставлять провода по картинке, скрывая, что не понимают происходящего. А цель, вроде бы, в том, чтобы все знали, а не том, чтобы пристыдить в итоге «слишком в себя поверивших».

Причём автор статьи идёт дальше утверждения «дети уже должны это знать». Он прямо пишет, что подобрал компоненты так, чтобы удалить резисторы и избавиться от необходимости объяснять законы Ома и Кирхгофа. Вот это прям выглядит сомнительно. Я видел людей, которые на вопрос про определенное умение говорили «да, знаю, делал, руками делал», а потом говорят «у меня там было проще, вот этих и этих вещей не нужно было». Ну а резистор, как ни крути, в жизни много где пригодится, в том смысле, что вряд ли в жизни ребенку попадутся только схемы, где все подобрано только так, что резисторов там не будет. «Жопа Резистор есть, а слова — нет»? )

Необязательно учить детей рассчитывать сложные цепи или тратить месяц на электротехнику, но перед работой с макетной платой им нужно хотя бы объяснить:

  • что такое напряжение и ток;

  • почему ток требует замкнутой цепи;

  • условное направление тока;

  • закон Ома;

  • зачем ограничивают ток;

  • что такое короткое замыкание;

  • что вход нельзя оставлять в неопределённом состоянии;

  • зачем нужна подтяжка;

  • что у логических входов и выходов есть допустимые напряжения и токи.

Это не отдельный семестровый курс. Для первоначального общего языка хватит одного занятия с батарейкой или источником питания, резистором, светодиодом, кнопкой и мультиметром. Дальше можно спокойно идти к триггерам, FIFO и FPGA, возвращаясь к электрической стороне по мере необходимости.

И резистор здесь особенно удачный учебный объект. Он одновременно показывает закон Ома, ограничение тока, делитель напряжения и подтяжку. Выбрасывая его из первых занятий, автор не просто убирает лишнюю деталь с платы — он убирает один из самых удобных способов объяснить, почему цифровая схема вообще ведёт себя определённым образом.

Необязательно учить детей рассчитывать сложные цепи или тратить месяц на электротехнику, но перед работой с макетной платой им нужно хотя бы объяснить

Нет, цифровым схемам это не надо. Если в целом в курсе нужно это объяснить - пусть будет отдельный предмет. Так же как если мы хотим, чтобы ученик разгребал хорошо функциональный анализ - ему не нужно из курса ФАНа делать курс высшей математики. Пусть учат закон ома на соседних предметах.

Нет, цифровым схемам это не надо

...и вот бегаеть молодёжь, путая RS-232 с UART (алло, что там с подтяжкой?)

UART - это полезное знание, но если потратить слишком много времени на протокол UART и подтяжки, то не останется времени на протокол AXI в системах на кристалле, и молодежь будет косячить на вопросы про valid/ready handshakes и данные возвращаемые не в порядке запросов (out-of-order read с тэгами).

Подтяжки объясняются за 5 минут. Настоящий UART требует, конечно, куда больше времени, но оно отнюдь не впустую уйдёт, в том числе и для HDLщика. Вы вот заранее знаете, чем ребёнку в будущем заниматься придётся? Может, он будет не процессорное ядро проектировать, а периферию для SoC?

С другой стороны, я, ни разу не являясь электронщиком как таковым (HDL для меня вообще хобби), с этой самой AXI по спецификации разобрался за полдня, хотя до неё из более-менее современных шин знакомился только с AHB (зато, естественно, знаю всякую древнюю асинхронщину -- хоть DECовский Unibus, хоть вообще классический интерфейс ввода-вывода Системы 360, и уж тем более всякие там ISA). И мне кажется, что столь быстро я в это вник как раз потому, что знаком с большой кучей всякого старья. Кстати говоря, эти самые "рукопожатия" valid/ready вполне имеют место и во многих древних асинхронных шинах (но не во всех).

А, кстати, ещё такой вопрос. Если Вы полностью игнорируете "презренный металл" в виде реальных схем на уровне транзисторов, то как Вы собираетесь объяснять сопряжение блоков, работающих в разных доменах синхронизации? Объяснять метастабильность злым колдунством, которое искореняется, и то не со 100% гарантией, магическими цепочками триггеров?

Или как, не упоминая "физику", объяснить, для чего иногда регистры дублируются (из-за ограниченной нагрузочной способности и/или слишком большой ёмкости подключённых к ним входов)?

Ха! Хороший вопрос. Да, я предлагаю объяснять метастабильность аккурат в объеме двух страниц Харрис & Харрис и двух же страниц статьи Клиффа Куммингса. Но:

  1. Я против объяснения пересечения тактового домена лицам, которые еще не набили руку на обычных схемах с одним клоком. Потому что они начинают лепить эти тактовые домены по поводу и без повода - вместо того чтобы нормально конвейеризовать.

  2. Есть курсы, даже для новичков, в которых про CDC говорят, а потом не говорят как ее преодолевать. Ведь там не просто цепочки из двух или трех D-триггеров: там еще нужно переводить pulse в level, строить CDC FIFO со счетчиками Грея, разобрать вопрос пропускной способности итд итп.

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

Вот моя шпаргалка на эту тему:

И это тема не для школьников, а где-то для 3-4 курса минимум. Не потому что это школьника недоступно (школьникам олимпиадного типа это доступно), а потому что это не должно делаться рутинно. Даже большие процессорные ядра как правило работают на одном клоке.

Ну, с этим-то я согласен :) Но мне тут ещё одна мысль в голову пришла.

Если бы Вы вели, скажем, некий спецкурс в университете, а Вашими слушателями были бы студенты, условно говоря, 3-го курса, Вы были бы полностью вправе полагаться на то, что элементарную физику (на уровне достаточно грамотного использования реальных цифровых микросхем, хотя и не проектирования их из транзисторов) они знают, про подтяжки или там токоограничители тоже в курсе, с цифровой электроникой знакомы, ну и т.д. Более того, если студент пришёл на Ваш спецкурс по современному процессорному микроархитектурному вериложеству, то Вы точно знаете, что именно эта тема его и интересует: это уже взрослый человек, более-менее знающий, чем он хочет в будущем заниматься.

Однако со школьниками ситуация совсем другая. У них ещё нет более-менее сформировавшихся интересов, а начальный уровень знаний может быть крайне невелик. Они, вполне может быть, крайне смутно представляют, что такое этот ваш процессор вообще. Поэтому Вам в любом случае надо давать им сначала базовую цифровую электронику на рассыпухе -- что Вы, собственно говоря, и делаете. Но, с одной стороны, это реальные микросхемы, накладывающие реальные физические ограничения -- это не HDL, где все такие подробности скрыты от разработчика; соответственно, некоторые элементарные сведения сообщить было бы, по меньшей мере, разумно (типа того, что нельзя на один выход цеплять 100500 входов или что логические уровни 1 и 0 могут иметь разные физические напряжения, поэтому не всегда можно напрямую соединить железку А с железкой Б); сюда входят и пресловутые резисторы, и даже генератор на 555 -- причём всё это "на пальцах" можно за одно занятие объяснить, если не пытаться лезть в дебри с дифурами (вот, глядите: ставим конденсатор ёмкости N -- светодиод мигает часто, ёмкости 2*N -- примерно в два раза медленнее; это из-за того, что для переключения конденсатор должен зарядиться/разрядиться, а скорость сего процесса зависит, внезапно, от ёмкости конденсатора и от тока, который пропускает резистор -- представьте себе бочку, в которую наливают воду или откачивают через трубу определённого диаметра; но глубже мы с вами это разбирать не будем, потому что это так называемая аналоговая электроника, а наш предмет -- цифровая, и от аналоговой нам нужны лишь самые базовые вещи типа вот этого "магического" генератора сигналов на 555, ну а кто хочет поподробней именно про это -- почитайте для начала книжку такую-то).

С другой стороны, нельзя сказать: вот элемент И, он работает так-то, вот элемент ИЛИ, он работает сяк-то, вот Д-триггер -- а теперь сделайте мне из них ФИФО. Нужна куча промежуточных ступеней с достаточно простыми задачами, которые реально решить в пределах одного занятия (особенно если школьники ещё достаточно мелкие -- это у великовозрастных мотивации может оказаться достаточно для нескольких занятий без получения ощутимого и очевидного результата, "малышам" же для поддержания интереса результаты нужны быстро; в общем, между 16 и 12 годами разница в подобном весьма велика, хотя в интеллекте как таковом её уже практически нет -- в отличие от 12 и 8). Соответственно, могут возникать задачи вроде "а сделайте-ка из логики и триггеров счётчик", "а теперь сделайте реверсивный счётчик" и т.д. -- а, как Вы наверняка знаете, "в древности" подобное нередко делалось на тех самых JK-триггерах, т.е. и они не являются бесполезными на уровне освоения "физической схемотехники" (а не HDL), хотя вполне можно решить те же задачи и на Д-триггерах.

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

типа того, что нельзя на один выход цеплять 100500 входов

Вроде на выход из cmos 4000 можно цеплять много входов, но над этим всем подумаю. Это тема в развитии.

И по нагрузочной способности могут быть проблемы (в статике-то потребление у входов близко к нулю, а вот в момент переключения... хотя столь жёстких ограничений, как в ТТЛ, у КМОП, конечно, нет), и ёмкость кучи входов может привести к слишком медленному изменению сигнала.

любые подобные занятия для ребёнка – это пока ещё “общее развитие”, а не узкопрофессиональное обучение (в отличие от студента-старшекурсника), а соответственно, здесь нужна не столько глубина, сколько ширина.

Попробую возразить.
Когда начинают давать “широкие знания”, обычно это происходит в школе, обучение для большинства детей быстро переходит в гипнопедию. Снача-ала мы выучим закон Ома, пото-ом закон Кирхгофа, Петров к доске, Иванов, не рисуй в тетради…

А ребенку интересно увидеть результат. Сразу, да, а не через пятнадцать лет обучения широким знаниям, которые без этого результата скучны, как трансляция съезда КПСС. А вот потом на этот результат, оно жужжит и мигает лампочкой, и я это сделал сам! - вот тогда можно потихоньку наслаивать широкие знания.
Сначала результат - потом подтягивать к результату понимание. Гораздо завлекательнее, для детей. Да и не только для детей.

И где же возражение? Я нигде не написал, что надо выучить 100500 тонн теории до того, как зажечь светодиод. Более того, я многократно повторил: действительно необходимую теорию можно дать буквально за один-два часа! Просто детей среднего школьного возраста нужно учить не тупо собирать по схеме, а понимать на базовом уровне, почему и для чего что-то там нужно -- ну а автор предлагает выкинуть вообще всё, что не нужно для реализации логики на HDL (именно так! поскольку для полноценной реализации логики на рассыпухе надо иметь определённые познания об этой самой рассыпухе, голой логики здесь недостаточно -- если речь идёт, конечно, о понимании, а не механическом повторении).

Возражение в том, что сначала можно (и нужно!) и тупо собрать по схеме. В первую очередь важен практический результат, полученный ребенком. Штоп зацепило.
А вот потом - потом к этому результату можно подтянуть теорию. Не наоборот.

А то я помню эти прекрасные минуты, когда преподаватель начинает фразу “Сначала вам надо знать, что…” - и к пятому слову сидит уже полный класс сомнамбул с открытыми, ничего не выражающими глазами.

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

Кручу в голове эту идею… нет, не соглашусь. Необходимо и достаточно сказать, что вообще-то есть причины, по которым собрали так, а не иначе. Интересно? Спрашивайте. Неинтересно - ну пока пособирайте еще руками. Некоторым интересно так и не станет. Знания не надо навязывать, от навязывания дети превращаются в сомнамбул. В сторону знаний надо показывать пальцем и заговорщически подмигивать.

Кстати говоря, эти самые "рукопожатия" valid/ready вполне имеют место и во многих древних асинхронных шинах (но не во всех).

AXI - это не асинхронная шина в хардверном смысле. Трансфер на канале AXI считается состоявшимся, когда и valid, и ready снимаются (sampled) как 1 на положительном фронте тактового сигнала. То есть все синхронно.

Хотя ready может комбинационно зависеть от valid по протоколу, но это не обязательно так. Более того, это не рекомендуется.

Одна из ошибок тех кто знакомится с этой шиной в том, что некоторые думают - что ready - это якобю ответ на valid. Такое допущение интуитивно для программиста - запрос/ответ.

Но это не так. ready чаще всего делается как функция от внутреннего состояния слейва - готов ли он принять транзакцию, или он сейчас busy = ~ ready.

То есть типичный случай использования valid / ready: ready после сброса стоит в 1 по умолчанию, и устройство может принять N транзакций прежде чем станет busy (то есть ready = 0).

С какими шинами вы сравниваете каналы AXI?

Я знаю, что AXI -- синхронная, и с назначением сигналов тоже знаком, хотя полностью в голове это не держу: всё ж мне это нужно эпизодически, когда я в очередной раз лезу что-то ковырять на плисине.

Ну и ни с какими шинами я AXI напрямую не сравниваю, я лишь говорю, что опыт с другими шинами, в т.ч. древними, помогает и здесь. Вы вот, например, написали, что

данные возвращаемые не в порядке запросов (out-of-order read с тэгами)

и это создаёт у молодёжи проблемы. Ну а я сразу вспомнил допотопный, ещё из первой половины 1960-х, интерфейс ввода-вывода Системы 360: на мультиплексном канале висит много устройств, и все они могут работать параллельно, а канал по их запросам переключается между ними, используя "тэг" в виде адреса устройства, который устройство, запросившее обслуживание, ему выдаёт. И ход, и завершение операций ввода-вывода там могут быть в произвольном порядке; "рукопожатия" тоже есть -- только они асинхронные, без всякого клока (канал выдал некий управляющий сигнал -- устройство должно ответить одним из своих сигналов, ну и наоборот). Ну а поскольку я со всем этим в своё время познакомился, то, увидев про сию возможность у AXI, я ничуть не удивился, и никаких сложностей типа "а как это можно сделать?" у меня не возникает, хотя ведь очевидно, что AXI и тот интерфейс -- вещи абсолютно разные. (А, ещё его можно считать "двухканальным": как и в современных шинах, там нет двунаправленных линий, типичных для шин 70-80-х годов).

Естественно, это не значит, что современным студентам стоит изучать тот интерфейс или, скажем, ISA, но вот считать подобные древние знания бесполезными в наши дни тоже было бы опрометчиво.

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

А вот такой вопрос, как я написал выше: моя претензия к ардуинщикам - то как они показывают работу с внешними устройствами (с опросом, а не через прерывания) - это не то как работают профессиональные программисты микроконтроллеров и встроенных систем вообще. Что вы на это скажете? У вас разбирались прерывания как способ снять нагрузку с микроконтроллера в опросе периферийных устройств?

Поскольку ваша цель показать цифровые схемы, подход кажется абсолютно верным. Зачем перегружать школьников лишними уровнями абстракции, не имеющими прямого отношения к теме? Иначе почему только Кирхгоф, а где электроны\атомы, физика полупроводников и т.д.?
имхо, внешние pull up\down резисторы для сенсоров или токоограничивающие для нагрузок это просто костыли на границе аналоговой и цифровой схемотехники. Если кого-то и затянет, то со временем сами углубятся в аналоговую электронику.

Короче вот первые четыре страницы моего туториала в виде шпаргалок к моим занятиям

скажите, а почему на двух языках?

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

Кроме этого довольно много русских детей из тех которые начали учиться в американской школе до возраста 12 лет - предпочитают такой материал на английском, хотя другие на русском.

А мне кажется идея автора очень здравая.

Только вот, судя по комментариям, донести до хабра её не получилось.

Насколько я понял замысел:

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

И делать это в первую очередь через практику.

Мне этот подход кажется очень здравым. Да, там возможно окажутся те, кто и закон Ома не помнит. Ну что же с того. Зато есть шанс зацепить тех, кто заинтересуется и во всем разберётся.

Вы почти правы. Однако у автора идея доведена до абсурда: раз нечто не требуется для данной очень узкой специальности (разработчика внутренностей цифровой микросхемы на языке описания аппаратуры), то давайте выкинем вообще всё, кроме минимально необходимого именно для этой специальности.

Отказываться от обычных светодиодов для уменьшения возни при сборке на макетке -- нормально. Не упоминать вообще о том, что настоящим светодиодам (и не только им) требуется резистор -- это уже идиотизм. Тем более это можно объяснить не только ученику средних классов (да, ему уже есть смысл с законом Ома, даже если в школе до него они ещё не дошли), но и какому-нибудь 8-летнему ребёнку -- только последнему таки без формул, а с понятной на пальцах "гидравлической" аналогией (резистор "тормозит" ток, не давая пройти ему в опасном для жизни светодиода количестве -- как узкая труба ограничивает поток воды). Для этого не требуется курс высшей математики, для этого не требуется отвлекаться от столь любимых автором конвейеров с FIFO на 3 месяца -- всё необходимое можно объяснить буквально за час, максимум за два.

абсурда не вижу, толковых детей надо учить главному, иначе из-за деревьев для них не видно леса

Главное не существует само по себе, без "неглавного". Тут весь спор именно об этом.

нет не об этом, а о том что именно главное, с которого начинать, а так конечно море всего, но нельзя изучать серьезный предмет подобно чтению энциклопедии начиная с буквы "A"

Спор немого и глухого какой-то. Никто не запрещает ученику, если ему интересно, либо самому что-то прочитать, либо спросить.

Суть в том, что оптимальнее давать в группе то, что имеет шанс заинтересовать большинство участников. А вот "неглавное" заинтересует лишь немногих, а то и вообще может оказаться, что в конкретной группе никого не заинтересует.

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

Так, а сегодня мне нужно подключить реле. Возьмем вот это, с обмоткой на 5 вольт. Проверяем. Реле включилось, отлично. А сейчас должно выключиться. Выключилось. А теперь это должно пройзойти десять раз подряд. Ой… а почему пошел дым из контроллера?

Так, специалист подсказал в чем проблема. Самоиндукция. Кто бы мог подумать. Поставим защитные диоды. Пробуем. Все отлично работает. А теперь мне нужно добавить еще 5 реле. Конечно с защитными диодами. Я теперь знаю. Проверяем по одному. Отлично, все работают. А теперь 5 одновременно. Так, почему пошел дым из контроллера… (для справки, ток на порт превысил максимальное значение).

Ну что… снова специалист помог. Просто порекомендовал приобрести готовые релейные модули. А теперь нам нужно подключить дисплей. У него питание 5 вольт. А логические уровни 3.3… ну ничего страшного, и так заработает.

Проблема обучения - даже нет, не обучения, а проблема заинтересовать обучаться электронике в том, что электроника сегодня это много узких специальностей, достичь приличной (не передовой даже) компетенции в которой занимает много времени и усилий у учащегося. То есть не две электронки, аналоговая и цифровая, а множество очень узких сегментов. А юному дарованию хочется, чтобы что-то самодельное на условной ардуине заработало здесь и сейчас, потому что иначе теряется интерес. А потом это самодельное невольно сравнивается с доступными в продаже ну, допустим, смартфонами, и интерес теряется серьезно, потому что внезапно осознается пропасть между собой и даже не передним краем, а самым обычным мейнстримом. То есть вопрос тут больше из области педагогики, как долгосрочно удержать интерес, а не отпугнуть. Но, с другой стороны, необходимые основы объективно присутствуют - цифровая электроника ведь на самом деле аналоговая. В какой-то мере аналоговую сущность цифры можно игнорировать, отгородившись абстракциями языков программирования, но вообще не знать основ плохо, потому что когда абстракции столкнутся с реальным миром, кое что может пойти не так. Но, в контексте статьи, это больше вопрос педагогики - как и когда дать основы, чтобы не отбить интерес, а наоборот удерживать его. У меня нет ответа. А так, вне контекста, я за скучные основы сначала и постепенное усложнение потом, с неоднократным возвратом к основам, потому что даже тот же более-менее выученный и как будто бы понятый закон Ома для начинающего выглядит неочевидно, будучи примененным к переменному току - это просто пример того, что нельзя двигаться дальше без фундамента основ, но и основы невозможно охватить единоразово. Можно, например, программировать транзисторы, в реальности не зная их устройства - особенно с биполярныии бывает трудно разобраться, но однажды это незнание заведет в тупик, поэтому лучше разобраться заранее хотя бы поверхностно, чтобы было к чему вернуться для более глубокого изучения, а не обнаружить у себя огромный пробел в знаниях, уже будучи дипломированным инженером или в шаге до получения диплома. А транзистору нужны резисторы что токоограничивающие, что подтяжки. И если они встроенные, то они все равно есть, просто не тратится время и усилия (внимание) на втыкание их в макетку - без них your mileage may vary.

Понимаете, я смотрю на конечный результат системы образования - студентов, которые приходят собеседоваться на практику после окончания вуза. И что я вижу: например несмотря на то, что они учили сдвиговые регистры и FIFO где-то на втором курсе, это знание не было подкреплено упражнениями, и они не понимают когда и зачем это использовать. Например им не приходит в голову что данные структуры можно использовать как временное хранилище аргументов некоторой арифметической функции с зависимостями.

Я меня есть по этому поводу презентация: вот см. слайды 19-35

https://docs.google.com/presentation/d/14WxUKOwsAo6Yn8X19WpGPNV5fk2H3XappceqGRlxqdM/edit?usp=sharing

А почему не было этой практики? Потому что они занимались массой других вещей, которые преподавателям жалко выбрасывать из курсов. Зачем например тратить целое занятие на карты Карно? Они устарели еще в 1960-е годы, а потом оптимизация в Espresso logic optimizer в 1980-е вообще сделала ручную оптимизацию ненужной.

Зачем например тратить целое занятие на карты Карно? Они устарели еще в 1960-е годы, а потом оптимизация в Espresso logic optimizer в 1980-е вообще сделала ручную оптимизацию ненужной

Ну а зачем в школе учат умножение/деление в столбик? В реальной жизни считают на калькуляторах и компутерах. Да и писать ручкой или карандашом учиться тоже особо не требуется: в реальной жизни давно уже сплошь компьютеры.

Но ладно, выкинем и JK-триггеры, и карты Карно -- сократим несколько учебных часов. Хватит их на нормальную практику? Нифига не хватит. Я предлагаю полностью выкинуть абсолютно весь курс высшей математики -- ведь в 95% реальной работы она совершенно не нужна. Вот такое решение абсолютно точно освободит уйму часов для практических занятий.

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

Претензии – потому что у него прямо в заголовке написано "на макетке".

Ну то есть если бы автор собирал с детьми схемы методом накрутки или с помощью vago-коннекторов, вопросов бы не было? Тогда это очевидная реакция ардуинщика на слом стереотипов, заложенных во множестве туториалов - 555, проводочки, резисторы с конденсаторами... Я изучал схемотехнику с паяльником, тогда макеток не было, видимо поэтому меня совсем не трогает такое кощунство... Ну хочет человек готовые генераторы и индикаторы в плату втыкать - зачем ему мешать? У меня для бредбордов есть разные готовые платы, как с RGB или 8 светодиодами с уже запаянными резисторами, так и джойстиками, клавиатурами и индикаторами, и это гораздо удобнее и быстрее, чем по-отдельности все втыкать коммутируя с резисторами дополнительными проводами.

Не настаиваю на дополнительных проводах, сам паял сборки с резистором, чтоб не возиться. Но вот прятать это от ученика – неправильно.

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

Вот только без них далеко не всё получится сделать. "Сферической в вакууме" цифры нет, ей приходится иметь дело с грубым материальным миром.

Пусть для обучающихся это останется за кадром, это не имеет отношения к цифровому миру, это лишь необходимый конструкт в аналоговом мире

А потом у них всё будет гореть, перемыкать и т.д. и т.п., как тут выше уже писали. Потому что кто-то решил сэкономить пару-тройку часов на изложение основ.

Это всего лишь значит, что как раз тогда и возникнет стимул разобраться. А если не возникнет, то значит этот конкретный ученик вообще ничего не делает в этом "грубом материальном мире". Ну так и в чем проблема тогда?

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

Если говорить о "нужных" и "не нужных" знаниях, то меня спасла учительница математики, которая в восьмом классе в 1986 году объясняла нам признаки подобия углов. И вот эти признаки подобия понадобились мне в 2020 году. Так что надо именно ОБЪЯСНИТЬ основы. Чтобы дети их ПОНЯЛИ. И ПОНЯЛИ, что с ними можно сделать. А научить этим пользоваться можно по ходу учёбы. Периодически говоря: А тут надо ограничить ток. Как мы это будем делать? А по закону товарища Ома (и формулку пишем). Запомнится на раз.

Нас так в автошколе препод учил. Каждый новый знак обрамлялся "знак ставится за 50 метров в городе и за 150 за городом." Просто проговаривал, но эти цифры я запомнил наизусть.

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

Мне толковые конкуренты из молодёжи нафиг не сдались.

Дорогие комментаторы. Прочтите пожалуйста внимательно: человек учит ДЕТЕЙ. Если вы детям будете рассказывать о законах Кирхгофа и Ома, они на второе занятие уже не придут, и ничему полезному не научатся. Пусть лучше сначала заинтересуются, а потом уже углубятся. Именно так я и изучал программирование с 11 лет - начинал с верхов, с PHP. Делал красивые сайтики. Сейчас мне 21, и я прогаю на плюсах и ассемблере в embedded

Я сам преподавал, и это сложно для современного поколения. Но вы не думали, что современные дети слишком избалованы? Раньше каждый подарок от родителей или покупка была праздником, сейчас это обыденность. Поэтому дети в телефоне сидят, им нужна мощная активная визуализация, так как к обычным вещам они уже привыкли. Да современные дети умнее и быстрее развиваются благодаря доступности информации, но им также надо учиться пользоваться мозгом, когда доступа к информации нету. То есть раньше дети подстраивались под среду, а теперь среда должна подстраиваться под детей. А потом мы видим, что сложное оказывается интереснее, чем простое.

Современные дети, скорей, тупее -- как раз потому, что сидят в телефонах. Информация доступна, но им она не нужна, они другое смотрят.

Тут ведь, молодой человек, всё как с анекдотами - зависит от умения рассказать (а лучше - и показать).

Некоторые в 30 лет не способны сесть на велосипед, потому что в детстве им после первого падения поставили обратно боковые колёсики.

Кто-то - как Вы - углубится, а кто-то решит, что на дне ничего интересного нет, раз он самое важное уже умеет, и пойдет развиваться "вверх". А потом такие развитые цепляют электромагнитный толкатель прямо на GPIO микроконтроллера.

И, поверьте, это не бесплотное умствование. Как и коллега @Andreas_Fogel я не так давно имел удовольствие попреподавать несколько семестров в одном из местных университетов. Среди прочего получил возможность наглядно сравнить поведение и мышление студентов, которым ввели работу с ИИ на первом курсе, и тех, кто этого не застал и пару лет пользовался собственным интеллектом.

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

Но, как я уже сказал (и не соврал), лично я подходом автора полностью доволен. Так что, уж извините, примеров "как это можно было бы сделать" или "как учили меня" не будет.

1) А кто говорит грузить тонной теории? Я лично говорю о минимально необходимых вещах, и закон Ома таковой таки является (а вот Кирхгофа -- нет, они нужны для анализа всей схемы в целом, а не для практически нужных вещей типа того, чтоб понять, какой резистор нужен для светодиода, чтоб его не спалить).

2) А кто говорит, что надо начинать с кучи скучной теории? Собрали схему -- разобрались "на пальцах", как она работает, с самым минимумом математики.

3) И кстати, а каков возраст детей? 8 лет -- это одно, 16 -- совершенно другое.

Мануал, как вырастить инженера-радиоэлектронщика продвинутого сборщика, использующего в работе колдунстве не дедовское заклинание "абракадабра", а инновационное "законома".

Так получилось, что я изучал HDL уже после схемотехники. Но вообще-то сейчас редко кто так делает - специализации сужаются. И по этой профессии действительно больше нужны знания, близкие программистам, чем схемотехникам. А уж приложения для всего этого добра каждому всё равно придётся изучать своё: кому-то резисторы греть, кому-то пакеты шифровать, кому-то ритм сердца слушать или в мат.лингвистику вникать. Так что считаю подход вполне адекватным.

Тем более про закон Ома. Который и в школе вполне себе проходят. И который вообще-то редко где выполняется.

Обучение не простая штука)

Sign up to leave a comment.

Articles