- PVSM.RU - https://www.pvsm.ru -

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске

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

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 1

Кратко:

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

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

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

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

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

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

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

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

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

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

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

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

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 2

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

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

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 3 [8]

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 4

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 5

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 6

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 7

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 8

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 9

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 10

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 11

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 12

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 13

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

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 14

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 15

С последовательностной логикой важный момент — объяснение что такое и зачем нужен 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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 16

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 17

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 18

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

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, и на Питоне:

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 19

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 20

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

Между транзистором и Ардуиной: планирование семинаров по электронике для школьников в Киеве и Новосибирске - 21

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

Автор: YuriPanchul

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/251095

Ссылки в тексте:

[1] Всесоюзной Новосибирской Летней Школе Юных Программистов: http://school.iis.nsk.su/

[2] программу: http://school.iis.nsk.su/lshyup-2017/masterskie-6

[3] физматшколе номер 145: http://www.lic145.kiev.ua/

[4] украинской компанией-партнером: http://www.practelectronics.com/index.php/o-nas

[5] Табличка с проектом программы: https://docs.google.com/spreadsheets/d/1aNNfxt6MTyT4ngKpNgkVaYcPGK3HbrTIFARxQQvo3MU/pubhtml

[6] похожий набор от российской компании: http://shop.cyberphysica.ru/collection/education

[7] Владислав Халамов: https://www.facebook.com/profile.php?id=100001722243830

[8] Image: https://www.facebook.com/yuri.panchul/videos/vb.739563391/10154735661553392

[9] контрольных: http://www.silicon-russia.com/public_materials/2016_11_04_one_day_mipsfpga_connected_mcu_materials_public_for_the_website/06_optional_introductory_materials_if_necessary_for_the_audience/08_quizes/quiz_4_synthesis_1.html

[10] пример 1: https://community.imgtec.com/forums/topic/sdram-support/

[11] пример 2: https://habrahabr.ru/post/322442/

[12] пример 3: https://habrahabr.ru/post/323360/

[13] пример 4: https://www.imgtec.com/blog/ukraine-mips-fpga-hackathon-success/

[14] пример 5: http://zatslogic.blogspot.com/2016/01/using-mips-microaptiv-up-processor.html

[15] Источник: https://geektimes.ru/post/287396/