Обновить

Популяризаторство средневековой музыки и книга «Код» виндусоведа Чарльза Петзольда

Время на прочтение3 мин
Охват и читатели12K
Всего голосов 11: ↑9 и ↓2+12
Комментарии12

Комментарии 12

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

Потренируюсь в подаче. Например у Петзольда (как и во многих курсах за последние 50+ лет) D-триггер объясняют через SR-защелку, D-защелку, JK-триггер, master-slave итд - у Петзольда на это уходит 30 страниц. Которые местами написаны очень мутно, например пассаж про разницу между level-sensitive и edge-sensitive D-триггер. И потом еще столько же страниц про использование D-защелок и D-триггеров, причем только для банальных действий типа накопления результатов сложения.

Я объясняю это в 5 пунктов и 5 минут упражнений с платой:

  1. D-триггер - это устройство, которой помнит 1 бит информации в течение 1 такта. Иными словами, минимальный элемент состояния.

  2. Такт - это период тактового сигнала, по английски clock. Clock меняется 0101 с фиксированной частотой.

  3. Запись в D-триггер, через вход D, происходит в начале такта, когда clock меняется с 0 в 1. После записи D-тригер можно читать в любой момент в течение такта - на его выходе Q будет стоять значение записанное в начале такта.

  4. Любые изменения входа D посередине такта будут игнорироваться.

  5. Из смеси комбинационного логики И/ИЛИ/НЕ и D-триггеров можно строить схемы, результат в которых зависит не только от текущих входов, но и предистории. В частности строить выполнятели итеративных алгоритмов.

Далее каждый ученик получает микросхему CMOS 4013 и уже собранный генератор тактового сигнала на основе микросхемы 555, настроенный на частоту около 0.5 герц (период тактового сигнала около 2 секунд). Он исследует как информация запоминается во внутренее состояние D‑триггера во время положительного фронта тактового сигнала. Вход D с кнопки, CLK выводится на светодиод, Q выводится на светодиод. Ученик видит, что изменения входа внутри такта игнорируются.

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

Обращаю внимание что для моего объяснения функции и использования D-триггера - для него D-защелка итд вообще не нужны. D-защелку нужно показать только через год или два, уже студенту освоившему все микроархитектурные конструкции, когда пойдет речь о трюках для экономии энергопотребления и будет нужен medium-grain clock gater. До этого она только сбивает с толку.

Потренируюсь в подаче.

D-триггер - это устройство, которой помнит 1 бит информации в течение 1 такта. Иными словами, минимальный элемент состояния.

Вот тут как развидны особенности вашей подачи, которые плохо подходят для человека, начавшего свой путь в электронике с аналоговых схем, вроде меня или (полагаю) Петцольда (у нас тут его фамилию почему-то принято озвучивать по правилам немецкого языка). Так вот, в мире аналоговых схем нет обязаттельных тактовых генераторов, цифровые схемы, реагирующие на уровни, для человека с аналоговым опытом были более естественны, а схемы, срабатывающие по фронту, были отдельной магией. Однако нужно ли учить студентов сейчас аналоговым основам цифровой электроники, или этот уровень абстракции можно пропустить - как при обучении программированию пропускают уровень микроархитектуры процессора и прочих микросхем, а то и ISA с ассемблером - за это я говорить не возьмусь, вам, как преподавателю, виднее. Ну, а на уровене абстракций чисто цифровой схемотехники изучать D-защелки (ЕМНИП в СССР это называлось “тригеры, срабатывающие по уровню”), наверное, действительно не нужно, опять же вам вижнее - вы преподаватель, а я нет. Но вот свое предположение, почему объяснение построено у Петцольда именно так - что это обусловлено причинами историческими, - я рискнул изложить.

PS А висящий в воздухе вход про который можно считать что он 0 - это нормально для схемотехники TTL: если посмотреть принципиальную схему той же 155ЛА3 (в девичестве 7400) видно, что обрыв в цепи второго эмитера входного транзистора (он там двухэмитерный - в рассыпухе это не встречалось, но на кремнии такую структуру сделать несложно) ни на что не влияет. И при аналоговом включении 155ЛА3 второй вход тоже можно было просто бросить в вохдухе - а из 155Ла3 получались целых 4 штуки неплохих - недорогих, компактных и довольно широкополосных - усилителя с коэффициентом усиления по напряжению ЕМНИП в районе 40, что по советской тогдашней бедности (не в каждом городе был “Пионер” на Горького, как в фильме про Ивана Васильевича) было весьма неплохо.

Моя цель - привести школьника к микроархитектурно нетривиальным схемам, чтобы он мог их спроектировать и построить руками. А потом пересесть с них на SystemVerilog и FPGA, то есть привязать к современному взрослому проектированию.

Round-robin arbiter, конечные автоматы для распознавания последовательностей ("кодовый замок"), вычислители собирающие аргументы приходящие в разное время с помощью FIFO - все это можно построить на микросхемах малой степени интеграции.

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

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

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

Именно, это просто вот такая 50-летняя традиция. Она мешает в современных обстоятельствах, когда надо быстро (пока не закончилось полугодие или пока у детей есть внимание) пересадить на верилог + FPGA, а также потом объяснить всякие конечные автоматы, конвейеры и FIFO.

Про TTL спасибо.

Ну, я от это области сечас далек (и намного дальше, чем в своей радиолюбительской молодости), поэтому даже не буду грузить окружающих своим ценным мнением, что как надо делать.
Но вот под аналоговой частью я имел в виду несколько другое - не обучение использованию новых и популярных схем, а самую что ни на есть базу про то, как работают цифровые элементы. А это IMHO может пригодиться, когда в конкретном случае в абстракции цифровой схемы внезапно обнаружится дырка, и придётся глядеть через нее на уровень ниже - “иголки” там ловить и т.п. Без понятия, насколько это сейчас надо, но даже у меня в моей более чем небогатой практике (правда, меня никто не учил - ни хорошему, ни плохому) был случай, когда делитель на 10 из 155-й серии почему-то делил на 7 (подозреваю, что из-за нестабильности питания или перекрестных наводок: я тогда не стал разбираться, ибо ни желания доделать схему до конца, ни хорошей измерительной аппаратуры для этого не было). И тем более совершенно не уверен, что всему этому стоит учить студентов (а тем более - детей).

PS А книгу Петцольда по программированию в Windows я помню. Мрак и ужас, но ничего другого-то не было. И помню, каким лучом света стала даже не слишком изолирующая от этих деталей Object Windows Library из Borland C++. Ну, а сейчас (и уже давно, как минимум - с появления Delphi) всё это имеет только чисто исторический интерес.

Поясню, почему так случается. Заметьте, что авторы подобных книг -- программисты/системные программисты/писатели операционных систем.

Книги типа "Код" Петцольда, "Архитектура компьютера" Танненбаума (которую Вы тоже как-то тут критиковали), как и "Компьютерная архитектура. Количественный подход" Хеннесси и Паттерсона рассчитаны на более широкую аудиторию, чем малочисленные проектировщики цифровых устройств. Эти книги дают перспективу проектировщикам вычислительных систем (программистам, системным программистам и железячникам). Они расширяют контекст студентам-программистам, чтобы те не улетели в облака абстракций, а могли писать hardware-friendly софт и понимали, где в системе узкие места. Такие книжки дают представление, как проектировать эффективный на разных уровнях стек датацентров типа как у NVIDIA, Google, а не отдельные супер-сверх-быстрые GPU. Имхо, с точки зрения программистов тот же Харрис & Харрис слишком сосредоточен на деталях реализации и выцеживать из него общие принципы для программеров -- это пустая трата времени.

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

Так а кого читать-то?

Одна из фич книги Петзольда — он сначала вводит D‑защелки (level‑triggered D‑latch), комбинирует их с сумматорами и только потом вводит D‑триггер (D‑flip‑flop). Что «естественно» для программиста (Петзольд прославился в конце 1980-х как автор книги по программированию Windows), но не соотвествует реальному проектированию в современных электронных компаниях (99%+ элементов состояния — это D‑триггеры, а D‑защелки используются в основном для clock gaters (такая штука для экономии энергопотребления), очень редко для latch arrays и time borrowing (неактуально для новичков).

Вроде в этом утверждении есть логическая ошибка. Книжка не соответствует современным трендам, потому что когда она писалась в 1999-2000, тренды были другими. Поправьте, если ошибаюсь, в конце 90-х самые топовые, высокопроизводительные процессоры (например, DEC Alpha) разрабатывались широко опираясь на D-latch и full custom design. Позже простота разработки и изготовления, развитие EDA и прочие вещи перевесили и со временем все стали использовать D-триггеры.

Я в этой индустрии с 1995 года, когда я познакомился с верилогом в Mentor Graphics, и я могу сказать совершенно определенно - и альфа, и latch-based design были тогда экзотикой. Работал с такими компаниями как Hitachi в 1998 и дизайном от Motorola в 1999 и там все было d-flip-flop based. В d-latch based дизайне вы теряете половину такта - зачем?

я могу сказать совершенно определенно - и альфа, и latch-based design были тогда экзотикой

Если экзотика, тогда ошибка отменяется.

В d-latch based дизайне вы теряете половину такта - зачем?

Из попадавшихся кейсов Alpha, PowerPC, Intel P6 выходит, что тогда в индустрии некоторое время latch-based design был жизнеспособным способом выжать самую высокую тактовую частоту. Может это было историческое сочетание факторов.

Зачем объяснять неправильными книжками про Виндовс начальственное самодурство и маниловщину? Кто доускает этих людей к работе в очистке?

Проблема не Петцольдом и Харрисами, а с Гоголем, Гончаровым и Булгаковым.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации