?

Log in

No account? Create an account
А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Шарики за ролики не заедут? - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

А что если учить школьников одновременно ПЛИС-ам и микроконтроллерам? Шарики за ролики не заедут? [Feb. 12th, 2017|08:14 am]
Yuri Panchul
В последние семь лет ко мне неоднократно обращались преподаватели детских кружков с вопросом, что бы такое придумать для детей в области электроники, чтобы было 1) интересно 2) конвертировалось бы в будущую специальность и 3) давало бы что-нибудь качественно другое, чем уже устоявшиеся среди преподавателей лего-ардуины-и-разберри-паи.

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



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

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

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



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


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



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



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

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

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

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



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

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



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



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

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



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




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

День 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. Доделать предыдущие дни + лекция по всей электронной промышленности



Что вы думаете?

Согласен
6(35.3%)
Согласен, но перед логическими элементами я бы ввел и дискретные элементы — транзисторы итд
4(23.5%)
В целом согласен, но встроенный Linux — это имхо излишество
1(5.9%)
Я против, лучше пусть строго учатся Ардуино, добавляя датчики и актуаторы
0(0.0%)
Я против, лучше пусть строго учатся Raspberry Pi и Питону, добавляя датчики и актуаторы
0(0.0%)
Я против, Лего — необходимо и достаточно
0(0.0%)
Я не понимаю, чет так уж принципиально отличается программирование микроконтроллеров и ПЛИС
1(5.9%)
А не приведут ли данные увлечения к тому, что школьник не прочитает Анну Каренину и получит 2 по ЕГЭ?
1(5.9%)
У меня альтернативное предложение (написать в комментариях)
4(23.5%)
LinkReply

Comments:
From: realurix
2017-02-12 09:47 pm (UTC)
А про АЦП/ЦАП забыл? Или не знал?
(Reply) (Parent) (Thread)