Планирование семинаров по электронике для школьников в Киеве и Новосибирске: транзистор, ПЛИС, микроконтроллер

Более 30 лет назад, в 1986 году, я участвовал во Всесоюзной Новосибирской Летней Школе Юных Программистов, где получил диплом 1 степени за разработку поддержки многозадачности в языке Си на компьютере MSX Yamaha. Тогда я написал на ассемблере Z80 обработчик прерывания по таймеру, в котором переключал контекст задач. Для времени и возраста было вполне. И вот теперь, в 2017 году, я решил поехать на ЛШЮП снова, но уже в качестве инструктора, и уже согласовал программу с организаторами. В процессе я познакомлю слушателей с некоторым инсайдом индустриальных проектов, в которых я участвую в Silicon Valley, в частности проекта чипа EyeQ5 для самоуправляемого автомобиля, который планируется для выпуска в 2020 году.

А еще до Новосибирска я решил съездить в Киев, где в том же 1986 году учился в физматшколе номер 145 (откуда меня собственно и отправили в Новосибирск). Но план 2017 года в Киеве еще не утвержден, он на стадии обсуждения, которое я предлагаю провести в комментариях.

4c9761f465e4bc90aeee4ae8b637f6f4.jpg
Кратко:

1. Недельный семинар для школьников в Киеве, с возможной датой в конце апреля. Введение школьников в электронику, используя микросхемы малой степени интеграции на макетной плате, с переходом на FPGA, микроконтроллеры и встроенные процессоры для IoT, все в виде breadboardable модулей. От младших школьников (для них только комбинационная логика на микросхемах малой степени интеграции) до старших школьников (для них последовательностная логика, языки описания аппаратуры и синтез). И для обычных школ, и для физматшкол. Работа с украинской компанией-партнером для создания наборов для школьников.

Табличка с проектом программы

2. Двухнедельная «мастерская» для школьников на знаменитой Летней Школе Юных Программистов в Новосибирске в второй половине июля. Предполагаемый материал включает материал, который готовится для семинара в Киеве, но с вариациями, например вместо FPGA Xilinx видимо будут FPGA Altera, а вместо набора от украинской компании будет использоваться похожий набор от российской компании. Кроме этого, так как в Новосибирске будет больше специально отобранных детей и вдвое больше времени, мы попробуем ввести некоторый продвинутый материал, в частности концепцию конвейерной обработки и конструирование простого процессора на FPGA.

Анонс: school.iis.nsk.su/lshyup-2017/masterskie-6

Сначала анонс в Новосибиоске:

http://school.iis.nsk.su/lshyup-2017/masterskie-6

Мастерская №1 «Мастерская архитекторов микросхем»
Мастер: Юрий Панчул

Цифровое железо, от логических элементов до собственного процессора

Хотите узнать, как проектируют микросхемы в современных устройствах — от телефона до космического корабля? Последние 25 лет это делают с помощью методологии логического синтеза кода на языках описания аппаратуры. Именно эту технологию мы выучим в нашей мастерской и применим для проектирования собственных устройств.

Мы начнем с трех ключевых кирпичиков цифровой электроники — логического элемента, тактового сигнала и D-триггера, памяти для одного бита информации. Для наглядности мы освоим их старомодным способом, соединяя проводами микросхемы малой степени интеграции на макетной плате.

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

Помимо упражнений с арифметическими блоками и конечными автоматами, мы попробуем построить простой процессор, похожий по микроархитектуре на процессор Mongoose-V внутри космического корабля New Horizons, который год назад пролетел мимо Плутона.

Заодно мы изучим немного программирования на ассемблере, концепцию прерываний, сравним свой процессор с промышленными микроконтроллерами и встроенными микропроцессора, вплоть до микропроцессора EyeQ5 для самоуправляемого автомобиля, который планируется для выпуска в 2020 году.

cadec1a9fc3c79f7696e9a2293aeb35e.jpg

Теперь может возникнуть вопрос:, а почему мастерская начинается с микросхем малой степени интеграции?

Именно это спросил у меня на днях Владислав Халамов из Российская ассоциация образовательной робототехники. Он посмотрел вот на такое видео, которое я снял у себя в саду:

и задал вопрос, на который я расписал Владиславу ответ:

44ba8cf96e0d5ed93a9cee3569881a99.png

Теперь пройдем шаг за шагом по программе возможного киевского мероприятия, которая является подмножеством мероприятия в Новосибирске. Начинается с транзисторов:

defad5229fe4761496e97cb93485ac68.png

28a1286340e6df6a7304fab3cff8662b.png

На фотографии слева доцент киевского университета КНУ Александр Барабанов, он расскажет про транзистор и физику. Справа Евгений Короткий, руководитель лаборатории Лампа киевского политеха КПИ, он расскажет про таймер 555:

92605abb1a0f23be5cf206019edb019e.jpg

Теперь переходим к комбинационной логике и арифметике:

32788f3881b751fce13df78c019cd475.png

Школьники получат индивидуальные задания со следующими микросхемами:

199722cee34a0921cd8d43aa99224f0b.png

И поэкспериментируют с логикой каждой, втыкая входы в 0 или 9V и рассматривая горит ли светодиод, подключенный к выходу:

a1d1779623f03f2ad3828ca6345eb0fb.jpg

Это упражнение можно усложнить, подсоединив кнопки. Заодно можно рассказать про подтягивающие резисторы (про резисторы для ограничения тока через светодиоды мы расскажем раньше):

9932e4ebec3978cfe2263d3c3623c859.jpg

После этого участники освоят двоичную арифметику и построят сумматор с микросхемами CMOS 4008:

9548d9b6e492fc9a4f130d935999b5b7.jpg

Теперь иы вернемся в XXI век и сделаем те же упражнения с логикой и арифметикой, но с микросхемами ПЛИС / FPGA. Для этого существует вот такой вставляемый в макетную плату модуль:

cc318bc4535529ce6d4dee02731f3f2c.jpg

a3068b3baf1a9fd66a4846e3ada141c1.png

Вот пара примеров кода на Verilog и синтезированного из него схем, которые прошиваются в ПЛИС. Из контрольных, которые будут использоваться во время семинаров (как минимум в Новосибирске, где будет больше времени для контрольных):

module top1
(
    input      a,
    input      b,
    input      carry_in,
    output reg sum,
    output reg carry_out
);

    reg p, q;

    always @*
    begin
        p = a ^ b;
        q = a & b;

        sum       = p ^ carry_in;
        carry_out = q | (p & carry_in);
    end

endmodule

993fffc4d65063a6e48f0a9a3a13d661.png

Если в Киеве возникнет N преподавателей, которые готовы совместно сделать обучающие материалы для школьников на основе этих FPGA модулей, то я готов им после семинара эти модули оставить. Но с условием, что они потом напишут статьи на Хабре и (если идет речь про образовательный пакет MIPSfpga) статью на сайте Imagination Technologies (пример 1, пример 2, пример 3, пример 4, пример 5):

4f7be733db696c13391a292f5ecad2c5.png

С последовательностной логикой важный момент — объяснение что такое и зачем нужен D-триггер. Это нагляднее делать с микросхемами малой степени интеграции:

Потом можно сделать сдвиговый регистр и счетчик — сначала с микросхемами малой степени интеграции, а потом на ПЛИС:

module shift_register
(
    input             clock,
    input             resetn,
    input             in,
    input             enable,
    output            out,
    output reg [15:0] data
);

    always @ (posedge clock or negedge resetn)
    begin
        if (! resetn)
            data <= 16'b0;
        else if (enable)
            data <= { in, data [15:1] };
            // data <= (data >> 1) | (in << 15);
    end
    
    assign out = data [0];

endmodule

8c6c03601193e8651e6af4e940a1b50c.png

Наконец, после схемотехники можно поговорить, как это те же самые действия (бегающие огоньки, работу с датчиками освещения) сделать не в схемотехнике / реконфигурируемом хардвере, а с помощью программирования микроконтроллеров / в софтвере:

2f36ff604d11db455901e1ca53c5c4a8.png

Для этого я использую вставляемый в макетную плату модуль с микроконтроллером Microchip PIC32MX, про который я расскажу в отдельном посте:

1a25d9a5138601c1a6c2a17a676c9a7f.jpg

Например бегающие огоньки, реализованные на нем программным образом, выглядят так:

void main (void)
{
    int n;
    
    TRISC = 0;  // Setting LEDs on breadboard as outputs connected to port C
    n     = 0x23;

    for (;;)
    {
        n = (n >> 1) | ((n & 1) << 7);
        PORTC = n << 2;
        delay (1000);
    }
}

Тоже вроде и код, но код на Верилоге и код на Си имеют разную природу — первый описывает схему, а второй — цепочку команд, инструкций процессора в парадигме машины фон-Неймана.

Также планируется использовать модуль LinkIt Smart 7688 с чипом от MediaTek, который может исполнять встроенный вариант Линукса под названием OpenWRT. К внешним устройствам с него можно обращаться как в стандартной Unix-овой парадигме open/read/write/close/ioctl, так и через библиотеку MRAA, которая пришла от Intel Edison и Galileo, и на Питоне:

87150f661387f2861b1f1d93d2fe8aab.png

Наконец можно провести и Хакатон:

309a2587fcfad7c7cfa8bdac0d041fa2.png

На нем младшие школьники могут делать проекты с микросхемами малой степени интеграции, а старшие — подсоединять к микроконтроллерам, ПЛИС и встроенным процессорам различные периферийные устройства, например сенсоры:

2be394508d37cf44b6ebfbdbdaccca9b.png

Кстати, Владислав Халамов из образовательно-роботической ассоциации с важностью внедрения ПЛИС согласился:

8e8a790eeca720e8aefd16907bd4dad3.png

Итого, что скажете, господа? Особенно интересует мнение преподавателей из Киева, так как план этого мероприятия еще не устаканился.

© Geektimes