
Раз уж я начал учить школьников как собирать на макетной плате цифровые схемы (в рамках подготовки демонстраций к мероприятию торговой палаты города Маунтин-Вью, Калифорния), то возникла необходимость написать для них инструкции. У меня тут же ожидаемо спросили, почему мне не подходят существующие инструкции от Make и других источников. Объясняю:
1. Все эти туториалы последние 55 лет переписывают друг от друга как использовать: 1) резисторы при светодиодах и 2) подтягивающие резисторы. У меня этого нет, потому что я использую LED толерантные к пяти вольтам, кнопки со встроенными подтягивающими резисторами, а также блок питания от USB которые генерит стабильные 5V вместо 9-вольтовой батарейки "Крона". То есть я удалил как кучу лишних резисторов на плате, так и необходимость объяснять законы Ома и Кирхгофа.
2. Эти туториалы часто описывают как строить генератор тактового сигнала из микросхемы 555, конденсатоов и резисторов. У меня этого нет, посколько я используют уже собранные генераторы тактового сигнала с AlExpress. Сборка такого блока самому не дает ничего полезного для обучения цифровому проектированию по направлении к микроархитектуре.
3. В мейкерских туториалах есть куча вещей, которые никогда не возникают в работе проектировщика современного чипа (JK-триггеры, SR-защелки), но нет того, что используется ежедневно (FIFO - микросхема CMOS 40105, приоритетный энкодер - CMOS 4532 итд).

Я понимаю, что многие преподаватели кружков любят показывать SR-защелку на двух NAND-логических элементах, но если честно, она не возникает в реальной работе современного разработчика микросхем (RTL - register-transfer-level) designer вообще никогда. Для введения элементов состояния лучше сразу переходить к D-триггеру, который используется в 99.99% случаях на современной работе. Остальным 0.01% случаем является D-защелка , которая используется в основном для clock gater в контексте экономии динамического энергопотребления, это для обучения детей неактуально.
Все эти туториалы нужно для 21 века переделать, а не копировать с минимальными изменениями туториалы начала 1970-х. И вообще через три дня схемы из Tronix детям надоедают и их нужно переводить на SystemVerilog и FPGA. И потом на ASIC, LibreLane и TinyTapeout, чтобы сделать свои чипы на фабрике.
Короче вот первые четыре страницы моего туториала в виде шпаргалок к моим занятиям, а также фотки с последней сессии. Следущая сессия будет в воскресенье 12 июля, с 11 am до 2 pm в Hacker Dojo, 855 Maude Ave, Mountain View.







Вообще на микросхемах малой степени интеграции можно делать не только бегающие огоньки, но и менее банальные вещи, которые тут же узнает любой проектировщик современных чипов, например арифметический конвейер с FIFO с помощью микросхем CMOS 40181 (ALU) и CMOS 40105 (FIFO).
Или скажем демонстрацию работы последовательностной логики с помощью побитового сумматора CMOS 4032 с сериализацией данных слагаемых с помощью сдвиговых регистров CMOS 4014 и десериализацией результата с помощью 4015. Такой сумматор бесконечных чисел можно сравнить с каскадным комбинационным сумматором из CMOS 4008.
Или вещи попроще - приоритетный энкодер на CMOS 4532, такое нужно для арбитров внутри систем на кристалле в чем угодно - от смартфонов до космоаппаратов. То что оно на 20 микрон (20 тысяч нанометров) а не на 2 нанометра, его функциональной природы не меняет.
Вот какой компонент есть в серии микросхем малой степени интеграции:

Если скобинировать его с сумматором CMOS 4008 или ALU CMOS 40181, то получится конструкция с контролем потока данных и возможностью ожидания недостающего аргумента формулы:

Я давал задание во время интервью построить такую конструкцию на верилоге студентам разнообразных американских вузов (Стенфорда, Университета Южной Калифорнии, Портлендсокого Государственного Университета, Университета Южной Каролины и других) и хм, как бы это сказать политкорректно, результаты варьировались.
См. мои заметки "FIFO для самых маленьких (вместе с вопросами на интервью)" и "Что делать, когда выпускник топ-10 мирового вуза не может спроектировать блок сложения A+B".
UPD: Видео одного из учеников, 2027-07-11. К семисегментному индикатору, в отличие от обычных 5V LED - пришлось таки ставить резисторы:
Комментарии (232)

KEugene
11.07.2026 16:31То есть я удалил как кучу лишних резисторов на плате, так и необходимость объяснять законы Ома и Кирхгофа.
Как можно объяснять что-то связанное с электричеством, игнорируя закон Ома?

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

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

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

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

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

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

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

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

YuriPanchul Автор
11.07.2026 16:31В смартфоне или там аппаратном ускорителе нейросетей не стоит генератор на 555. Современные генераторы тактовой частоты как и всякие PLL к нему другие. То есть знание той формулы никак не привязано к работам в промышленности.

randomsimplenumber
11.07.2026 16:31Ну если ваши ученики сразу вкатываются в промышленность тогда конечно действительно зачем им те резисторы и законы Ома ;)

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

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

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

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

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

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

Darkness_Paladin
11.07.2026 16:31Но это уже не логика, а материальная реализация, которая зависит от точных свойств конкретного железа. Не надо грузить этим новичков, только начинающих изучать построение логических схем!
Это как с программированием.
Что нагляднее объясняет суть переменных и циклов, такой вот код:
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, версиях бейсиков -- придётся ещё объяснять ученику концепцию процедур и функций, которая на данном этапе изучения предмета ему нафиг не нужна. Ну, или как было на уроках поцкала в школьной программе -- "вот это для дела, а вот на это не обращайте внимания, это такая специальная магия, так надо. нет, комьютер не тупой, но без ; он не поймёт, что строчка кончилась. просто так принято.".А уж что творилось в головах тех бедняг, которые начали знакомство с программированием с паскаля, мне и представить страшно, там на каждый полезный символ программы приходится по одному мусорному (без шуток, на бейсике сто байт текста, на паскале двести)

skypatcher
11.07.2026 16:31; А вот такое тоже надо бы)))
var_a dq 1
var_b dq 1
var_c dq ?
; Цикл на 7 итераций
MOV ECX,7
start_loop:
; c = a+b
MOV EAX,var_a
ADD EAX, var_b
MOV var_c, EAX
: a = b
mov EAX, var_b
mov var_a,EAX
; b = c
mov EAX, var_с
mov var_b,EAX
LOOP start_loop;

omxela
11.07.2026 16:31нагляднее объясняет суть переменных и циклов
именно вот этот ассемблерный код, если понимать слово "суть" по определению как самое главное и существенное в ком-либо или чём-либо. А если товарищ реально считает, что бейсик чем-то отличается от паскаля, то суть тут вовсе не в переменных.

skypatcher
11.07.2026 16:31Естественно, что я никогда не буду в реальных приложениях писать на ассемблере, но вот понимать, как что-то можно сделать максимально эффективно на конкретном железе, я считаю прямо обязательным. Особенно если потом разрабатывать реальные устройства. И никакое ардуино тут не поможет, поскольку в реальном проекте обычно утыкаешься в какое-нибудь узкое место или кривую библиотеку и в итоге уже лезешь в тот самый код из дизассемблера, только вот его не понимаешь и логику тоже. А языки это всё просто инструмент. А так я очень люблю прям копаться в мелочах в свободное время)

YuriPanchul Автор
11.07.2026 16:31Естественно, что я никогда не буду в реальных приложениях писать на ассемблере
Почему бы и нет? В bare metal программах все на Си писать неудобно - инициализацию (startup.S) или там обработчик прерывания может быть удобнее писать на ассемблере.

randomsimplenumber
11.07.2026 16:31На С всегда удобнее чем на ассемблере. Кроме случаев когда необходимо байто/тактоложество.

ptr128
11.07.2026 16:31Можете привести пример программы PIO в RP2040 на С, а не на pioasm?

randomsimplenumber
11.07.2026 16:31Я ардуинщик ненастоящий, про ту программу впервые слышу ;) Ну раз кто то написал программу на ассемблере - наверное у него были мотивы. Может тактоложество, может just for fun. Алгоритм удобнее натягивать на операторы С чем на регистры и флаги проца.

ptr128
11.07.2026 16:31про ту программу впервые слышу
PIO в RP2040 - это не программа, а устройство программируемого ввода-вывода с собственной специализированной системой команд.
С таким же успехом могу предложить Вам написать на C канальную программу для мейнфрема.
Алгоритм удобнее натягивать на операторы С чем на регистры и флаги проца.
Вот и попробуйте хотя бы помигать светодиодом на PIO без использования pioasm.

randomsimplenumber
11.07.2026 16:31устройство программируемого ввода-вывода с собственной специализированной системой команд.
А.. это что то типа специального языка с ключевыми словами от ассемблера? Ну так специальные языки рулят в своей нише.

ptr128
11.07.2026 16:31Про специальные языки для написания канальных программ я пока не слышал. Так что остаётся только ассемблер.
Да и использование intrinsics функций, без которых не обойтись, тоже, по сути, ассемблер в С коде.

Darkness_Paladin
11.07.2026 16:31Товарищ тридцать лет пишет коммерческий код на пяти ЯПах, а на уровне "могу наговнокодить что-то небольшое, или разобраться в чужом коде, если очень надо будет" владеет ещё десятком.
считает, что бейсик чем-то отличается от паскаля
Контекст! Мы тут об обучении начинающих говорим, а не языки "вообще" обсуждаем. И таки да, для начинающих бейсик ОЧЕНЬ СИЛЬНО отличается от паскаля -- в первую очередь отсутствием в листинге того, что не является интуитивно понятным для знающего значение слов, от которых образованы операторы.
именно вот этот ассемблерный код, если понимать слово "суть" по определению как самое главное и существенное в ком-либо или чём-либо.
Суть цикла в том, что вложенный в цикл блок выполняется несколько раз. В проге на ЯПах высокого уровня это очевидно, а в этом асм-коде разобраться может только уже более-менее подготовленный человек, не новичок, об обучении которых мы тут говорим.

Darkness_Paladin
11.07.2026 16:31А вот такое тоже надо бы)
кому надо? Асм -- штука крайне нишевая, учить ему всех подряд совершенно незачем )
Я асм привёл в пример именно потому, что реальная прога на асме должна, кроме интуитивно понятных новичку вещей, делать дофига чего ещё. Кстати, в вашем коде нет вывода на экран, в stdout или куда-то ещё )

skypatcher
11.07.2026 16:31Надо для понимания как работают циклы и переменные. Насчёт нишевости согласен, но бейсик ещё более нишевая штука ибо вообще нигде не применяется. Вывод на экран для понимания циклов излишен да и реализация на асме займёт уже не пару строк. Хотя
printf ("%d\n", EAX); и поддерживается, но тут надо уже знать какой ассемблер.
Darkness_Paladin
11.07.2026 16:31Надо для понимания как работают циклы и переменные.
Для понимания циклов и переменных бейсик намного лучше, т.к. в нём нет операций, нужных железу, а не логике кода.
То, что вот это вот:
mov EAX, var_b mov var_a,EAXявляется всего лишь копированием значения "б" в "а" через промежуточный регистр, вот ни разу не интуитивно для человека, который начал изучать программирование всего пару занятий назад. Даже если он знает, что такое
mov, для него будет непонятно (и вам придётся объяснять, хотя урок совсем о другом), почему нельзя написать простоmov var_a, var_b.А если надо не десять чисел, а сто? Бейсик не заметит проблемы, а ваш код, зависимо от целевого процессора, сломается на 25м, 48м или 94м числе, и вам придётся объяснять детям, которые ещё про циклы и концепцию переменных не поняли, нафиг им не нужные на данном этапе вещи.
но бейсик ещё более нишевая штука ибо вообще нигде не применяется
VBA -- вполне себе бейсик, пусть и с наворотами. И я уже почти тридцать лет иногда пишу на нём за деньги.
Хотя, на самом деле, для начального обучения это не важно. Изучение программирования -- это вовсе не изучение какого-то конкретного ЯП. Это в первую очередь изучение принципа построения программ, а конкретный язык -- это вторично. Если вы знаете алгоритм, которому должна следовать программа, вы легко опишете его на любом языке.

YuriPanchul Автор
11.07.2026 16:31У CMOS 4000 насколько я помню (хотя меня могут поправить) выход может драйвить более чем достаточно входов для работы со школьниками. Ну а если их нужно будет драйвить миллион (вдруг), например заставить школьниками с макетными платами стадион - то можно использовать буфер 4050.

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

YuriPanchul Автор
11.07.2026 16:31Я написал в другом комменте что думал что ардуинщики используют для работы с периферийными устройствами опрос в цикле, а не прерывания, как часто делается в профессиональном программировании микроконтроллеров, но мне сказали в другом комменте что это уже не так.

randomsimplenumber
11.07.2026 16:31думал что ардуинщики используют
Ну то есть вы живого ардуинщика не видели? ;))
В Wiring framework, одним из воплощений которого является arduino, есть функция attachinterrupt.

gev
11.07.2026 16:31Можно даже выпускать промышленные устройства, вообще, не погружаясь в закон Ома ;)

YuriPanchul Автор
11.07.2026 16:31Нет, при выпуске промышленных устройств где-то в офисе должна сидеть группа Physical Design (PD) которая знает закон Ома. Но его не обязан знать проектировщик цифровой логики на уровне регистровых передач (Register Transfer Level (RTL) design engineer). Все физическое (задержки, энергопотребление, площадь, количество D-триггеров) к нему приходит в виде отчетов от PD группы и используется для реорганизации логики, типа "о, вот тут PD говорит - критический путь - надо разрубить его D-триггерами".

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

ptr128
11.07.2026 16:31Вам не кажется, что узкая специализация - это уже осознанный выбор? Причем не в школьные годы, и даже не в институте, а уже после его окончания.
Кто-то захочет в крупной компании заниматься исключительно ПЛИС, причем тратя время на итерации со специалистами PD, так как сам не умеет такие требования сразу учитывать. Но разве из этого следует, что другой не захочет сам разрабатывать или руководить разработкой прибора полностью? Мир ведь не ограничен сложнейшими CPU и GPU, где такая узкая специализация оправдана.

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

ptr128
11.07.2026 16:31Вы не заметили, что вроде бы "не предлагая" узкую специализацию в одном месте, Ваш менталитет сразу же привёл к узкой специализации в другом?
И что школьник сможет разработать сам, а затем показать родителям и сверстникам после одного их этих курсов?
Как школьник сможет самостоятельно объединить знания полученные на трёх разных курсах, если даже проконсультироваться в целом, по всей разработке, ему будет не с кем?

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

YuriPanchul Автор
11.07.2026 16:31У школьника ограниченное количество внимания. См. выше - https://habr.com/en/articles/1058154/comments/#comment_30210656

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

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

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

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

MTyrz
11.07.2026 16:31Я отправился в комменты, взвалив на плечо дежурный сарказм. Как же, кто-то там удалил необходимость изучать закон Ома!
Почитал комментарии. Понял вашу мысль. Вы правы.

VT100
11.07.2026 16:31Законъ св. Ома надо объяснить хотя бы в контексте Z-состояния и нагрузочной способности выходов.
С остальным - вполне согласен.
YuriPanchul Автор
11.07.2026 16:31А z-состояние внутри совренных блоков систем на кристалле не используется. Где z-состояние например в протоле AXI? Оно нужно для экономии пинов на выходе из микросхемы. Поэтому его можно не упоминать, если мы хотим провести школьника к микроархитектурным конструкциям без увязания в болотах и тупиках.

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

YuriPanchul Автор
11.07.2026 16:31Вы дискутируете с человеком которому несколько лет платили зарплату за писание моделей шин в системах на кристалле, в частности AXI, OCP, AHB-Lite. Где в этих протоколах Z-состояние?
Все висят на общей шине, а специальные схемы определяют, кому в данный момент разрешено выдавать на неё сигналы.
Это давно не так. В современных шинах в системе на кристалле между процессором и устройствами ввода-вывода ставится interconnect, в который втыкается куча каналов от всех этих устройств. Нет одного арбитра и куча подающих Z с одним не-Z. Это просто слишком медленный (низкая пропускная способность) способ интеграции блоков IP.

YuriPanchul Автор
11.07.2026 16:31В последний раз я видел HighZ в шинах в системах на кристалле в ARM AMBA 2 AHB, которая вышла в 1999 году. После этого уже в 2003 году z-состояние из AXI3/4 убрали, как и потом из AHB-Lite. В последующих (ACE и CHI) его наверняка тоже нет.

SIISII
11.07.2026 16:31На самом деле, проблема со скоростью даже в древности была -- что с Z-состоянием, что с открытым коллектором. Скажем, в проце ЕС-1033 внутренние магистрали проца имеют передатчики с открытым коллектором -- поскольку на магистраль несколько блоков проца может работать (но только 1 блок + константа-маска из микрокоманды одновременно). Так вот, из-за большого количества и источников, и приёмников, и физически очень длинным линиям (проц -- целая стойка ведь) для обеспечения приемлемой скорости переключения им пришлось городить специальные схемы для быстрой "перезарядки" линии -- обычного подтягивающего резистора не хватало.
Так что неудивительно, что внутри современных процов от такого отказались: единственным важным достоинством Z/ОК в этом плане является малое число транзисторов, и когда оно перестало быть столь лимитирующим фактором, от этого ушли. Но я, честно говоря, удивлён, что внутри кристалла это дожило до рубежа веков, я думал, что полностью отказались ещё в 90-х.

iamkisly
11.07.2026 16:31Сборка такого блока самому не дает ничего полезного для обучения цифровому проектированию по направлении к микроархитектуре
Во первых 555 это целый мать его мир. Во вторых, обучение цифре без понимания того как это работает в железе создает уйму вопросов. Потому что допустим у тебя открытый коллектор.. давай обьясняй тугосерям что это зачем и почему. Или откуда берутся задержки? А хуяк хуяк и
в продакшнура у меня загорелся светодиод, это тема нескольких уроков, тупиковый путь развития. Поморгали светодиодами, подергали счетчики, посмотрели на дешифраторе как циферки на семисегментном светодиоде мигают, и все. Дальше только ардуине ноги крутить
YuriPanchul Автор
11.07.2026 16:31Именно! 555 - это целый мир. И где 555 в современном смартфоне?
Открытый коллектор внутри блоков современных систем на кристалле не возникает - см. коммент выше.
Про задержки - хороший вопрос. Их можно показать как данное в отчете статического анализа тайминга от FPGA или ASIC тулчейнов.
Вот мои слайды про задержки:



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

YuriPanchul Автор
11.07.2026 16:31Это для внешних пинов. В протоколах внутри систем на кристалле (например AXI) ничего такого нет. Хотя я согласен, что когда у школьника дойдет дело до интеграции периферийного устройства с FPGA с помощью протокола I2C, то это потребует объяснения, но 1) до этого можно не доводить, а ограничится периферийными устройствами с протоколом SPI и 2) момент интеграции FPGA + I2C будет сильно после первых упражнений с микросхемами малой степени интеграции.

SIISII
11.07.2026 16:31А можно сразу сказать: цифровая логика, как мы её рассматриваем -- вещь идеализированная, но если вы будете в своих проектах подключать что-то реальное, то надо посмотреть на некоторые дополнительные факторы, а не бежать и просто соединять проводочками.
Предупреждён -- значит, вооружён

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

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


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

Wesha
11.07.2026 16:31том анекдоте: если тебя в американском вузе учили крутить болты, ты будешь уметь это делать лучше всех в мире, но крутить гайки ты вообще не сможешь, потому что тебя этому никак не учили.
Это не анекдот — это Маяковский (В. В.)
Позднее я узнал, что если американец заостривает только кончики, так он знает это дело лучше всех на свете, но он может никогда ничего не слыхать про игольи ушки. Игольи ушки — не его специальность, и он не обязан их знать.
— «Моё открытие Америки» (1926)

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

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

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

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

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

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

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

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

Ndochp
11.07.2026 16:31Ну вот в школьной физике дают
до интегралов и не сильно парятся.

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

Ndochp
11.07.2026 16:31Как? Только не надо про площадь треугольника под аt говорить, так как из того, что s это площадь под vt когда v=const (и это прямоугольник) никак не следует что при v = at s снова будет равно площади под v. А доказательство, что будет таки равна - это и есть интегралы. И доказывать надо строже, чем “ну мы же знаем формулу площади треугольника”

alexxisr
11.07.2026 16:31пройденный путь равен средней скорости умноженной на время. При равноускоренном движении средняя скорость - это (v0 + (v0 + a*t))/2= v0 + a*t/2. Умножаем это на время и получаем искомую формулу t*(v0 + a*t/2) = v0*t + a*t^2/2

Ndochp
11.07.2026 16:31Нет, средняя скорость это по определению путь деленный на время, а не наоборот.
В данном случае необходимость интегралов у вас спряталась в утверждении “средняя скорость - это (v0 + (v0 + a*t))/2”. Как раз это утверждение для равноускоренного движения и и доказывается через, то есть уже зная формулу для

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

YuriPanchul Автор
11.07.2026 16:31Понимаете, если вы уделите время на это, потом еще на JK-триггер, потом еще на карты Карно (которые устарели еще в 1960-е годы, а потом оптимизация в Espresso logic optimizer в 1980-е вообще сделала ручную оптимизацию ненужной), потом упомянете что счетчики можно строить на T-триггерах, пусть даже это не вписывается в современную методологию
- пока вы будете этим всем заниматься, ученика затянет в это болото и он не дойдет до нужного. Например почти никто из недавно окончивших вуз не знает что такое контроль потока данных с помощью кредитных счетчиков (credit based flow control), хотя это необходимое знание во всех электронных компаниях, особенно которые заняти сетевыми и графическими чипами.

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

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

SIISII
11.07.2026 16:31Я бы тоже предпочёл доверить профессионалу -- хотя б потому, что я слепой. Но:
иногда надо сделать вотпрямща, а пригласить специалиста по каким-то причинам невозможно;
а эти специалисты есть? Если ко мне придёт условный узбек, могу ли я рассчитывать на то, что он сам проложит мне достаточно толстый провод, чтобы мои 100500 компутеров не вызвали его недопустимый нагрев? Я вот сильно не уверен, что он всё сделает правильно, и предпочту сначала сам посчитать, провод какого сечения мне необходим, а затем, возможно, и купить его самому.

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

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

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

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

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

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

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

YuriPanchul Автор
11.07.2026 16:31Прерывание удобно чтобы не загружать процессор опросом периферийных устройств, когда он что-то себе считает. Конечно можно поставить RTOS, в котором одна задача будет что-то считать, а другая опрашивать кнопку. Но и в этом случае будут прерывания - эти две задачи будет переключаться между собою с помощью прерывания по таймеру. Обработчик прерывания по таймеру будет сохранять регистры одной задачи и восстанавливать регистры другой.
Конечно можно делать такое и без прерываний:
Кооперативной многозадачностью, при которой вычисляющая задача иногда отдает управление опрашивающей книпку. Но это геморойно программировать.
В многопоточных процессорных ядрах есть такая хрень как gated storage, который позволяет тредам работать и обмениваться информацией без прерываний, но это очень специфичная фича, я ее знаю только потому что работал в проекте MIPS-Huawei с ядрами MIPS 34K в 2010 году.

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

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

SIISII
11.07.2026 16:31Нет, в унихе асинхронного ввода-вывода как раз нет. В стандарте POSIX его добавили как необязательное расширение; есть системы, где всё это реализовано, но Линух к ним не относится. В Линухе сравнительно недавно придумали громоздкий и замороченный IO_URING, но он есть не везде, плюс его где-то вообще полностью отключают (здесь на Хабре статейка недавно по этому поводу была). В общем, в уних-мире в этом плане всё весьма и весьма плохо, в т.ч. из-за идиотской концепции "всё есть файл" (она, как и целый ряд других теоретически красивых вещей, на практике создаёт проблемы).
В унихе есть т.н. неблокирующий ввод-вывод -- но это другое (тм). Разница в том, что при настоящем асинхронном вводе-выводе ты запускаешь некую операцию ввода-вывода, дёрнув соответствующий системный сервис, и указываешь при этом, например, какую процедуру обратного вызова система должна в твоей программе вызвать, когда ввод-вывод будет закончен. После запуска операции твоя программа продолжает работу параллельно с вводом-выводом и будет оповещена системой, когда ввод-вывод закончится (не обязательно через процедуру обратного вызова -- это уже от системы зависит; тут главное -- идея с оповещением задачи о завершении операции без остановки самой задачи на время выполнения операции).
А в "неблокирующем" униховом вводе-выводе ты с помощью select или poll опрашиваешь готовность устройства выполнить операцию, и если видишь, что оно готово, запускаешь операцию. Скажем, если байт данных уже поступил в УАРТ, ты узнаешь о готовности к чтению, если буфер передатчика УАРТ пуст, ты узнаешь о готовности к записи. Но здесь есть сразу несколько проблем:
ты должен либо в цикле опрашивать интересующее устройство (файл, ага) о готовности, т.е. спамить систему постоянными запросами, либо переходить в ожидание готовности (select/poll может ждать, а может проверить и сразу вернуть состояние);
у тебя нет способа узнать момент окончания фактической операции, ты можешь узнать лишь о готовности её начать;
твоя задача всё равно может быть заблокирована по тем или иным причинам (скажем, ты обнаружил, что UART готов передать данные, и выдал запрос на запись 16 байтов -- но у UART в твоей системе буфер всего на 4 байта, и ОС остановит твою задачу до тех пор, пока все 16 байтов не будут записаны в буфер);
целый ряд файлов, включая настоящие дисковые файлы, всегда готовы к операциям чтения/записи, хотя очевидно, что любое чтение или запись файла будет блокировать задачу до завершения операции.
Таким образом, подлинной асинхронности ввода-вывода этими средствами добиться невозможно, можно лишь с большим или меньшим успехом их имитировать. В случае с моим медленным УАРТом и быстрым процом (на распберри) постоянный опрос реальных проблем не создаёт -- просто само решение уродское. В других случаях это не работало бы вообще (например, нельзя сделать в одном потоке загрузку данных из файла с параллельной обработкой уже загруженного).

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

YuriPanchul Автор
11.07.2026 16:31Если первое, то сколько я видел таких, про прерывания рассказывают если не на первом уроке, то на втором, ибо очень полезная вещь.
Ну если так то хорошо

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

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

olartamonov
11.07.2026 16:31Полагаю, на этом же самом ХАБРЕ (не знаю, зачем вы пишете его заглавными буквами, но пусть) людей, которые смогут внятно объяснить, как полевой транзистор с изолированным затвором работает, можно по пальцам пересчитать. Лишь немногим больше наберётся знающих, что именно делает в цепи питания блокировочный конденсатор и как именно его наличие связано с использованием транзисторов с изолированным затвором...
Ну то есть в общем самые базовые вещи.
Полагаете, в свете этого здешняя публика не имеет права считать себя разбирающейся в том, как работают компьютеры?

Samid777
11.07.2026 16:31Прочитайте внимательно заголовок статьи. И саму статью. Вашу мысль можно продолжить еще дальше. Рано или поздно каждый упрется в предел знаний. Мы дойдем до квантовой физики, и там будет предел. Есть при этом много людей, отличных специалистов в своей сфере, которые расчеты проводят даже без учета теории относительности. Они знаю что она есть, но пользуются классической механикой. Я также в расчетах мощности зная ток и напряжения не использую принцип неопределенности Гейзенберга, и указываю в расчетах конкретную мощность, а не диапазон вероятностей.
Но почему же почти все не согласны с автором статьи? Автор статьи говорит, вот с этим вы столкнетесь, но это вам не надо. В рамках того, чему учит автор понимание как работает резистор подтяжки, и защита пина по входу, что уже уходит за пределы закона Ома, крайне обязательно. Дать ученику задачу на закон Ома одну, это не займет много времени. И выявить того, кто это понимает, тоже не проблема. Два три человека в группе будут способны, вместо одной задачи решит штук 5 в уме… а это уже скажет о них много.
Вы посмотрели остальные статьи автора, фото людей которые у него учатся? Думаю нет, а стоило это сделать первым делом. Я бы прошел мимо, если бы там были исключительно ученики до лет 12, которые программировать уже смогут, а вот закон Ома для них будет немного сложноват. У него аудитория очень разного возраста. Для одних это уже дважды пройденный материал. Для других, в силу возраста (у него есть совсем маленькие дети), до этого совсем рано. И ничего не мешает сказать ему, друг мой, перед светодиодом всегда ставим резистор. Ставь сопротивление около 1000 ом, а чуть позже я нучу вас рассчитывать его в зависимости от того, какой результат хотите получить. Или поставь вот этот модуль, в котором есть светодиод и резистор, и работает он от 5 вольт. И если бы автор учил только алгоритмам и синтаксису, т.е. чистому программирования, то он был бы и прав. Но он учит конструированию целиком, при этом выкидывая оттуда половину дисциплины.
И да, автор статьи занимает крайне полезным делом. Именно из этих детей вырастут специалисты. Которым тот, кто знает закон Ома, будет исправлять небольшие ошибки в крупных проектах. Но без такого редактора проект может просто не получиться, потому что автор не знал закон Ома, теорию длинных линий, и т.д. И автор думает что эти знания могут отпугнуть, а может совсем наоборот. Марии ведь очень понравилось паять.

achekalin
11.07.2026 16:31У преподавателя есть два варианта:
Полагаться на формальные предпосылки курса (что все пришедшие уже знают электротехнику, хотя бы)
За первые полчаса проверить, есть ли эти предпосылки в реальности.
Второй вариант почти всегда дешевле. Даже если 80% учеников всё знают, краткое повторение «синхронизирует» терминологию (между всеми участниками): что преподаватель называет током, напряжением, землёй, логическим уровнем, входом, выходом, подтяжкой. А заодно обнаруживаются опасные пробелы у остальных 20%. Иначе они могут несколько занятий механически переставлять провода по картинке, скрывая, что не понимают происходящего. А цель, вроде бы, в том, чтобы все знали, а не том, чтобы пристыдить в итоге «слишком в себя поверивших».
Причём автор статьи идёт дальше утверждения «дети уже должны это знать». Он прямо пишет, что подобрал компоненты так, чтобы удалить резисторы и избавиться от необходимости объяснять законы Ома и Кирхгофа. Вот это прям выглядит сомнительно. Я видел людей, которые на вопрос про определенное умение говорили «да, знаю, делал, руками делал», а потом говорят «у меня там было проще, вот этих и этих вещей не нужно было». Ну а резистор, как ни крути, в жизни много где пригодится, в том смысле, что вряд ли в жизни ребенку попадутся только схемы, где все подобрано только так, что резисторов там не будет. «
ЖопаРезистор есть, а слова — нет»? )Необязательно учить детей рассчитывать сложные цепи или тратить месяц на электротехнику, но перед работой с макетной платой им нужно хотя бы объяснить:
что такое напряжение и ток;
почему ток требует замкнутой цепи;
условное направление тока;
закон Ома;
зачем ограничивают ток;
что такое короткое замыкание;
что вход нельзя оставлять в неопределённом состоянии;
зачем нужна подтяжка;
что у логических входов и выходов есть допустимые напряжения и токи.
Это не отдельный семестровый курс. Для первоначального общего языка хватит одного занятия с батарейкой или источником питания, резистором, светодиодом, кнопкой и мультиметром. Дальше можно спокойно идти к триггерам, FIFO и FPGA, возвращаясь к электрической стороне по мере необходимости.
И резистор здесь особенно удачный учебный объект. Он одновременно показывает закон Ома, ограничение тока, делитель напряжения и подтяжку. Выбрасывая его из первых занятий, автор не просто убирает лишнюю деталь с платы — он убирает один из самых удобных способов объяснить, почему цифровая схема вообще ведёт себя определённым образом.

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

Spiritschaser
11.07.2026 16:31Нет, цифровым схемам это не надо
...и вот бегаеть молодёжь, путая RS-232 с UART (алло, что там с подтяжкой?)

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

SIISII
11.07.2026 16:31Подтяжки объясняются за 5 минут. Настоящий UART требует, конечно, куда больше времени, но оно отнюдь не впустую уйдёт, в том числе и для HDLщика. Вы вот заранее знаете, чем ребёнку в будущем заниматься придётся? Может, он будет не процессорное ядро проектировать, а периферию для SoC?
С другой стороны, я, ни разу не являясь электронщиком как таковым (HDL для меня вообще хобби), с этой самой AXI по спецификации разобрался за полдня, хотя до неё из более-менее современных шин знакомился только с AHB (зато, естественно, знаю всякую древнюю асинхронщину -- хоть DECовский Unibus, хоть вообще классический интерфейс ввода-вывода Системы 360, и уж тем более всякие там ISA). И мне кажется, что столь быстро я в это вник как раз потому, что знаком с большой кучей всякого старья. Кстати говоря, эти самые "рукопожатия" valid/ready вполне имеют место и во многих древних асинхронных шинах (но не во всех).
А, кстати, ещё такой вопрос. Если Вы полностью игнорируете "презренный металл" в виде реальных схем на уровне транзисторов, то как Вы собираетесь объяснять сопряжение блоков, работающих в разных доменах синхронизации? Объяснять метастабильность злым колдунством, которое искореняется, и то не со 100% гарантией, магическими цепочками триггеров?
Или как, не упоминая "физику", объяснить, для чего иногда регистры дублируются (из-за ограниченной нагрузочной способности и/или слишком большой ёмкости подключённых к ним входов)?

YuriPanchul Автор
11.07.2026 16:31Ха! Хороший вопрос. Да, я предлагаю объяснять метастабильность аккурат в объеме двух страниц Харрис & Харрис и двух же страниц статьи Клиффа Куммингса. Но:
Я против объяснения пересечения тактового домена лицам, которые еще не набили руку на обычных схемах с одним клоком. Потому что они начинают лепить эти тактовые домены по поводу и без повода - вместо того чтобы нормально конвейеризовать.
Есть курсы, даже для новичков, в которых про CDC говорят, а потом не говорят как ее преодолевать. Ведь там не просто цепочки из двух или трех D-триггеров: там еще нужно переводить pulse в level, строить CDC FIFO со счетчиками Грея, разобрать вопрос пропускной способности итд итп.
Короче я считаю что для CDC необходимо и достаточно провести викенд за штудированием статей Клиффа Каммингса, а потом использовать как правило имеющееся в каждой электронной компании IP на этот случай.
Вот моя шпаргалка на эту тему:

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

SIISII
11.07.2026 16:31Ну, с этим-то я согласен :) Но мне тут ещё одна мысль в голову пришла.
Если бы Вы вели, скажем, некий спецкурс в университете, а Вашими слушателями были бы студенты, условно говоря, 3-го курса, Вы были бы полностью вправе полагаться на то, что элементарную физику (на уровне достаточно грамотного использования реальных цифровых микросхем, хотя и не проектирования их из транзисторов) они знают, про подтяжки или там токоограничители тоже в курсе, с цифровой электроникой знакомы, ну и т.д. Более того, если студент пришёл на Ваш спецкурс по современному процессорному микроархитектурному вериложеству, то Вы точно знаете, что именно эта тема его и интересует: это уже взрослый человек, более-менее знающий, чем он хочет в будущем заниматься.
Однако со школьниками ситуация совсем другая. У них ещё нет более-менее сформировавшихся интересов, а начальный уровень знаний может быть крайне невелик. Они, вполне может быть, крайне смутно представляют, что такое этот ваш процессор вообще. Поэтому Вам в любом случае надо давать им сначала базовую цифровую электронику на рассыпухе -- что Вы, собственно говоря, и делаете. Но, с одной стороны, это реальные микросхемы, накладывающие реальные физические ограничения -- это не HDL, где все такие подробности скрыты от разработчика; соответственно, некоторые элементарные сведения сообщить было бы, по меньшей мере, разумно (типа того, что нельзя на один выход цеплять 100500 входов или что логические уровни 1 и 0 могут иметь разные физические напряжения, поэтому не всегда можно напрямую соединить железку А с железкой Б); сюда входят и пресловутые резисторы, и даже генератор на 555 -- причём всё это "на пальцах" можно за одно занятие объяснить, если не пытаться лезть в дебри с дифурами (вот, глядите: ставим конденсатор ёмкости N -- светодиод мигает часто, ёмкости 2*N -- примерно в два раза медленнее; это из-за того, что для переключения конденсатор должен зарядиться/разрядиться, а скорость сего процесса зависит, внезапно, от ёмкости конденсатора и от тока, который пропускает резистор -- представьте себе бочку, в которую наливают воду или откачивают через трубу определённого диаметра; но глубже мы с вами это разбирать не будем, потому что это так называемая аналоговая электроника, а наш предмет -- цифровая, и от аналоговой нам нужны лишь самые базовые вещи типа вот этого "магического" генератора сигналов на 555, ну а кто хочет поподробней именно про это -- почитайте для начала книжку такую-то).
С другой стороны, нельзя сказать: вот элемент И, он работает так-то, вот элемент ИЛИ, он работает сяк-то, вот Д-триггер -- а теперь сделайте мне из них ФИФО. Нужна куча промежуточных ступеней с достаточно простыми задачами, которые реально решить в пределах одного занятия (особенно если школьники ещё достаточно мелкие -- это у великовозрастных мотивации может оказаться достаточно для нескольких занятий без получения ощутимого и очевидного результата, "малышам" же для поддержания интереса результаты нужны быстро; в общем, между 16 и 12 годами разница в подобном весьма велика, хотя в интеллекте как таковом её уже практически нет -- в отличие от 12 и 8). Соответственно, могут возникать задачи вроде "а сделайте-ка из логики и триггеров счётчик", "а теперь сделайте реверсивный счётчик" и т.д. -- а, как Вы наверняка знаете, "в древности" подобное нередко делалось на тех самых JK-триггерах, т.е. и они не являются бесполезными на уровне освоения "физической схемотехники" (а не HDL), хотя вполне можно решить те же задачи и на Д-триггерах.
Ну и, наконец, любые подобные занятия для ребёнка -- это пока ещё "общее развитие", а не узкопрофессиональное обучение (в отличие от студента-старшекурсника), а соответственно, здесь нужна не столько глубина, сколько ширина. Тут больше цель -- заинтересовать техникой вообще, показать возможные направления развития (а не сидения в зомбочатиках), а не сделать из ребёнка супер-пупер-профессионального разработчика суперскалярных процов.

YuriPanchul Автор
11.07.2026 16:31типа того, что нельзя на один выход цеплять 100500 входов
Вроде на выход из cmos 4000 можно цеплять много входов, но над этим всем подумаю. Это тема в развитии.

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

MTyrz
11.07.2026 16:31любые подобные занятия для ребёнка – это пока ещё “общее развитие”, а не узкопрофессиональное обучение (в отличие от студента-старшекурсника), а соответственно, здесь нужна не столько глубина, сколько ширина.
Попробую возразить.
Когда начинают давать “широкие знания”, обычно это происходит в школе, обучение для большинства детей быстро переходит в гипнопедию. Снача-ала мы выучим закон Ома, пото-ом закон Кирхгофа, Петров к доске, Иванов, не рисуй в тетради…А ребенку интересно увидеть результат. Сразу, да, а не через пятнадцать лет обучения широким знаниям, которые без этого результата скучны, как трансляция съезда КПСС. А вот потом на этот результат, оно жужжит и мигает лампочкой, и я это сделал сам! - вот тогда можно потихоньку наслаивать широкие знания.
Сначала результат - потом подтягивать к результату понимание. Гораздо завлекательнее, для детей. Да и не только для детей.
SIISII
11.07.2026 16:31И где же возражение? Я нигде не написал, что надо выучить 100500 тонн теории до того, как зажечь светодиод. Более того, я многократно повторил: действительно необходимую теорию можно дать буквально за один-два часа! Просто детей среднего школьного возраста нужно учить не тупо собирать по схеме, а понимать на базовом уровне, почему и для чего что-то там нужно -- ну а автор предлагает выкинуть вообще всё, что не нужно для реализации логики на HDL (именно так! поскольку для полноценной реализации логики на рассыпухе надо иметь определённые познания об этой самой рассыпухе, голой логики здесь недостаточно -- если речь идёт, конечно, о понимании, а не механическом повторении).

MTyrz
11.07.2026 16:31Возражение в том, что сначала можно (и нужно!) и тупо собрать по схеме. В первую очередь важен практический результат, полученный ребенком. Штоп зацепило.
А вот потом - потом к этому результату можно подтянуть теорию. Не наоборот.А то я помню эти прекрасные минуты, когда преподаватель начинает фразу “Сначала вам надо знать, что…” - и к пятому слову сидит уже полный класс сомнамбул с открытыми, ничего не выражающими глазами.

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

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

SIISII
11.07.2026 16:31Ну так в том и дело, что нужно предупредить, что в реальном мире есть дополнительные вещи, которые нужно учитывать, а не просто без каких-либо объяснений и предупреждений: собираем вот так, и всё. А завтра ученик подключит обычный светодиод, который купил на али, и у него сгорит либо светодиод, либо МК/ПЛИС -- и всё из-за того, что его не предупредили, что ток надо ограничивать резистором или использовать конструкцию, где токоограничитель входит в состав "светодиода".

MTyrz
11.07.2026 16:31Предупредить нужно. Но именно предупредить, не навязывая. Более того, если ученик сожжет деталь, пытаясь сделать по-своему, это скорее плюс, чем минус. Вот тогда у него возникнет вопрос, а почему она сгорела - и вот на этом месте уже есть хорошая зацепка для объяснений. Гораздо лучше запомнится.

YuriPanchul Автор
11.07.2026 16:31Кстати можно делать сборку и не строго по картинке, даже с начала. Но тогда рядом с каждым ребенком должен сидеть индивидуальный взрослый, максимум один на троих-пятерых детей.

MTyrz
11.07.2026 16:31Это вообще хороший вариант, когда один взрослый на троих-пятерых, а не тридцать-сорок, как в школьном классе.

YuriPanchul Автор
11.07.2026 16:31Я знаю из опыта проведения мероприятий с детьми, что если сразу не дать платы и не начать что-то делать, а вместо этого читать лекцию, то к концу первого часа начинают уходить. Через два часа это будет массово.
Я это впервые увидел в 2017 году, когда мой приятель-физик увлекся и начал описывать детям транзисторы в микросхеме, дошел до FinFET, и тут первая мама с ребенком пошла к выходу.

SIISII
11.07.2026 16:31Это да, поэтому -- сначала немного практики, сразу после этого -- немного теории, прямо с данной практикой связанной, ну и т.д. Ну и, опять-таки, от возраста зависит: одно дело для 8 лет, другое -- для 12, третье -- для 16.

YuriPanchul Автор
11.07.2026 16:31Кстати говоря, эти самые "рукопожатия" valid/ready вполне имеют место и во многих древних асинхронных шинах (но не во всех).
AXI - это не асинхронная шина в хардверном смысле. Трансфер на канале AXI считается состоявшимся, когда и valid, и ready снимаются (sampled) как 1 на положительном фронте тактового сигнала. То есть все синхронно.
Хотя ready может комбинационно зависеть от valid по протоколу, но это не обязательно так. Более того, это не рекомендуется.
Одна из ошибок тех кто знакомится с этой шиной в том, что некоторые думают - что ready - это якобю ответ на valid. Такое допущение интуитивно для программиста - запрос/ответ.
Но это не так. ready чаще всего делается как функция от внутреннего состояния слейва - готов ли он принять транзакцию, или он сейчас busy = ~ ready.
То есть типичный случай использования valid / ready: ready после сброса стоит в 1 по умолчанию, и устройство может принять N транзакций прежде чем станет busy (то есть ready = 0).
С какими шинами вы сравниваете каналы AXI?

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

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

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

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

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

rotor
11.07.2026 16:31А мне кажется идея автора очень здравая.
Только вот, судя по комментариям, донести до хабра её не получилось.
Насколько я понял замысел:
Идея в том что бы сначала заинтересовать детей, а уже потом погружать в технические детали тех кто сам захочет.
И делать это в первую очередь через практику.
Мне этот подход кажется очень здравым. Да, там возможно окажутся те, кто и закон Ома не помнит. Ну что же с того. Зато есть шанс зацепить тех, кто заинтересуется и во всем разберётся.

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

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

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

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

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

Samid777
11.07.2026 16:31Гипотетический ход моих мыслей. Отлично. К выходу микроконтроллера я могу подключить 5 вольтовый светодиод. Он светится. Больше ничего не нужно, источник на 5 вольт, и микроконтроллер на 5 вольт.
Так, а сегодня мне нужно подключить реле. Возьмем вот это, с обмоткой на 5 вольт. Проверяем. Реле включилось, отлично. А сейчас должно выключиться. Выключилось. А теперь это должно пройзойти десять раз подряд. Ой… а почему пошел дым из контроллера?
Так, специалист подсказал в чем проблема. Самоиндукция. Кто бы мог подумать. Поставим защитные диоды. Пробуем. Все отлично работает. А теперь мне нужно добавить еще 5 реле. Конечно с защитными диодами. Я теперь знаю. Проверяем по одному. Отлично, все работают. А теперь 5 одновременно. Так, почему пошел дым из контроллера… (для справки, ток на порт превысил максимальное значение).
Ну что… снова специалист помог. Просто порекомендовал приобрести готовые релейные модули. А теперь нам нужно подключить дисплей. У него питание 5 вольт. А логические уровни 3.3… ну ничего страшного, и так заработает.

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

YuriPanchul Автор
11.07.2026 16:31Понимаете, я смотрю на конечный результат системы образования - студентов, которые приходят собеседоваться на практику после окончания вуза. И что я вижу: например несмотря на то, что они учили сдвиговые регистры и FIFO где-то на втором курсе, это знание не было подкреплено упражнениями, и они не понимают когда и зачем это использовать. Например им не приходит в голову что данные структуры можно использовать как временное хранилище аргументов некоторой арифметической функции с зависимостями.
Я меня есть по этому поводу презентация: вот см. слайды 19-35
https://docs.google.com/presentation/d/14WxUKOwsAo6Yn8X19WpGPNV5fk2H3XappceqGRlxqdM/edit?usp=sharing
А почему не было этой практики? Потому что они занимались массой других вещей, которые преподавателям жалко выбрасывать из курсов. Зачем например тратить целое занятие на карты Карно? Они устарели еще в 1960-е годы, а потом оптимизация в Espresso logic optimizer в 1980-е вообще сделала ручную оптимизацию ненужной.

SIISII
11.07.2026 16:31Зачем например тратить целое занятие на карты Карно? Они устарели еще в 1960-е годы, а потом оптимизация в Espresso logic optimizer в 1980-е вообще сделала ручную оптимизацию ненужной
Ну а зачем в школе учат умножение/деление в столбик? В реальной жизни считают на калькуляторах и компутерах. Да и писать ручкой или карандашом учиться тоже особо не требуется: в реальной жизни давно уже сплошь компьютеры.
Но ладно, выкинем и JK-триггеры, и карты Карно -- сократим несколько учебных часов. Хватит их на нормальную практику? Нифига не хватит. Я предлагаю полностью выкинуть абсолютно весь курс высшей математики -- ведь в 95% реальной работы она совершенно не нужна. Вот такое решение абсолютно точно освободит уйму часов для практических занятий.

Astroscope
11.07.2026 16:31И что я вижу: например несмотря на то, что они учили сдвиговые регистры и FIFO где-то на втором курсе, это знание не было подкреплено упражнениями, и они не понимают когда и зачем это использовать. Например им не приходит в голову что данные структуры можно использовать как временное хранилище аргументов некоторой арифметической функции с зависимостями.
Мне, возможно ошибочно, кажется, что задача любого буфера, в том числе FIFO - это временное хранилище данных, вообще любых данных, соразмеримых с емкостью буфера. Хотя задача буфера скорее не в хранении данных как таковом, тут напрашивается вопрос о регистрах в целом, ведь регистры позволяют с этими данными что-то делать, а в допущении асинхронной работы отправителя и получателя данных. Если я заблуждаюсь, то буду признателен за конструктивное указание на ошибки.
А почему не было этой практики? Потому что они занимались массой других вещей, которые преподавателям жалко выбрасывать из курсов.
Проблема отставания академического образования от переднего края технологии не нова. У меня нет идей, как исправить ситуацию в принципе - хорошо если удается отставание удерживать не слишком большим, периодически пересматривая программу вслед за развитием прикладной науки и передовой техники. Но и это не всегда делается или, скажу мягче, не всегда делается в достаточной мере.
Зачем например тратить целое занятие на карты Карно? Они устарели еще в 1960-е годы, а потом оптимизация в Espresso logic optimizer в 1980-е вообще сделала ручную оптимизацию ненужной.
Опять же нет универсального ответа. Большинству разработчиков нужен Espresso Logic Optimizer, и они будут им пользоваться необязательно понимая, как он работает и что он делает. Но должен быть кто-то, кто сможет написать новый Espresso Logic Optimizer. Я сторонник срединного пути: да, мы понимаем, что в реальной жизни мы будем использовать Espresso Logic Optimizer, написанный кем-то другим, но хотим хотя бы примерно понимать, что как и для чего он делает автоматически.

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

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

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

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

OstapIbragimovich
11.07.2026 16:31Лишнее это для детей и даже подростков. Введение в схемотехнику, это введение в схемотехнику, а введение в проектирование цифровых цепей - это совсем другое. Это логически и предметно не связанные области и аксиомы и теоремв там разные. Это все равно, что начинать введение в евклидову геометрию с определения метрики в пространстве Минковского, а потом сказать - если вот так упростить формулы, то получится евклидово трехмерное пространство с обычными синусами и косинусами...

aamonster
11.07.2026 16:31Только ровно наоборот. Начало – именно зажигающаяся "лампочка", а всякая сложная логика – уже потом.
Впрочем, не исключаю, что ТС просто привык к студентам, которые свою сотню светодиодов уже зажгли (и несколько сожгли, забыв про токозадающий резистор) и про подтяжки знают. Для них-то можно лишние подробности спрятать. Но им, может, и макетка не нужна.

jorgvonfrundsberg
11.07.2026 16:31Вы не будете читать повару выдержки из университетского курса органической химии
Знали бы вы сколько химий, в том числе органических было у сына жены на факультете технологии общественного питания в ВУЗе - не писали бы такое...

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

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

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

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

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

OstapIbragimovich
11.07.2026 16:31Да, но мы не думаем о сопромате каждый раз, когда нужно сколотить скамейку. Хотя, признаться, я иногда думаю...

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

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

YuriPanchul Автор
11.07.2026 16:31Но учил ли вас в автошколе препод устройству автомобильного двигателя паровых автомобилей начала 20-го века? Это эквивалент копания в аналоговую глубь микросхемы 555 1971-го года, от которой требуется только выдать квадратный сигнал вверх-вниз, чтобы для школьников имитировать работу современного генератора тактовой частоты.

ptr128
11.07.2026 16:31Но учил ли вас в автошколе препод
Вы учите
водителейпользователей, или будущих инженеров?Это эквивалент копания в аналоговую глубь микросхемы 555 1971-го года, от которой требуется только выдать квадратный сигнал вверх-вниз, чтобы для школьников имитировать работу современного генератора тактовой частоты.
Это вообще-то кроме таймера ещё и триггер Шмитта, что куда более востребовано в простейшей бытовой автоматике.

technomancer
11.07.2026 16:31Всецело поддерживаю представленный автором подход! Желаю развития и надеюсь, что методику будут перенимать и распространять.
Мне толковые конкуренты из молодёжи нафиг не сдались.

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

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

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

victor_1212
11.07.2026 16:31дети копируют взрослых, что из этого следует?

SIISII
11.07.2026 16:31Именно это и следует, ага :)
А если серьёзно, с детьми очень часто вообще никак не занимаются -- вот тебе мультик, сиди и смотри. Ну, мозги толком и не развиваются (когда ребёнок слушает сказку про колобка, включается воображение, рисующее и колобка, и лису, и всё такое прочее; когда он видит мультик про колобка, воображение уже не нужно: всё нарисовали).
Я вот сравнительно недавно, лет 5-10 назад, имел возможность понаблюдать за достаточно приличной группой детей в возрасте 7-11 лет, человек 25 примерно. Так вот, была 100% корреляция: большинство знает, кто такой Моргенштерн, его слушает, книжки не читает -- и не отличается особым умом, но двое (буквально двое, т.е. порядка 10%) не знают, кто такой Моргенштерн, ролики со смартфона на тытрубе не смотрят (хотя и умеют это делать), но читают книжки -- и они умны. Причём если один из них был великовозрастным (11-летним), то второму было всего 8 -- но он был сильно умней всех в этой группе, в том числе 10-11-летник, кроме того 11-летнего.
Так что... Любите книгу -- источник знаний (с)

YuriPanchul Автор
11.07.2026 16:31Тут фишка в том, что я хочу в конечном итоге скормить детям достаточно сложную информацию - построение конечных автоматов для распознавания последовательностей, создание конвейерных арифметических блоков, контроль потока данных, потом переход на FPGA и ASIC с помощью Tiny Tapeout. Они до этого никогда не доходили на традиционных туториалах типа Tronix.2 или книжек от Make - потому что на пути были много лишнего - нудно втыкать 16 дополнительных резисторов в простейшее упражнение со счетчиком, выслушивать устройство чипа 555 из 1971 года, не привязанное к современности, различать JK- и T-триггеры с SR- и D-защелкам итд. Это все болото, которое нужно аккуратно расчистить.

SIISII
11.07.2026 16:31Ага, только не надо выбрасывать то, что всё-таки нужно. Эти ваши дети не будут целиком и полностью "жить" внутри ПЛИС, они всё равно должны связываться с внешним миром.

victor_1212
11.07.2026 16:31почти наверняка со временем Ваши студенты будут благодарить, кто знает некоторые могут неожиданно далеко пойти с таким ранним стартом

ValentinSats
11.07.2026 16:31Ваше желание похвально. Но вы подменяете понятия. Фактически то, что вы включаете на выход логики - это индикатор логического состояния. Так его и называйте. Чтоб в мозгах обучаемых отложилась разница. Светодиод через резистор - это уже схема. И светодиодов бывает надцать разных видов, каждый из которых имеет свои особенности. Без ложных знаний у обучаемых, что они познали уже всё.
А в целом - обвязка логики интерфейсами сама по себе область знаний, которую не замечать - ИМХО не правильно. Можно просто при обучении указать на это. Тем, кто захочет "покопать поглубже" - будет понятно куда бежать. Например, есть прекрасная книжка Томпкинс У, Уэбстер Д. "Сопряжение датчиков и устройств ввода данных с компьютерами IBM PC" 1992 г. Гуглится на раз. Остальным понятно, что они в этом прошлись по верхам и знают не все.

technomancer
11.07.2026 16:31Тут ведь, молодой человек, всё как с анекдотами - зависит от умения рассказать (а лучше - и показать).
Некоторые в 30 лет не способны сесть на велосипед, потому что в детстве им после первого падения поставили обратно боковые колёсики.
Кто-то - как Вы - углубится, а кто-то решит, что на дне ничего интересного нет, раз он самое важное уже умеет, и пойдет развиваться "вверх". А потом такие развитые цепляют электромагнитный толкатель прямо на GPIO микроконтроллера.
И, поверьте, это не бесплотное умствование. Как и коллега @Andreas_Fogel я не так давно имел удовольствие попреподавать несколько семестров в одном из местных университетов. Среди прочего получил возможность наглядно сравнить поведение и мышление студентов, которым ввели работу с ИИ на первом курсе, и тех, кто этого не застал и пару лет пользовался собственным интеллектом.
Сразу кататься по городу - интереснее и нагляднее. Как и пострелять по мишенькам из автомата. Но почему-то в тирах читают нудный инструктаж, а в автошколах вообще месяц показывают разные странные картинки и объясняют, что они значат. Скушнаааа. Но почти никто не уходит.
Но, как я уже сказал (и не соврал), лично я подходом автора полностью доволен. Так что, уж извините, примеров "как это можно было бы сделать" или "как учили меня" не будет.

YuriPanchul Автор
11.07.2026 16:31Я сужу об эффективности образовательной системы по ее результату - я много раз собеседовал кандидатов на практику в нашей группе разработки графического процессора в смартфонах. Большинство выпускников не могут ответить сразу на банальный вопрос:
Вот у вас есть готовый конвейерный блок, который вычисляет квадратный корень за N тактов. Постройте из таких блоков вычисление формулы с зависимостями, скажем sqrt (a + sqrt (b)). Причем так, чтобы конвейер не останавливался, и новые аргуметы A и B принимались каждый такт.
Хотя они все изучали сдвиговые регистры и FIFO, в которых можно хранить A пока вычисляется sqrt(b), но это знание висит у них как сферический конь в вакууме - им не приходит в голову мысль, что это можно применить к данной задаче.
Студент, который не натренирован работать с конвейерами и FIFO, но при этом помнит всякую фигню типа карт Карно, которые устарели еще в 1960-е годы - такой студент для работы в компании бесполезен. Его придется долго тренировать с нуля, отвлекая старших инженеров.
Приходится брать на работу тех, кто изучал актуальные вещи сам, в разных открытых проектах. Лучше было бы чтобы их правильно тренировали в вузах.
Но я понимаю и вашу позицию для ваших задач. Ну дык вам и флаг в руки - сделайте курс для детей. Они пойдут и на мой и на ваш, и с ними все будет в порядке. А если вы хотите менеджировать меня чтобы я модифицировал свой курс, то вообще никакого результата не будет - ни для вас, ни для меня.

technomancer
11.07.2026 16:31Вероятно, мы с Вами действительно оцениваем полезность тех или иных знаний и навыков, находясь на разных сторонах индустриального "слона". Я, собственно, смотрел на "обучение школьников цифре" через призму своей области. С самого начал не имел намерения как-то влезать в Ваш курс.

Wesha
11.07.2026 16:31Некоторые в 30 лет не способны сесть на велосипед, потому что в детстве им после первого падения поставили обратно боковые колёсики.
Насколько я помню, на моём детском велосипеде было три позиции, в которые можно было поставить боковые колёсики: «касаются земли всегда», «касаются земли при наклоне градусов в 10», «касаются земли при наклоне градусов в 25». По мере моих успехов в поддержании равновесия их переставляли в следующую позицию — а потом и совсем отвинтили.

SIISII
11.07.2026 16:311) А кто говорит грузить тонной теории? Я лично говорю о минимально необходимых вещах, и закон Ома таковой таки является (а вот Кирхгофа -- нет, они нужны для анализа всей схемы в целом, а не для практически нужных вещей типа того, чтоб понять, какой резистор нужен для светодиода, чтоб его не спалить).
2) А кто говорит, что надо начинать с кучи скучной теории? Собрали схему -- разобрались "на пальцах", как она работает, с самым минимумом математики.
3) И кстати, а каков возраст детей? 8 лет -- это одно, 16 -- совершенно другое.

victor_1212
11.07.2026 16:31нет возражений против закона Ома, если Вы сможете объяснить умным детям без гидро аналогий (которые только засоряют понимание), начните например с того, что такое электрический ток и напряжение, пробовал, не получилось без детального объяснения истории предмета, разговора о том, что вообще мы знаем, и чего не знаем про электричество

SIISII
11.07.2026 16:31А почему без аналогий? Они хорошо работают на своём уровне и делают объяснение достаточно наглядным -- в отличие от электронов, на которые не посмотришь и которые приводятся в движение каким-то магическим полем, а не простым и понятным давлением от насоса.

victor_1212
11.07.2026 16:31возможно работают на своем уровне для электриков, которые проводку делают на даче, такова реальность, это не зависит ни от меня, ни от Вас

ifap
11.07.2026 16:31Мануал, как вырастить
инженера-радиоэлектронщикапродвинутого сборщика, использующего вработеколдунстве не дедовское заклинание "абракадабра", а инновационное "законома".
YuriPanchul Автор
11.07.2026 16:31Сейчас часто получаются не инженеры, а люди которые запомнили научпоп, но не могут ничего спроектировать сами. См. коммент выше
https://habr.com/en/articles/1058154/comments/#comment_30213194
а также слайды 19-35 в моей презентации
https://docs.google.com/presentation/d/14WxUKOwsAo6Yn8X19WpGPNV5fk2H3XappceqGRlxqdM/edit?usp=sharing

victor_1212
11.07.2026 16:31печально, если на западе так бывает, не удивлюсь, если admission policy имеет отношение

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

ptr128
11.07.2026 16:31Идея понятна, вот только что делать с мотивацией? Не только ребёнок, но и обычный человек хочет видеть результат. А как можно увидеть результат, если внешний мир аналоговый, в котором есть сопротивление, емкость и индуктивность даже у проводников металлизации на чипе?
Смотришь в datasheet и видишь фигу, так как не понимаешь ни миллиамперов, ни милливаттов, ни пикофарад, ни rise/fall time? И даже полевик не знаешь как подключить для включения и выключения двигателя?

nv13
11.07.2026 16:31А если на схеме нарисовать не просто светодиод, а внутри квадратика светодиод и резистор?) Тогда ребёнок будет понимать, что эта штука на макетке - не совсем светодиод. То есть у него не останется в памяти, что светодиод можно подключать к +5.
Про разные jk и rs - ну да, тут как в анекдоте - мне нужно не чтобы вы яму выкопали, а чтобы за... эээ ..мучались. Особенно если в примитивах hdl устройства с такой функциональностью можно запрограммировать вообще не зная, что они такие существуют или существовали - ведь номенклатура серий разрабатывалась для минимизации количества корпусов при решении типовых задач того времени. С появлением cpld смысл ис сложнее и-не и д триггера практически исчезает, потому что на рассыпухе что то делать - зачем?
И кстати, помнится мне, что генератор на инверторах и конденсаторах с резисторами гостом запрещён был, нет?)

AeYronu
11.07.2026 16:31С такой логикой, а зачем вообще чему либо учить?
Можно же просто дать задание нейронке и получить готовый результат. И не надо знать закон Ома и прочее "устаревшие" и "ненужные". И схемотехнику тоже в топку, она устарела и не современная. Ведь можно же брать готовые решения и комбинировать.

alreimar
11.07.2026 16:31Сложность любого обсуждения в России - позиция аудитории - вы все не правильно делаете, а я(мы) лучше знаю как надо.
Люди не пытаются понять, они всегда безудержной критикуют.
SIISII
А я вот не согласен с такой категоричностью. Ученик должен понимать, что такое напряжение и ток, для чего нужны резисторы и как используются в тех или иных случаях. Никаких 3 курсов вуза для усвоения этого не требуется, и изучению цифровой электроники ни разу не мешает -- а вот помочь может. Скажем, начнёт ученик что-то делать самостоятельно, захочет прицепить микруху по I2C -- а у него нифига не работает, поскольку нет подтягивающих резисторов, о которых он и слыхом не слыхивал.
То же самое относится и к генераторам: нет никаких проблем показать и 555, и вообще мультивибратор на транзисторах, а заодно намекнуть, что там, где раньше требовались эти два транзистора, сейчас ставят 4-ядерный проц с 100500 млрд транзисторов -- лишь бы мозги не включать.
Ну а FIFO -- вещь продвинутая, явно не для первых занятий.
YuriPanchul Автор
Я стараюсь провести школьника сначала к твердому пониманию комбинационной и последовательностной логики (абстракции на уровне модели Хаффмана), а потом - к микроархитектурным конструкциям основанным на ней (конечный автомат, конвейер, FIFO), чтобы подсоединить это к взрослой профессии RTL-проектировщика и микроархитектора цифровых блоков. Если я буду заходить в аналоговую электронику, а тем более разбор с дифференциальными уравнениями 555, то у него утеряется внимание и до конца мы не дойдем.
Но вы можете сделать свой курс разумеется.
victor_1212
мне понравилось, типа кратчайший путь заинтересовать детей, дальше incremental bootstrapping, imho так надо всему учиться кроме возможно математики
Wesha
Можно и математике.
iliasam
Если вы готовите людей, которые проектирую чипы, то зачем вообще демонстрировать работу железа вживую?
Можно показать, как простые узлы в симуляторе работают, а дальше уже переходить к программированию на HDL.
Убирать резисторы из "железа" - это отрывать работу с "железом" от ... работы с "железом".
YuriPanchul Автор
Симуляторы на уровне schematic entry (например wokwi) нудные. Чем возить мышкой по экрану, лучше воткнуть провод на макетной платке.
А симулятор на уровне register transfer level (RTL) может не соотвествовать тому что происходит в реальном железе.
Вообще занятия с микросхемами малой интеграции на макетной плате хорошо ставят мозг именно перед HDL, чтобы на нем именно не "программировали", а строили комбинационные облака (из логических элементов) и элементы состояния (D-триггеры).
С микросхемами малой степени интеграции хорошо еще и то, что с ними можно проводить семинары хоть в лесу в местности без доступа к электричеству и интернету. Даже компьютер не нужен, если от батарейки питать. Только компоненты, ручка, бумага, преподователь и дети с родителями.
Fedorkov
На счёт симуляторов, вы не смотрели Turing Complete? Мне в своё время очень зашло (хотя я не электронщик ни разу). Когда дети подрастут, попробую их тоже подсадить их на эту игрушку.
В 2.0 alpha автор убрал весь сюжет и юмор, но надеюсь, ещё вернёт к релизу.
Solenodont
"Из обучения школьников цифре на макетке нужно", а далее оказывается что обучают "работе проектировщика современного чипа". Тут мерещится обман, вот о чём речь
JK-триггеры и SR-защелки - это неотъемлемая часть цифровой логики
YuriPanchul Автор
Мне платят зарплату как проектировщику блока в графическом процессоре чипа в телефоне (а до этого - в магистральном маршрутизаторе). Я пишу код на языке описания аппаратуры SystemVerilog и синтезирую его с помощью Synopsys Design Fusion и Cadence Genus / Innovus - маршруте проектирования для ASIC. В отчетах синтеза нет никаких JK-триггеров и SR-защелок. Их нет также и в FPGA flow, хотя если постараться и найти исключение, то такое вроде есть в Altera MAX10, но это исключение подтверждающее правило. А вот D-триггеров навалом и местами D-защелки (clock gaters и latch arrays).
gev
Полностью согласен! Это как начинать учить программированию с С или C++. Нужно подходить сверху от структур данных а не железа. И лучше всего здесь Haskell, OCaml, LISP и прочие
YuriPanchul Автор
Ну в конечном итоге Си все-таки стоит привязывать к уровню архитектуры системы команд (ISA), показывать как транслируется в ассемблер if, циклы и вызов функции. Это актуально для программистов встроенных систем, ядер ОС и компиляторщиков. Но требовать от каждого Си-программиста скажем знать микроархитектуру конвейера CPU, причем еще до начала преподавания Си - это маразм, согласен.
В Lisp слишком много скобок :-) Хотя сделать интерпретатор подмножества лиспа на Си с функциями CAR и CDR - это хорошая учебная задача. Мнения про Haskell у меня не сложилось.
Darkness_Paladin
Первые два не знаю, но учить детей лиспу -- это, имхо, перебор.
Возможно, меня закидают тапками, но моё мнение -- для начального обучения принципам программирования за последние полвека лучше Бейсика ничего не придумали. В нём есть всё, для этого нужное, и при этом нет того, что избыточно, вроде обязательного объявления переменных (что само по себе хорошо в реальном программировании, но для новичков это лишняя сложность) или обязательного обозначения конца строки символом ";", что было ценно в эпоху бумажных листингов, но довольно бессмысленно сейчас. Ну и немалым его плюсом для начинающих мне представляется его семантическая полнота: в отличие от Си-подобных языков с универсальным выделением блоков {}-скобками или питона с выделением блоков табами, в бейсике каждый блок закрывается своим ключевым словом, что очень положительно сказывается на читабельности кода слабоподготовленным человеком. FOR-NEXT, DO-LOOP, SELECT CASE-CASE-END SELECT, IF-ELSEIF-ELSE-END IF, SUB-END SUB. Намного понятнее для новичка, чем несколько одинаковых закрывающих скобок подряд, где для понимания смысла каждой скобки надо вернуться вверх по тексту и найти парную ей открывающую скобку.
YuriPanchul Автор
Ну это вы небось про Visual Basic, до него был Бейсик с номерами строк - вокруг него было много споров в середине 1980-х портит ли он стиль.
Darkness_Paladin
Ну, номера строк -- это скорее функциональная особенность среды, чем правило языка. Поскольку все ранние бейсики были операционными интерпретаторами и не имели в своём составе выделенного текстового редактора, там была реализована простая схема: если в начале строки нет числа, по нажатию "энтер" строка немедленно исполняется. Если строка начинается с числа -- значит, пользователь хочет сохранить её как часть программы.
В середине восьмидесятых М$ наконец сделали QB, где был реализован нормальный редактор кода, а немедленное исполнение вынесено в отдельное окно -- с тех пор номера строк в программах стали необязательны, хотя и поддерживаются до сих пор (да, в VBA можно писать код с номерами строк -- но эти номера воспринимаются исключительно как метки, т.е. могут идти не подряд и могут повторяться в разных процедурах одной программы)
Что до VB/VBA (не путать с VB.NET, это сильно другой язык, хоть и тоже бейсик) -- ничего принципиально нового в синтаксис бейсика он не внёс, кроме урезанного ООП.
VKAT0N
Тоже удивился, что автор предлагает перепрыгнуть базу и сразу учить более абстрактные категории. Я сам такой вот самоучка и при общении с дедами, имеющими профильное образование чувствуется качественная разница.
В итоге таких модернизаций получаем "спецов", которые кодят на vhdl/verilog конструкции, которые физически не ложатся на железо и искренне не понимают почему - язык ведь позволяет так писать!
YuriPanchul Автор
Какое отношение имеет сборка таймера 555 к синтезируемости верилога? А, я догадался: при соединении на макетной плате микросхемы таймера 555 с двумя конденсаторами и тремя сопротивлениями - тренируется мелкая моторика пальцев. Которая потом позволяет быстрее нажимать на клавиатуру при вводе кода на SystemVerilog в компьтютер.
geher
Мелкая моторика при работе с макеткой не тренируется. Там не требуется точных малых движений пальцев и руки. И ввод с клавиатуры тоже никакого отношения к мелкой моторике не имеет.
Darkness_Paladin
Есть определённый здравым смыслом предел того, насколько глубоко в "базу" надо лезть. Так-то, реальной базой электроники является квантовая физика, но так глубоко никто ведь не копает.
Или вот, скажем, гидравлика. Каждый школьник знает, что жидкость состоит из молекул, каждая из которых имеет энергию, за счёт которой сопротивляется сближению с другими молекулами, ну и т.д. -- и инженер-гидравлик это в принципе знает, но в своей работе старательно игнорирует, рассматривая гидрожидкость не как группу молекул, а как "рабочее тело".
R0bur
... до тех пор, пока в инженерной системе не начнут происходить чудеса, объяснить которые на уровне «рабочего тела» не представляется возможным.
Darkness_Paladin
Да, "чудеса" бывают, но они, в общем-то, типовые, как и решения. Например, если жидкость в в гидросистеме закипит (что для неё нормально, если вспомнить о том, что она -- жидкость, но противоречит концепции "рабочего тела"), это нарушит её работу -- но это, в общем, типовая проблема с типовым решением: меняем жидкость на более высокотемпературную, или просто меняем условия работы, чтоб жидкость не могла перегреться.
Так и в цифровой электронике. Закон Ома не обязателен, но нужно знать, что один выход такой-то микросхемы тянет не более N входов: надо больше -- используй повторители, буферы и шинные формирователи.
R0bur
Автор статьи описал рациональный подход обучения школьников основам цифровой электроники. Предложенная «стерильная» среда, по-видимому, действительно позволяет продемонстрировать предусмотренные программой вопросы без лишних на данном этапе отвлечений. Глупо было бы требовать инженерных познаний от школьников.
Главное, чтобы эту методику не приняли на вооружения те, кто обучает инженеров. Эмпирических правил вроде "такой-то выход микросхемы тянет не более N входов" или ранее распространённого "четырёх концентраторов", возможно, достаточно для техника. Но инженер должен понимать, где находятся истоки этих правил.
Darkness_Paladin
Разумеется. Но учить этому надо не "снизу вверх", а "сверху вниз". Сначала знание о работе устройства (скажем, элемента 2И-НЕ), потом знание о наличии физических ограничений, потом знание об их природе.
Честно говоря, мне странно, что в традиционном обучении часто используют не естественный принцип "от общего к частностям", а контринтуитивный "от частностей к общему".
Единственное объяснение этому я вижу в том, что так легче и быстрее добиться высоких ФОРМАЛЬНЫХ показателей успеваемости.
Вот возьмём, к примеру, типичного автолюбителя прошлого века, который сам чинит свой авто. В начале "карьеры" он имеет лишь общее представление об устройстве автомобиля, и расширяет свои знания сверху вниз, от общего к частному, по мере того, как отдельные узлы ломаются и ему приходится их чинить, попутно изучая их устройство всё глубже и глубже. Когда у меня была "Волга", я, кроме прочего, наизусть помнил порядок затяжки всех крышек и значения моментов -- не потому, что специально учил, а потому что довольно часто это делал. Сначала смотрел в книжке, потом запомнилось.
А теперь смотрим на ПТУ автомехаников. "Так, пацаны, у машины есть карбюратор. Вот запомните десять схем устройства карбюраторов разных марок, и выучите вот эту таблицу с сечениями разных жиклёров для разных двигателей". Пацаны выучили, сдали зачёт и забыли -- но формальная оценка в табеле уже стоит, есть чем отчитаться. Вот только на работу такой автослесарь приходит не с оценками, а с общим представлением об устройстве автомобиля и чудом сохранившимися обрывками знаний, которые не может применить, потому что в систему они у него не сложились.
ptr128
А если бы это была не "Волга", а ZX Spectrum, то Вы бы тоже полезли ремонтировать его не имея базовых знаний по схемотехнике?
Darkness_Paladin
К "Волге" у меня была толстая книжка, "ГАЗ-3110. Устройство, обслуживание и ремонт".
Если б у меня к спектруму (который был) была бы подобная книжка "Спектрум-как-у-Паладина, что в нём может сломаться и как это починить" -- чо б и не полезть-то?
Впрочем, возможно, я не объективен, базовые знания по схемотехнике и навыки пользования паяльником, тестером и осциллографом у меня с детства есть (как и навыки ремонта механизмов), так что я не очень представляю, как люди без них живут.
ptr128
Вы действительно не понимаете, что такой книжки в принципе не могло быть в природе? Вместо такой книжки была только принципиальная схема. И мне этого, справочников по элементной базе и моих собственных знаний по схемотехнике хватало, чтобы ремонтировать эти Спектрумы десятками, включая НГМД. И если даже некоторые неисправности были подобные, например, дефекты платы или пайки, то даже места их локализации не повторялись.
Что мог сделать человек без знаний схемотехники, даже имея в руках "Искусство схемотехники" Хоровица и Хилла - я не представляю.
Вы не поверите, но подавляющее большинство людей живут даже не подозревая о том, что те же дефекты платы или пайки часто проявляются в виде заваленных фронтов из-за паразитной емкости этих дефектов.
Darkness_Paladin
С чего вдруг? У бати была куча книг про устройство и ремонт совеццких телевизоров, так что не вижу причин, почему подобная книга по ремонту "спектрумов" в принципе не могла существовать. Она не появилась только потому, что спрос на неё был слишком мал.
Именно спектрумы мне чинить не случилось, но довелось несколько лет ковыряться в полусотне их чуть более продвинутых родственников -- двухпроцессорных (две одинаковых платы с Z80, одна рулит станком, вторая обслуживает дисплей, клавиатуру и дисковод) крейтовых промЭВМ "СУАПЭ Соболь", они же в девичестве итальянские Протти. Не могу сказать, что это было ОЧЕНЬ сложной работой. Чинить фашистский "универсаль" (к счастью, он у нас был всего один, да и ломался редко), к которому вообще не было документации, было куда как сложнее.
Однако, мне кажется, вы несколько отклонились от темы обсуждения. Автор учит детей не на ремонтников какого-то оборудования, а на основы разработки цифро-логических схем, что прям очень-очень другое.
ptr128
По той простой причине, что компьютеры, даже такие простые, были на порядок или два сложнее тех древних телевизоров, о которых Вы ведете речь. Например, если для телевизоров можно было указать осциллограммы в контрольных точках, то для ZX Spectrum это было просто не реально.
Именно поэтому я и завёл речь о Спектрумах. Есть очень большая разница между ремонтом оборудования, которое когда-то работало и свежеспаянным студентом Спектрумом, который не работал никогда и в котором возможны даже ошибки как в выбранной этим студентом схеме, так и в вытравленной плате. Если для первого достаточно навыков техника, то второе явно требует уже инженера, который хорошо понимает как же в этой схеме реализован очередной клон Спектрума.
Ну так это Вы предложили обучать конструкторов автомобилей по книжкам по их ремонту для автослесарей )))
Darkness_Paladin
Категорически не соглашусь.Классический восьмибитный компьютер, на уровне микросхем (если внутрь их не лезть), устройство много более простое, чем аналоговый цветной телевизор.
"А мужики-то и не знали..." (с)
Не очень большая. Совсем не факт, что в "оборудовании, которое когда-то работало", до вас не покопался кто-то другой, и не оставил там сюрпризов. У меня раз было, несколько часов ковырялся в плате, а потом обнаружил, что сменщик, зараза, менял микруху и новую воткнул наоборот, ключом направо, а не налево, как все остальные. И "сопля" (советские платы без маски, коррозия дорожек -- обычное дело) может оказаться подвешенной не туда, куда надо. Тоже раз было. Помню, что вот на эту плату сам сопли вешал, так что в них сомнения нет -- а потом оказалось, что сменщик менял сомнительный транзистор, ему моя сопля мешала, он её отпаял, а потом припаял обратно -- но не туда, куда надо.
Не предлагал. Просто привёл удачный пример изучения сверху вниз.
ptr128
Ваши проблемы. Можете даже считать, что бытовые компьютеры появились до телевизоров, так как они "устройство много более простое" )))
То есть Вы можете привести тут осцилограммы для адресных линий РУ5 в "Ленинграде"? После такого заявления, последующим Вашим сказкам уже совсем нет доверия.
Darkness_Paladin
Бытовые компьютеры сложнее "внутри микросхем". Но на уровне "платы с детальками" они намного проще телевизора.
Конечно не могу, у меня "Ленинграда" не было. )
И для "Соболя" не могу, мне их в голову не приходило зарисовывать или тем более фоткать. Осциллограф при ремонте тех ЭВМ нужен не чтоб "осциллограммы линий" смотреть, а чтоб убедиться, что какой-никакой поток на линиях есть, оценить уровни, крутизну фронтов, наличие/отсутствие помех. Для того, чтоб проц с тестовой ПЗУ стартанул, устранения найденных таким способом проблем достаточно, а РУшки уже мемтест проверит.
ptr128
Но для того, чтобы его ремонтировать, нужно, как минимум, знать datasheet всех этих микросхем. Тогда как даже только импульсный БП в этом Спектруме схемотехнически сложнее, чем весь ламповый цветной телевизор, которых я тоже починил за свою юность изрядно.
ChatGPT Вас подвёл. Осциллограмму на адресных линиях РУ5 в ZX Spectrum смотрят, в первую очередь, для проверки видеоконтроллера.
Darkness_Paladin
Не нужно. Назначение, функционал и распиновка очевидны из схемы.
Никогда не видел. Может и бывало такое, но я не видел. Всегда или квадратный 50Гц трансформатор с КРЕНкой во внешнем ящике, или тороидальник в общем корпусе. Мода на импульсники пришла уже в этом веке, когда мосфеты стали дешевле меди и железа, идущих на трансформатор.
Я им пользуюсь только в качестве умного калькулятора. Вы видите здесь какие-то вычисления? Их нет, значит ИИшкой я не пользовался.
Ну и да, я повторюсь: опыт ремонта древних ЭВМ у меня есть, но это не спектрумы, так что я не в курсе, зачем кто-то смотрел в спектрумах, да ещё конкретно в ленинградах, осциллограммы на РУ5.
Кстати, а как РУ5 связаны с видео??? в нормальном спектруме видеопамять (вернее, нижняя страница ОЗУ, адреса 16384-32767) собиралась на РУ6, а блок РУ5 (использовалась только верхняя половина чипов) отражался на верхнюю страницу, 32768-65535. Почему не использовали для верхней страницы 32-кбитные РУ4, как в оригинальном спектруме (ну, там конечно другие микрухи были, но таки на 32К) -- понятия не имею, не интересовался. Может, РУ4 были дефицитом, а может, у них характеристики были хуже, чем у пятых и шестых, хз.
пруф
Зачем такой изврат? А потому что нижняя страница ОЗУ была в приоритетном пользовании видеоформирователя: если проц пытался обратиться к ней, когда формирователь читает очередную строку, тот бил процу по рукам, типа, не мешай. Поэтому тайм-критикл код мог работать только из ПЗУ или из верхней страницы ОЗУ, при работе кода в нижней странице его тайминги плыли.
ptr128
ChatGPT снова Вас обманул )))
Например, для "Ленинграда" РУ5Д имели недостаточное быстродействие и компьютер с ними мог глючить. Как повезёт. С РУ5Б или РУ5В это было исключено.
И опять ChatGPT обманывает. Даже TEAC легко жрал до 20 Вт, так что просто трансформаторный БП начинал стоить неприлично дорого. А советские НГМД при разгоне с одновременным тестом головок и 25-30 Вт могли сожрать.
Импульсные БП в цветных телевизорах в СССР стали ставить ещё в самом начале 80-х. Тот же РТА-80 (несложно догадаться, когда он был разработан), который подключал к Синклеру в качестве принтера, тоже был с импульсным блоком питания.
Ещё раз, не верьте ChatGPT! Такая конфигурация была в оригинальном Спектруме и первых клонах, вроде "Львова" или "Дубны". А в Ленинграде РУ6 не было вообще, как и в подавляющем большинстве остальных клонах.
Да никому даже в голову не приходило тогда использовать RAM емкостью 4Кx1, когда уже были 64Кх1 РУ5 или хотя бы 16Кх1 РУ6.
Опять Вас обманули. Применялось весьма изящное решение с использованием сигнала регенерации (RESH) и буферизации данных в КП13, что позволяло выставлять WAIT на Z80 только в очень редких случаях. В более поздних клонах, на более быстродействующих РУ7, выставлять WAIT на Z80 вообще не требовалось.
randomsimplenumber
Тоже бином ньтона ;) Главные болячки тех самоделок - плохие пайки, КЗ и бракованные микроскемы. От КЗ помогает просто тыкать осциллографом в шину. Есть сигнал с четкими 0/1 - скорее всего ок. Нет сигнала - ищем пуговицу.
А почему не было книг по ремонту Спектрумов? Да потому что они не ломались ;) Там нет ничего мощного и сильногреющегося. Если работает - значит работает.
ptr128
Ошибка выжившего. В своё время я их ремонтировал десятками.
alcotel
Будет интересоваться - инженер разберëтся и поймëт, что потребуется. Невозможно выучить всë заранее. Главное, чтоб интерес не угас.
Да и не все истоки доступны. Мы, например, сейчас чисто эмпирически знаем, что сигнал нельзя передать быстрее скорости света.
Либо живëм с этим, и решаем инженерные задачи, либо двигаем науку дальше, если уж так разобраться хочется.
YuriPanchul Автор
В случае с микросхемами CMOS 4000 которые я использую для школьников, я помню что один выход может драйвить много входов, более чем достаточно. Хотя я могу ошибаться - это надо перепроверить. Если я ошибаюсь - можно использовать буфер cmos 4050.
d_nine
Выходы как и входы бывают ох как разные: где-то напряжения логических уровней разное, где-то нужна активная нагрузка и т.д. И надо понимать почему так, зачем так и как решать задачи стыковок разнородных серий. И вот внезапно уже и частоту сигналов надо учитывать и много чего ещё. Как мне кажется учить работать с железом надо именно детей постарше, где уже хотя бы школьный курс физики затронул базовые понятия (тока, напряжения, мощности), чтобы как раз перейти от "сухой" теории к практике. И любая железка в моем понимании лучше симулятора, так как для ребенка важен осязаемый результат, а не просто картинка на мониторе.
krote
так вот тем кто постарше и можно давать более подробные знания, а у автора стоит немного другая задача - увлечь и не отпугнуть. Дать осязаемые результаты, показать что это не так уж сложно, а для этого нужно чтоб кто-то эту сложность "скрыл".
gev
Абстрактные категории – и есть база!
d3d14
Тут вроде речь об американских школьниках.
YuriPanchul Автор
Я это разрекламировал преимуществено в русско-эмигрантских группа фейсбука, хотя пришли и пара индусов и один китайский школьник. Просто у меня на этом мероприятии будет стенд http://verilog-meetup.com , поэтому я и решил привлечь детей русских иммигрантов чтобы сделать это интереснее. Типа они там будут там стоять и показывать всякие проекты.
victor_1212
вероятно сейчас пришло время учить детей robotics, подобно Вашей программе, отдельно от всего основного, не по VEX как в школе, ближе к уровню книги Peter Corke "Robotics, Vision, Control ..." (адаптированной), это может быть супер интересно и полезно, не знаю есть ли люди способные это сделать, это настолько важно, что imho тянет на свою школу, подобную RSM
YuriPanchul Автор
Robotics - это, насколько я понимаю, в основном про программирование встроенных систем и system design. Интеграция микроконтроллеров, встроенных процессоров, датчиков, систем зрения. Цифровая логика тут может играть небольшую роль, как FPGA который обрабатывает данные от сенсоров и передает микроконтроллеру.
У меня другой фокус - выучить будущих проектировщиков компонент (процессоров, GPU, сетевых чипов) и пользователей FPGA (для ЦОС, обработки звука и видео).
victor_1212
вполне понимаю, случилось что немного про robotics пришлось посмотреть, там много всего, именно эта интеграция в центре внимания, движется вперед быстрей любой другой области мне известной