Подход, который я хотел бы предложить в этой заметке — это конструирование устройств на основе макентной платы, используя примитивы разных уровней абстракции. Прежде чем описать суть предложения, я приведу аналогию. Допустим, нам нужно исследовать местность между городом A и городом B. Из A в B можно проехать на автомашине, рассматривая окрестности дороги. Но еще лучше — проехать не только на автомашине, но и потом проплыть тот же маршрут на подводной лодке, пролететь его на самолете, походить в некоторых местах пешком, а также прорубить кусок шахты на участке между городами на проходческом комбайне. По ходу дела ученик получит не только опыт вождения автомобиля, но и представление о структуре недр, морской экосистеме, нравах жителей и общей карте местности.
Теперь суть предложения. Ученик за несколько дней выполняет серию простых электронных проектов, которые имеют сходную функциональность, но используют в качестве строительных кубиков разные объекты, в том числе:
1. Микросхемы малой степени интеграции, по несколько логических элементов в каждой
2. Программируемые логические интегральные схемы, десятки тысяч ячеек с изменяемой логической функцией
3. Микроконтроллеры
4. Встраиваемые процессоры
В качестве базового пособия для таких упражнений используются избранные места из популярного учебника Харрис & Харрис, доступного на русском языке, в том числе в виде официально бесплатной электронной версии. В бумажном виде эту книжку можно заказать здесь и здесь:
Замечу, что (3) перекрывается по тематике с ардуинами, а (4) — с расберри пай. (1) уже вводилось в истории для обучения школьников, но имеет ограниченную полезность без соединения с другими уровнями через (2). Именно (2) и сравнение (1)-(2)-(3) отличает это предложение от уже используемых. Все четыре типа кубика могут монтироваться на одну и ту же монтажную плату, но имеют разную разную природу, требующую разные методы для работы с ними.
Макетная плата для монтажа в гнезда (breadboard) — это простое устройство для прототипирования электронных схем без паяльника. Оно включает сотни гнезд, часть из которых уже соединена металлическими полосами, с возможностью дополнительных соединений перемычками (jumpers). Уже в 1970-е годы некоторые педагоги обнаружили, что детям интересно строить на таких платах разного рода поделки на основе микросхем малой степени интеграции: мигающие огоньки, счетчики, сирены и т.д. Технику из Калифорнии по имени Gary A. Gibson удалось внедрить это в школах (см. описание одного их таких наборов тут). Вот пример такой схемы:
Внутри каждой такой микросхемы всего несколько логических элементов:
Наборы Гибсона являются практических идеальными, чтобы «потрогать» и ввести такие концепции как логический элемент (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. Доделать предыдущие дни + лекция по всей электронной промышленности
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (160)
tormozedison
12.02.2017 11:28+4Выбрал второй вариант — про работу транзистора хотя бы в ключевом режиме надо рассказать. Подключение реле через транзисторный ключ — очень частая задача, и многие очень квалифицированные специалисты по МК и ПЛИС перед ней пасуют, так как «проходили мимо»… Про диоды тоже рассказать: как автоматическое переключение питания сделать при работе от двух источников, как транзистор диодом от самоиндукции реле защитить.
KonstantinSoloviov
12.02.2017 11:45+2Транзисторы нужны, хотя бы на простейшем понятийном уровне " подали — транзистор открылся/закрылся ".
Это даст законченную картину — логические элементы перестанут быть «магическими», а также нужные знания для осознанного соединения с реальностью — индикаторы, датчики и т.п.
ПЛИСы нужны хотя бы для понимая того, что и в микроконтроллерах все базовые элементы работают одновременно (физически), но структура такова, что работа производится последовательно и что микроконтроллер это условно говоря одна крайность, а ПЛИС — другая и между ними могут быть какие угодно промежуточные решения.
Почему 5 дней, имхо — крайне мало? Это ж как надо внимательно относится к отбору и степени погружения в сущности.
AlexanderS
12.02.2017 12:37+3Идея хорошая. Я её даже уже обдумывал) В рамках одного стартапа предлагалось использовать Digilent Cmod S6 (Spartan-6) для одного из обучающих проектов вместо Arduino Nano.
Проблема в том, что программирование на ПЛИС несколько отличается от программирования на Си. Если посадить обычного программера за HDL и объяснить ему, что код выполняется не последовательно, а параллельно, то этого будет мало. Хотя уже это будет являться поначалу проблемой — потребуется время на переосмысливания подхода к кодописанию. Если человек не понимает схемы, базовых занний цифровой схемотехники, то будет тяжело. Как объяснить человеку, что Data <= Data_ADC — это просто присваивание вне процесса и триггер под процессом без объяснения что такое триггер или регистр? Просто натаскать ученика «делай так» и «не делай так» не хочется.
По сути HDL — это так и сложно. Просто надо иметь знания о базовых вещах цифровой техники: что такое регистр, триггер, мультиплексор, дешифратор, память. Кирпичиков, на которых строится вся схемотехника — раз-два и обчёлся на самом деле) Это если не погружаться как именно устроены RS-триггеры, транзисторный уровень работы схемы и т.д. и т.п.
Я всё к чему. Да, можно научить через ПЛИС зажигать светодиод по кнопке, по сути «продёрнув» сигналы через регистры в ПЛИСе. Но это мало чем будет оличаться от написания кода на ардуине. А вся крутость ПЛИС — гибкость решений, высокие временные разрешения и скорость работы, фактическая свобода для назкоуровневого творчества, надёжность — она ведь окажется непонятой, нераскрытой. Тем более ещё и непростой: например, чтобы написать UART на HDL нужно всё же попариться, чем подключить просто библиотеку UART. А как оцифровать уровень внешнего аналового сигнала? Это ж не как в ардуине — прописал строчку и всё) Тут надо ставить АЦП, ножек мало, поэтому придётся какой-нибудь брать с SPI интерфейсом, этот SPI надо будет реализовать на HDL или использовать готовое IP ядро, но для такого использования IP наверняка потребуется лицензия. Ну, ладно — возъмём какой-нибудь параллельный АЦП, но данные наверняка пойдт на его тактах АЦП и, если схема в ПЛИСе работает на других тактах, то надо будет корректно переносить сигналы между разными клоковыми доменами — да тут начинающий инженер накосячить может)
Ещё момент — цена входа. Ардуины можно из Китая по 100-150р. выписыть. А платку вышеупомянутого ПЛИС мне пришло заплатить, в своё время, почти 10к и ждать 3 месяца. Разница очень существенна. А дешевыё ПЛИС очень маленькие по логике — с ними не очень интересно, хотя для простых задач вполне подойдут.
Как резюме. Идея-то хорошая. Но как к ней подступиться правильно не очень понятно. Понятно, что не нужно ставить задачи «всё и сразу». Но 5 дней — мне кажется это вообще ни о чём. Это кружок нужен с полноценным погружением. И хорошо отобранный контингент, которому будет это реально интересно.
Кстати, про Марсоход слышали? Интересный проект.YuriPanchul
12.02.2017 18:33-1*** Но это мало чем будет оличаться от написания кода на ардуине. А вся крутость ПЛИС — гибкость решений, высокие временные разрешения и скорость работы, фактическая свобода для назкоуровневого творчества, надёжность — она ведь окажется непонятой, нераскрытой. ***
Гибкость можно показать например с помощью проектиков с построением арифметических блоков — ведь даже операции типа извлечения квадратного корня в железе можно сделать или за один цикл с низкой тактовой частотой, или с конечным автоматом с высокой тактовой частотой, или конфейерным способом для реализации высокой пропускной способности устройства, или установлением нескольких блоков работающих параллельно.
Также можно продемонстрировать это же конструированием небольшого процессора — но это конечно более длинный проект со старшими школьниками.
Плата Марсоход у меня есть. Ее тоже можно было бы использовать, но она не втыкается в макетную платуAlexanderS
12.02.2017 18:56+2Не знаю… очевидность этой гибкости не всем может быть понятна. Для школьника гораздо более понятнее написать SQRT, чем вникать в численные методы и ряды и врят ли ему сильно принципиально как быстро загорится лампочка после загрузки значений по входам — через 60-80 нс, или десятки миллисекунд — на глаз это не сильно заметно) Реализовывать точную арифметику в ПЛИСе — оно всё не очень радостно и не от хорошей жизни обычно делается.
Как по мне, гораздо полезнее тогда было бы сделать драйвер для сервоприводов. Потому что в ардуине все напропалую используют библиотеки, а как оно на физическом уровне работет не всем очевидно. А тут надо будет нарисовать картинки, диаграммку, длиной счётчиков управляющие импульсы запрограммировать (раз, вроде, в 20 мс там надо импульсы определённой длительности вырабатывать). Потом на осциллографе показать эти картинки. Прикрутить управление и показать, что вот, когда импульсы на осциллограмме уменьшаются, то он в одну сторону крутится, когда увеличиваются — в другую. Тут тебе и картинки, и серва дрыгается и хоть какое-то понимание есть, что всё это делает именно твой код — на это надо особый упор делать. Мне кажется это ребёнку было бы интереснее, чем абстрактная ЦОС в ПЛИСе.
lingvo
12.02.2017 12:41+12Проголосовал про ЭГЕ и Анну Каренину, так как не понимаю, зачем вы пытаетесь сделать из школьников сразу системных архитекторов без полного усваивания базовых знаний. Тут бы с МК и программированием полностью разобраться, а вы им и электронику, и роботов и ПЛИС в одну голову — ПЛИС и МК это вообще как математика и литература.
Тем более даже знаний программирования МК отдельно хватит на то, чтобы ребенок нашел себе профессию.
Я за свою жизнь 10 лет работал на МК и 10 лет после этого на ПЛИС и только сейчас могу решать, что больше подходит для решения конкретной задачи, зная возможности и недостатки каждой технологии. До этого будет просто каша в голове.YuriPanchul
12.02.2017 18:41Есть вещи в программах математики как минимум физматшкол, которые естественнее выглядят на ПЛИС-ах, чем в виде программы для микроконтроллера. Например конечный автомат. Это математическая концепция, но без привязки к реализации интуитивно непонятно зачем это.
*** Тут бы с МК и программированием полностью разобраться ***
Вставление в голову программирования в рамках концепции фон-нейманновской машины потом очень трудно «разучить», понять, что процессор выполняющий цепочку команд — это только частный случай более общего вычислительного устройства. А если вводить сразу, то картина мира становится более двумерной.
Дополнительный бонус — привязка к физике, если рассказывать почему возникают временные задержки.
mphys
12.02.2017 12:44+3tl:dr
Ответ на вопрос в заголовке — они офигеют. И так офигевают и без программирования.
Alex_ME
12.02.2017 13:19+2ПЛИС вещь довольно непростая (сужу по себе- трудно перестроить мышление с императивного языка на Verilog, а вот визуальное конструирование, как электронную схему казалось проще, хотя что-то сложное так сделать — ужас). Поэтому, возможно изучение HDL и потом "обычных" ЯП может внести путаницу, а вот проектирование в "схемотехническом режиме" может быть полезно. Мне кажется, полезно будет спроектировать и собрать в ПЛИС собственный примитивный процессор — это даст глубокое понимание, как все это работает.
P.S. Хотя с такой задачей справились единицы из целого потока студентов второго курса одного из технических вузов, принеся какие-то невнятные картинки :(32bit_me
12.02.2017 13:48> визуальное конструирование
не нужно
> принеся какие-то невнятные картинки
неудивительно, при таком подходе. На обычном верилоге простой процессор можно разработать за 1-2 дня. Это очень простой и ясный язык.Alex_ME
12.02.2017 19:19визуальное конструирование
не нужно
Полностью согласен, просто комментарий про то, что тем, кто программировал на императивных ЯП трудно перестроить мышление на HDL языки, в то время как обычные электронные схемы воспринимаются легко.
KonstantinSoloviov
12.02.2017 14:07ПЛИС вещь очень простая и понятная если начинать с базовых элементов.
Одно дело мозг «перестраивать» другое «узнавать».
Здесь, именно, нужно давать примеры: можно так, а можно эдак.
Но 5 дней… боюсь это будет что-то типа экскурсии на атомную станцию — круто, но нифига не понятно.AlexanderS
12.02.2017 14:11+4Да всё там понятно. Вот уран в активной зоне, вот вода греется, вот турбина крутится, вот генератор, вот трансформаторы… Только когда скажут сделай что-то подобное, пусть самое простейшее, у тебя будет только один вопрос: а как? )
KonstantinSoloviov
12.02.2017 14:40Это да :) но «активная зона», «турбина», «генератор», «трансформатор» — реперные понятия с которых можно начинать.
Пожалуй, даже 5 дней пойдут на пользу.
Но, обязательно должны остаться какие-то артефакты — по моему мнению, лучше всего — личные записи.
siryoshka
12.02.2017 14:01+1Так или иначе всё равно в обучении будет компиляция сред разработки в команды архитектуры той же AVR.
ПЛИС это совершенно другое. Совместить это без начальных знаний невозможно.
Готовым библиотекам конечно можно и обезьяну обучить пользоваться. Но в данном случае это разные направления.YuriPanchul
12.02.2017 18:45Именно потому что другое, я и предлагаю вводить это вместе. Вставление в голову программирования в рамках концепции фон-нейманновской машины потом очень трудно «разучить», понять, что процессор выполняющий цепочку команд — это только частный случай более общего вычислительного устройства. А если вводить программированием микроконтроллера и ПЛИС-ы сразу (с введением от микросхем малой степени интеграции), то картина мира становится более двумерной.
uterr
12.02.2017 14:04+3Личто я за то, чтобы все знали и прикладное программирование и МК и ПЛИС, тоесть все люди вообще, мир стал бы лучше и умнее. Но давайте вернемся на землю — школьникам это все абсолютно не интересно, и тут вопрос не что давать, а для начала как хотябы заинтересовать программированием в рамках школьной программы.
aamonster
12.02.2017 15:06+2Шарики за ролики не заедут — у психики множество защит. Сработает простейшая — пропустить всё мимо ушей.
Слишком много материала на 5 дней. Нужно думать, как урезать, не потеряв основные идеи. Грубо говоря, нужно суметь упростить ПЛИС до уровня ардуины, а потом упростить все 5 этапов ещё на порядок — как минимум давая заготовки проектов (ученик не должен заниматься рутиной типа подключения нужных библиотек и т.п. — у него на это не будет времени).
В общем, нужен гениальный педагог, который займётся темой. Сам бы у такого с удовольствием поучился...
vlreshet
12.02.2017 16:02+5ИМХО, идея неплохая, но рассказать это всё за 7 дней — сложнее чем создать землю за 7 дней. Для любых знаний нужен срок чтобы «уложиться» в голове, перейти в долговременную память. Если на одном уроке рассказывать о логических элементах, на втором — прошивать что-то, а на третьем — уже в линусе копаться, то на четвёртом у человека не будет в голове ни первого ни второго ни третьего. Тем более у школьников, у которых кроме этого предмета есть ещё куча посторонних. А во-вторых, мне кажется что главное в этом деле — это заинтересовать. Без интереса знаний не получится. Это как с программированием. Есть учителя которые первым уроком показывают простейшую игру, и дети загораются желанием — это ж свою игру можно написать! А есть те кто первым уроком считает квадратные уравнения в коде. И дети не понимают «а нахрена». Вот и тут так. Я не могу представить себе ребёнка который скажет «ууух, транзистор можно открывать! и логическое AND построить! Вааау».
Leerooooy
12.02.2017 17:51+3Лучше школьникам физику и математику давать на достойном уровне, для желающих более углублено. Это куда больше даст для технических специальностей, в том числе и электроники.
Если школьник не будет заниматься, то этот курс забудет на следующий день. Есть ли в нем смысл? А в хорошей базе в виде физики, математики точно имеется.YuriPanchul
12.02.2017 18:08Ну например упражнения на ПЛИС помогут уложить школьнику в голову концепцию конечного автомата, который вводится в курсе дискретного анализа довольно рано во многих вузовских программах, и с которой однозначно знакомы ученики физматшкол. Без практических упражнений эта концепция воспринимается как нечто абстрактное.
Вот как это вводится в Харрис & Харрис, схема, и код на верилоге, превращающийся в данную схему после синтеза:
Схема, временные диаграммыareht
13.02.2017 23:11> с которой однозначно знакомы ученики физматшкол
А откуда такая уверенность?YuriPanchul
13.02.2017 23:31Потому что я ходил в киевскую физматшколу номер 145 и обсуждал этот вопрос с учениками lic145.kiev.ua
https://www.imgtec.com/blog/imaginations-mips-architecture-is-coming-to-the-universities-in-russia-and-ukraine/
mastercrim
12.02.2017 17:53+41. к сожалению большинство школьников с трудом вам смогут объяснить что есть электрический ток, а Вы им сразу про «1. Микросхемы малой степени интеграции, по несколько логических элементов в каждой».
я бы, что бы не отбить у них желание, начал бы
1. с выключателя, лампочки и батарейки.
Попутно освежив знания про электрон, атомы, кристаллическую решотку, проводники…
2. Затем всё это повторил с мощьной лампой и транзистором в роли комутатора, попутно дав им понять что схема с ОК это простейший «инвертор», «элемент НЕ»
3. Далее показал бы как сделать мигающую лампочку без клацанья пальцами по выключателю — ну понятно, что имеется в виду мультивибратор, сначала на транзисторах, затем на логике.
вот мотом уже то что вы писали «1. Микросхемы малой степени интеграции, по несколько логических элементов в каждой».
Ну а ваши пункты 2,3,4 это уже факультатив, ибо способы достижения одной цели. Кто что выбирает дело добровольное, и нужно ли школьнику всё это, вопрос большой.
Как по мне то ПЛИС для школьника излишне, познакомить но не более, ибо для нормальной работы с ПЛИС нужно как минимум знать и понимать базовае логические элементы, дишефраторы, триггеры… Правила оптимизации всего этого хозяйства.
Да и стоимость микросхем ПЛИС как б «кусается».
Применять же для процесса обучения готовые модули, это сразу урезать разум школьника до «софтера» с «0» по химии и страхом перед отверткой, бокорезами и паяльником. В сяко лучше взять макетку, паяльник, рассыпуху tiny13 и сделать ту же мигалку, показав как развилась техника, и насколько «гибкой» становится самодельная железяка с софтовой начинкой.YuriPanchul
12.02.2017 18:14*** рассыпуху tiny13 ***
Tiny13 — это то же микроконтроллер, применяя его мы снова перескакиваем два уровня (логических элементов и register transfer level) и тем самым микросхемы, системы на кристалле и устройство процессора — остаются магическими черными ящиками, как в ардуине.BigBeaver
12.02.2017 18:19Смысл в том, что он ничего не стоит. Набор на минимально поиграться можно за 5 баксов собрать вместе с програмамтором.
YuriPanchul
12.02.2017 20:15А как предлагаете дать понятие о register transfer level, Verilog и synthesis — основной методологии проектирования цифровых систем на кристалле в последние 25 лет? Все на симуляторе типа Icarus Verilog?
BigBeaver
12.02.2017 20:23+3Я не уверен, что обычных школьников нужно обучать проектированию SoC.
Смотрите, к чему я клоню: есть куча дешевых МК и всяких к ним штук — школьник (увлекшийся вашим курсом) может за смешные деньги собрать себе набор и продолжить играться дома. Прокатит такое с ПЛИС? Если нет, то стоит ли тратить на это время в рамках 5 дневной программы?
Кроме того, у ПЛИС весьма специфичные задачи (как тут верно и не раз отметили), и я считаю плохим тоном продвигать их использование там, где они не нужны. Совсем другое дело — дать задачу, с которой не справится микроконтроллер, и обьяснить, что для ПЛИС это фигня. И уже имея востребованность начинать разъяснения по поводу проектирования. Но эта востребованность должна возникнуть естественным путем.
BigBeaver
12.02.2017 20:28Ну и да, могу ошибаться, но имхо, перед курсом ПЛИС неплохо бы дать дискретку и основы ЦОС. Я имею ввиду, что это позволит действительно использовать ПЛИС по назначению. А учить использовать не по назначению — плохой тон, как по мне. Если ошибаюсь — поправьте.
mastercrim
12.02.2017 20:14Ну как по мне то Вы не правы, вот почему.
1. до Tiny13 мы узнаём что такое источник тока, лампочка, и когда она горит а когда не горит.
2. что моргать её можно заставить при помощи человека, клацая тумблером
3. мы узнаём что можно прикладывать меньше усилий, применяя усилитель в виде транзистора
4. узнаём что можно вообще запустить автоколебательный процесс на транзисторах
5. переносим это дело на уровень логики в микросхемах
6. придаём гибкости в реализации, за счёт применения микросхем с програмной начинкой, а уже про тип этих микросхем — разговор отдельный. Считаю что ПЛИС это не антогонист МК, а другая ветвь реализации задания. Это не противоположности.
Для познания других элементов жосткой логики, будут более сложные уроки, например про дешифраторы для семисигментных индикаторов.YuriPanchul
12.02.2017 20:29*** Считаю что ПЛИС это не антогонист МК, а другая ветвь реализации задания. ***
Tiny13 — микроконтроллер. Это система на кристалле которая синтезируется по маршруту RTL2GDSII. Т.е. сначала сам Tiny13 — это куча кода на верилоге (плюс аналоговые блоки), и этот верилог описывает ядро микроконтроллера и конечные автоматы его периферийных устройтв типа UART или SPI. Проектировщики Tiny13 используют софтвер для логического синтеза и place&route, чтобы пройти от кода на верилоге до файла GDSII, который они отправляют на фабрику, чтобы там произвели Tiny13.
А теперь внимание вопрос: как в юности люди, которые писали тот самый Verilog, который становится Tiny13, изучали как это делать. Подсказка: у них были лабы с ПЛИС.
Понимаете, как это связано? Не антагонист и не другая ветвь, а нечто, что тренирует создателей другого.mastercrim
12.02.2017 20:41+1Я, к сожалению, не владею информацией о процессе производства и способах проектирования ИМС. С ПЛИС знаком именно по лабам в приборке, однако считаю что ШКОЛЬНИКУ будет куда важней знать функциональное назначение, элементов жосткой логики(и-не, или, искл. или..., дешифраторы, счётчики, мультивибраторы, блокинг генераторы, и т.д и т.п ну да про бл. ген это не туда:)) а уж на чём он выполнит функции этих элементов, он или его работодатель выберут потом, когда он закончит, после школы, техникум, институт, или магистратуру. Вы просто спросите у школьника что такой «регистр» или «D-триггер» и поймёте, что до этого очень далеко.
А ведь ещё надо дать понятие о питании, тактировании, сути данных и способах их передачи.
Falstaff
12.02.2017 20:48+1Здесь скорее вопрос в том, скольким людям действительно нужно это знать. Сейчас на дворе эпоха специализации. Сравнительно мало людей знают, как сделать хороший молоток. Значительно больше людей этого не знают, но с помощью молотков делают изумительные вещи, которыми потом пользуются остальные. Так они друг друга дополняют. Если кто-то не знает технологию производства молотка, которым он каждый день пользуется, это не делает его ущербным в своей профессии.
Jmann
12.02.2017 23:01Я думаю эти люди пришли на лабы уже подготовленными и с хорошей базой.
YuriPanchul
12.02.2017 23:07+1*** Я думаю эти люди пришли на лабы уже подготовленными и с хорошей базой ***
Вы ошибаетесь. Просто погуглите курсы в большом количество американских университетов и вы увидите, что цифровая логика вводится с лабами на FPGA на довольно простом уровне, например https://www.altera.com/support/training/university/materials-lab-exercises.htmlDelics
12.02.2017 23:22+1американских университетов
Университетов — ОК. Но причем тут школьники?YuriPanchul
12.02.2017 23:34+1Если вы посмотрите на данные лабы, то вы можете убедиться, что они доступны старшекласникам, в физматшколах — совершенно точно. При этом, так как они привязывают определенный материал по математике (например конечные автоматы) к практике, они полезны. Также красивым является и принцип конвейерной обработки
Falstaff
12.02.2017 23:53+1Так речь же про разработчиков Tiny13. Навряд ли у них были лабы с ПЛИС в школах, курс-то всё равно университетский, им его не давали (доступен школьнику или нет — уже другое дело). А в университете они уже знали, чего хотят.
IvanGrafskiy
12.02.2017 17:53Мне кажется, что основное это вовлечение школьников в нашу специальность. Мигать светодиодом сначала на логике, потом на ПЛИСе, потом на микроконтроллере конечно все интересно, но думаю что наибольшее вовлечение должно происходить исходя из реализации школьником каких-то вау-проектов: машинка на радиоуправлении, квадрокоптер, робот. Можно посмотреть примеры проектов на hackaday или же instructables и начнут просто разбегаться глаза на то, что можно сделать в рамках DIY. Очень интересная плата для этого snickerdoodle от krtkl — плата на ZYNQ — ПЛИС + двухядерный ARM и можно попробовать и verilog, и linux, и baremetal и.т.д.
mastercrim
12.02.2017 20:03+1" Очень интересная плата для этого snickerdoodle от krtkl — плата на ZYNQ — ПЛИС + двухядерный ARM и можно попробовать и verilog, и linux, и baremetal и.т.д." — вот тут я с вами не согласен. Простой пример:
У меня доченька приболела(завтра 6 лет ей будет) и на улицу не пошли, взял я свой инструмент, достал паяльник и первое что сделал — показал как из двух раздельных проводов, при помощи «проволочки» и «горячего гвоздя» мы сделали один целый проводок. На светящиеся глазки ребёнка было любо глянуть.
Затем достал светодиод, микрокнопку, 1206 SMD 680R, зарядку от телефона и usb шнур. Спаяли, нажимает кнопку и говорит «ух ты, а давай ещё жолтенький припаяем».
К чему это я? Да к тому что главное заинтересовать ребёнка, а уж различных «фич» на экранах своих планшетов они и так насмотрятся. А тут море знаний и опыта, которые можно «пощупать», понюхать да и порой обжечся.
Важно воспитать в ребёнке жажду познания, тягу к пониманию сути а не пользования готовыми заготовками.
Такое мое мнение. а Вы бы стали изучать ТТЛ после работы с Arduino и т.п.?
Mogwaika
14.02.2017 00:16К своему стыду скажу, что года 4 имею платку с цинком, но так и не осилил запрогать её на верилоге, т.к. там всякая лабуда с загрузкой через процессор и поотдельности ничего не попробовать… Лучше уж платку типа MOJO 3.
GarryC
12.02.2017 19:52+1Простые задачи можно решать на чем угодно, средние проще на МК, сложные средний школьник не решит ни на чем, да и средний выпускник ВУЗа тоже.
YuriPanchul
12.02.2017 20:14А если сдвинуть фокус с окончательного приложения системы на обучение ключевым технологиям? Вот вы согласны, что Apple iPhone на микроконтроллере не построить, для него нужна большая специализированная система на кристалле. А проектировщики Apple iPhone в Купертино учили в свое время методологию register transfer level, Verilog и synthesis, тоже вместе с лабами на ПЛИС.
mastercrim
12.02.2017 20:21+1Школьника надо обучать не «технологиям» а миру вокруг него. Они в первую очередь должны понять что и как работает а не что как делают. Ибо не понимая что такое электрический ток, триггер. регистр, генератор… он не создаст ту «систему на кристалле» сна которой соберут ВАЙфон, а софтеры сделают из него игрушку.
YuriPanchul
12.02.2017 20:33+1Так что такое триггер и зачем это нужно, можно понять, только сконструировав простой конечный автомат (скажем для управления светофором). Без такого упражнения интуитивно непонятно, зачем вообще нужно устройство, которое запоминает состояние ввода на положительном фронте тактового сигнала.
Такое упражнение не делается на микроконтроллере, в самом простейшем виде его можно сделать на микросхемах малой степени интеграции, но естественнее всего его делать на ПЛИС.
mastercrim
12.02.2017 20:55+1Да неужели? а как на счёт D -триггера, к примеру для управления светом от одной тактовой микрокнопки? Или для решения такой задачи тоже ПЛИС, или МК пристроим? там одна ИМС типа 561тм2, и при помощи двух кнопок упаравляем двумя нагрузками, нажал -включилась, ещё раз нажал — выключилась. И
И суть ясна, и на пальцах можно показать как оно происходит, а вот объяснить зачем в выключатель лампочки стоимостью 5$ ставить ИМС стоимостью 35$ я не смогу, ибо это не «естественнее всего»
Но, не подумайте что я не уважаю ПЛИС, мне как человеку понимающему «железную логику», и не программисту а электронщику по натуре, ПЛИСы очень нравились, но цена и «бедная» перефирия, не позволяли в моих скромных проэктах их использовать. Это просто другой уровень, на котором работают меньшая часть электронщиков планеты.
К тому же сейчас я проектированием не занимаюсь, ремонтирую быт технику, а в этой плоскости ПЛИСов практически нет, а вот МК полно, почти везде. Как то так.Jmann
12.02.2017 22:56У вас разное мышление, вы пытаетесь реализовывать на практике, автор больше в плоскости R&D. Я например начал заниматься электроникой из-за того, что смог повторять нужные мне устройства из журналов в школьные годы. Осознавать, как и для чего ловить фронт прямоугольного импульса, я начал примерно на первом курсе универа.
mastercrim
13.02.2017 00:04+1Вот тут я с Вами согласен.
По сути вопрос надо ставить изначально так: в какую тему вводить надо этих школьников?
Если из них планируют получить электронщиков, или ещё более широкий профиль — радиотехников, то это одно.
А вот если людей заточенных на частичное создание айфона, какую то часть процессора, или иного изделия, то это уже другое.
Не говоря уже про софтеров, к коим можно отнести, с некоторой поправкой, и работающих с ПЛИС.
mickvav
12.02.2017 21:54Вист за дискретные элементы. И график плотноват — чтобы дети это все нормально поняли и начали что-то реальное сами делать, надо в полтора-два раза медленнее, imho.
MaxxONE
12.02.2017 22:41+3Господи, да мы в школе электрический ток осознать не могли, куда уж там МК или, тем более, ПЛИС. Пригодились бы основы схемотехники и ТДУ, вот это — да. И изучение программирования расширить. А у вас — за неделю больше, чем за несколько лет в ВУЗе дается.
nerudo
13.02.2017 00:15-3Штука в том, что осмысливать электрический ток и не надо. 0 и 1, больше ничего. Элементарно. Вся современная электроника такова. Ну я всякими частностями пускай аналоговые инженеры занимаются ;)
BigBeaver
13.02.2017 00:28+3Это только в первом приближении так работает, а стоит чуть поднять мощность и/или частоту и все — приплыли. Все актуаторы оказываются аналоговыми, проводники в схеме оказываются не идеальными и здравствуй индукционная связь, здравствуйте земляные петли и тд и тп. Чисто цифровая цифра, разумеется, имеет место быть, но это скучно=)
nerudo
13.02.2017 12:40+1Если думать обо всем сразу — голова лопнет. Когда разрабатываешь алгоритм — не думаешь о топологии кристалла. Когда корректируешь топологию — не думаешь обо всем стеке протоколов который ходит поверх данного конкретного триггера. Когда думаешь обо всем сразу — ничего не делаешь руками сам, а лишь рисуешь блок-диаграммы, да пишешь планы и отчеты. Это называется специализация. Бывают, конечно, радиолюбители, которые сами и программу напишут, и схему нарисуют, и плату разведут-спаяют, но конечный уровень таких поделок обычно весьма невысок.
BigBeaver
13.02.2017 13:28Да ладно, полно людей, кто одновременно и схему рисует и код пишет. Указанные мной нюансы очень рано вылезают, при чем тут топология кристалла? (мы, наверное, о разном говорим?)
Jmann
12.02.2017 22:49+4Я лично начинал свой путь с детекторного приемника, потом транзисторы и логика. И если бы мне в 6 классе школы показали бы ПЛИС, с вероятностью в 99,99% процентов я ничего бы не понял. ПЛИСину мне уже показали на 4 курсе университета. Как уже писали выше, скорость, прототипирование, военка и космос, промышленность. В consumer сегменте их я даже не встречал.
YuriPanchul
12.02.2017 23:00*** В consumer сегменте их я даже не встречал ***
Разумеется встречали. ПЛИС широко используется для прототипирования и верификации всеми компаниями-производителями встроенных процессорных ядер и других компонент. Эти компоненты (soft IP) потом лицензируются производителям ASIC-ов, и эти ASIC идут в consumer electronics.Jmann
12.02.2017 23:05+2Я понимаю, что перед продакшеном, любой ASIC проходит этапы прототипирования… Но это не ПЛИС в прямом понимании, это готовый чип с определенной архитектурой и/или ядром.Я вижу это так.
YuriPanchul
12.02.2017 23:31+1Такое тоже есть, но и FPGA есть, а также hardware emulators типа Veloce.
Я работаю инженером-проектировщиком в команде микропроцессорного ядра MIPS I6500. У нас в офисе используется для моделирования сначала софтверный симулятор Synopsys VCS (раньше также Cadence IUS), потом эмуляторы Mentor Veloce (когда нужно запускать Линукс на проектируемом процессоре) и другие, но и FPGA платы используются, в частности мы даем клиентам вот такие платы:
https://community.imgtec.com/developers/mips/resources/development-platforms/
Обратите внимание на " The cores can consist of either the actual MIPS processor running at full speed (LV), or where the core RTL is programmed into an FPGA daughter card (CoreFPGA6A or CoreFPGA6B). "
Jmann
13.02.2017 09:53Вы знаете, не знаю как школьники. Но лично я бы прошел такой тренинг — курс, хотя уже мое хобби переросло в профессию, правда в сегменте разработки на микроконтроллерах. С ПЛИС я только поигрался как раз на лабах в университете. На этом мои познания в FPGA — CPLD заканчиваются.
iliasam
12.02.2017 23:12В consumer сегменте их я даже не встречал.
Как ни странно, Cyclone II попалась мне в AV-ресивере Yamaha, достаточно ширпотребном. Использовалась для обработки видеосигнала.Jmann
12.02.2017 23:15Сэкономили на DSP =)?
iliasam
13.02.2017 09:00И DSP там тоже были: Blackfin + ASIC, а также простой управляющий микроконтроллер от Renesas. Очень навороченная схема получилась.
Что удивительно для нашего времени, вся схема этого ресивера (rx-v671) приведена в Service Manual на него.
nerudo
13.02.2017 00:17В продолжение где встречалась ПЛИС «в быту» — я видел ее на материнской плате IBM в каком-то древнем году. Xilinx Coolrunner какой-то что ли. Зачем — не знаю. Видать не хотели ставить 20 корпусов 74* :)
svitoglad
13.02.2017 00:04Зачем школьникам еще этим голову забивать? Простой 8-битный процессор можно на макетках и логике сделать:
https://www.youtube.com/watch?v=35zLnS3fXeA
https://www.youtube.com/watch?v=HyznrdDSSGM&list=PLowKtXNTBypGqImE405J2565dvjafglHU&spfreload=10YuriPanchul
13.02.2017 02:33+1Вы наверное шутите, но я предлагаю вам в порядке эксперимента сначала накрутить процессор на макетке таким образом, а потом сделать этот же процессор с такой же логикой в FPGA, и сравнить время. Если же такой эксперимент покажется вам неубедительным, сделайте процессор конвейерным и повторите.
Vanellope
13.02.2017 02:35+2Школьникам то это зачем? А вот в универах для профильных специальностей этого очень не хватает. Нам вот препод рассказывал на практических занятиях, помните, вы комбинаторные схемы и конечные автоматы на бумажке рисовали по такому то предмету? А теперь смотрите, как эти штуки можно сделать на процессоре и мы вручную, ешкин кот, в тетради, ассемблировали программу под советские процессоры и потом запускали программу на таком же древнем роботе. А потом препод говорил, а смотрите, как это легче сделать на современном ПЛК, и мы пощелкав пять минут мышкой запускали ПЛК. А кто заинтересовался, говорит препод, есть и современные контроллеры вместо советских, и программировать под них намного легче, а есть еще и ПЛИСы, можно прямо схему в них нарисовать и все так же будет работать. А вот если бы еще и вживую показал и мы бы попробовали плисины — было бы больше пользы, кмк.
maldalik
13.02.2017 05:02+1Один глупый вопрос, а кто учить то будет? Пойдут специалисты в школу на зп школьного учителя?
zpa1972
13.02.2017 06:25У каждого инженера наступает такой момент, когда он, меняя рабочее место, задумывается о практике в школе (ПТУ), но большинство из самых отчаянных, которые после этого идут работать учителем (мастером производственного обучения), сталкиваются с горой требований по отчётности и отсутствием у учеников-студентов интереса к предмету.
Для пенсионера зарплата может быть не самым важным фактором, более того, лучше всего электронику и программирование школьникам и подросткам преподавать на общественных началах, привлекая спонсоров из предприятий, потенциальных работодателей. Спонсоры продавцы всяких лего и ардуин, плохой вариант, они будут требовать популяризации товара, а не самого предмета обучения.
7 дней достаточно только чтоб у кого-то из подростков проявился интерес, но всё будет сводится к копированию действий преподавателя, без реального осмысления. Дети и подростки, нынче в эпоху избыточности информации, способны только копировать, а преподаватель обязан их развлекать иначе результата добиться вообще не реально.maldalik
13.02.2017 11:28Пардон речь идет не о кружке, а о преподавании в школах, столько технически грамотных пенсионеров желающих и умеющих преподавать вы тупо не найдете. Тут на элементарную информатику то учителей нет...
potan
13.02.2017 08:39Я бы начал с моделирования на компьютере, на том же Clash, а потом только на реальном железе.
Вместо C для контроллеров я бы выбрал либо что-то более высокоуровневое (типа реактивного программирования), либо низкоуровневое, но интерактивное, типа Fort. Либо и то, и то.
Konachan700
13.02.2017 11:03Раз уж пошла такая тема, то посоветуйте литературу по FPGA. Но чтобы с самого нуля, на русском или простом английском и написанную не канцеляритом (а то у нас любят перевести все общепринятые термины и потом гадай, что это). Тема очень интересная, но информации на порядки меньше, чем по тем же микроконтроллерам…
KonstantinSoloviov
13.02.2017 14:28Самый нуль он общий и для FPGA и для MК и для SoC :)
Могу порекомендовать вот эту тему (в коментарии прямая ссылка) https://habrahabr.ru/post/259505/#comment_8447713.
А лично я недавно с удовольствием перечитал книгу написанную моим любимым институтским преподавателем «Функциональные узлы цифровой автоматики» (с) Потемкин Игорь Семенович. Если вас не смущает, что это книга издана в 1988 могу порекомендовать и ее, самый нуль точно с тех пор не изменился.
Кстати рекомендую и автору топика ознакомиться — как минимум с последовательностью и стройностью изложения.KonstantinSoloviov
13.02.2017 17:06Вот дела! Я дал ссылку на статью автора топика! :)))
Юрий, я так понимаю, вы принимали непосредственное участие в работе над этим учебником.
Пользуясь случаем хочу сказать огромное спасибо за проделанную работу!
lingvo
14.02.2017 00:03Если начинать с нуля, то самым простым способом изучения ПЛИС является MATLAB/Simulink + Xilinx DSP System Generator. Ну Симулинк, конечно лучше знать заранее.
Проходите онлайн курс и документацию:
https://www.xilinx.com/video/hardware/introduction-to-system-generator.html
https://www.xilinx.com/video/hardware/getting-started-with-system-generator.html
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2015_3/ug897-vivado-sysgen-user.pdf
и тогда вы научитесь быстро программировать всякие Спартаны и Виртексы не хуже крутых ПЛИСоводов, вообще не притрагиваясь к VHDL или Verilog.
Школьникам тоже бы посоветовал, но как я уже писал выше, сначала их надо сделать Системными Архитекторами.nerudo
14.02.2017 00:11+1Ага. Только вместо понятия логического вентиля школьников тогда придется предварительно просвещать на тему цифрового представления сигналов и их обработки.
lingvo
14.02.2017 00:19В Xilinx блоксете для Симулинк есть не только ЦОС, а и вполне понятные и простые модели логических элементов — И, ИЛИ, НЕ, простые счетчики и компараторы, регистры, задержки, мультиплексоры, сумматоры.
Большим преемуществом является то, что все это можно легко промоделировать и затем залить в ПЛИС двумя кликами.
YuriPanchul
14.02.2017 00:14*** Xilinx DSP System Generator ***
Вы собираетесь знакомить школьников с Xilinx DSP System Generator до знакомства с FIR фильтрами и преобразованием Фурье? А как они поймут, зачем DSP48 в Xilinx вообще нужен и почему бы не обойтись обычными математическими операциями на процессоре?Mogwaika
14.02.2017 00:23+1А там у матлаба галочка в свойствах фильтра скорость/ресурсы, а дальше матлаб сам раскидывает и про dsp48 школьник и не узнает и не нужно это школьникам…
Это слишком глубокое копание, не забывайте, что можно улучшить химию, биологию так чтобы любой школьник мог синтезировать реактивы на промышленном уровне и изо/труды, чтобы заткнуть за пояс хендмейд мастерские города и т.д.
В школе (хотя я даже про доп занятия по специальности) не нужны такие глубокие узкоспециализированные знания…YuriPanchul
14.02.2017 00:30Вы просто предлагаете не учить принципу разработки последовательностных цифровых схем (с концепциями gate / clock / D-flip-flop) и вместо этого больше учить прикладной математике в Simulink. Ну это как спор учителя пения с учителем рисования, кому нужно больше часов в программе.
lingvo
14.02.2017 00:38Конечно. С помощью таких средств инженер-математик, физик или проектировщик систем управления может легко реализовать свои алгоритмы на ПЛИС или процессорах, в зависимости от его желаний, не прибегая к программированию вообще.
Взгляните, например на 3Д проектирование. Многим школьникам сегодня нужно преподавать черчение, если сейчас можно нарисовать 3D модель и из нее сделать деталь на 3Д принтере или CNC машине? Профессия чертежника исчезла.
Точно также скоро исчезнут профессии Си и VHDL кодеров. Это сингулярность.areht
14.02.2017 00:58> Профессия чертежника исчезла.
В первую очередь там должно появиться умение читать чертеж.
YuriPanchul
14.02.2017 00:58Если я начну с вами спорить на предмет behavioral synthesis, то это будет долго и не для этого поста. Так что просто зафиксируем различие мнений. Как говорят американцы, agreed to disagree.
Mogwaika
14.02.2017 00:38Ну вы сами-то точно уверены в необходимости этих концепций для школьников, даже для пары человек из каждого класса, (не всем группам факультетов радиотехники такое преподают)?
Можно улитку по машине тьюринга пускать ползать, тоже важно…
BigBeaver
14.02.2017 00:39спор учителя пения с учителем рисования
Быть может, все-таки спросим детей?Mogwaika
14.02.2017 00:43+1Я думаю больше учеников попросит научить профессионально играть в танчики и монтировать летсплеи.
YuriPanchul
14.02.2017 00:54Да, это конструктивное предложение. Можно попробовать так и так, а потом опросить детей.
Mogwaika
14.02.2017 00:47+1Вы понимаете, чем были хороши радиокружки и всякие журналы юный техник. Они позволяли смастерить что-то минимально полезное: радио, усилитель для магнитофона, счётчик гейгера, часы какие-нибудь и т.п. на ардуине сейчас можно сделать гирлянду какую-нибудь или автомат вентилятора в туалете, ну сердечко с подсветкой на день святого валентина.
А красивым конвейером процессора на плис, могут восхищаться пара человек на свете…
lingvo
14.02.2017 00:29Еще забыл — в Симулинке используется описание алгоритмов работы в виде сигналов, блоков и связей между ними — такое описание как раз наиболее соответствует логике работы ПЛИС.
В этом смысле ПЛИС становятся гораздо более понятными, чем процессоры — это как обычные логические схемы, только без необходимости их ручной пайки, соединения проводами и согласованием уровней, а с возможностью моделирования и быстрой проверки в железе.Mogwaika
14.02.2017 00:41А вы уверены, что школьникам ближе обыкновенные логические схемы в виде сигналов, а не математические абстракции, которые можно записать логическими операторами в пошаговом скрипте?
batman12345
13.02.2017 18:28Нереальные сроки.
leocat33
13.02.2017 19:43+1Мы говорим о школьниках? Вы с современными школьниками последний раз когда общались?
99.(9)% это уровень мышления СМС-ками… Как бы это не грустно звучало.
Из цифровой техники — да, дать логические элементы, включая регистры, сдвиговые регистры. Пусть соорудят что-то простое, типа «бегущие огни». Большее вряд ли поймут, ибо нет базы для понимания чего то большего.KonstantinSoloviov
13.02.2017 20:43«Вам действительно так нужен программист?» — спросил я. «Нам позарез нужен программист». — «Я поговорю с ребятами, — пообещал я. — Я знаю недовольных». — «Нам нужен не всякий программист, — сказал горбоносый. — Программисты — народ дефицитный, избаловались, а нам нужен небалованный». — «Да, это сложнее», — сказал я. Горбоносый стал загибать пальцы: «Нам нужен программист: а — небалованный, бэ — доброволец, цэ — чтобы согласился жить в общежитии…» — «Дэ, — подхватил бородатый, — на сто двадцать рублей». — «А как насчёт крылышек? — спросил я. — Или, скажем, сияния вокруг головы? Один на тысячу!» — «А нам всего-то один и нужен», — сказал горбоносый. «А если их всего девятьсот?» — «Согласны на девять десятых».
(с) Стругацкие «Понедельник начинается в субботу»
KonstantinSoloviov
13.02.2017 21:07А если чуть серъезнее:
Большее вряд ли поймут, ибо нет базы для понимания чего то большего.
Если вы дали, по-настоящему дали, «логические элементы» и «регистры» (читай триггеры), то не хватает всего ничего: «шина», «сихронизация» -> «автомат» и вуаля — вы знаете как сделать процессор!
И почувствуйте разницу не знаете как работает, а знаете как сделать!
Jmann
14.02.2017 09:09+2Из нашей группы в количестве 16 человек, после университета, в сфере радиоэлектроники работает ровно два человека, этим людям просто было это интересно. Я с одногруппником по ночам паял девайсы. Так же я хочу вам рассказать историю о том как я ходил на курсы по программированию. Нас было в группе около 20 человек. Через пол года изучения С++ нас стало 10, еще через пол года 5 самых стойких, которые хотели научиться и которым, самое главное, было интересно. И обучались отнюдь не школьники. Многих мотивировал только будущий заработок, они думали что за месяц научаться клепать прикладные приложения с нуля, и станут Биллами Гейтсами. Это я о чем, нужно именно заинтересовать детей. Лично на меня повлиял мой дядя, когда рассказал, что бывают приемники без батареек и адаптеров питания. Я ему не поверил, как это без батареек, мой плеер ведь на батарейках! Тогда он мне дал книгу В.Г Борисова "Юный радиолюбитель", после этого мой мир перевернулся. Как работает диод и транзистор, я понял только в 10 классе средней школы, на уроках физики тремя годами позже.
Roman_Popov
15.02.2017 00:30+1Мне кажется 5 дней мало… Я вот тоже загорелся с детьми роботов на плисах делать, но как-то очень туго пока идет. Если идти последовательно от логических элементов, то сдуваются. Сейчас пробую просто хоть заинтересовать какими-то реальными проектами. Например очень медленно и трудно делаем СВ-трансивер (громко сказано конечно, пока только DDS-генератор спроектировали и пробуем модуляцию завести к нему, но конечная цель такая). Ну и на конкурс робота проектируем.
Еще одна проблема — детей сейчас пичкают шаблонами «как надо», в результате они например бьются над реализацией перевода задержки импульса от ультразвукового датчика в сантиметры и то, что железу на сантиметры наплевать и можно оперировать именно этим временем, воспринимается как откровение. Здесь ПЛИС тоже оказывается полезно показать как образец делания чего-то «не как надо». Например тот же DDS-генератор на звуковой диапазон мы сначала на Ардуино собирали — долго и печально (но собрали и даже призовое место сегодня на районном конкурсе за него получили), а потом я показал им как просто это на FPGA сделать.
Delics
Ничего не имеют против ПЛИС. Скорее даже за!
Но за долгое время мне, например, так ни разу и не попался заказ или задача, для решения которой понадобился бы ПЛИС, а микроконтроллер бы не подходил. Даже обидно немного (в том числе и за мой сертификат по разработке на ПЛИС).
Микроконтроллеры позволяют решить 99,99% всех задач. Если школьников обучать чему-то, что требуется для 0,01% задач, представляю, как они начнут кривляться. Вам же тяжелее будет.
Да и сама тема с одновременным выполнением всех команд в блоке — предполагаю, действительно будет слишком сложна для школьников.
lingvo
Вас удивит, что у меня полностью наоборот — 99% моих задач можно решить только на ПЛИС, без применения МК?
Задачи просто разные и точек соприкосновения не так уж много. Даже ценовой сегмент — и то другой — МК стоят пару десятков баксов максимум, в то время как нормальная ПЛИС начинается от сотни баксов.
Delics
Такие задачи известны — там, где нужна очень высокая скорость обработки информации.
Но школьники с таким вряд ли столкнутся, даже покинув школу и начав работать по специальности.
Altera Cyclone IV с хорошей отладочной платой и USB-бластером продаются на AliExpress за 37 долларов.
Не всегда нужны дорогие Stratix.
lingvo
Я имел ввиду, что я могу их решить точно также легко на ПЛИС, как и вы на МК. Например поморгать светодиодиком или сделать автомат состояний для робота.
AllexIn
Вот это поворот!
Было бы странно, если бы нельзя было.
Когда говорят «нет задач для ПЛИС» — не имеют ввиду, что нет задач, которые можно решить на ПЛИС. Имют ввиду, что задачи решаются на гораздо более дешевых и простых инструментах.
lingvo
ВЫ хотите сказать, что МК — это самый дешевый и простой инструмент для решения задач выше? Всегда ли так?
BigBeaver
А когда это не так? Тини13А стоит порядка 25 центов и занимает что-то около квадратного сантиметра на плате — можно купить их мешок и вообще забыть про дискретную логику. Расскажете про аналогичные вещи в мире ПЛИС?
YuriPanchul
Если все молодые люди будут решать все проблемы покупкой мешков Тини13А, то кто будет проектировать новые Тини13А, когда проектировщики старых выйдут на пенсию? Ведь для проектирования микроконтроллеров нужно знать методологию разработки цифровой логики, а ее лучше учить с упражнениями на ПЛИС-ах.
BigBeaver
В этом я полностью с вами согласен, но 2 момента:
1 — мы обсуждаем распространенность задач.
2 — если открыть любой даташит, там будет куча вот таких картинок с ключами, триггерами и прочими штуками. И любое усложнение задачи потребует погружения вот в это вот все. Только оно будет более органичным и своевременным.
Ну и да, мне действительно интересно
YuriPanchul
В даташитах на ПЛИСы тоже есть картинки с устройством ячеек для ввода-вывода. Для простых задач типа построение простых конечных автоматов, арифметических блоков и студенческих процессорных ядер эти картинки можно игнорировать, используя заранее приготовленные wrappers, которые задают все параметры таких пинов — см. пример такого wrapper-а — https://github.com/MIPSfpga/mipsfpga_2_0_sandbox/blob/master/boards/basys3/basys3.xdc
BigBeaver
И? Я же с этим не спорю.
Вы спросили, откуда возьмется потенциальный интерес к устройствам без работы с ПЛИС и дискретной логикой. Я вам показал, что любое углубленное использование любой микросхемы в итоге пораждает закапывание в нижний уровень просто на основе официальной документации — без гугления и тд.
То есть, мой пример как бы опровергает ваше обобщенное утверждение, что «если все будут работать на МК, никто никогда не узнает о нижнем уровне».
YuriPanchul
Так я имел в виду микроархитектуру, устройство конвейера микропроцессорного ядра внутри микроконтроллера. Полистайте ваш спек по любому микроконтроллеру и посмотрите, есть ли там это. Если и есть пару картинок с конвейером, то это не в форме, чтобы человек без предварительного знания почувствовал, как это работает. Если же сконструировать простой собственный процессор на верилоге и реализовать его в ПЛИС, то внутренности микроконтроллера становятся более-менее понятными, во всяком случае ядро и цифровая часть его вообще.
BigBeaver
Это есть в профильных вузах. У вас есть какие-то доводы в пользу необходимости этих знаний школьникам? Что они будут с этим делать?
YuriPanchul
В 20 веке программирование и проектирование электроники было разделено. Сейчас, в 21 веке, мы живем во время интегрированных чипов, в которых разработчик системы на кристалле должен видеть и устройство софтвера, и устройство хардвера. Такое видение нужно закладывать рано.
Особенно это важно в контексте гетерогенных вычислений. В 20 веке просто тупо повышали частоту процессора за счет улучшения в технологии физической реализации. Сейчас так делать нельзя, поэтому все больше появляется вычисления на GPU и других специализированных вычислителях. Для этого нужно подход — часть задачи решать в хардвере, часть в софтвере.
BigBeaver
Сама по себе идея не плоха, но когда это действительно понадобится, эти бывшие школьники даже не вспомнят, что что-то было такое. А почему? Потому, что нет задач хобби уровня — не будет практики.
YuriPanchul
Вопрос, что такое хобби-уровень.
Можно сделать например специализированный сопроцессор к MIPSfpga для работы с Unum https://www.crcpress.com/The-End-of-Error-Unum-Computing/Gustafson/p/book/9781482239867
Вот пример проекта такого рода, хотя его делал не хоббист, а молодой профессионал — http://zatslogic.blogspot.com/2016/01/using-mips-microaptiv-up-processor.html
YuriPanchul
В 20 веке программирование и проектирование электроники было разделено. Сейчас, в 21 веке, мы живем во время интегрированных чипов, в которых разработчик системы на кристалле должен видеть и устройство софтвера, и устройство хардвера. Такое видение нужно закладывать рано.
Особенно это важно в контексте гетерогенных вычислений. В 20 веке просто тупо повышали частоту процессора за счет улучшения в технологии физической реализации. Сейчас так делать нельзя, поэтому все больше появляется вычисления на GPU и других специализированных вычислителях. Для этого нужно подход — часть задачи решать в хардвере, часть в софтвере.
LastNormal
Там где будет мешок тини, там будет вагон ПЛИСов.
Кроме цены самих контроллеров есть еще цена разработки и владения и апгрейда. НЕ соизмерима.
И почему использование «Тини» автоматически подразумевает отсутсвие знаний по проектированию?
ИМХО детей надо сразу учить работать с микроконтроллерами и правильно работать (кроме программирования). Т.е. правильно подключать сенсоры и акктуаторы, учить схемам помехозащиты и т.п.
Учить ПЛИС сейчас, это как сейчас автомастера учить сначала на полном серьезе работе с паровыми двигателями, а потом уже ДВС и потом к электромобилям, на том основании, что надо выучить механику. ТАк механику можно выучить ии бех паровых двигателей :)
Учтите что к тому моменту как дети, которых сейчас учат, не то что ПЛИС, подозреваю что уже и МК будет свосем не так.
YuriPanchul
*** И почему использование «Тини» автоматически подразумевает отсутсвие знаний по проектированию? ***
А как предлагаете дать понятие о register transfer level, Verilog и synthesis — основной методологии проектирования цифровых систем на кристалле в последние 25 лет? Все на симуляторе типа Icarus Verilog?
*** ТАк механику можно выучить ии бех паровых двигателей :) ***
Аналогия с паровыми двигателями неверная. Концепции, которые можно отрабатывать с лабами на ПЛИС (Verilog, synethesis) — это не исторический артефакт, а то, что используют те же проектировщики Apple iPhone в Купертино. Они тоже этому учились с лабами на ПЛИС.
areht
> то кто будет проектировать новые Тини13А, когда проектировщики старых выйдут на пенсию?
Видимо, как и генетики и металлурги, которых в школе тоже не готовят, и такие специалисты, при наличии спроса, появятся.
YuriPanchul
Так про генетику (законы Менделя) и металлургию (глава в школьной химии) в школе говорят, а вот про технологии, которые являются ключевыми для чипов (в частности маршрут RTL2GDSII который является основой всего цифрового проектирования в последние 25 лет, и при этом отлично привязывается и к математике, и к физике) — не говорят. А этом можно было бы делать.
Замечу также что до середины 1980-х в советских школах вообще не было программирования, а упражнения с микросхемами малой степени интеграции (номер 1 в моем списке) вполне практиковались еще в 1970-х в калифорнийских школах. Сейчас же, в эпоху интегрированных хардверно-софтверных решений и гетерогенных систем на кристалле, было бы полезно вообще поменять взгляд, начиная уже со школы, что между алгоритмами в софтвере и хардвере якобы стоит стена.
areht
законы Менделя и закон Ома — это в школе дают, а про технологии в школе не говорят.
Там и программирование то ровно на таком уровне, что бы проверка орфографии в ворде магией не казалась.
YuriPanchul
Но про металлургию в школе говорят, как и в современной школе говорят про технологию генетического модифицирования и про PCR (polymerase chain reaction).
Например:
http://www.scienceteacherprogram.org/biology/Romero06.html
Subject: Living Environment
Grade Level: 9th and 10th
Unit: Genetics, Biotechnology, lab skills
Objective: Students will be able to:
Explain the importance and function of enzymes
Describe the effect of temperature on enzymatic reactions
Compare the process of DNA Replication and PCR
List the steps involved in the PCR process
Become familiar with the following terms:
denaturation, primers, replication, template, polymerase, PCR
.......
New York State Science Standards
Standard 1 Key Idea 1-performance indicator 1.1b
Key Idea 2-performance indicator 2.2a
Standard 4 Key Idea 2-performance indicators 2.1a, 2.1b, 2.1c, 2.2c, 2.2d, 2.2e
Key Idea 5- performance indicators 5.1f, 5.1g
areht
> Summer Research Program for Science Teachers
Это вообще для школьников?
> New York State Science Standards
> Standard 1 Key Idea 1-performance indicator 1.1b
1.1b Learning about the historical development of scientific concepts or about individuals who have contributed to scientific knowledge provides a better understanding of scientific inquiry and the relationship between science and society.
Ну ок, а к чему это выделено?
YuriPanchul
Да, для школьников, там же сказано «9-10 класс / grade».
Выделено, чтобы подчеркнуть что это официальные государственные рекомендации школьным учителям
areht
Документ с упоминанием New York State Science Standards — это официальные государственные рекомендации школьным учителям, понял.
Возвращаясь к нашим, я правильно понял вашу логику, генетиками становятся только те, кому в 9 классе рассказывали про ПЦР?
YuriPanchul
*** Там и программирование то ровно на таком уровне, что бы проверка орфографии в ворде магией не казалась ***
Дык и микроархитектуру процессора нужно показывать ровно на уровне, чтобы айфоны магией не казались.
areht
А какое отношение RTL2GDSII к микроархитектуре имеет?
YuriPanchul
Прежде всего (чисто на всякий случай) напоминаю что некоторые путают архитектуру (ассемблер) с микроархитектурой (строением конвейера и больших арифметических блоков).
Так вот RTL2GDSII — это способ реализации микроархитектуры, от описания на языка описания аппаратуры до файла с геометрией дорожек и транзисторов, который отправляется на фабрику. Микроархитектура непостредственно связана с RTL (register transfer level), описанием того, что происходит в процессоре в каждом такте. Без хотя-бы получасового описания RTL2GDSII на научно-популярном уровне микроархитектура не имеет смысл, потому что тогда непонятно, откуда беруться задержки в логических элементах, которые приводят к необходимости разделять выполнение инструкции на стадии, строить конвейер итд.
У меня есть про это текст — Введение в дизайн харвера микросхем для тех программистов, которые этим никогда не занимались
BigBeaver
Я тут подумал еще, и вот какая мысль: возможно, весь спор идет из того, что из статьи не понятно позиционирование предлагаемых уроков. И в первую очередь не понятно, для кого это. То есть понятно, что для потенциальных разработчиков SOC, но для каких конкретно детей? Для всех в рамках обязательной программы? Для кружков? Для спецшкол? Что они должны уже знать для прохождения этого курса?
Полагаю, если бы это было четко описано, шанс получить вместо спора конструктивный диалог был бы выше.
p.s. лично я за любые уклонения школы в «техническую» сторону, но возможности реализации и конечный результат выглядят сомнительными. И если встанет вопрос о перераспределении ресурсов, то пусть лучше физику с логикой нормально выучат, основы научного метода или что-то еще такое. А то, плодятся всякие странные индивиды, как в соседней теме про гомеопатию.
areht
> Так вот RTL2GDSII — это способ реализации микроархитектуры
Вот и я об этом, даже если рассказывать про микроархитектуру, то не про RTL2GDSII(и в ЕГЭ добавить вопрос «как расшифровывается RTL2GDSII»), и, тем более, не про геометрию дорожек.
> откуда беруться задержки в логических элементах
То есть вы хотите школьникам рассказать не только про RTL2GDSII, архитектуру и микроархитектуру, но и про логические элементы, формирование транзисторов на SOI, заодно виды памяти, виды кешей и остальную ВУЗовскую программу?
lingvo
Есть еще стоимость разработки. Условно если мне нужно сделать определенную задачу на 15 штук тини за 2 дня в единственном варианте, то ПЛИС легко может оказаться выгодней по общей стоимости железо+разработка+отладка
BigBeaver
Так никто и не говорит, что ПЛИС не нужны. Просто, это очень глубокая специализация.
Leerooooy
Хм, я наверное Вас огорчу, но есть огромный перечень задач, которые ни МК, ни процы не способны решать так же хорошо как ПЛИС.
В пример приведу 10G Ethernet, МК такое может? Процессор общего назначения такое может? Если может, то какова его цена? И подобных примеров множество. Все изделия, которые подразумевают под собой необходимость передавать и обрабатывать большой поток данных содержат в себе ПЛИС. По этой причине всё телекоммуникационное оборудование, оборудование связи в своем составе содержит ПЛИС.
Если уж говорить о цене, то ПЛИС дорогие лишь до определенного момента. Пока разработка на уровне «умный дом», «чЭпЭу станок для дома» и прочий простой эмбедед — выигрывают МК и процы с ядром ARM. Как только задача становится действительно сложной, наступает этап когда решать ее на ПЛИС дешевле, чем на DSP или процах общего назначения.
Delics
Не так уж и много. Только ситуации, когда нужна очень быстрая обработка данных.
И что самое главное — чтобы при этом не существовало уже готовой копеечной микросхемы, решающей поставленную задачу.
Leerooooy
«только ситуации, когда нужная очень быстрая обработка данных» — то есть 70% современной техники? Пускай на половину из этой доли можно найти готовую микросхему, но увы есть несколько минусов:
1) не такая она и дешевая будет, всякие преобразователи видеопотока от AD стоят дороже циклона 5-го или MAX10
2) Нулевая гибкость у готового решения. Что тоже актуально если устройство сложнее телевизора
BigBeaver
Для поточной обработки есть еще DSP всякие.
areht
Что именно вы понимаете под «70% современной техники сложнее телевизора с преобразователями видеопотока»? Я как то оглядываюсь, и, если это не телефон или телевизор, то сложнее мультиварки с выходом в интернет устройств вокруг очень не много.
YuriPanchul
Если все молодые люди будут решать все проблемы покупкой готовых копеечных микросхем, то кто будет проектировать новые готовые копеечные микросхемы, когда проектировщики старых выйдут на пенсию? Ведь для проектирования готовых копеечных микросхем нужно знать методологию разработки цифровой логики (Verilog-synthesis-static timing analysis), а ее лучше учить с упражнениями на ПЛИС-ах.
AllexIn
А где я говорил что ПЛИС не нужны?
Я говорил, что есть много задач, где ПЛИС не нужны.
Это не отменяет того факта, что есть задачи где ПЛИС нужны и колхозить решение на МК будет глупостью.
charypopper
Эм… а где тогда можно столкнуться, если не в работе по специальности? Только хобби что ли?
Andruwkoo
Cyclone IV за 37 долларов — не нормальная ПЛИС) там в этих 6ти тысячах ячеек не развернуться нормально. добавил эзернет — минус уже 3 тысячи сразу, плюс NIOS какой-нибудь и еще 2 тысячи улетело ну и на сигналтап по мелочи останется. Я считаю, что для обучения и тренировки меньше 10-15 тысяч ячеек — даже рассматривать не стоит и подходит уже только для решения конкретной задачи, где надо съекономить
ioannes
Подскажите, пожалуйста, какие задачи для хоббищика единственно возможно или хотя бы проще решить именно на плис? У меня есть отладка на плисине, но мне так и не удалось найти под неё задачу.
Хотя буду честным, все мои задачи решались при помощи восьмивыводной Tiny13A.
proton17
Ну насчет ПЛИС я совсем не согласен. В потребительских продуктах для массового рынка ПЛИС практически не применяют, ибо дорого, но в промышленном оборудовании их полным полно, а еще авионика и космос, там вообще без них никуда. Да и перед тем как выпустить какой-нибудь чип или железное IP их часто верифицируют на ПЛИС, пусть даже на меньших частотах. Очень много научного и медицинского оборудования тоже имеют в своем составе ПЛИС. Интел в ближайшее время начнет массовый выпуск процессоров с встроенной ПЛИС, их тоже надо будет кому-то программировать.
Delics
Вы правы. Но никто не проводил исследований, сколько из используемых ПЛИС действительно были необходимы, а какие можно было заменить на контроллер без какой-либо потери производительности.
Например, некоторое время назад я наткнулся на статью про создание часов на газоразрядных лампах с использованием CPLD Altera MAX II.
Разработка, без сомнения, была крута. Но у меня есть некоторые сомнения по поводу реальной потребности в ПЛИС в подобном проекте.
proton17
Ну не надо сравнивать статью некого любителя о часах на ПЛИС и опыт производителей промышленного оборудования. Найти хорошего программиста намного проще, чем хорошего разработчика ПЛИС. И ПЛИС нужны не только там где нужна очень высокая производительность, а где важна гибкость и надежность аппаратной платформы, где применяются нестандартные технические решения и протоколы. Ну а базовое обучение разработке на ПЛИС (пусть не в школе, а в техническом вузе) необходимо для лучшего понимания как работает аппаратура. Сам на практике сталкиваюсь с тем, что хорошие программисты не очень представляют как физически работает аппаратура, и отсюда при разработке рождаются несколько необоснованные требования к ней. Я согласен, что МК в повседневной жизни разработчика встречаются чаще, но ПЛИС это тоже огромный пласт схемотехники и не стоит его сбрасывать с борта только потому, что кому-то он редко встречается, по такому принципу можно вообще 90% вузовского образования выкинуть, часто Вам в реальной жизни надо рассчитывать поверхностные интегралы или проводить реакцию восстановления альдегидов?
kenoma
Нейросети на чем лучше реализовывать?
Delics
Нейронные сети обычно используют относительно медленные каналы для получения данных и сам расчет результата не является узким местом.
И при обучении также нужно много памяти. Но если всю обучающую выборку сможете уместить в регистры памяти ПЛИС, разумеется, обучение будет намного быстрее.
Но скорее всего, встроенной памяти не хватит и большого прироста производительности вы не получите.
kenoma
Глубокие сети как раз таки наоборот, требуют больших вычислительных ресурсов, иначе бы не было хайпа вокруг карт NVidia с их ориентацией на тензорные вычисления. Что касается медленного канала получения данных, то скажите, кадр с камеры при 30 fps это медленно?
Delics
У видеокарты памяти — гигабайты. У лучших моделей Stratix за 10 тыс. $ — десятки мегабайт.
Может и не медленно, но так сферически в вакууме неправильно считать. Ведь ещё неизвестно, как вы синтезируете свой код и на какой частоте он в итоге сможет работать.
Скорее всего, видеокарта даст намного большую производительность, чем не очень профессионально написанный HDL для ПЛИС.
nerudo
Странное сравнение Видеокарта — большое устройство состоящее из графического (векторного) процессора и микросхем памяти (отдельно). ПЛИС — просто микросхема. Подключи к ней такую же память — и у нее будут гигабайты.
Delics
Будут гигабайты и не будет преимущества.
nerudo
Поясните. При необходимости специализации под какую-то узкую задачу и схожих характеристиках FPGA всегда обставит чип общего назначения.
Delics
В теории FPGA быстрее, но на практике неоптимизированный HDL будет синтезировать схему, которая сможет работать только на низкой частоте и иметь всякие другие проблемы.
Видеокарта со своим OpenCL и встроенной памятью легко может обойти по производительности.
Я это хорошо понял, когда хотел сделать свой биткоин-майнер на FPGA Cyclone V (можете посмотреть характеристики, достаточно мощная штука). За основу я взял OpenSource проект на Verilog.
Выяснилось, что для биткойна FPGA с этой программой совсем немного обгоняло видеокарту HD 7990, а для алгоритмов, более активно работающих с памятью (scrypt), работало даже медленнее.