Японські феї показують роботу master-slave тригера в новій манзі по цифровій електроніці

Зараз виходить російський переклад японської манги 2013 року про цифрові схеми, створеної Амано Хидэхару і Мэгуро Кодзі. Незважаючи на несерйозну форму викладу, суть цієї книжки дуже здорова. Наприклад, вона починає від стародавніх мікросхем малого ступеня інтеграції і швидко прив’язує їх до сучасної мови опису апаратури Verilog і програмованих логічних інтегральних схем (ПЛІС). Також манга чітко визначає навіщо потрібні комбінаційні і последовательностніе схеми, і дає уявлення про методи оптимізації.

Манга уникає багатьох помилок своїх попередників. Одну з таких помилок зробив Чарльз Петцольд у книзі «Код», яка вводила последовательностную логіку не на D-тригерах, керованих фронтом тактового сигналу (edge-triggered D-flip-flop), а на D-тригерах з роботою за рівнем (засувках, level-sensitive D-latch), хоча потім переключалася на правильні тригери. Ймовірно, помилка була пов’язана з тим, що Чарльз Петзольд, який прославився як автор підручників з програмування GUI Microsoft Windows, не був практикуючим розробником електроніки, і для нього засувки були «простіше», ніж тригери з фронтом. Проблема в тому, що засувки погано сумісні зі статичним аналізом затримок при логічному синтезі, головною технології проектування цифрових схем останніх 30 років. Системи на кристалі всередині гаджетів типу айфона в якості елементів стану в 99% випадках використовують D-тригери які перемикаються по фронту, а засувки використовують тільки в дуже спеціальних випадках. Давати новачкам будувати схеми на засувках — це означає вводити їх в оману.

У цьому сенсі манга краще ніж Петзольд. Ось як елегантно манга пояснює роботу двоступінчастого master slave D-тригера, керованого фронтом тактового сигналу. Це робиться з допомогою феї «Хі-хі-хі» та феї «Ха-ха-ха»:

Далі я виділяю свої коментарі синім кольором, щоб вони не зливалися з цитатами з манги:

Але почнемо по порядку. Манга про цифрові схеми починає з мікросхем, причому вона відразу згадує як про старі мікросхеми малого ступеня інтеграції, з декількома логічними елементами, так і сучасні, з мільйонами і мільярдами транзисторів:

Манга перевіряє роботу логічних елементів за допомогою простих і приємних для тінейджерів аналогій:

Навіщо взагалі згадувати мікросхеми малого ступеня інтеграції, які застаріли 50 років тому? Справа в тому, що незважаючи на поважний вік, вправи на макетної платі з такими мікросхемами — це інтуїтивний спосіб показати школярам, як працює логічний елемент. Для цього не потрібно встановлювати софтвер для моделювання або синтезу для ПЛІС. Все, що потрібно — це макетна плата, батарея 9 вольт, мікросхему, проводи, світлодіоди і кнопки:

Деякі викладачі шкільних гуртків вважають, що всі такі вправи потрібно замінити на Ардуїнов. Така думка виникла ще в 1970-1980-ті роки, коли в освіту прийшли мікроконтролери і вбудовані процесори. Типовий школяр 1988 року не міг витратити сотні тисяч доларів для виробництва на фабриці своєї мікросхеми, а старі мікросхеми малого ступеня інтеграції в реальних промислових вироби застосовувалися все рідше і рідше. Тому на цифрову логіку для школярів в той час махнули рукою і кинули всі сили на навчання програмуванню. Ось коментар на фейсбуці з описом такої думки в наші дні:

Однак 30 років потому все знову змінилося:

1. Спочатку у тому ж 1988 році з’явилася технологія проектування мікросхем за допомогою логічного синтезу, з коду на мовах опису апаратури — Verilog та VHDL.

2. Одночасно в 1980-е виникли програмовані логічні інтегральні схеми (ПЛІС) — матриці реконфігурованих логічних елементів, з допомогою яких можна коштувати цифрові схеми, просто змінюючи вміст конфігураційної пам’яті всередині ПЛІС.

Читайте також  Помилки програмістів про імена — з прикладами

3. У 1990-ті роки викладання HDL, логічного синтезу та ПЛІС увійшло в програми всіх кафедр електроніки західних університетів, хоча в Росії і Україні, з-за пост-перебудовного хаосу, цей процес був повільніше.

4. У 2000-х роках швидкість традиційних процесорів перестала рости, і маркетологи стали пророкувати фрагментацію ринку вбудованих процесорів (що і сталося — cloud, IoT), а також поява комбінацій з процесорів і спеціалізованих обчислювачів для різноманітних задач (що і сталося — спочатку швидка мобільна графіка, потім спеціалізовані чіпи для майнінг криптовалют, комп’ютерного зору й прискорювачів нейронних мереж).

5. Тепер, в 2010 роках, ціни на плати ПЛІС знизилися до рівня, коли вони стали доступні для школярів. Одночасно індустрія вимагає великої кількості нових інженерів для створення величезних мікросхем з нейромереж. Навіть якщо ви збираєтеся працювати все життя в програмуванні, для розуміння нових систем вам потрібно знати принципи роботи апаратури: комбінаційних і последовательностніх схем, кінцевих автоматів, таймінгу, конвеєрної обробки і т. д. Тоді ви зможете зрозуміти, чи варто обробляти дані звичайною програмою або апаратним блоком.

Так ось мікросхеми малого ступеня інтеграції дозволяють «помацати» хардверніе примітиви безпосередньо. Причому відразу після пояснення про схеми малого ступеня інтеграції манга вводить і мови опису апаратури, і ПЛІС:

Після опису логічних елементів манга показує, як побудувати корисну комбинаторную схему мажориторного голосування:

Потім ця схема оптимізується. На мій погляд, манга приділяє занадто багато часу комбінаторної оптимізації. Але варто пам’ятати, що мангу написали японці, а у них в культурі є принцип 切磋琢磨 (сесса такума) — полірування чогось (наприклад меча), поки він не стане ідеальним. Тому в манзі є оптимізація на основі здорового глузду, так і оптимізація на основі діаграм Карно. Логічний синтез мов опису апаратури робить такі оптимізації автоматично:

В манзі є і романтична схема тобто сцена:

Схему мажориторного голосування можна легко зібрати на мікросхеми малого ступеня інтеграції. При цьому можна посперечатися, що спостерігати комбінаторні елементи І-АБО-НЕ / AND-OR-NOT на макетної платі не дуже цікаво, так як булеву алгебру пояснюють і на звичайному уроці програмування. На це можна заперечити, що хоча І-АБО-НЕ можуть зрозуміти і 7-річні діти, але при спробі зрозуміти D-тригери деякі школярі натикаються на ментальний бар’єр. У цьому випадку наочна демонстрація стає більш цінною.

На жаль, D-тригери всередині ПЛІС школяр не може «помацати» руками безпосередньо. У ПЛІС їх десятки тисяч штук. На Ардуїнов такий об’єкт взагалі не виникає. А на платі з мікросхемою малого ступеня інтеграції D-тригер можна помацати ось так:

А ось як пояснює последовательностніе схеми і D-тригер манга. Зауважимо, що перекладач з японської використовував слово «послідовні» для перекладу «sequential», хоча в російській літературі по цифровій схемотехніці усталився термін «последовательностніе»:

Тут можна було б написати більш конкретно, що послідовні схеми, на відміну від комбінаційних, дозволяють повторювати дії і чекати події. Іншими словами, вони роблять комп’ютер «розумним». Без них з допомогою комп’ютера можна було б тільки обчислювати значення простих арифметичних виразів:

Дуже шкода, що манга нічого не розповідає про тимчасові затримки в комбмнационніх схемах і обчислення максимальної тактової частоти. Це можна було б вставити ось в цьому місці:

Я сподіваюся, що у цієї манги в Росії знайдуться продовжувачі, які зроблять якийсь мультфільм з Іваном Царевичем і Василиною Прекрасною, який би ввів затримки поширення і критичний шлях, наприклад, на основі інформації з підручника Харріс & Харріс. Ось відповідні слайди з додаткових матеріалів до підручника:

Читайте також  Як ми придумували набори дитячої технічної творчості

Ось слайд в прямій формі говорить, що зараз практично для всіх елементів стану використовується D-тригер [крім випадків, з якими початківці взагалі не стикаються, наприклад засувка для отримання стробіруємого тактового сигналу без імпульсної перешкоди в схемах для економії енергоспоживання — level-sensitive D-latch for glitch-free gated clock використовувані в low-power designs].

Згадаймо, що Петзольд для свого запровадження використовував D-засувки, що неправильно. Але в цьому місці робить помилки не тільки Петзольд. Я одного разу зробив пост в Живому Журналі ось з такою картинкою лічильника нижче суматора та D-тригера, там мені після цього один російський програміст зі штату Колорадо дві доби доводив, що лічильники простіше будувати на T-тригерах. Я йому казав, що він правильно запам’ятав зі свого дитинства 1970-х про T-тригери, але зараз у XXI столітті розробники айфонів будують лічильники з D-тригерів, тому що ситуація лічильника на T-тригерах, при якій сигнал даних використовується як тактовий сигнал, погано стикується з аналізом таймінгу в чіпах на мільярди транзисторів (якщо ви зі мною не згодні, прохання розбити моя думка з посиланнями на ASIC libraries від TSMC, Synopsys Design Compiler і т. д.):

Тепер ось вже знайома нам серія картинок про роботу двоступеневого (ведучий-ведений) D-тригера з феями:

З легко зрозумілою тимчасової діаграмою — дані записуються тільки у момент позитивного фронту D-тригера, решту часу вони ігноруються:

Тепер манга переходить до прикладу використання D-тригера для побудови найпростішого кінцевого автомата — пристрої для кидання електронної кістки. Чесно кажучи, від цієї частини книжки я не зовсім в захваті. Це скажімо так, вироджений кінцевий автомат, в якому стану ходять по колу, зупиняються одним бітом кнопкою «стоп». Якщо б у книзі прикладів автоматів було б кілька, то все б було ДОБРЕ, але ставити це як єдиний приклад — це неправильно. Він не показує весь клас задач, які можна вирішувати з допомогою кінцевих автоматів. Нижче я покажу, як би я це доповнив.

Діаграма станів 0-1-2-3-4-5:

Стану в двійковому представленні, які записуються в три D-тригера:

Комбінаторна схема, яка отримує новий стан з старого:

І нарешті, манга показує як спроектувати цю ж схему не з допомогою малювання мишкою на екрані, а з допомогою синтезу мови опису апаратури Verilog. Хоча цей код зовні схожий на код мови програмування типу Паскаль або Джави, але цей код має принципово іншу природу. Мета коду на верилоге — перетворитися на схему, з проводами і транзисторами. А код на мови програмування компілюється в ланцюжок інструкцій, нулів та одиниць, які зберігаються в пам’яті [зрозуміло, що і Verilog, і Java можуть інтерпретуватися + код на Verilog може перетворитися в нулі та одиниці для конфігурації ПЛИС + Java може бути странслирована в Verilog і теж стати схемою, але це деталі, які не сприяють початкового розуміння]:

Тепер як би доповнив приклад про кінцевий автомат я. Я б зробив більш інтерактивний приклад кінцевого автомата, наприклад використовуючи аналогію з так званою «Китайської кімнатою». Ось мій опис китайської кімнати:

У 1980-му році один з критиків штучного інтелекту Джон Сирл (John Searle) висунув елегантний аргумент, що отримав назву «китайська кімната». Припустимо, що в майбутньому з’явилася версія програми «Еліза»,яка говорить китайською мовою настільки добре, що китайці не змогли б відрізнити комп’ютер від людини. Тепер припустимо, що хтось переписав би цю програму в товстенну книгу з механічними інструкціями для людини – якщо бачиш ієрогліф A і до цього бачив ієрогліф B, то витягни з ящика ієрогліф C. Тепер посадимо якусь людину, яка не знає китайську мову, в закриту кімнату з цією книгою і буде просовувати йому під дверима таблички з ієрогліфами, що містять питання на китайському. Слідуючи механічним інструкцій з книги, людина буде знаходити в ящику і просовувати назад інші таблички з ієрогліфами. З точки зору зовнішнього спостерігача, кімната буде «розуміти» і «розмовляти» на китайському. Але хто ж є носієм цього розуму? Адже виконавець не розуміє китайський?

Читайте також  Вся правда про ОСРВ. Стаття #7. Nucleus SE: введення

Джон Маккарті і інші ветерани штучного інтелекту тут же заявили, що розум і навіть свідомість проявиться в «віртуальної особистості» або в «процесі», здійснюваної в цій кімнаті. Одним з елегантних аргументів проти Джона Сірлом висунули філософи Підлогу і Патриція Черчлэнд (Paul and Patricia Churchland). Як ми знаємо з фізики, стверджували Чйрчлэнді, світло – це електромагнітна хвиля. Припустимо, що якийсь скептик почне рухати рукою магніт, не побачить світла і начанет стверджувати, що світ неможливий. Насправді, щоб отримати світло, необхідно махати магнітом зі швидкістю 450 мільярдів помахів в секунду. Так і розумне свідомість, стверджували Черчлэнді, виникне в «китайській кімнаті», якщо виконавець буде досить спритний.

Цікаво, що український фантаст Анатолій Днєпров описав аналог “Китайської кімнати” ще в 1950-і роки в оповіданні “Гра”.

Так ось. Я для своїх власних лекцій та матеріалів придумав приклад, в якому finite state machine (FSM) у відповідь на послідовність з будь-якої кількості ієрогліфів «ведмідь» і «дерево», із завершальним ієрогліфом «наука» — видає послідовність ієрогліфів «Сибір». Це найпростіша «китайська кімната»:

Ось її діаграма станів:

З цієї діаграми пожно побудувати схему і реалізувати її на платі з ПЛІС.

Днями я використовував витяги з цієї манги Амано Хидэхару і Мэгуро Кодзі, коли читав лекцію по скайпу з Каліфорнії 150 студентам казанського Иннополиса. Студенти починають вивчати комп’ютерну архітектуру, і їм потрібно пробити бар’єр початкового нерозуміння цифрової логіки. Для цього манга дуже хороша, особливо якщо використовувати її в комбінації з підручниками типу Харріс & Харріс «Цифрова схемотехніка та архітектура комп’ютера».

Ось відео з цієї лекції:

Слайди для цієї і наступної лекцій можна скачати тут:

http://bit.ly/2018-01-25-verilog-1-innopolis-yuri-panchul

http://bit.ly/2018-02-01-verilog-2-innopolis-yuri-panchul

Тепер у багатьох читачів постів про ПЛИСі часто виникає питання: «А навіщо це треба, адже на Джаві робіт більше?»

На це можна відповісти: згідно сайту glassdoor, в Сан-Хосе, Каліфорнія, розробники цифрових схем цінуються дорожче, ніж розробники на Джаві:

А якщо читач скаже «А що мені Сан-Хосе? Я в Росії і мені в Сан-Хосе поїхати не загрожує», то можна привезти свіжий приклад, що молодята з Санкт-Петербурга взяли перше місце на інтеловскому конкурсі InnovateFPGA в Європі, після чого взяли друге місце на світовому фіналі в Сан-Хосе. Ось вони сидять в офісі Інтела в Сан-Хосе кілька днів тому. За те, що зробили проект на ПЛІС. Може і за проект на Джаві Інтел когось привіз в Сан-Хосе з врученням нагороди, але я особисто таких прикладів не знаю.

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

2 коментарі

  1. Денис сказав:

    Уникальный контент
    m.habr.com/post/422431

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *