Espruino, Iskra JS, микроконтроллеры программируемые на JavaScript: какой выбрать, характеристики и возможности

Обновлено: 02.05.2024

С чем ассоциируется цифровая электроника? В первую очередь с логическими элементами И, ИЛИ, НЕ. Далее в память приходят сдвиговые регистры, дешифраторы, мультиплексоры и прочее. Однако, по мере роста сложности электронных устройств и тенденции к миниатюризации, создание приборов на базе интегральных микросхем (ИМС) из вышеперечисленных компонентов затруднилось, заказные ИМС нужной топологии и схемотехники оправдывали себя только при крупном тиражировании устройства, в остальных случаях - это было неоправданно дорого.

Выходом из сложившейся ситуации стало развитие программируемых интегральных логических схем (сокращенно - ПЛИС, зарубежная аббревиатура - programmable logic device, PLD). Что это такое и где используется мы расскажем в этой статье.

Содержание статьи

Отличия от микроконтроллеров

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

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

Кроме этого вы можете производить вычисления, сохранять данные в регистрах или ПЗУ, а также оперировать данными прошитыми в память микроконтроллера. На этом в сущности и заключается назначение и особенности работы с микроконтроллерами.

Программируемые логические интегральные схемы (ПЛИС) отличаются тем, что, программируя устройство вы сами создаете архитектуру из базовых логических элементов. Таким образом вы получаете высокое быстродействию и гибкость микросхемы. Это даёт возможность, не изменяя одного чипа сделать целый ряд проектов.

Обобщённо внутреннее устройство ПЛИС можно разделить на три основных группы:

1. Массив из логических элементов (макроячеек, логических блоков).

2. Блоки входа-выхода (IO).

3. Линии связи между ними и устройство, которое управляет этими связями.

Однако такое структурирование очень обобщено, немного подробнее мы рассмотрим этот вопрос ниже.

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

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

Выбор микроконтроллеров происходит на основе множества критериев, таких как:

Быстродействие и тактовая частота;

Объем ПЗУ и ОЗУ;

Количество входов и выходов.

Другие функциональные особенности и периферии, типа поддержки линий связи и протоколов (I2C, one-wire, PWM-сигнал и прочее).

При выборе ПЛИС основным критерием является количество программируемых блоков - их должно хватить для реализации задачи.

В зависимости от конкретного ПЛИС количество блоков может изменяться в широких пределах, соответственно изменяется и стоимость.

Микроконтроллер выполняет последовательно все операции, прописанные в его программе, в то время как блоки ПЛИС выполняют задачу параллельно и независимо друг от друга, поэтому сравнение этих устройств по тактовой частоте нецелесообразно. Слишком различается их принцип работы.

Виды

Актуальными на сегодняшний день являются два основных вида ПЛИС:

1. CPLD (Complex Programmable Logic Device - Программируемая Логическая Интегральная Микросхема, собственно это и есть ПЛИС в её классическом понимании). В ней обычно есть встроенная энергонезависимая памятью, в которую загружается прошивка.

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

2. FPGA (Field-Programmable Gate Array - Программируемая Пользователем Вентильная Матрица, однако её часто относят к ПЛИС) - более развитые и сложные устройства по сравнению с CPLD, строятся на логических блоках с гибкой коммутаций и содержат большее число элементов (десятки или сотни тысяч штук).

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

Интересно:

Хотя фактически наличие энергонезависимой памяти не делает программируемую логику CPLD. Это частично заблуждение. Главным отличием CPLD от FPGA является внутренняя структура.

Подробнее внутреннее устройство CPLD изображено на рисунке ниже.

А примерная схема её макроячейки выглядит таким образом:

Макроячейка состоит из программируемых мультиплексоров, триггеров (одного или нескольких) и формирует группу выходных сигналов ФБ в нескольких их вариантах.

Ниже приведен еще один пример - блок-схема CPLD микросхемы семейства MAX II фирмы Altera.

И структурный план микросхем этого же семейства.

Промежуточные шины макроячейкам назначаются с помощью такого узла, как распределитель, на англ. он звучит как Logic Allocator, что изображено на схеме ниже, на ней же изображена матрица переключений (Global Routing Pool), а у выходных макроячейки (macrocells) имеют по две обратных связи.

Внешние выводы микросхемы соединяются с выходами макроячеек через еще один блок (матрицу) - ORP (Output Routing Pool), обратите внимание, что через неё же происходит соединение ВХОДНОЙ логики с GRP, что изображено на иллюстрации ниже.

В некоторых CPLD есть т.н. прямые входы (Direct Input) - они соединены со входами ячеек напрямую, что уменьшает задержки.

У FPGA структура имеет вид:

L - логический конфигурируемый блок;

S (substitution block) - блок подстановок, он получает на ход определенное число бит, преобразует, по определенному алгоритму, а на выходе выдаёт другое число бит. Другими словами - дешифратор, шифратор и коммутатор.

C (connection block) - блок соединений.

Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств

Программирование

HDL (Hardware Description Language, рус. Язык описания аппаратуры) - так называется язык с помощью которого программируются ПЛИС. Популярными и универсальными являются Verilog HDL и VHDL. Существуют и другие языки, например, присущие конкретным производителям, как AHDL для изделий компании ALTERA.

Разработчикам, которые работают с ПЛИС доступно графическое программирование. То есть вы можете просто рисовать логические схемы или комбинировать код с графикой. Последнее называют модульным методом разработки, когда конкретные модули прописываются, а верхний модуль, в котором всё объединяется программируется графическим способом.

Подборка полезных статей про микроконтроллеры:

Примеры популярных производителей и серий ПЛИС

На момент написания статьи наиболее известными являются изделия двух производителей.


Iskra JS - это флагманская плата Амперки с встроенным интерпретатором JavaScript. Она является развитием платформы Espruino, но совместима с платами шилдами для Arduino. Если для вашего проекта важны скорость и комфорт разработки, максимальная совместимость с платами расширения, сенсорами и другими электронными модулями, Iskra JS — это оптимальный выбор.

Программирование
Для программирования используется JavaScript. Разработка ведётся в среде Iskra IDE, которая устанавливается в 1 клик: Iskra IDE — это приложение для Google Chrome.

Производительность
Iskra JS работает на частоте 168 МГц. 32-битный микроконтроллер ARM Cortex-M4 предоставляет в ваше распоряжение 1 МБ флеш-памяти для хранения прошивки интерпретатора JavaScript и вашего кода, а также 192 КБ оперативной памяти для их работы. Этого хватает для обработки JS-кода и решения множества задач вроде управления роботами, промышленной автоматикой, системами умного дома и т.д.

Совместимость
На плате вы найдёте совместимые с Arduino контактные колодки. Они расположены в соответствии со стандартной компоновкой Arduino R3, поэтому на плату могут быть установлены платы расширения для Arduino. Логическое напряжение Iskra JS — 3.3 вольта, а многие контакты толерантны к 5 вольтам. Это обеспечивает электрическую совместимость с большей частью Arduino-периферии.

Порты ввода-вывода
Из 26-ти доступных управляющих контактов: 12 могут использоваться для считывания аналогового сигнала, 22 могут генерировать сигнал широтно-импульсной модуляции, 2 могут выдавать настоящий аналоговый сигнал. На платформе доступны 4 последовательных порта, 2 SPI и 3 I2C-шины для взаимодействия с дисплеями, гироскопами, акселерометрами и другими сложными модулями. При этом по одной SPI и I2C шине вынесены на штатные разъёмы по стандарту Arduino R3 и они не конфликтуют с остальными пинами.

Питание
Питание можно подавать, как с компьютера через microUSB-порт, так и через гнездо питания 2.1мм. Источник определяется автоматически. В случае питания через гнездо, рекомендуемое входное напряжение 7…15В. Регуляторы напряжения выровняет входное напряжение до 5 и 3.3 вольт. В качестве источника питания можно использовать сетевой адаптер, батарейки или аккумуляторы. Для питания подключенной периферии используйте пины 5V и 3.3V, которые выдают соответствующие их названию уровни напряжения. При использовании внешнего источника питания, с пина 5V можно суммарно получить до 1000мА, с пина 3.3V — до 300мА. Если вам не нужна линия 5V, можете питать плату от источника на 3.6…12 В. Например, от Li-Ion аккумулятора.

Коммуникация
Iskra JS соединяется с компьютером с помощью кабеля microUSB. При соединении, платформа представляется компьютеру как виртуальный последовательный порт. По нему загружаются пользовательские программы и с него получается отладочная информация. Все эти процессы автоматизированы в Iskra IDE. Также вы можете запрограммировать Iskra JS, как HID-устройство, то есть эмулировать работу клавиатур, мышей, джойстиков и другого компьютерного оборудования.

Характеристики:
- Микроконтроллер: STM32F405RG (32-битный ARM Cortex M4);
- Тактовая частота: 168 МГц;
- Флеш-память: 1024 кБ;
- SRAM-память: 192 кБ;
- Номинальное рабочее напряжение: 3.3В;
- Рекомендуемое входное напряжение: 7…15В или 3.6…12В;
- Максимальный ток с шины 5V: 1000мА;
- Максимальный ток с шины 3.3V: 300мА (включая питание микроконтроллера);
- Максимальный ток с пина или на пин: 25мА;
- Максимальный суммарный ток с пинов или на пины: 240мА;
- Портов ввода-вывода общего назначения: 26;
- Портов с поддержкой ШИМ: 22;
- Портов с АЦП: 12 (12 бит);
- Портов с ЦАП: 2 (12 бит);
- Доступные аппаратные интерфейсы: 4× UART/Serial, 3× I2C/TWI, 2× SPI;
- Габариты: 69×53мм.

Лёгкий, гибкий, выразительный JavaScript может исполнять не только ваш браузер, но и микроконтроллер. Благодаря open source ядру Espruino и открытой среде программирования, вы сможете создавать сложные электронные устройства действительно просто.

Железо


Iskra JS — флагманская плата Амперки со встроенным интерпретатором JavaScript.

Построена на микроконтроллере Cortex-M4. 168 МГц, оперативная память на 5000 переменных JS, 1 МБ флеш-памяти для хранения программы.

Совместима по компоновке со стандартом Arduino Uno R3: можно использовать модули и платы расширения Arduino.


«Йодо» — набор из Iskra JS, модулей, конструктива и книги. Набор учит собирать и программировать собственные устройства на JavaScript и платформе Iskra JS. Книга включает 25 мини-проектов и необходимую теорию.

Мы выпустили три продолжения «Йодо»:

«Интернет вещей» — 7 экспериментов с WiFi, SD-картридером, мини-реле и сетевыми IFTTT, dweet.io и telegram;

Среда программирования


Espruino Web IDE — штатная среда для программирования, обновления и отладки плат Iskra JS и Espruino.

Работает на всех настольных операционных системах. Устанавливается в 2 клика.

Читайте также: