Хроники занятий микросхемами с русскими школьниками не в замке во Франции, а в хакерском клубе в Калифорнии

от автора

Продолжаем хроники занятий со школьниками на Verilog Meetup в Hacker Dojo. Цель занятий — собрать за месяц несколько демонстраций, которые показать на городском мероприятии Technology Showcase в Mountain View. Для тех кто не в курсе, Маунтин-Вью — это такой город, в котором я однажды увидел на улице Сергея Брина, выходящего из-за угла с озабоченным лицом.

Как я уже писал, на первое занятие, на которое я ожидал придет человека три — пришло двадцать, и их не было никакой возможности обслужить. На второе занятие пришло десять: трое русских мальчиков с предыдущего занятия, трое новых русских мальчиков и девочка, китайский мальчик и их родители. Также зашел соратник Виктор и один товарищ на пять минут посмотреть. Под конец зашел американец, который советуется со мной по поводу FPGA. Он раньше работал в NASA JPL в Пасадене и похвастался мне что снимки его трансляций с Марса до сих лежат на сайте Института космических исследований Российской академии наук.

В процессе дискуссии возникли три возможных проекта:

1). Девочке стало интересно, как из логических элементов, в частности XOR, строится сумматор. Я объяснил идею полусумматора однобитных чисел с переносом (XOR для суммы, AND для переноса), сказал что из цепочки таких блоков можно построить каскадный (ripple carry) сумматор, а потом оптимизировать его в виде carry-lookahead adder, сумматора с ускоренным переносом. А также сказал что сумматоров есть десятки типов, и есть люди, которым платят за создание арифметических блоков зарплату всю жизнь. Мы может построить на микросхемах малой степени интеграции и потом в FPGA и ASIC (TinyTapeout) следующее:

  1. Полусумматор на микросхемах CMOS 4070 (2-input XOR) и 4081 (2-input AND).

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

  3. 2-битный сумматор с переносом из (1) и (2).

  4. 4-битный сумматор на микросхеме CMOS 4008.

  5. Каскад из двух CMOS 4008 для сложения восьмибитных чисел.

  6. Демонстрацию побитового сложения с помощью последовательностного сумматора CMOS 4032 и сдвиговых регистров.

Я использовал вопрос (6) на верилоге для собеседований студентов на интерншип и обнаружил что есть индивидуалы, которые не могут написать его сходу после 4 или 6 лет в вузе (Чем они там занимаются? Впрочем это тема другого поста).

Ниже скриншот полного сумматора из учебника Dally и Harting, который используют в Стенфорде.

2). Одному мальчику стало интересно, как хардвером на FPGA можно распознать звуки (ноты и песни). Я объяснил, что можно:

  1. Принимать уровень звука с помощью MEMS-микрофона INMP411 по протоколу I2S.

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

    Тут мальчик спросил меня “но ведь на гитаре же так не получится”, на что я ответил “да, для аккордов на гитаре нужно преобразование Фурье, и это уже вузовская, а не школьная математика”.

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

Тут мальчик сказал что ему вообще больше интересны длины волн не звуков, а световых лучей. “То есть цвет”, сказал я. Хорошо, вот и проект — я принесу две камеры и за месяц можно сделать следующие демо:

  1. Уровень освещенности с помощью FPGA и датчика PmodALS с протоколом SPI.

  2. TangNano 4K и/или 9K с камерой OV2640.

  3. Какая-нибудь альтеровская FPGA плата с камерой OV7670.

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

Еще один мальчик начала на митапе собирать на макетной плате схему с процессором Z80. Я сообщил что тоже работал с Z80 на Новосибирской Летней Школе Юных программистов в возрасте 15 лет в 1986 году, где сделал переключение контекстов по прерыванию от таймера, короче многозадачность на ПЭВМ MSX Yamaha. Я также знаком с создателем Z80 Федерико Фаджином, который был одним из инвесторов в мой стартап в 2000 году. Короче на эту тему есть следущие мысли:

  1. Показать на Technology Showcase собранный таким образом Z80. Кстати если бы было больше времени, можно было бы интегрировать с Z80 видеопроцессор TMS9918 и запустить на нем игру Knightmare.

    У меня в 1987 году был конфликт по поводу этой игры с гопниками в киевском микрорайоне Теремки. Они хотели играть в нее в подшефной школе Института Кибернетики, а я закрыл комнату с Ямахами. Так они потом собрались меня побить как в сериале “Слово пацана”, а я их заболтал, дошел с ними до остановки, вбежал в автобус Икарус, двери закрылись и пацаны остались ни с чем.

  2. Показать на FPGA работу процессора Y80, синтетического процессора на верилоге, совместимого с Z80. Этот процессор создал бывший сотрудник Zilog по имени Монте, который сейчас пенсионерствует в городе Ливермор, где с ним можно встретится и сходить на ланч. Монте онписал его в книжке Microprocessor Design Using Verilog HDL by Monte Dalrymple, и я давно ищу кого-нибудь, кто бы интегрировал этот процессор в инфраструктуру образовательных примеров в Basic Graphics Music ( https://github.com/yuri-panchul/basics-graphics-music ), который используется в ~30 университетах.

  3. Узнать у юноши, не хочет ли он сделать проект по RISC-V, с прерываниями, многозадачнойстью, демонстрацией конвейера итд. Это тоже нужно для Basics-Graphics-Music.

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

Следующее заседание пройдет в воскресенье с 11.00 до 14.00 в Hacker Dojo, 855 Maude Ave, Mountain View, California. См. https://verilog-meetup.com/ для дополнительной информации.

ссылка на оригинал статьи https://habr.com/ru/articles/1054982/