Qucs-S является программой с открытым исходным кодом для моделирования электронных схем. Qucs-S кроссплатформенный (поддерживаются Linux, Windows и FreeBSD), написан на С++ с использованием набора библиотек Qt и разрабатывается полностью в частном порядке (в отличие, например от KiCAD, который имеет спонсора в лице CERN). В феврале этого года проект восстал из мёртвых и вышел релиз 0.0.23. Главным новшеством версии 0.0.23 было то, что программа теперь портирована на Qt5, чем обеспечена собираемость на современных дистрибутивах Linux. Актуальным релизом на текущий момент является 0.0.24 https://github.com/ra3xdh/qucs_s/releases/tag/0.0.24, в котором добавлено несколько новых видов моделирования. Далее будут рассмотрены основные возможности программы и показано как в Qucs-S смоделировать схему.
История разработки
Qucs-S является форком проекта Qucs, который начали разрабатывать немцы Stefan Jahn и Michael Margraf в 2003 году. В настоящее время материнский проект практически неактивен и последний релиз был в 2017 году. Изначально Qucs поставлялся со своим собственным движком моделирования, нацеленным более на анализ ВЧ схем в частотной области. Этот движок имел серьёзные проблемы со сходимостью при моделировании во временной области и был несовместим со SPICE, что не позволяло напрямую применять модели электронных компонентов, распространяемые производителями.
В 2014 году я начал разработку набора патчей, который бы позволял подключать к Qucs в качестве движка открытый Ngspice. В итоге эта разработка привела к созданию форка Qucs-S (Qucs with SPICE). В 2017-2020 годах вышло три релиза Qucs-S, последние из которых были корректирующими, проект был скорее мёртв. В этом году я провёл ритуал некромантии, портировал Qucs-S на Qt5, и тем самым возвратил программу к жизни.
Про основы работы в Qucs и про Qucs-S рассказывают мои предыдущие статьи:
- Qucs — open-source САПР для моделирования электронных схем https://habr.com/ru/post/248005/
- Новый кандидат в релизы САПР Qucs-0.0.19S-RC6 https://habr.com/ru/post/302006/
Поддерживаемые движки моделирования
В настоящее время Qucs-S поддерживает четыре движка моделирования:
- Ngspice http://ngspice.sourceforge.net/ Это рекомендованный симулятор. Он совместим с большинством моделей, которые можно найти на разнообразных ресурсах. Сейчас проектом руководит Holger Vogt из университета Дуйсбург-Эссен.
- XYCE https://xyce.sandia.gov/ Это симулятор разработанный с нуля Сандийскими национальными лабораториями. Имеется возможность моделирования гармонического баланса (HB) и S-параметров.
- SpiceOpus http://www.spiceopus.si/
- Qucsator https://github.com/qucs/qucsator Это изначальный движок, применявшийся в Qucs. Имеет возможность моделированя S-параметров, но нестабилен во временной области.
Qucs-S поддерживает все виды моделирования реализованные в применяемом SPICE-движке, а именно моделирования во временной и частотной области, шумовой анализ, анализ нелинейных искажений, Фурье-анализ, моделирования гармонического баланса.
Установка
Для Linux имеются репозитории для Debian/Ubuntu, Fedora и OpenSUSE. Имеются также пакеты для Arch, которые можно установить через AUR, и порт для FreeBSD. Для нестандартных случаев можно собрать Qucs-S из исходников или воспользоваться AppImage. Поддержку своего дистрибутива Linux можно проверить здесь: https://download.opensuse.org/repositories/home:/ra3xdh/ Бинарные пакеты собираются автоматически при помощи OpenSUSE Build Service.
Сам Qucs-S не предоставляет движка моделирования. Рекомендуется использовать Ngspice, который для Debian/Ubuntu устанавливается по зависимостям, а в прочих случаях его нужно установить вручную.
Для Windows следует скачать zip-архив с portable версией Qucs-S со страницы релиза. Далее нужно распаковать архив и запустить файл qucs-s.exe из поддиректории bin. Ngspice следует скачать с официального сайта и установать в C:Spice64, иначе не будут работать модели XSPICE. При первом запуске следует указать путь к файлу ngspice_con.exe в настройках программы. Последние версии Ngspice для Windows теперь поставляют два исполняемых файла ngspice.exe и ngspice_con.exe Для правильное работы Qucs-S нужен ngspice_con.exe, который может писать логи в консоль. Обычный ngspice.exe запускает графическое окно, и все текстовые сообщения остаются внутри этого окна.
Основы работы с программой
При первом запуске Qucs-S сообщит, что нужно выбрать движок моделирования и откроет диалоговое окно, показанное на скриншоте. В последствии настройки можно поменять в меню Simulation->Select default simulator. Под Linux Ngspice обычно расположен в /usr/bin/ngspice, а под Windows устанавливается по умолчанию в C:/Spice64/bin/ngspice_con.exe
После того как выбран симулятор, открывается окно редактора схемы. Теперь можно смоделировать какую-нибудь схему. Для примера соберём инвертирующий усилитель Нортона на операционном усилителе NE5532. Редактирование схемы в Qucs интуитивно понятно и те, кто работал с другими электрическими САПР, легко разберутся с редактором. Следует отметить несколько особенностей. Виды моделирования и диаграммы также являются компонентами и размещаются на схеме. Они находятся в группах Simulations и Diagrams и выбираются из панели компонентов в правой части окна, откуда их можно перетаскивать на поле схемы. Операционный усилитель является библиотечным компонентом и его следует взять со вкладки Libraries в правой части окна. Собираем схему и размещаем на ней виды моделирования. Требуется смоделировать переходный процесс (Transisent analysis) и АЧХ схемы (AC analysis) Должно получиться как показано на скриншоте. Вход и выход схемы нужно пометить при помощи Insert->Wire label.
Уравнение также является особым компонентом и вставляется через меню Insert→Equation или кнопкой на панели инструментов. Способ задания уравнений в Qucs-S отличается от того, что было в Qucs. Теперь в первом параметре нужно выбрать из списка к какому виду моделирования относится уравнение, так как для напряжений и токов используется нотация SPICE. Например v(out)
это напряжение на узле out
Диалоговое окно, открываемое при двойном клике по уравнению, показано на скриншоте. Данное уравнения рассчитывает коэффициент усиления схемы в децибелах.
После того, как схема собрана, выбираем в главном меню Simulation->Simulate или нажимаем на клавиатуре F2 и запускаем моделирование. Появляется окно в котором сообщается, что Ngspice промоделировал схему без ошибок.
Ознакомившись с отчётом симулятора, нажимаем Exit и переходим на страницу просмотра, где можно разместить диаграммы. Диаграммы также можно разместить и прямо на схеме как это сделано на КДПВ. Сигналы, которые нужно вывести на диаграмму можно выбрать в диалоговом окне свойств диаграммы. На следующих двух скриншотах показан диалог свойств диаграммы и окно просмотра с АЧХ и осциллограммами сигналов на входе и на выходе. Видно, что усилитель усиливает сигнал.
На диаграммах можно размещать маркеры, которые действуют аналогично курсорам на цифровом осциллографе. Начиная с версии Qucs-S 0.0.24 теперь можно задавать точную позицию маркера по оси X в диалоговом окне свойств. Например можно установить маркер точно на частоте 1 кГц на графике АЧХ.
Новые виды моделирования в Qucs-S
Ngspice начиная с версии 37, которая вышла в мае этого года, поддерживает моделирование S-параметров. В Qucs-S начиная с версии 0.0.24 также можно промоделировать S-параметры при помощи Ngspice и больше не требуется устанавливать и использовать для этой цели Qucsator. Пример схемы широкополосного усилителя высокой частоты для КВ трансивера показан на скриншоте.
До версии Qucs-S 0.0.24 требовалось прибегать к написанию скрипта постпроцессора Ngspice, чтобы выполнить анализ спектра (FFT). Начиная с версии 0.0.24 в приложении реализован специальный вид моделирования: анализ спектра (Spectrum ananlysis – FFT). Пример моделирования спектра на выходе диодного кольцевого смесителя показан на скриншоте. Параметрами данного моделирования являются полоса частот (BW), шаг по частоте (dF) и тип оконной функции.
Заключение
Симулятор Qucs-S восстал из мёртвых и теперь будет развиваться. В планах у меня синхронизировать релизы с новыми функциями, появляющимися в Ngspice. Например в Ngspice-38 разработчики планируют добавить поддержку цифровых компонентов, совместимых по синтаксису нетлиста и списка цепей с LTSpice. Как только они будут доступны в Ngspice, я добавлю их поддержку в Qucs-S. Также в следующем релизе планируются некоторые улучшения пользовательского интерфейса.
Помощь в разработке приветствуется. В профиле проекта на Гитхабе можно ознакомиться с багтрекером и планами дальнейшей разработки программы: https://github.com/ra3xdh/qucs_s Если планируете какое-то глобальное улучшение, то рекомендуется предварительно написать и изложить, что вы собираетесь делать. Также проекту можно помочь финансово через страницу на Boosty: https://boosty.to/qucs_s и тем самым тоже приблизить следующий релиз.
Ресурсы по Qucs-S
- Сайт проекта: https://ra3xdh.github.io/
- Сайт Ngspice: https://ngspice.sourceforge.io/
- Репозиторий исходных кодов: https://github.com/ra3xdh/qucs_s
- Актуальный релиз: https://github.com/ra3xdh/qucs_s/releases/tag/0.0.24
- Страница на Boosty, где можно поддержать проект финансово: https://boosty.to/qucs_s
- Видео-туториал на английском языке от Kasper Nielsen: https://www.youtube.com/watch?v=90RaVy38DB8
- Видео-туториал на русском языке от канала Deztronica: https://www.youtube.com/watch?v=2HyK5TZ3c2k
Автор: Вадим Кузнецов