В этой заметке я решил рассказать о SimulIDE https://simulide.com/ Это относительно новое программное средство с открытым исходном кодом, предназначенное для моделирования 8-битных микроконтроллеров семейств AVR и PIC, а также прочих электронных схем. По интерфейсу SimulIDE напоминает Proteus. SimulIDE кроссплатформенный и работает под Linux, Windows и Mac. Далее будут рассмотрены основные возможности этого симулятора и рассказано о моих личных впечатлениях от работы с данной программой.
Загрузка и установка
SimulIDE разрабатывается по модели с открытым исходным кодом, но доступны и бинарные пакеты для всех трёх поддерживаемых платформ. Сайт проекта доступен по данной ссылке: https://simulide.com/ Репозиторий с исходными кодами упрятан довольно глубоко: https://launchpad.net/simulide Бинарные пакеты для релиза и релиз-кандидатов можно найти здесь: https://launchpad.net/simulide/+download
Для Linux предлагается архив tar.gz, который содержит скомпилированную версию со всеми библиотеками. Нужно распаковать этот архив например в домашний каталог или в /opt и запустить бинарный файл simulide из командной строки или файлового менеджера.
Для Windows имеется portable версия в виде zip-архива, который нужно также распаковать и запустить файл simulide.exe
Краткий обзор возможностей программы
После запуска программы открывается главное окно, которое представляет собой редактор схемы. В комплекте с SimulIDE идёт большое количество примеров, которые находятся в каталоге examples в дистрибутиве программы. На скриншоте показана схема осциллографа на МК Atmega328p, в котором используется монохромный графический ЖКИ. Чтобы запустить симуляцию, нужно нажать на кнопку Power circuit на панели инструментов.
В отличие от например Qucs-S или проприетарного Ltspice моделирование в SimulIDE полностью интерактивное. Можно подключать виртуальные измерительные приборы как в Electronics Workbench или Proteus. В программе имеется внушительный набор аналоговых и цифровых компонентов, в том числе библиотека ИМС ТТЛ и КМОП логики. Самое главное, что поддерживаются различные 8-битные микроконтроллеры семейств Atmega, Attiny, PIC10, PIC12, PIC16 и 8051. Также поддерживается Arduino. Можно моделировать и схемы без микроконтроллеров. Движок моделирования используется упрощённый собственной разработки, а не SPICE. Модели транзисторов также используются сильно упрощённые для ключевого режима. Для моделирования каких-либо сложных аналоговых схем SimulIDE не годится. Моделирование в частотной области (анализ АЧХ) не поддерживается. У меня, например, не получилось запустить генератор на RC-цепи и двух инвертерах. Анимированный GIF ниже показывает моделирование переходного процесса в колебательном контуре.
Пример: моделирование простой схемы на МК Atmega328p
Рассмотрим пошаговый пример, как смоделировать в SimulIDE схему на микроконтроллере. В качестве примера будем использовать моргалку светодиодом на МК Atmega328p. Светодиод подключается к выводу PB0. Исходный текст программы следующий.
#include <avr/io.h>
#include <util/delay.h>
#define LED_PIN PORTB0
int main (void)
{
DDRB |= (1<<DDB0);
for(;;) {
PORTB |= (1<<LED_PIN);
_delay_ms(1000);
PORTB &= ~(1<<LED_PIN);
_delay_ms(1000);
}
}
Данную программу следует скомпилировать при помощи avr-gcc любым способом и получить HEX-файл. Теперь можно приступать к моделированию. Запускаем SimulIDE и на поле схемы размещаем МК, резистор 100 Ом и светодиод, которые берём с левой панели. МК находятся в группе Micro. Компоненты соединяем проводами. Редактирование схем в SimulIDE интуитивно понятно и с ним проблем возникнуть не должно. Получается следующая схема:
Теперь нужно указать для МК файл с прошивкой. Для этого щёлкаем правой кнопкой по компоненту и выбираем Load firmware. Затем выбираем HEX-файл. Теперь если в свойствах компонента (Properties) отображается прошивка:
Теперь можно запускать симуляцию. Для этого нажимаем кнопку Power circuit на панели инструментов, и светодиод начинает мигать. Результат показан на анимированном GIF ниже.
Как видно, процесс моделирования чрезвычайно простой по сравнению с ранее упомянутыми Qucs-S и LTSpice. Но за простоту нужно платить тем, что не поддерживаются настоящие модели SPICE и отсутствует полноценное аналоговое моделирование.
Выводы и мои впечатления
На мой взгляд в настоящее время моделирование МК PIC и AVR, которое реализовано в SimulIDE, может иметь весьма ограниченное применение. Вот появилась бы эта программа лет на 15 пораньше, цены бы ей не было. Сейчас даже радиолюбители переползают на 32-битные МК. В своих самоделках я уже перешёл на 32-битные МК. AVR и PIC по-моему полностью устарели. В том, чтобы делать новые разработки на 8-битниках я особенных преимуществ не вижу. Так что для меня лично SimulIDE практически бесполезен. Но возможно тем, кто продолжает делать устройства на 8-битных МК, этот симулятор сможет упростить отладку. Ну и для использования в учебном процессе SimulIDE будет весьма полезен из-за простоты освоения и интерактивной симуляции.