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

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики?

В последние семь лет ко мне неоднократно обращались преподаватели детских кружков с вопросом, что бы такое придумать для детей в области электроники, чтобы было 1) интересно 2) конвертировалось бы в будущую специальность и 3) давало бы что-нибудь качественно другое, чем уже устоявшиеся среди преподавателей лего-ардуины-и-разберри-паи.

Подход, который я хотел бы предложить в этой заметке — это конструирование устройств на основе макентной платы, используя примитивы разных уровней абстракции. Прежде чем описать суть предложения, я приведу аналогию. Допустим, нам нужно исследовать местность между городом A и городом B. Из A в B можно проехать на автомашине, рассматривая окрестности дороги. Но еще лучше — проехать не только на автомашине, но и потом проплыть тот же маршрут на подводной лодке, пролететь его на самолете, походить в некоторых местах пешком, а также прорубить кусок шахты на участке между городами на проходческом комбайне. По ходу дела ученик получит не только опыт вождения автомобиля, но и представление о структуре недр, морской экосистеме, нравах жителей и общей карте местности.

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики? - 1

Теперь суть предложения. Ученик за несколько дней выполняет серию простых электронных проектов, которые имеют сходную функциональность, но используют в качестве строительных кубиков разные объекты, в том числе:

1. Микросхемы малой степени интеграции, по несколько логических элементов в каждой
2. Программируемые логические интегральные схемы, десятки тысяч ячеек с изменяемой логической функцией
3. Микроконтроллеры
4. Встраиваемые процессоры

В качестве базового пособия для таких упражнений используются избранные места из популярного учебника Харрис & Харрис, доступного на русском языке, в том числе в виде официально бесплатной электронной версии ( habrahabr.ru/post/306982 [1] ).

Замечу, что (3) перекрывается по тематике с ардуинами, а (4) — с расберри пай. (1) уже вводилось в истории для обучения школьников, но имеет ограниченную полезность без соединения с другими уровнями через (2). Именно (2) и сравнение (1)-(2)-(3) отличает это предложение от уже используемых. Все четыре типа кубика могут монтироваться на одну и ту же монтажную плату, но имеют разную разную природу, требующую разные методы для работы с ними.

Макетная плата для монтажа в гнезда (breadboard) — это простое устройство для прототипирования электронных схем без паяльника. Оно включает сотни гнезд, часть из которых уже соединена металлическими полосами, с возможностью дополнительных соединений перемычками (jumpers). Уже в 1970-е годы некоторые педагоги обнаружили, что детям интересно строить на таких платах разного рода поделки на основе микросхем малой степени интеграции: мигающие огоньки, счетчики, сирены и т.д. Технику из Калифорнии по имени Gary A. Gibson удалось внедрить это в школах (см. описание одного их таких наборов на www.dropbox.com/s/xy4k8s5652i1iy7/TronixBook2.pdf?dl=0 [2] ). Вот пример такой схемы:

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики? - 2

Внутри каждой такой микросхемы всего несколько логических элементов:

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики? - 3

Наборы Гибсона являются практических идеальными, чтобы «потрогать» и ввести такие концепции как логический элемент (gate — AND, OR, NOT), триггер (D-flip-flop) и сигнал тактовой частоты (clock). Сейчас, в 21 веке, эти наборы с небольшими модификациями продолжает продавать компания ETron Circuit Labs [3].

При этом уже в 1980-е годы интерес к таким наборам упал, так как в промышленности стали использовать больше микроконтроллеров, чем микросхем малой степени интеграции, а логически плавный переход от индивидуальных логических элементов к микроконтроллерам через проектирование микросхем был однозначно недоступным для школьников.

Одновременно в тех же 1980-х годах возникли две технологии, которые спустя 20 лет изменили ситуацию снова. Одна из таких технологий — это логический синтез из языков описания аппаратуры (Hardware Description Language — HDL), используя уровень регистровых передач (Register Transfer Level — RTL). Другая технология — программируемые логические интегральные схемы (Field Programmable Gate Array — FPGA), матрицы логических ячеек, функцию которых можно менять с помощью перепрошивки конфигурационной памяти. Последнее отличается от классического программирования, ибо в случае ПЛИС/FPGA мы строим схему, а не пишем цепочку инструкций программы.

Сейчас существуют недорогие ПЛИС/FPGA, платы с которыми которые можно вставлять в макетную плату. Теперь вместо физических соединений нескольких логических элементов перемычками (jumpers) школьник может строить схемы из десятков тысяч логических элементов меняя конфигурацию ПЛИС/FPGA. См. заметку Как начать разрабатывать железо, используя ПЛИС — пошаговая инструкция [4]:

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики? - 4

Помимо простых конечных автоматов [5] и арифметических устройств школьник может построить, реконфигурируя такую микросхему, и простой микропроцессор — см. Глава 7 в Харрис & Харрис [1].

А недавно компания Digilent (отделение National Instruments) выпустила еще один вставляемый в макетную плату модуль Cmod A7-35T [6] с ПЛИС бОльшей емкости Xilinx Artix-7, в который можно поместить и используемое в промышленности микропроцессорное ядро MIPS microAptiv UP, базовая конфигурация которого доступна бесплатно в виде пакета MIPSfpga [7] (но это уже не для школьников, а скорее для студентов вузов):

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики? - 5 [6]

Наконец, в макетную плату можно вставить и модуль с микроконтроллером [8], который можно программировать на C. Тем самым можно сравнить программирование встроенного процессора с построением схемы в ПЛИС-е в предыдущем упражнении. Как программировать подобный микроконтроллер, я описал в свое время в заметке Как начать работать с Microchip PIC32. Часть первая [9].

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики? - 6 [8]

Замечу, что для программирования Microchip PIC32 можно использовать и Ардуино-подобную систему разработки MPIDE, и профессиональную среду MPLAB X, в которой можно например использовать RTOS-ы. С моей точки зрения, разница в уровне сложности для начала работы с MPIDE и MPLAB X недостаточно велика, чтобы сначала учить MPIDE, а потом – MPLAB X. Если в конечном итоге человек собирается получить профессиональные навыки, лучше сразу начинать с MPLAB X. Если же целью является скажем научить программированию микроконтроллеров гуманитариев, то лучше использовать MPIDE и на нем оставаться.

Наконец, в макетную плату можно вставить и модуль со встроенным процессором, на котором может работать версия Линукса — OpenWrt [10]. Помигать лампочками на компьютере со встроенным Линуксом — тоже неплохое упражнение, чтобы понять, какие дополнительные уровни это добавляет (драйверы, kernel/user mode и т.д.):

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики? - 7 [10]

Под конец, школьнику можно показать лекцию про всю последовательность проектирования и производства микросхем от спецификации до микросхемы на фабрике. Это свяжет его упражнения с ПЛИС/FPGA на недорогой студенческой плате с массовым производством. Для этого можно сделать научно-популярную выжимку из курса Специализированные интегральные схемы наноуровня [11]:

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Более объемная картина мира или шарики за ролики? - 8 [11]

Итого, если бы у меня стояла задача прокатить школьников галопом по Европам за несколько дней, то я бы делал это так:

День 1 до обеда. Сборка комбинационных схем на макетной плате с микросхемами малой степени интеграции:

1.1 Упражнение с логическими элементами AND, OR, NOT
1.2 Укражнение с сумматором и 7-сегментным индикатором

День 1 после обеда. Сборка последовательностных схем на макетной плате с микросхемами малой степени интеграции:

1.2 Упражнение с генератором тактового сигнала 555 и D-триггером
1.3 Упражнение с счетчиком, бегающими огоньками и 7-сегментным индикатором

День 2. Повторение дня 1, но с Verilog и FPGA

День 3. Повторение дня 1, но с микроконтроллером и на C

День 4. Повторение дня 1, но с встроенным процессором и Линуксом OpenWrt

День 5. Доделать предыдущие дни + лекция по всей электронной промышленности

Автор: YuriPanchul

Источник [12]


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

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

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

[1] habrahabr.ru/post/306982: https://habrahabr.ru/post/306982/

[2] www.dropbox.com/s/xy4k8s5652i1iy7/TronixBook2.pdf?dl=0: https://www.dropbox.com/s/xy4k8s5652i1iy7/TronixBook2.pdf?dl=0

[3] ETron Circuit Labs: https://www.etroncircuit.com/digital-theory

[4] Как начать разрабатывать железо, используя ПЛИС — пошаговая инструкция: https://habrahabr.ru/post/250511/

[5] простых конечных автоматов: 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/06_exercises/exercise_3_counter_shift_fsm.html

[6] Cmod A7-35T: http://store.digilentinc.com/cmod-a7-breadboardable-artix-7-fpga-module/

[7] пакета MIPSfpga: http://www.silicon-russia.com/2016/01/04/mipsfpga-how-to-start/

[8] модуль с микроконтроллером: http://store.digilentinc.com/chipkit-cmod-breadboardable-mx-microcontroller-board/

[9] Как начать работать с Microchip PIC32. Часть первая: http://panchul.com/2013/02/27/microchip_pic32_1

[10] модуль со встроенным процессором, на котором может работать версия Линукса — OpenWrt: https://www.seeedstudio.com/LinkIt-Smart-7688-p-2573.html

[11] Специализированные интегральные схемы наноуровня: http://www.edunano.ru/course_page/%D0%A1%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D1%81%D1%85%D0%B5%D0%BC%D1%8B%20%D0%BD%D0%B0%D0%BD%D0%BE%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F/6362029318377586617#

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