Qucs-S является программой с открытым исходным кодом для моделирования электронных схем. Qucs-S кроссплатформенный (поддерживаются Linux и Windows) и написан на С++ с использованием набора библиотек Qt. О базовых принципах работы с Qucs-S рассказывает моя предыдущая статья. Для работы Qucs рекомендуется использовать также открытый движок моделирования Ngspice. Актуальным релизом Qucs-S на текущий момент является версия 1.0.2.

В Ngspice начиная с версии 37 добавлена возможность моделирования матрицы рассеяния (иначе называемое моделирование S-параметров). Qucs-S также поддерживает данные вид моделирования начиная с версии 0.0.24. Моделирование S-параметров и анализ ВЧ схем всегда было ключевой возможностью симулятора Qucs, наследником которого является Qucs-S. Но для Qucs-S, имеются некоторые отличия, о которых будет рассказано далее. На КДПВ приведён пример моделирования полосового фильтра на диапазон 40 метров для любительского КВ трансивера.

Анализ схемы ДПФ для КВ трансивера в Qucs-S
Анализ схемы ДПФ для КВ трансивера в Qucs-S

Что такое S-параметры и для чего они нужны?

Кратко рассмотрим, что такое S-параметры четырёхполюсника. Четырёхполюсником является любая электронная схема, имеющая один вход и один выход. Если вход четырёхполюсника подключен к источнику переменного тока (генератору колебаний) с некоторым выходным сопротивлением Z1 , то часть энергии от источника передаётся на вход, а часть — отражается от входа. Такое же рассуждение справедливо и для выхода четырёхполюсника, к которому подключена нагрузка с сопротивлением Z2. Нормированные амплитуды падающей и отражённых волн можно связать через матрицу S-параметров.

Физический смысл S-параметров следующий:

  • S11 — коэффициент отражения Γ1 от входа четырёхполюсника. Показывает степень согласования между источником входного сигнала (генератором колебаний) и входными цепями четырёхполюсника. Если S11 = 0, то вся энергия от источника входного сигнала проходит на вход четырёхполюсника без отражения.

  • S12 — коэффициент обратной передачи. Показывает степень передачи энергии с выхода четырёхполюсника на вход.

  • S21 — коэффициент передачи. Равен коэффициенту усиления по мощности четырёхполюсника.

  • S22 — коэффициент отражения Γ2 от нагрузки. Показывает степень передачи энергии с выхода в нагрузку. Если S22 = 0, то вся энергия с выхода четырёхполюсника поглощается нагрузкой без отражения.

Матрицу S-параметров можно преобразовать в матрицы Y и Z-параметров. При этом Y-параметры представляют собой входную, выходную и проходную проводимость четырёхполюсника, а Z-параметры - сопротивления.

Объект моделирования

Прежде всего нужно убедиться, что Ngspice, используемый Qucs-S, имеет версию 37 или выше. Иначе моделирование S-параметров работать не будет.

Мы будем далее моделировать широкополосный усилитель высокой частоты (УВЧ) на биполярном транзисторе из книги Э. Реда «Высокочастотная схемотехника». Данный усилитель часто используется в схемах приёмников и трансиверов на любительские КВ диапазоны. Оригинальная схема из книги показана на рисунке.

Оригинал схемы широкополосного УВЧ
Оригинал схемы широкополосного УВЧ

Коэффициент усиления данной схемы примерно равен:

K=\sqrt{R_f/R_e}

С тем, чтобы собрать данную схему в Qucs-S проблем возникнуть не должно. Размещаем все необходимые компоненты на поле схемы и соединяем проводами. В качестве транзистора будем использовать 2N5109, который часто применяется в подобных схемах. Модель данного транзистора находится в библиотеке «BJT extended», где её можно найти при помощи функции поиска. Итоговая схема показана на следующем рисунке. Ко входу и выходу усилителя подключены 50-омные порты. Про них будет пояснение далее.

ВЧ трансформатор в цепи коллектора транзистора состоит из двух индуктивно связанных катушек L1 и L2. Связь между катушками задаётся через специальный компонент называемый «К coupling». Его параметрами являются обозначения на схеме двух катушек и коэффициент связи между ними.

Схема широкополосного УВЧ
Схема широкополосного УВЧ

Задание моделирования

После того, как схема собрана, нужно задать виды моделирования. Так же, как и было в Qucs, для Qucs-S предусмотрен специальный вид моделирования «S-parameter simulation», который задаёт параметры расчёта матрицы рассеяния многопортовой схемы. Найти данный вид моделирования можно в левой части окна в группе «Simulations». В качестве параметров моделирования требуется задать начальную (Start) и конечную частоты (Stop), а также количество точек расчёта (Points). Поддерживается линейная и логарифмическая развёртка частоты.

Компонент для задания симуляции S-параметров
Компонент для задания симуляции S-параметров

ДиЧтобы произвести моделирование S-параметров, необходимо к каждому из портов схемы подключить специальный источник, называемый Power source. Данный компонент находится в группе «Sources». С обычным источником переменного напряжения (AC voltage source) моделирование S-параметров функционировать не будет. В нашем примере такие источники подключены к узлам in и out.

Компонент для 50-омных портов
Компонент для 50-омных портов

В качестве параметров источника следует задать номер порта (Num), сопротивление порта (Z , должно быть действительным числом) в Ом, мощность синусоидального сигнала (P) в дБмВт и частоту (f) в Гц.

Теперь, когда схема собрана, можно запускать моделирование. Для этого в главном меню выбираем Simulation->Simulate или нажимаем клавишу F2. Перед моделированием можно также посмотреть рабочую точку схемы на постоянном токе, нажав клавишу F8.

Если в схеме не было ошибок, то Qucs-S известит нас о том, что моделирование прошло успешно. После этого можно будет построить графики частотной зависимости S-параметров, для чего размещаем на поле схемы декартовскую (Cartesian) диагрмму. Ngspice после моделирования создаёт набор переменных, которые представляют собой S, Y, Z параметры многополюсника. Применять функции преобразования подобные stoy(), которые использовались в Qucs больше не требуется. Окно задания свойств диаграммы, в котором виден перечень переменных показано на скриншоте. Из названия переменных понятно, что они представляют. Всего у нас доступно 12 переменных, по четыре для каждого типа параметров S, Y, Z. По сравнению с Qucs, синтаксис данных переменных поменялся. Теперь номера портов задаются следом за буквой через символ подчёркивания.

Диалоговое окно свойств диаграммы с переменные, созданные после моделирования
Диалоговое окно свойств диаграммы с переменные, созданные после моделирования

Мы построим два графика. На одном будут параметры S11 и S22 (коэффициенты отражения от входа и выхода соответственно), а на другом параметры S21 (прямой коэффициент передачи) и S12 (обратный коэффициент передачи). Схема с размещёнными на её поле графиками показана на следующем скриншоте.

Схема широкополосного УВЧ с результатами моделирования
Схема широкополосного УВЧ с результатами моделирования

Видно, что схема обеспечивает равномерное усиление в полосе частот от 1 МГц до 30 МГц, что перекрывает весь КВ диапазон.

Обработка результатов моделирования S-параметров

Раньше в Qucs cуществовали математические функции подобные rtoswr(), специально предназначенные для использования совместно с моделирование S-параметров. Для Qucs-S с движком Ngspice такие функции больше не действуют. Нужно писать свои уравнения. В качестве примера рассчитаем КСВ по входу и выходу схемы и переведём коэффициент усиления схемы S21 в децибелы.

Как известно, КСВ связан с коэффициентом отражения Г следующим соотношением:

SWR=\frac{1+|\Gamma|}{1-|\Gamma|}

Теперь нужно составить уравнения Nutmeg – постпроцессора Ngspice. Для этого нажимаем в главном меню Insert→Insert equation. На схеме появляется специальный компонент, в котором задаётся уравнение. В свойствах уравнения выставляем тип моделирования, к которому оно относится. Для нашего случая это SP – моделирование S-параметров. Там же вписываем собственно уравнения, которые переводят прямой коэффициент передачи в децибелы и рассчитывают КСВ. Мы рассчитываем КСВ по входу и по выходу, и поэтому в качестве коэффициента отражения берём S11 и S22.

Диалог задания уравнения
Диалог задания уравнения

На схеме данный компонент выглядит следующим образом:

Теперь если запустить моделирование, то к списку переменных добавляется три новых переменных K, VSWRin и VSWRout, которые можно вывести на графики. Получаем следующие графики. На скриншоте они построены на отдельной вкладке.

Графики коэффициента усиления в децибелах и КСВ
Графики коэффициента усиления в децибелах и КСВ

Также имеется возможность получить вывод в децибелах без добавления уравнений на схему. Для этого нужно в свойствах диаграммы установить параметр «logarithmic left Axis Grid» и выбрать единицу измерений из выпадающего списка. В этом же окне на той же вкладке можно выбрать «Engineering notation» в списке «Number notation» и видеть по оси X отсчёт в мегагерцах, как на скриншоте выше. В том же диалоговом окне можно задать подписи по осям (Axis label).

Настройка осей диаграммы
Настройка осей диаграммы

Также в Qucs-S имеется возможность построить графики частотных зависимостей S-параметров на комплексной плоскости (Locus curve) или в виде диаграммы Смита (Smith chart). Пример такого графика для диапазонного полосового фильтра показан на скриншоте. Если поставить маркер на диаграмме Смита, то программа автоматически для S-параметра будет показывать значения соотвествующего Z-параметра. Например параметру S11 соответствует параметр Z11, который является входным сопротивлением схемы. Из диаграммы Смита видно, что в полосе пропускания фильтра оно равно около 50 Ом.

Моделирование ДПФ для КВ трансивера и пример использования диаграммы Смита
Моделирование ДПФ для КВ трансивера и пример использования диаграммы Смита

Дополнительные возможности для моделирования ВЧ схем

Старый Qucs поддерживал большое количество компонентов, представляющих различные микрополосковые линии и прочие СВЧ устройства. К сожалению, в Qucs-S эти компоненты пока не работают с движком Ngspice и поэтому спрятаны. Но работа по их возвращению запланирована https://github.com/ra3xdh/qucs_s/issues/94

Тем не менее в релизе 1.0.2 были добавлены два компонента INDQ и CAPQ, которые позволяют задавать катушку и конденсатор с добротностью, что удобно для анализа различных фильтров и усилителей. На скриншоте можно видеть пример реверсивного резонансного усилителя на полевых транзисторах конструкции В. Артёменко UT5UDJ, где используются такие катушки. Производится параметрическое моделирование зависимости коэффициента усиления от добротности катушки.

Модель реверсивного УПЧ на полевых транзисторах
Модель реверсивного УПЧ на полевых транзисторах

Также начиная с версии 0.0.24 в библиотеке компонентов доступен специальный компонент для кварцевого резонатора. При этом данный компонент сделан таким образом, чтобы его параметры было удобно задавать для моделирования кварцевых фильтров, применяющихся в любительских конструкциях КВ техники. На скриншоте можно видеть пример моделирования кварцевого QER фильтра ПЧ на частоту 8 МГц. Параметры кварцев на схеме измерены на настоящих кварцах в корпусе HC-49/U при помощи известного прибора nanoVNA и программы AMCP https://github.com/Battosai42/amcp/

Моделирование АЧХ кварцевого фильтра на частоту 8 МГц
Моделирование АЧХ кварцевого фильтра на частоту 8 МГц

Ресурсы по Qucs-S

Комментарии (27)


  1. vlado2k16
    17.05.2023 07:00
    +3

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

    Только один момент, в формуле для расчета КСВ ошибка: в знаменателе должен быть минус.


    1. vv_kuznetsov Автор
      17.05.2023 07:00

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

      Если в Qucs-S мы всё-таки добавим модели МПЛ и прочих длинных линий, то сделаю статью. Про старый Qucs, который базируется на Qt4, я писать не вижу смысла.

      в формуле для расчета КСВ ошибка

      Формулу поправил.


  1. quaer
    17.05.2023 07:00

    Как всегда, программу пишут программисты, а пользоваться будут электронщики. Как глядя на графики понять какие единицы измерения используются? 2.5e7 на оси частот удобства считывания тоже не добавляет.


    1. okovalevski
      17.05.2023 07:00

      Зря вы так, вполне нормально заданы единицы измерения.


      1. quaer
        17.05.2023 07:00

        Неужели вам удобно читать такой график?


    1. vv_kuznetsov Автор
      17.05.2023 07:00

      Программа использует стандартный синтаксис SPICE. Если v(), то это напряжение, если i(), то это ток. S-параметры исключение, но там из названия понятно, что это такое. По оси Х тоже всё понятно (frequency или time).

      2.5e7 на оси частот удобства считывания тоже не добавляет.

      Можно сделать отображение 25M, в статье указано как.


    1. vkni
      17.05.2023 07:00

      Обалдеть. Ваши совершенно справедливые претензии насчёт единиц измерения (нам в физ ПТУ за неуказанные единицы контрольную отправляли в мусорное ведро) оказались непоняты даже автором статьи.


      1. vv_kuznetsov Автор
        17.05.2023 07:00

        Действительно, не понятно в чём суть претензий. Такую систему обозначений для токов и напряжений используют все симуляторы основанные на SPICE. В MicroCAP, например, тожно так же обозначаются сигналы и ни у кого претензий не возникает. Там по-моему ещё и надписи нельзя было редактировать. Движок моделирования никаких данных о единицах измерений не предоставляет. Если требуется, например, подготовить графики для публикации, то можно легко отредактировать надписи по осям и написать там всё, что угодно. Поддерживаются даже греческие буквы. Соответствующие настройки есть в свойствах диаграммы. В статье я не стал подписывать оси вручную намеренно и оставил дефолт, иначе будет непонятно, какие именно переменные там построены.


        1. quaer
          17.05.2023 07:00

          Движок моделирования никаких данных о единицах измерений не предоставляет.

          Звучит очень странно. Движок не знает что параметром является круговая или обычная частота? А при отображении не знает используется ли логарифм или нет?

          Программа не знает что обычно пользуются понятиями множителями привязанными к степени 3 десятки для линейных величин? Для градусов числам типа 45, 90, 180? Для децибел числам типа 3, 6, 12, 20, 40?

          В MicroCAP, например, тожно так же обозначаются сигналы и ни у кого претензий не возникает.

          Странный аргумент, "а вот у них...". Какая разница как у других? И вот пример графика из Micro-Cap.


          1. vv_kuznetsov Автор
            17.05.2023 07:00

            Движок не знает что параметром является частота?

            В датасете, который отдаёт симулятор, имеется только указание, что это frequency, voltage или time без единиц измерения. Ось Х на графиках Qucs-S подписана и из дефолтной подписи понятно, что это такое (frequency или time). 15 лет уже эта система существует. Можно как-то автоматически распознавать тип переменных и подставлять единицу измерения через костыли, но я не вижу в таком смысла. График, готовый к публикации в статьях и отчётах таким образом получить всё равно не выйдет и придётся подписывать оси вручную.

            И вот пример графика из Micro-Cap.

            Вижу точно такой же синтаксис у переменных, как и у Ngspice. Стандартный для SPICE v() i() и т.п., только приписана единица измерения для частоты. dB() -- это здесь функция, а не единица измерения. Инженерную нотацию по осям, чтобы получить 100K вместо 1e5 в Qucs-S поставить можно.


            1. quaer
              17.05.2023 07:00

              В датасете, который отдаёт симулятор, имеется только указание, что это frequency, voltage или time без единиц измерения

              А как тогда различается круговая частота и обычная?

              Вижу точно такой же синтаксис у переменных, как и у Ngspice

              Вы разве не видите "Degrees", "Hz", "30K" а не 3e4?


              1. vv_kuznetsov Автор
                17.05.2023 07:00

                А как тогда различается круговая частота и обычная?

                Круговая частота в моделировании Ngspice не используется. Штатными средствами её задать нельзя. Её можно сделать только через пользовательский скрипт, если подменить переменную по оси X и пересобрать вектор. И распознать в таком случае автоматически нельзя. Для фазы, вычисляемой через функцию cph() Ngspice в датасете ставит тип notype.

                Вы разве не видите "Degrees", "Hz"

                Я же написал, что кроме того, что приписана единица измерения. Сам синтаксис V(OUT) и т.п. такой же как и везде в SPICE.


                1. vkni
                  17.05.2023 07:00

                  Круговая частота в моделировании Ngspice не используется.

                  А мы-то об этом откуда знаем?


                  1. vv_kuznetsov Автор
                    17.05.2023 07:00

                    Из документации Ngspice? И также в самой симуляции частота задаётся в герцах, а не рад/с.


        1. vkni
          17.05.2023 07:00

          Действительно, не понятно в чём суть претензий.

          Я именно об этом — что вам и вашим коллегам просто непонятно. В смысле, у вас нет культуры построения графиков.


          1. vv_kuznetsov Автор
            17.05.2023 07:00

            Выше я уже ответил на этот вопрос. Чья-либо культура тут ни при чём. Автоматическую простановку единиц измерения реализовать возможно только через какие-либо костыли, так как движок моделирования эту информацию не предоставляет. Если требуется, то оси можно подписать вручную. В статье я не стал проставлять подписи по осям и оставил всё как есть намеренно.


  1. e-zig
    17.05.2023 07:00

    • S22 — коэффициент отражения Γ2 от нагрузки. Показывает степень передачи энергии с выхода в нагрузку. Если S22 = 0, то вся энергия с выхода четырёхполюсника поглощается нагрузкой без отражения.

    Всегда думал, что это коэффициент отражения от выхода четырехполюсника


  1. EliasAircrafter
    17.05.2023 07:00
    +1

    Плюсанул, сейчас статьи про аналоговую схемотехнику - редкость.

    «Однако, коэффициент усиления отличается от того, что указано в книге Э. Рэда. С чем связано отличие, не вполне понятно» - а вы обратили внимание, что схема в симуляторе не соответствует той, что приведена на скриншоте из книги? В оригинале точка выхода - место соединения катушек трансформатора. У вас же - это коллектор. Получается, что базовый делитель не только обеспечивает смещение и режим по ПТ, но и является цепью ООС, и там даже коррекция есть в виде С2||RF ( почему-то там все кондеры С2, кроме выходного).


    1. vv_kuznetsov Автор
      17.05.2023 07:00

      вы обратили внимание, что схема в симуляторе не соответствует той, что приведена на скриншоте

      Классика. Схему я не пересобирал с нуля, а скопировал из какой-то своей старой симуляции, а потом удивляюсь, почему ничего не работает. Там как раз я решил посмотреть, что будет если сигнала снимать с коллектора. Если откорректировать схему, то коэффициент усиления становится около 10, как и должно быть.


    1. vv_kuznetsov Автор
      17.05.2023 07:00

      Симуляцию поправил. Теперь всё более-менее соответствует теории из книги Рэда.


      1. quaer
        17.05.2023 07:00

        На схеме Rf = 470, Re = 4.7, по формуле получаем K = sqrt( 470 / 4.7 ) = 10. На графике видно около 9.

        Мне почему-то кажется, что усиление должно быть ближе к K = Rf / Zout, то есть в данной схеме K = 470 / 50 = 9.4

        Можете покрутить параметры, чтоб проверить, что ближе к истине?


        1. vv_kuznetsov Автор
          17.05.2023 07:00

          Формула приведена в книге без вывода, тем не менее работает. Но расчёт верен только в некоторых пределах отношения Rf/Re. У меня получилось следующее на частоте 10 МГц.

          Rf = 470 Ом Re = 15 Ом Ky=5.55
          Rf = 470 Ом Re = 2.2 Ом Ky = 10.3
          Rf = 470 Ом Re = 22 Ом Ky = 4.4

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


          1. quaer
            17.05.2023 07:00

            Re понятно, что будет уменьшать усиление, если будет иметь достаточно большое значение. Но если его оставить достаточно малым, скажем, около 2 Ом и покрутить Rf?


            1. vv_kuznetsov Автор
              17.05.2023 07:00

              Если, увеличивать Rf до 4.7 кОм, то коэффициент усиления на симуляции увеличивается примерно до 15-20. В своё время пробовал проделывать это с данной схемой на макете и при большом усилении получил возбуд.


              1. quaer
                17.05.2023 07:00

                4.7 кОм выглядит слишком большим. У транзистора GBW 1200 МГц и коэффициент усиления ок 100 на постоянном токе. И согласование наверно тоже ухудшается при таком номинале.


    1. vv_kuznetsov Автор
      17.05.2023 07:00
      +1

      почему-то там все кондеры С2, кроме выходного

      Там имеется в виду, что эти конденсаторы имеют одинаковый номинал. Далее в книге имеется таблица с рекомендуемыми номиналами для компонентов на схеме.


  1. quaer
    17.05.2023 07:00

    Ради интереса эти же схемы на идеальных компонентах в idealCircuit, можно сравнить. Не понял какие полевики использованы, так что их усиление подогнано, чтобы было примерно похоже.