ПЛИС для хобби и развлечений.

Возможно, само сочетание этих двух слов «ПЛИС» и «хобби» может выглядеть несколько странно. Обычно мы думаем, что ПЛИС используется только в высокопроизводительных сложных системах: кодирование видео, распознавание образов, параллельные вычисления и прочее подобное. По крайней мере таков имидж у этой технологии.
С другой стороны, почему-то микроконтроллер и Arduino – вполне ассоциируются с любительским роботостроением. Ну а что же ПЛИС? Оказывается хобби-проекты вполне возможны и на ПЛИС. Эта статья – как раз о таком проекте, о плате Марсоход.
Плата Марсоход изначально разработана (причем в России, таганрогской компанией ООО «Инпро Плюс») для создания игрушек-машинок-роботов. Кстати, отсюда и пошло название платы. Ведь свою самую первую машинку на базе этой платы ее создатели и называли «Марсоход».
Сама плата небольшая, всего 5х5 сантиметров. На плате установлена CPLD компании Альтера EPM240T100C5, четыре кнопочки, восемь светодиодов, разъем программатора JTAG и разъем питания. Еще здесь есть генератор 100МГц – даже для простой ПЛИС это вполне рабочая, привычная частота. Кроме этого, есть разъемы предназначенные для непосредственного подключения прямо к плате игрушечных коллекторных или шаговых моторчиков. Подключение сильноточных устройств типа моторчиков возможно из-за того, что многие выходы ПЛИС просто запараллелены на плате – это видно даже на фотографии. Такое техническое решение только на первый взгляд кажется странным, однако оно действительно позволяет без хлопот подключать моторчики: десять объединенных выходов ПЛИС дают ток до 250мА.
В самой ПЛИС EPM240T100C5 есть 240 так называемых «логических элементов». Это 240 триггеров и LUT (Look-up Table). Этой логики хватает для реализации вполне мудреных проектов.
Плата подходит для первоначального изучения возможностей ПЛИС, знакомства с самой технологией и может быть интересна энтузиастам-любителям, которые уже выросли из Arduino. Так же плата может использоваться студентами и преподавателями технических вузов на лабораторных работах по цифровой схемотехнике.
Программирование ПЛИС отличается от программирования микроконтроллеров. Для микроконтроллера пишется программа, например, на языке C или подобном ему. В любом случае микроконтроллер последовательно исполняет команды процессора. Вот так, например, «мигают светодиодом» на Arduino:
void setup() {
// Инициализируем цифровой вход/выход в режиме выхода.
// Выход 13 на большинстве плат Arduino подключен к светодиоду на плате.
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // зажигаем светодиод
delay(1000); // ждем секунду
digitalWrite(13, LOW); // выключаем светодиод
delay(1000); // ждем секунду
}
Для ПЛИС же мы «рисуем» схему из элементов И, ИЛИ, НЕ, из сумматоров, мультиплексоров, триггеров или регистров. Например, чтобы плата «моргала светодиодом» нужно просто входную частоту 100МГц поделить двоичным счетчиком:

Более продвинутые разработчики используют текстовые языки описания аппаратуры Verilog или VHDL. Нужно сказать, что освоение схемного проектирования и даже текстовые описания на Verilog или VHDL не сложнее изучения языка C.
Разработка проекта для ПЛИС ведется в среде Altera Quartus II Web Edition – среда бесплатная. Прошивка ПЛИС происходит через разъем JTAG специальным программатором Altera UsbBlaster или MBFTDI.
Возвращаясь к хобби, хотелось бы назвать какие-то реальные проекты сделанные на базе платы Марсоход.
1. Машинка управляется от пульта телевизора.
Это и была самая первая машинка – Марсоход.

Машинка сделана из «компьютерного хлама». Моторчики от жестких дисков – шаговые двигатели. Аккумулятор от старого сотового телефона. Плата Марсоход с приемником ИК сигналов ILMS5360.
2. Вариант BEAM робота.
Машинка выезжает из нарисованного лабиринта.


Здесь используется гусеничное шасси с коллекторными моторчиками. Два фото датчика от принтеров следят за стеной слева. Через лабиринт можно пройти если все время держаться за стену одной рукой.
3. Машинка с сотовым телефоном на борту.


Используется сотовый телефон под управлением ОС Android. Он устанавливается на шасси машинки и она его возит. На телефоне запускается Python скрипт, который транслирует видео с камеры чарез WIFI в ноутбук. На ноутбуке обычный браузер отображает видео с машинки и с помощью мыши можно посылать команды управления машинкой: прямо, налево, направо, стоп. Питоновская программа на телефоне, принимая команды с ноутбука, воспроизводит соответствующие короткие звуковые аудио файлы – звук разной тональности. Плата Марсоход определяет тональность звука и исполняет соответствующие команды оператора. Таким образом осуществляется удаленное управление машинкой.
Есть и другие проекты машинок, но хотелось бы показать еще два других примера использования платы Марсоход, такие, где ПЛИС нельзя просто заменить микроконтроллером.
4. Проект «частотомер».

На базе ПЛИС платы Марсоход построен настоящий частотомер, который может измерять частоту до 400МГц.
5. Видео игра «Теннис»

К плате Марсоход подключен только разъем VGA. Плата генерирует видеосигнал для монитора и формирует изображение бордюра, теннисной ракетки и мяча, отскакивающего от них. Счет пропущенных мячей отображается на светодиодах. Управление ракеткой производится кнопочками платы.
В последних двух проектах используются довольно высокие частоты, которые трудно получить в микроконтроллерах.
Всего же на сайте проекта Марсоход опубликовано более 60 проектов разного уровня сложности. Кроме этого, там же читатель может найти обучающие материалы по языку описания аппаратуры Verilog HDL и инструкции по среде проектирования Altera Quartus II.
Вслед за первой платой Марсоход разработчик выпустил уже вторую, более сложную модель Марсоход2. У нее другие возможности и назначение, она построена на FPGA Cyclone III. Возможно я смогу рассказать о второй плате в будущих статьях.
9 комментариев
Стоит плата Марсоход 800руб, к ней нужен программатор, например MBFTDI 600руб.
На сайте марсохода эти цены есть
А на марсоходе реально много классных статей по программируемой логике.
Честно говоря, мне кажется каждая публикация в интернете от любого человека — это в какой-то степени реклама. Кто-то рекламирует себя, кто-то продукт или технологию или свою страничку… Даже журналист на новостном сайте пишет, чтобы поддержать посещаемость ресурса. Увы…
Немного огорчило то, что с платой не шло никакой документации :( Думаю, хотя бы пару листков с кратким описанием и какие выводы ПЛИС куда подключены — было бы самое оно.