TKGate — open-source симулятор цифровых схем: проект снова жив

TKGate (tkgate.org) — это симулятор цифровых схем на базе Verilog с открытым исходным кодом. Он работает в ОС Linux. Симулятор написан на связке C и Tk/Tcl. Автором проекта является Jeffery P. Hansen (неактивен). Сейчас разработкой занимается наш соотечественник Андрей Скворцов. На прошлой неделе после шестилетнего (!) перерыва в разработке вышла новая версия симулятора TKGate-2.0. Вот так выглядит TKGate:

39f3003042b24456b3b450dc9dd361d8.png

Под катом более подробный разбор TKGate.

История и основные возможности


Я использовал TKGate приблизительно в 2005–2006 году, и у меня о нём остались самые положительные воспоминания. Потом около 2009 года разработка проекта прекратилась, и у меня не было проектов с цифровой электроникой, которую нужно было моделировать. С этого времени я данный симулятор не видел и думал, что проект умер. Теперь, к счастью, нашёлся разработчик, который поднял этот проект из мёртвых. Теперь рассмотрим подробнее этот симулятор. Ключевые возможности симулятора следующие:

  • Интерактивное моделирование цифровых схем
  • Доступные типы компонентов: логические элементы, триггеры, регистры, счётчики, дешифраторы, мультиплексоры, ОЗУ, ПЗУ, АЛУ, ключи на МОП-транзисторе, имитаторы входных сигналов, светодиоды, семисегментыне индикаторы, шкалы, генераторы синхросигналов.
  • Использование пользовательских скриптов Verilog.

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

Графический интерфейс TKGate написан на Tk/Tcl и поэтому для тех, кто привык к современным KDE и Gnome выглядит несколько старомодно. Тем не менее это нисколько не вредит функционалу программы.

Установка


Симулятор работает только под Linux, версию для Windows, наверное, можно самим собрать из исходников.

Предыдущая версия TKGate-1.8 есть в репозитории Debian, и чтобы его установить достаточно выполнить команду:

apt-get install tkgate

Готовых пакетов для последней версии пока нет, поэтому её нужно собирать самим. Требуются следующие зависимости:

  • Tk/Tcl
  • GCC
  • Autotools

Можно либо скачать архив с исходниками с официального сайта или склонировать репозиторий проекта на Bitbucket:

hg clone https://bitbucket.org/starling13/tkgate

Если взяли архив с исходниками с официального сайта, то его следует распаковать и в каталоге, куда он был распакован выполнить:

./configure
make
make install

Если склонировали репозиторий, то последовательность сборки сложнее:

./configure
aclocal
automake
make 
make install

Можно make install заменить на checkinstall, который соберёт пакет для вашего дистрибутива.

Настройка


После установки, нужно настроить библиотеки, загружаемые при запуске программы. Можно загружать все библиотеки или некоторые из них. Для этого нажимаем в главном меню Инструменты→Настройки и затем в появившемся диалоге Библиотеки→Автозагрузка. Выбираем библиотеки, загружаемые при старте. В частности программа содержит библиотеку ИМС 74-й серии (ТТЛ и ТТЛШ). На этом настройка завершена.

8995608d0665413e975acc9c7f9e38da.png

Динамически загружать библиотеки можно щёлкнув правой кнопкой на пункте Библиотеки в дереве проекта в левой части окна программы и выбрав в контекстном меню пункт Менеджер библиотек.

Работа с программой


Рассмотрим небольшой пример. Промоделируем элемент 2И-НЕ. Для этого создаём новый файл: Файл→Создать.

Открывается пустая схема. Центральная часть главного окна программы представляет собой собственно поле ввода схемы.

Теперь нужно добавить компоненты. Компоненты добавляются через контекстное меню,
вызываемое по правому щелчку мыши на поле схемы. Выбираем Компоненты→Вентиль→И-НЕ. Ко входам вентиля нужно подключить переключатели, которые будут подавать на них лог.0 или лог.1, а к выходу светодиод, чтобы контролировать состояние вентиля 2И-НЕ. Переключатели выбираем снова через контекстное меню Компоненты→Ввод/вывод→Переключатель. Светодиод находится там же: Компоненты→Ввод/вывод→Светодиод. Теперь соединяем всё проводами. Должна получиться вот такая схема:

32ba5f5827a8429ca2b6fe46deb3d9a5.png

Теперь схему можно моделировать. Для этого переходим на вкладку Симуляция. Становится активным меню Симуляция. Теперь запускаем моделирование: Симуляция→Пуск. Моделирование является полностью интерактивным, в отличие от например моделирования цифровых схем в Qucs. Подход к моделированию в TKGate напоминает Multisim или Proteus. Во время моделирования можно вручную изменять состояние переключателей и т.п. и смотреть отклик схемы. В нашей схеме если пощёлкать по переключателям, то увидим, что состояние выхода логического элемента изменяется в зависимости от состояния входов согласно таблице истинности элемента 2И-НЕ. Чтобы остановить симуляцию, нужно вызвать команду Симуляция→Закончить симуляцию. Результат моделирования представлен на рисунке:

46664dcf8737418a880d1f7fe14a5a67.png

Более сложные схемы могут включать в себя ИМС средней степени интеграции, модули Verilog, ОЗУ и ПЗУ.

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

© Habrahabr.ru