Хабрахабр

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

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

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

Вот как элегантно манга объясняет работу двухступенчатого master slave D-триггера, управляемого фронтом тактового сигнала. В этом смысле манга лучше чем Петзольд. Это делается с помощью феи «Хи-хи-хи» и феи «Ха-ха-ха»:


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

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

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

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

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

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

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

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

В 1990-е годы преподавание HDL, логического синтеза и ПЛИС вошло в программы всех кафедр электроники западных университетов, хотя в России и Украине, из-за пост-перестроечного хаоса, этот процесс был медленнее. 3.

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

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

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

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

На мой взгляд, манга уделяет слишком много времени комбинаторной оптимизации. Потом эта схема оптимизируется. Поэтому в манге есть как оптимизация на основе здравого смысла, так и оптимизация на основе диаграмм Карно. Но стоит помнить, что мангу написали японцы, а у них в культуре есть принцип 切磋琢磨 (сесса такума) — полирования чего-то (например меча), пока он не станет идеальным. Логический синтез языков описания аппаратуры делает такие оптимизации автоматически:

В манге есть и романтическая схема то бишь сцена:

При этом можно поспорить, что наблюдать комбинаторные элементы И-ИЛИ-НЕ / AND-OR-NOT на макетной плате не очень интересно, так как булеву алгебру объясняют и на обычном уроке программирования. Схему мажориторного голосования можно легко собрать на микросхемах малой степени интеграции. В этом случае наглядная демонстрация становится более ценной. На это можно возразить, что хотя И-ИЛИ-НЕ могут понять и 7-летние дети, но при попытке понять D-триггеры некоторые школьники натыкаются на ментальный барьер.

В ПЛИС их десятки тысяч штук. К сожалению, D-триггеры внутри ПЛИС школьник не может «пощупать» руками непосредственно. А на плате с микросхемой малой степени интеграции D-триггер можно пощупать вот так: На Ардуино такой обьект вообще не возникает.

Заметим что переводчик с японского использовал слово «последовательные» для перевода «sequential», хотя в русской литературе по цифровой схемотехнике устоялся термин «последовательностные»: А вот как объясняет последовательностные схемы и D-триггер манга.

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

Это можно было бы вставить вот в этом месте: Очень жаль, что манга ничего не рассказывает про временные задержки в комбмнационных схемах и вычисление максимальной тактовой частоты.

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

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

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

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

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

Честно говоря, от этой части книжки я не совсем в восторге. Теперь манга переходит к примеру использования D-триггера для построения простейшего конечного автомата — устройства для бросания электронной кости. Если бы в книге примеров автоматов было бы несколько, то все бы было OK, но ставить это как единственный пример — это неправильно. Это скажем так, вырожденный конечный автомат, в котором состояния ходят по кругу, останавливаемые одним битом — кнопкой «стоп». Ниже я покажу, как бы я это дополнил. Он не показывает весь класс задач, который можно решать с помощью конечных автоматов.

Диаграмма состояний 0-1-2-3-4-5:

Состояния в двоичном представлении, которые записываются в три D-триггера:

Комбинаторная схема, которая получает новое состояние из старого:

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

Я бы сделал более интерактивный пример конечного автомата, например используя аналогию с так называемой «Китайской комнатой». Теперь как бы дополнил пример про конечный автомат я. Вот мое описание китайской комнаты, удаленное редактором из моей статьи десятилетней давности в журнале The New Times (этот журнал не только про политику, в нем бывает и популярная технология):

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

Одним из элегантных аргументов против Джона Сирла выдвинули философы Пол и Патриция Чёрчлэнд (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 в Европе, после чего взяли второе место на мировом финале в Сан-Хосе. А если читатель скажет «А что мне Сан-Хосе? За то, что сделали проект на ПЛИС. Вот они сидят в офисе Интела в Сан-Хосе несколько дней назад. Может и за проект на Джаве Интел кого-то привез в Сан-Хосе с вручением награды, но я лично таких примеров не знаю.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»