diplom

Page 1

Содержание Введение.................................................................................................................6 1. Выбор метода анализа аналоговых РТЦ......................................................8 1.1. Краткий обзор современных систем компьютерного моделирования....8 1.2. Обзор методов анализа аналоговых РТЦ.................................................14 1.3. Возможности, открываемые методом переменных состояния..............16 1.4. Решение проблемы точности вычислений в методе переменных состояния на ЭВМ.................................................................................................17 1.5. Выводы........................................................................................................18 2. Анализ и выбор современных технологий программирования.............19 2.1. Краткий обзор принципов высокоуровневого программирования.......19 2.2. Выбор принципов и технологий программирования для решения радиотехнических задач........................................................................................25 2.3. Обзор универсальных кроссплатформенных библиотек классов.........28 2.4. Результаты проведенного анализа............................................................35 3. Разработка математического аппарата для составления модели и проведения анализа РТЦ.......................................................................................35 3.1. Полная математическая модель нелинейной инерционной РТЦ в методе переменных состояния.............................................................................35 3.2. Анализ нелинейной РТЦ по постоянному току......................................41 3.3. Составление линеаризованной математической модели нелинейной РТЦ..........................................................................................................................42 3.4. Метод Леверрье-Фаддеева для определения выражения передаточной функции РТЦ..........................................................................................................43 3.5. Анализ частотных характеристик.............................................................45 4. Разработка алгоритмов анализа РТЦ.........................................................46 4.1. Обобщенный алгоритм работы системы..................................................46 4.2. Алгоритм работы интерпретатора языка описания схем.......................48 4.3. Алгоритм формирования матрицы главных сечений и матриц, входящих в основу математической модели нелинейной РТЦ........................52 4.4. Алгоритм решения уравнений РТЦ при ее анализе по постоянному току.........................................................................................................................60 4.5. Алгоритм вычисления коэффициентов полиномов передаточной функции линейной РТЦ методом Леверрье-Фаддеева......................................64 4


4.6. Алгоритмы составления и расчета значений частотных характеристик РТЦ..........................................................................................................................67 5. Разработка программы для моделирования РТЦ методом переменных состояния на языке C++.........................................................................................68 5.1. Проектирование структуры основных модулей программы..................68 5.2. Модуль интерпретации языка текстового описания схем......................69 5.3. Модуль формирования матрицы главных сечений и матриц для составления математической модели нелинейной РТЦ....................................70 5.4. Модуль анализа РТЦ по постоянному току.............................................71 5.5. Модуль расчета частотных характеристик РТЦ с использованием библиотеки для увеличения разрядности чисел.................................................71 5.6. Разработка графического интерфейса программы..................................72 6. Примеры схемотехнического моделирования линейных и нелинейных РТЦ.............................................................................................................................75 6.1. Каскад апериодического усилителя на биполярном транзисторе.........75 6.2. Каскад апериодического усилителя на полевом транзисторе................85 6.3. Нагруженный фильтр нижних частот......................................................90 Заключение..........................................................................................................92 Список литературы............................................................................................93 Приложение.........................................................................................................96

5


Введение Актуальность проблемы В настоящее время системы автоматизированного проектирования являются неотъемлемым инструментом любой конструкторской лаборатории. На рынке программного обеспечения представлен широкий круг различных систем, позволяющих автоматизировать процесс разработки. В их число входят как небольшие узкоспециализированные программы, например для разводки печатных плат, так и целые системы проектирования, позволяющие проводить комплексный анализ и моделировать сложные радиотехнические системы. Значительное место среди подобных программных продуктов занимают системы схемотехнического моделирования электрических цепей. Они позволяют в привычном для радиоинженера виде собирать электрические цепи, устанавливать параметры элементов и проводить различные виды анализа. В своем составе программы имеют обширные библиотеки компонентов, позволяя конструкторам моделировать многие реальные ситуации, ускоряя и удешевляя тем самым процесс разработки. Тем не менее, существует ряд важных задач оценки и оптимизации, которые невозможно в полной мере решить в существующих на рынке программных продуктах. К таким задачам относятся задачи по анализу и оптимизации устойчивости электрических цепей к самовозбуждению, а также задачи по оценке и оптимизации различных нелинейных эффектов: интермодуляционных искажений, перекрестной модуляции, амплитудно-фазовой конверсии, оценке коэффициента гармоник и пр. Последняя задача приобретает все большую актуальность в настоящее время. Например, в системах подвижной связи постоянный рост числа абонентов и объемов передаваемой информации, а также повышение требований к качеству услуг заставляет разработчиков искать возможности оптимизации использования частотного ресурса. Данную задачу в значительной мере позволяет решить улучшение качества используемого оборудования, что в свою очередь выражается в уменьшении влияния вредных нелинейных эффектов. В системах военной связи, особо остро стоит вопрос о помехозащищенности, в частности защите от направленных помех, которые используя вредные нелинейные эффекты, возникающие в приемнике, могут существенно ухудшить его параметры, оставаясь практически незаметными. В других областях, таких как спутниковая связь, радиолокация и пр., также существует большое количество задач оптимизации указанных выше нелинейных эффектов. Моделирование подобных ситуаций поможет более подробно изучить процессы, происходящие в цепях, а также разработать более эффективные методы, решающие описанные выше проблемы. Все больше научных работ посвящается изучению таких вопросов. Был разработан целый ряд методов, позволяющих тем или иным способом 6


вычислять и оценивать параметры нелинейных эффектов. К их числу относятся методы на основе функциональных рядов Вольтерры, расширенный метод гармонического баланса и др. Таким образом, появляется возможность использования этих методов в системах схемотехнического моделирования, тем самым автоматизируя процесс вычислений. С другой стороны, научные и технические достижения в области разработки ЭВМ и технологий программирования позволяют использовать все больше программных и аппаратных ресурсов, увеличивая при этом число производимых за секунду операций и тем самым снижая время вычислений. Помимо этого, важным является постоянный прогресс в разработке технологий интерактивного взаимодействия с пользователем и улучшении возможностей графического интерфейса, что позволяет создавать еще более удобные и мощные системы, максимально эффективно и быстро решающие текущие задачи разработчиков. Цель и задачи исследования Изложенное определило цели и задачи настоящей работы. Основной целью работы является разработка части системы схемотехнического моделирования, которая сможет послужить основой для создания профессионального и конкурентоспособного программного продукта. К задачам исследований относится обзор и выбор наиболее подходящих методов анализа РТЦ, передовых технологий в области программирования технического ПО, а также разработку математического и алгоритмического аппарата, позволяющего реализовать программную часть. Методы исследований При решении поставленных задач применены элементы теории алгебры матриц, теории численных методов, формализованный язык описания принципиальных схем Spice, язык программирования высокого уровня C++ с использованием мощных кроссплатформенных библиотек функций. Структура и объем работы Работа состоит из введения, шести разделов, заключения, списка литературы, содержит 83 страницы основного текста и 24 рисунков. В списке литературы 40 наименований.

7


1. Выбор метода анализа аналоговых РТЦ 1.1. Краткий обзор современных систем компьютерного моделирования Идея применить ЭВМ возникла в начале пятидесятых годов прошлого века. Однако практическая реализация этой идеи затянулась, и она стала приносить плоды только спустя десять лет. Дать ЭВМ в помощь проектировщику – это значит запрограммировать составление и решение системы уравнений, описывающих процессы, происходящие в некотором устройстве, т.е. построить его "математический макет". Инженеру решение подобной задачи совершенно не по силам, поскольку для этого требуется знать методы составления программ, методы составления систем решения уравнений по изображению схемы устройства, численные методы решения уравнений и т.д., а всем этим комплексом знаний инженер не располагает. Следовательно, для эффективного использования вычислительной машины нужно разработать комплекс программ для построения математических макетов произвольных электрических схем, с помощью которых инженер будет в состоянии описать схему и цели исследования. При моделировании можно провести четкую аналогию с физическим натурным экспериментом: дискретным значениям процессов, действующих в различных точках реальной системы радиосвязи, однозначно соответствуют значения чисел в соответствующих точках модели. Удобно представлять такой моделирующий числовой процесс как отображение реального процесса в некоторой числовой системе отсчета, т.е. реализация модели на ЭВМ означает, по существу, замену радиоустройства, роль которого при обработке сигналов в процессе передачи и приема можно уподоблять действию специализированного вычислительного устройства, универсальной ЭВМ, настроенной с помощью программ на выполнение тех же функций, что и моделируемый компонент РТУ. Однако существует и важное различие, которое необходимо учитывать при использовании моделей, заключающееся в том, что процессы, протекающие одновременно в различных устройствах или блоках реальной системы, моделируются в ЭВМ в последовательные моменты времени. Это приводит к необходимости введения разномасштабности проектирования процессов, различающихся по скорости, как между собой, так и с быстродействием ЭВМ. Таким образом, моделирование РТУ на ЭВМ позволяет резко сократить, а иногда и исключить трудоемкие и дорогостоящие этапы работы над разработкой и испытанием макета. Сущность моделирования на ЭВМ состоит в изучении поведения РТУ и характеристик процессов с помощью их моделей, являющихся некоторым эквивалентом реальных изучаемых объектов. При компьютерном моделировании разработчик может изучить поведение разработанной им принципиальной схемы на ЭВМ, выявить и устранить ошибки, допущенные раннее на этапе синтеза, экспериментировать, выбирать наи8


лучшие решения и т.д. В результате повышается качество проектирования, и сокращается время вывода изделия на рынок, а высокое качество продукции позволяет резко сократить расходы по рекламациям и гарантийному обслуживанию. На рынке представлено большое количество различных программных продуктов, позволяющих производить разные виды моделирования. Схемотехническое моделирование позволяет в режиме реального времени, с использованием понятного графического интерфейса, собирать принципиальные схемы, выбирать параметры элементов и анализировать их. Моделирование систем обработки сигналов, позволяет создавать комплексы из различного рода устройств (которые либо представлены в стандартной библиотеке элементов, либо введены вручную), связывать их между собой, и подавать на вход такой системы различные сигналы, добавлять нужные модели шумов в разные участки схемы и анализировать выходные сигналы. Системы 3D-моделирования для микроволновой электроники дают возможность в наглядном виде создавать модели элементов или устройств СВЧ, задавать их геометрические размеры, а также свойства материалов, объединять полученные модели и проводить анализ их характеристик. Целью нашей работы является разработка программы схемотехнического моделирования, поэтому остановимся на рассмотрении имеющихся программных продуктов в данной области. Проведем краткий обзор некоторые программ схемотехнического моделирования, которые являются наиболее широко распространенными и часто применяемыми программами моделирования РТУ. Microcap 9 Программа Microcap (Microcomputer Circuit Analysis Program) фирмы Spectrum Software является интегрированным редактором схем, позволяющим пользователю создавать любое соединение электронной цепи, и мощным симулятор для представления анализа цепей и исследования разных проектов. В Microcap 9 удобство графической оболочки сочетается с надежными вычислительными алгоритмами программы PSpice – эталона схемотехнического моделирования. Важная особенность Microcap – полная совместимость с последними версиями программы PSpice как по принятым моделям компонентов, так и по текстовому описанию схемы. Из других достоинств Microcap 9 следует отметить возможность задания функциональной зависимости параметров схемы (в виде функции времени, токов ветвей и узловых потенциалов). К основным инструментам программы относятся: • Встроенный интерактивный редактор схем • Инструменты для цифрового моделирования • Создание макромоделей 9


• Использование переменных и математических выражений при описании компонентов принципиальных схем • Анализ переходных процессов • Анализ по постоянному и переменному току • Анализ частотных характеристик • Анализ чувствительности • Многовариантный анализ • Инструменты для разработки пассивных и активных фильтров • Построение характеристик в режиме 3D • Анализ схем методом Монте-Карло (статистический метод моделирования), который позволяет оценить работу схемы при заданном разбросе параметров каждого компонента • Возможность степпинга Любой сигнал, полученный при моделировании схем можно разложить в ряд Фурье, то есть провести его спектральный анализ. При этом сигнал подвергается дискретизации, а для проведения спектрального анализа используется метод быстрого преобразования Фурье. Спектрограммы выводятся в графическом виде. Выполняется и расчет коэффициента гармоник (нелинейных искажений). В Microcap 9 имеется возможность задания шумовых параметров компонентов для оценки коэффициента шума усилительных схем (с одним серьезным ограничением – для всех компонентов используется одна и та же шумовая температура). Microcap 9 позволяет выполнять макромоделирование сложных аналоговых и цифровых схем. В библиотеке программы есть модели компонентов электронных схем. Для подготовки библиотек моделей компонентов в систему Microcap введена специальная программа MODEL, которая по определенным справочным данным на приборы автоматически составляют таблицы параметров их моделей и записывают их в специальную библиотеку. Пользователь может не только проанализировать полученные значения параметров, но и изменять их для получения желаемого сходства статических характеристик прибора с характеристиками модели. Можно готовить модели сразу для нескольких приборов и обмениваться данными с библиотеками Microcap. С помощью этой программы можно вывести на экран вольтамперные характеристики транзисторов и диодов и сравнить их с характеристиками, приведенными в справочниках. Цена на программу для одного рабочего места составляет $4495, для образовательных учреждений предлагаются дополнительный скидки. Поддерживаемая операционная система – Microsoft Windows. Метод расчета аналоговых схем – метод узловых потенциалов. 10


Пакет программ Cadence OrCAD 16.2 OrCAD 16.2 представляет интегрированный программный комплекс для сквозного проектирования аналоговых, цифровых и смешанных аналогоцифровых устройств, синтеза устройств программируемой логики и аналоговых фильтров. Проектирование начинается с ввода принципиальной схемы, ее моделирования и оптимизации и заканчивается разработкой печатной платы и выводом управляющих файлов для фото-плоттеров. OrCAD Capture – программа создания принципиальных схем проектов всех типов: синтез ПЛИС и моделирование цифровых устройств с помощью OrCAD Express, моделирование смешанных аналого-цифровых устройств и их параметрическая оптимизация с помощью OrCAD PSpice и PSpice Optimizer, разработка печатных плат с помощью OrCAD Layout; OrCAD Capture CIS (Component Information System) – программа создания принципиальных схем, имеющая доступ к базам данных ведущих фирм-производителей электронных компонентов через Интернет с помощью службы ICA (Internet Component Assistant); зарегистрированные пользователи получают доступ к каталогу, содержащему более 200 тыс. компонентов; PSpice A/D – система аналогового моделирования с поддержкой цифровых элементов для помощи в виртуальном решении любых задач проектирования – от высокочастотных систем до разработки интегральных микросхем. Программа полностью интегрируется с продуктом Cadence PCB для проектирования печатных плат. Программа имеет большую встроенную библиотеку элементов и ряд технологий – встроенные математические функции и адаптивные методы моделирования, которые делают процесс разработки более эффективным. Обеспечивает как стандартные методы анализа: расчет режима по постоянному току, частотных характеристик и переходных процессов, так и многовариантный и статистический анализ по методу Монте-Карло, расчет чувствительности схемы к разбросу параметров компонентов и проверка работоспособности для наихудшей комбинации отклонений от номинала, графический анализ формы сигнала, анализ производительности по результатам моделирования, графическое редактирование входных сигналов, возможность аналитического задания входных воздействий, полуавтоматическое описание полупроводниковых устройств на основе данных производителя. Библиотеки моделей содержат более 18000 устройств (диоды, биполярные и полевые транзисторы, мощные МОПтранзисторы, операционные усилители, стабилизаторы, регуляторы и компараторы напряжения, нелинейные магнитные устройства, тиристоры, оптроны, кварцевые резонаторы и др.). OrCAD PCB Designer – пакет программ для проектирования и оптимизирования печатных плат, включающая в себя все необходимые инструменты для разработки печатных плат вплоть до запуска их в 11


производство. Программа имеет встроенный графический редактор печатных плат с возможностью автотрассировки, доступ к огромной базе готовых элементов и возможностью быстрого создания новых. Поддерживаемая операционная система – Microsoft Windows. Метод расчета аналоговых схем – метод узловых потенциалов. Пакет программ корпорации AWR Данный пакет программ представляет собой полную систему разработки, моделирования, анализа и проектирования электрических схем в широком диапазоне частот. Специально-разработанная технология моделирования APLAC, лежит в основе всех продуктов компании и предоставляет мощные средства для проведения различного рода анализов: • По переменному току • В частотной области • Во временной области • Гармонического баланса • Фазовых шумов • Линейных и нелинейных шумов, в том числе собственных шумов элементов Microwave Office – система моделирования микроволновых радиоэлектронных устройств. Программа содержит в себе все необходимые инструменты для проектирования высокочастотных интегральных микросхем, печатных плат и модулей: • Моделирование линейных электрических схем • Моделирование нелинейных схем • Инструменты для моделирования электромагнитных устройств • Встроенная графическая система составления принципиальных схем • Возможности для статистических исследований • Большая библиотека элементов Analog Office – современная интегрированная система, специально спроектированная и оптимизированная для моделирования аналоговых радиочастотных цепей. Программа включает в себя все ключевые элементы проектирования: • графический ввод • синтез • моделирование 12


• оптимизация • проверка данных • анализ Visual System Simulator – мощное программное средство для проектирования современных сложных систем связи. Программа поддерживает следующий набор стандартов: • DVB-H/DVB-T • WiMAX/802.16d-2004/802.16e-2005 • CDMA2000 • GSM/EDGE • WLAN/802.11a/b/g • 3G WCDMA FDD • IS95 AXIEM – программный продукт, позволяющий разрабатывать различные электромагнитные устройства. Программа имеет удобный графический интерфейс для 3D-проектирования, инструменты моделирования и анализа, а также полную интеграцию с остальными продуктами компании, что позволяет использовать разрабатываемые элементы при проектировании сложных устройств. Поддерживаемая операционная система – Microsoft Windows Метод расчета аналоговых схем – метод узловых потенциалов. Agilent ADS 2009 Программный продукт Advanced Design System (ADS) от компании Agilent является мощной программной системой электронного моделирования схем. Система ADS предлагает полный набор средств для разработчиков таких продуктов как стационарных и мобильных телефонов, пейджеров, беспроводных сетей, радаров и систем спутниковой навигации. Система содержит в себе полный набор технологий моделирования, начиная от моделирования в частотной и временной областях, заканчивая – моделированием устройств с электромагнитными элементами. Единая встроенная графическая система создания устройств и схем предоставляет возможности по компоновке элементов в принципиальной схеме, набор инструментов для проверки работоспособности и граничных условий, а также возможности по внесению изменений в режиме реального времени даже вовремя процесса анализа. К основным возможностям программы относятся: 13


• Единая среда для ввода принципиальных схем, запуска моделирования и управления проектами • Отображение данных и построение графиков • Линейное моделирование для проведения анализа S-параметров, анализов по переменному и постоянному току для слабых сигналов • Моделирование нелинейных РТУ • Проведение статистического моделирования • Тринадцать мощных модулей оптимизации • Модуль для моделирования фильтров • Моделирование пассивных согласующих цепей • Модуль для разработки технической документации для устройства • Дополнительный набор библиотек, содержащих большое количество радиочастотных элементов Поддерживаемые операционные системы: Microsoft Windows, Linux, Solaris 10 Метод расчета аналоговых схем – метод узловых потенциалов.

1.2. Обзор методов анализа аналоговых РТЦ Из всего количества методов расчета электрических схем в техническом ПО применяются два основных: метод узловых потенциалов и метод переменных состояния. Остановимся на более подробном рассмотрении каждого из них. 1.2.1. Метод узловых потенциалов Метод узловых потенциалов – метод расчета электрических цепей путем записи системы линейных алгебраических уравнений, в которой неизвестными являются потенциалы в узлах цепи. В результате применения метода определяются потенциалы во всех узлах цепи, а также, при необходимости, токи во всех ветвях. Методика расчета Перед началом расчёта выбирается один из узлов, потенциал которого считается равным нулю. Затем узлы нумеруются, после чего составляется система уравнений. Слева от знака равенства записывается потенциал заданного узла, умноженный на сумму проводимостей ветвей, примыкающих к нему, минус потенциалы узлов, примыкающих к данному, умноженные на проводимости ветвей, соединяющих их с данным узлом. Справа от знака равенства записывается сумма всех источников токов, примыкающих к данному узлу; если это источник ЭДС, то он записывается как ЭДС, умноженное на проводимость ветви, соединяющей его с данным узлом. 14


Достоинства метода • сравнительная простота процесса представления математической модели схемы при формировании системы уравнений; • возможность получения потенциалов всех узлов РТУ сразу, что облегчает дальнейший анализ. Недостатки метода • сложность построения частотных характеристик; • невозможность получения полинома передаточной функции; • сложность вычислений связанных математической модели цепи; • необходимость использования устойчивости схемы;

с

матрицами

косвенных

методов

в

полученной для

оценки

• необходимость выбора опорного потенциала (земли или опорного провода); • ограничение использования метода для анализа электрических схем. 1.2.2. Метод переменных состояния Современным подходом в теории электрических цепей является использования метода переменных состояния. В методе используются так называемые переменные состояния, которые описывают текущее состояние элементов накопления энергии – индуктивностей и емкостей. Подход метода переменных состояния при расчете РТЦ заключается в использовании системы дифференциальных уравнений первого порядка вместо единого уравнения высокого порядка, получаемого в других методах расчета. А подобная система всегда и легко разрешима при использовании простых численных методов, таких как, например, метод Крамера. Выбор переменных состояния Переменной состояния при расчете РТЦ выбирается либо напряжение на емкости, либо ток протекающий через индуктивность. Таким образом, для каждого реактивного элемента цепи назначается своя переменная состояния. Достоинства метода • получение математической модели проектируемого устройства в нормальной форме Коши, т. е. разрешенной относительно производных [1], в результате расчетов получаются дифференциальные уравнения первого порядка, которые всегда легко решаются стандартными методами; • получение передаточной функции первого порядка в аналитической форме в виде отношения двух многочленов;

15


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

решения систем его применения не цепями, это дает имеющие в своем

Недостатки метода • сравнительно сложная реализация математической модели цепи;

алгоритмов

формирования

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

1.3. Возможности, открываемые методом переменных состояния Метод переменных состояния, как было показано выше, позволяет в аналитическом виде получать выражение для передаточной функции в виде отношения двух полиномов. Данное преимущество открывает целый ряд возможностей для проведения различного рода анализов. В их число входят: анализ частотных характеристик (получив выражение для комплексного коэффициента передачи, можно легко построить графики частотных характеристик), анализ устойчивости (корни характеристического полинома располагаются на комплексной плоскости, что позволяет анализировать состояние системы на предмет устойчивости) и анализ нелинейных эффектов (анализ передаточных функций высших порядков, на основе данной передаточной функции). Последний вид анализа представляет наибольший интерес для современных радиоинженеров, открывая до сих пор нереализованные возможности анализа различных нелинейных эффектов, таких как интермодуляционные искажения, перекрестные искажения, амплитудно-фазовую конверсию и пр. Как было показано в [3], использование функциональных рядов Вольтерры для нахождения передаточных функций высших порядков является оптимальным для большинства РТЦ. Функционал Вольтерры позволяет отыскивать каждую передаточную функцию более высокого порядка, производя необходимые вычисления над предшествующей ей. В результате, за основу берется передаточная функция первого порядка, которая является передаточной функцией линеаризованной цепи и легко находится в аналитическом виде при использовании метода переменных состояния. 16


Рассмотренные выше возможности и преимущества метода указывают на то, что целесообразно для расчета РТЦ использовать именно его.

1.4. Решение проблемы точности вычислений в методе переменных состояния на ЭВМ Тем не менее, последний недостаток метода переменных состояния (если не применять специальных инструментов для увеличения точности вычислений) оказывает существенное негативное влияние при анализе сложных радиотехнических цепей. Данная проблема выражается в возникновении больших погрешностей вычислений при их анализе, что является недопустимым. Поэтому приходится производить дополнительные преобразования над схемами, рассматривая отдельно верхнюю и нижнюю области частот. Подобный подход в свою очередь осложняет применение прогрессивного графического метода отображения электрических цепей, привычного для инженеров. Погрешности вычислений долгое время являлись основной проблемой применения метода переменных состояния для анализа радиотехнических цепей. Данная погрешность возникает вследствие конечной точности вычислений в ЭВМ, которая в свою очередь вызвана ограниченным числом разрядов стандартных числовых типов данных. Таким образом, точность вычислений может быть повышена за счет увеличения количества разрядов числовых типов. Реализация данного подхода, хоть и не является тривиальной задачей, но все же осуществима. С другой стороны, при увеличении разрядов увеличивается также и время для проведения математических операций с подобными числовыми типами данных. В свое время метод просто не смог бы конкурировать с методом узловых потенциалов из-за длительного времени, требуемого для проведения анализа сложных радиотехнических схем, состоящих из большого числа каскадов с большим разбросом постоянных времени. Это привело к выбору разработчиками программного обеспечения метода узловых потенциалов, как базового метода для создания математической модели цепи. Но стремительный рост производительности персональных компьютеров существенно повысил возможности современных ЭВМ, позволяя производить прежние математические операции в десятки, а то и в сотни раз быстрее. Данное обстоятельство позволяет использовать требующие больших ресурсов алгоритмы метода переменных состояния при проведении расчета РТЦ. Таким образом, выбирая методом расчета РТЦ, в разрабатываемой программе, метод переменных состояния и добавив в реализацию данной программы модуль для работы с числами произвольной разрядности, появляется возможность использовать все главные достоинства метода, а избавившись от его основного недостатка – получить возможность использовать графический интерфейс для ввода схем. В результате чего такой программный продукт сможет конкурировать с аналогами, имеющимися на 17


рынке и, в свою очередь, предоставить дополнительные важные возможности для проведения различного рода анализов, которые сделают его эксклюзивным.

1.5. Выводы После проведения предварительного анализа доступных методов расчета РТЦ, а также рассмотрения конкурентной среды, можно подробнее обозначить направление исследований настоящей работы. Во-первых, главной и обобщенной задачей является разработка программного продукта для моделирования и анализа нелинейных радиотехнических устройств на базе метода переменных состояния. Подобная задача, в ее полном объеме, несомненно, выходит за рамки этой дипломной работы. Поэтому можно ограничиться разработкой мощной и гибкой базы, которую можно будет эффективно использовать в дальнейшем. В первую очередь, необходимо уделить большое внимание сбору и доработке уже имеющихся данных, обеспечивающих математическую основу для метода переменных состояния. От того, насколько полной будет математическая модель, во многом будет завить возможность моделирования разнообразных РТЦ, содержащих различные радиотехнические элементы. Затем, математический аппарат должен быть скорректирован с учетом особенностей работы ЭВМ и на его основе создана алгоритмическая база, позволяющая перейти к непосредственной реализации на любом из подходящих языков программирования. Наконец, определившись с технологиями программирования, необходимо разработать мощную программную вычислительную базу, реализующую основные алгоритмы метода переменных состояния, а также продемонстрировать их работу, создав простой графический интерфейс, с возможностью ввода моделируемой РТЦ, выбором метода анализа с указанием начальных условий и выводом полученных результатов, а также построением графиков исследуемых характеристик. Ввод данных об РТЦ в программу может быть представлен в двух видах: графическом и текстовом. При графическом вводе данных имеется возможность, выбирая элементы, имеющие стандартное графическое обозначение, собрать желаемую принципиальную схему, что выглядит привычным для радиоинженеров. Текстовый ввод данных предполагает предварительное преобразование принципиальной схемы в некий формализованный текстовый вид, описывающий каждый элемент схемы, с его характеристиками и узлами, между которыми он включен. Так как система графического ввода схем, занимает, по сути, большую часть всей программы, и ее разработка потребовала бы огромных затрат времени, то в настоящей работе можно ограничиться текстовым способом ввода. А разработку и внедрение графической системы представления поставить целью дальнейших исследований, причем, добавление подобной системы представления схем, не потребует изменения имеющегося кода программы, так 18


как она будет преобразовывать графические данные в тот же самый текстовый вид. Из видов анализа РТУ будет возможность производить анализ по постоянному току и анализ частотных характеристик. К категории моделируемых устройств будут относиться аналоговые инерционные нелинейные радиотехнические устройства в широком диапазоне частот.

2. Анализ и выбор современных технологий программирования 2.1. Краткий обзор принципов высокоуровневого программирования Высокоуровневый язык программирования – язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков – это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания. Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием, в то время как их исходный код остаётся, в идеале, неизменным. Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования. Примеры языков высокого уровня: C, C++, Visual Basic, Java, Python, Ruby, Perl, Delphi (Pascal), PHP. Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинство из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.

19


2.1.1. Основные парадигмы программирования Парадигма программирования – это совокупность идей и понятий, определяющая стиль написания программ. Парадигма, в первую очередь, определяется базовой программной единицей и самим принципом достижения модульности программы. В качестве этой единицы выступают определение (декларативное, функциональное программирование), действие (императивное программирование), правило (продукционное программирование), диаграмма переходов (автоматное программирование) и др. сущности. В современной индустрии программирования очень часто парадигма программирования определяется набором инструментов программиста, а именно, языком программирования и используемыми библиотеками. Парадигма программирования определяет то, в каких терминах программист описывает логику программы. Например, в императивном программировании программа описывается как последовательность действий, а в функциональном программировании представляется в виде выражения и множества определений функций (слово определение (англ. definition) следует понимать в математическом смысле). В популярном объектно-ориентированном программировании программу принято рассматривать как набор взаимодействующих объектов. ООП есть, по сути, императивное программирование, дополненное принципом инкапсуляции данных и методов в объект (принцип модульности) и наследованием (принципом повторного использования разработанного функционала). Важно отметить, что парадигма программирования не определяется однозначно языком программирования – многие современные языки программирования являются мультипарадигменными, то есть допускают использование различных парадигм. Так на языке C, который не является объектно-ориентированным, можно писать объектно-ориентированным образом, а на Ruby, в основу которого в значительной степени положена объектно-ориентированная парадигма, можно писать согласно стилю функционального программирования. Из всех рассмотренных выше парадигм программирования сравнивают объектное и процедурное программирование:

обычно

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

проекта

и

его

Для целей настоящей работы, особый интерес представляет использование языка программирования высокого уровня, основанного на парадигме ООП, остановимся на ее рассмотрении более подробно.

20


2.1.2. Парадигма ООП На данный момент количество прикладных языков программирования реализующих объектно-ориентированную парадигму (ООП), является наибольшим по отношению к другим парадигмам. В области системного программирования до сих пор применяется парадигма процедурного программирования, и общепринятым языком является язык C. Хотя при взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать объектно-ориентированные языки. Например, одной из наиболее распространенных библиотек кроссплатформенного программирования является объектно-ориентированная библиотека Qt (которая будет рассмотрена ниже), написанная на языке C++. Процедурное программирование определяет несколько основных понятий: константа, переменная, структура и функция. ООП расширяет этот круг понятиями класс, объект и прототип. Последнее понятие является особенностью менее известной парадигмы прототипного программирования, которую относят к разновидности ООП. Раскроем смысл этих понятий: Класс Класс – это тип, описывающий устройство объектов. Понятие «класс» подразумевает некоторое поведение и способ представления. Понятие «объект» подразумевает нечто, что обладает определённым поведением и способом представления. Говорят, что объект – это экземпляр класса. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области. Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности, т. н. объекта. Объект Объект – сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса (например, после запуска результатов компиляции (и линковки) исходного кода на выполнение). Прототип Прототип – это объект-образец, по образу и подобию которого создаются другие объекты. Ключевыми моментами для парадигмы ООП являются четыре основных понятия: абстракция данных, инкапсуляция, полиморфизм и наследование. Коротко изложим их суть: Абстракция данных Объекты представляют собою упрощенное, идеализированное описание реальных сущностей предметной области. Если соответствующие модели адекватны решаемой задаче, то работать с ними оказывается намного 21


удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта. Инкапсуляция Инкапсуляция (encapsulation) – это механизм, который объединяет данные и код, манипулирующий этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В объектно-ориентированном программировании код и данные могут быть объединены вместе. В этом случае говорят, что создаётся так называемый "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object). Другими словами, объект – это то, что поддерживает инкапсуляцию. Внутри объекта коды и данные могут быть закрытыми (private). Закрытые коды или данные доступны только для других частей этого объекта. Таким образом, закрытые коды и данные недоступны для тех частей программы, которые существуют вне объекта. Если коды и данные являются открытыми, то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы. Характерной является ситуация, когда открытая часть объекта используется для того, чтобы обеспечить контролируемый интерфейс закрытых элементов объекта. На самом деле объект является переменной определённого пользователем типа. Может показаться странным, что объект, который объединяет коды и данные, можно рассматривать как переменную. Однако применительно к объектно-ориентированному программированию это именно так. Каждый элемент данных такого типа является составной переменной. Полиморфизм Полиморфизм (polymorphism) (от греческого polymorphos) – это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных. Например для языка Си, в котором полиморфизм поддерживается недостаточно, нахождение абсолютной величины числа требует трёх различных функций: abs(), labs() и fabs(). Эти функции подсчитывают и возвращают абсолютную величину целых, длинных целых и чисел с плавающей точкой соответственно. В С++ каждая из этих функций может быть названа abs(). Тип данных, который используется при вызове функции, определяет, какая конкретная версия функции действительно выполняется. В С++ можно использовать одно имя функции для множества различных действий. Это называется перегрузкой функций (function overloading). В более общем смысле, концепцией полиморфизма является идея «один интерфейс, множество методов». Это означает, что можно создать общий интерфейс для группы близких по смыслу действий. Преимуществом 22


полиморфизма является то, что он помогает снизить сложность программ, разрешая использование того же интерфейса для задания единого класса действий. Выбор же конкретного действия, в зависимости от ситуации, возлагается на компилятор. Нужно только помнить и использовать общий интерфейс. Пример из предыдущего абзаца показывает, как, имея три имени для функции определения абсолютной величины числа вместо одного, обычная задача становится более сложной, чем это действительно необходимо. Полиморфизм может применяться также и к операторам. Фактически во всех языках программирования ограниченно применяется полиморфизм, например, в арифметических операторах. Так, в Си, символ + используется для складывания целых, длинных целых, символьных переменных и чисел с плавающей точкой. В этом случае компилятор автоматически определяет, какой тип арифметики требуется. В С++ вы можете применить эту концепцию и к другим, заданным вами, типам данных. Такой тип полиморфизма называется перегрузкой операторов (operator overloading). Ключевым в понимании полиморфизма является то, что он позволяет вам манипулировать объектами различной степени сложности путём создания общего для них стандартного интерфейса для реализации похожих действий. Наследование Наследование (inheritance) – это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование является важным, поскольку оно позволяет поддерживать концепцию иерархии классов (hierarchical classification). Применение иерархии классов делает управляемыми большие потоки информации. Смысл наследования можно изложить на примере жилого дома. Дом – это часть общего класса, называемого строением. С другой стороны, строение – это часть более общего класса – конструкции, который является частью ещё более общего класса объектов, который можно назвать созданием рук человека. В каждом случае порождённый класс наследует все, связанные с родителем, качества и добавляет к ним свои собственные определяющие характеристики. Без использования иерархии классов, для каждого объекта пришлось бы задать все характеристики, которые бы исчерпывающи его определяли. Однако при использовании наследования можно описать объект путём определения того общего класса (или классов), к которому он относится, с теми специальными чертами, которые делают объект уникальным. Наследование играет очень важную роль в ООП. ООП ориентировано на разработку крупных программных комплексов, разрабатываемых командой программистов (возможно, достаточно большой). Проектирование системы в целом, создание отдельных компонент и их 23


объединение в конечный продукт при этом часто выполняется разными людьми, и нет ни одного специалиста, который знал бы о проекте всё. Объектно-ориентированное проектирование основывается на описании структуры и поведения проектируемой системы, то есть, фактически, в ответе на два основных вопроса: • Из каких частей состоит система. • В чём состоит ответственность каждой из частей. Выделение частей производится таким образом, чтобы каждая имела минимальный по объёму и точно определённый набор выполняемых функций (обязанностей), и при этом взаимодействовала с другими частями как можно меньше. Дальнейшее уточнение приводит к выделению более мелких фрагментов описания. По мере детализации описания и определения ответственности выявляются данные, которые необходимо хранить, наличие близких по поведению агентов, которые становятся кандидатами на реализацию в виде классов с общими предками. После выделения компонентов и определения интерфейсов между ними реализация каждого компонента может проводиться практически независимо от остальных (разумеется, при соблюдении соответствующей технологической дисциплины). Большое значение имеет правильное построение иерархии классов. Одна из известных проблем больших систем, построенных по технологии ООП – так называемая проблема хрупкости базового класса. Она состоит в том, что на поздних этапах разработки, когда иерархия классов построена и на её основе разработано большое количество кода, оказывается трудно или даже невозможно внести какие-либо изменения в код базовых классов иерархии (от которых порождены все или многие работающие в системе классы). Даже если вносимые изменения не затронут интерфейс базового класса, изменение его поведения может непредсказуемым образом отразиться на классах-потомках. В случае крупной системы разработчик базового класса не просто не в состоянии предугадать последствия изменений, он даже не знает о том, как именно базовый класс используется и от каких особенностей его поведения зависит корректность работы классов-потомков. Помимо методологии ООП существуют и другие, в той или иной мере более прогрессивные, немного отходящие от ее базовых принципов. Рассмотрим некоторые из них. Компонентное программирование Компонентно-ориентированное программирование – это своеобразная «надстройка» над ООП, набор правил и ограничений, направленных на построение крупных развивающихся программных систем с большим временем жизни. Программная система в этой методологии представляет собой набор компонентов с хорошо определёнными интерфейсами. Изменения в существующую систему вносятся путём создания новых 24


компонентов в дополнение или в качестве замены ранее существующих. При создании новых компонентов на основе ранее созданных запрещено использование наследования реализации – новый компонент может наследовать лишь интерфейсы базового. Таким образом, компонентное программирование обходит проблему хрупкости базового класса. Прототипное программирование Прототипное программирование, сохранив часть черт ООП, отказалось от базовых понятий – класса и наследования. Вместо механизма описания классов и порождения экземпляров язык предоставляет механизм создания объекта (путём задания набора полей и методов, которые объект должен иметь) и механизм клонирования объектов. Каждый вновь созданный объект является «экземпляром без класса». Каждый объект может стать прототипом – быть использован для создания нового объекта с помощью операции клонирования. После клонирования новый объект может быть изменён, в частности, дополнен новыми полями и методами. Клонированный объект либо становится полной копией прототипа, хранящей все значения его полей и дублирующей его методы, либо сохраняет ссылку на прототип, не включая в себя клонированных полей и методов до тех пор, пока они не будут изменены. В последнем случае среда исполнения обеспечивает механизм делегирования – если при обращении к объекту он сам не содержит нужного метода или поля данных, вызов передаётся прототипу, от него, при необходимости – дальше по цепочке. Несмотря на отдельные критические замечания в адрес ООП, в настоящее время именно эта парадигма используется в подавляющем большинстве промышленных проектов. Однако нельзя считать, что ООП является наилучшей из методик программирования во всех случаях.

2.2. Выбор принципов и технологий программирования для решения радиотехнических задач На основе приведенного выше обзора языков программирования высокого уровня и используемых в них парадигм и подходов можно выделить ту часть, которая в наибольшей мере будет подходить для того круга задач, с которым связывается разработчик технического ПО. Становится понятным, что невозможно выбрать такой единственный подход программирования, который бы удовлетворял всем требованиям сразу. Но в то же время, современные технологии и программные среды позволяют совмещать различные подходы программирования и даже объединять части программы, написанные на разных языках. Таким образом, можно разделить разрабатываемую программу на некие логические слои или уровни и 25


реализовать каждый из них с использованием той или иной технологии и того или иного языка программирования. В настоящей задаче можно выделить как минимум два таких основных уровня: уровень, на котором будут реализованы алгоритмы для проведения расчетной части, более низкий, и более высокий – уровень, представляющий собой интерфейсы взаимодействия различных модулей программы. Анализируя каждый из этих уровней, можно выделить некоторые особенности или, даже, требования, по которым потом и выбрать необходимые инструменты. Вполне очевидно, что любой низкий уровень выдвигает в первую очередь жесткие требования к производительности, в разрабатываемой программе. Реализация алгоритмов расчетной части должна быть хорошо оптимизирована и, в принципе, не нуждается в использовании особо гибких и многофункциональных технологий. Таким образом, для разработки этого уровня целесообразнее выбрать наиболее производительные и менее абстрактные методы и технологии. К ним можно отнести использование встроенных простых типов данных, низкоуровневых системных функций, но для решения каких-то более сложных задач возможно также использование некоторых хорошо-оптимизированных библиотек классов (например, для реализации математического аппарата). В свою очередь, разработка концепции модулей программы является задачей намного более обширной в функциональном смысле. Необходимо реализовать гибкие интерфейсы их взаимодействия друг с другом, а также возможность быстрого добавления новых модулей в будущем. Таким образом, необходимо выбрать более высокоуровневые инструменты, как для оптимизации самого процесса разработки, так и для возможности быстрой и безболезненной последующей модернизации или модификации программы. Отдельной задачей можно также выделить разработку графического интерфейса, которая требует использования гибких и мощных технологий. Важным моментом является возможность использования программы на различных платформах и операционных системах. В настоящее время широкое распространение получают операционные системы семейства UNIX, большая часть которых являются системами с открытым исходным кодом, использующиеся в различных государственных учреждениях, в том числе – образовательных. Таким образом, при разработке будет необходимо использование кроссплатформенных технологий. 2.2.1. Обзор технологий кроссплатформенности Подобные технологии кроссплатформенности представлены в первую очередь универсальными библиотеками классов, предоставляющими общий программный интерфейс (API), но имеющими различные реализации для каждой отдельной платформы. С другой стороны, существуют специальные программные среды, включающие в свой состав так называемую виртуальную машину, реализованную для каждой отдельной операционной системы и даже архитектуры процессора. Подобная виртуальная машина служит для 26


преобразования промежуточного универсального байтового кода в байтовый код для конкретного вида процессора, или вызывающая низкоуровневые системные функции. В таком случае, единожды написанная программа, может быть легко портирована на различные платформы. Также возможен вариант использования интерпретируемых языков программирования. Такие языки программирования, обычно не имеют компилятора, а выполняются на лету специальной программой-интерпретатором, имеющей также разные реализации. Из числа универсальных кроссплатформенных программных сред можно выделить наиболее популярные. В первую очередь, это широко известная платформа Java, корпорации Sun Microsystems. Ключевым элементом данной платформы является язык программирования с одноименным названием и огромная библиотека для разработки, включающая все основные модули для создания многофункциональных приложений, в том числе – модули для разработки графического интерфейса. К сожалению, данная платформа оптимизирована в первую очередь для использования языка Java и не имеет простых и удобных инструментов для подключения других языков программирования. Другой не менее известной подобной технологией является Microsoft .NET Framework. Данная технология помимо всего прочего предоставляет возможность использования и связывания различных языков программирования, вплоть до наследования классов между собой. В основе ее также лежит виртуальная машина, работающая с промежуточным байт-кодом, который затем переводится в инструкции для целевого процессора. В свою очередь использование данной платформы ограничивается в основном операционными системами от корпорации Microsoft – различными версиями Windows для персональных компьютеров и разных мобильных устройств. Еще одной интересной программной платформой является Mozilla Toolkit, представляющая собой набор программных интерфейсов для создания программных приложений различного рода. Ключевым моментом Mozilla Toolkit является язык описания графического интерфейса XUL, основанный на стандарте XML. Данная технология позволяет разрабатывать сложные графические приложения по принципу верстки web-страниц, с возможностью использования скриптового языка программирования для создания интерактивности. Специальная программная среда XULRunner предоставляет возможность отображения XUL документа в различных графических средах операционных систем, а также выполнять скрипты. Кроссплатформенная объектная модель XPCOM предоставляет возможности связывания отдельных частей программы, разработанных с использованием разных языков программирования, в добавление к этому, XPCOM предоставляет набор стандартных структур данных – строк, массивов и пр., а также классы для управления памятью и потоками. К сожалению, пока эта замечательная технология имеет ряд ограничений, т.к. на настоящий момент не существует быстрого и удобного способа для разработки независимых приложений на ее 27


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

2.3. Обзор универсальных кроссплатформенных библиотек классов Процесс разработки программного продукта можно существенно сократить и оптимизировать, используя сторонние универсальные библиотеки функций для решения задач в той или иной области. Большинство подобных библиотек имеют специальную лицензию сообщества открытого исходного кода LGPL, которая позволяет использовать их как в подобных открытых проектах, так даже и в проектах имеющих коммерческую основу. Существует большое множество подобных библиотек функций, являющихся как узкоспециализированными, так и охватывающими широкий круг задач. Поэтому для начала необходимо определиться с теми задачами в разрабатываемой программе, которые могут быть решены с помощью данных библиотек. Во-первых, для создания визуального отображения и интерактивной работы с пользователем необходимо будет разработать графический пользовательский интерфейс (GUI). Также при разработке сложной и многофункциональной программы, работающей на современных ЭВМ, возникает большое количество обобщенных задач, таких как, например, управление выделением оперативной памяти, проведение различного рода операций с текстом, работа с файловой системой и т.п. В разрабатываемой программе понадобится использование довольного сложного математического аппарата, в частности, будут необходимы функции для работы с матрицами, функции для решения систем уравнений и пр. Отдельной задачей является повышение точности производимых вычислений. Как было показано в п. 1.4, при расчете коэффициентов полиномов передаточной функции, разрядности стандартных встроенных числовых типов данных становится недостаточной для получения приемлемых результатов. Таким образом, встает вопрос об использовании специальных программных типов данных, которые будут позволять производить вычисления с установкой нужного количества разрядов числа. После определения основных функций, перейдем к рассмотрению и выбору доступных библиотек, представляющих их реализацию. Библиотеки общего назначения К таким библиотекам относятся библиотеки классов, реализующие всевозможные вспомогательные классы, такие как классы для работы с 28


памятью, классы, реализующие основные контейнеры для хранения информации, классы для работы с файловой системой и пр. К таким библиотекам в первую очередь стоит отнести Стандартную Библиотеку Шаблонов (STL) языка C++. Библиотека является общепризнанным стандартом языка, и входит во все без исключения реализации компиляторов, так что не требует наличия никаких дополнительных файлов. К сожалению, многое из необходимых разработчикам инструментов не вошло в стандартную библиотеку шаблонов. Тем не менее, была создана отдельная независимая библиотека шаблонов, под названием Boost, реализованная в виде набора классов, не входящих в стандартный состав компиляторов. В нее вошли все те классы, которые не успели попасть в STL. Более того, ввиду своей независимости, библиотека получила возможность развиваться и постоянно пополняется новыми классами. На данный момент насчитывается более 100 различных интерфейсов, представляющих собой мощные и оптимизированные реализации. Библиотеки работы с большими числами Самой известной и мощной библиотекой реализующей работу с большими числами на языке С является библиотека GMP, которая в настоящее время входит в число практически всех профессиональных технических компьютерных систем. Библиотека распространяется под лицензией LGPL, позволяющая использовать ее, в том числе в разработке коммерческих программных продуктов. GMP реализует все стандартные числовые типы данных, убирая ограничения по их разрядности. Большинство низкоуровневых процедур, реализующих команды математического сопроцессора написаны на языке низкого уровня Ассемблере, что позволяет достичь максимальных результатов в производительности. Библиотеки графического пользовательского интерфейса На настоящий момент существуют две основные и наиболее полные в функциональном смысле библиотеки графического интерфейса: Qt 4.5, принадлежащая в настоящее время корпорации Nokia, и библиотека WxWidgets 2.8, являющаяся собственностью сообщества открытого исходного кода. Обе указанные библиотеки представляют собой набор классов, написанных на языке C++, хотя имеются также их реализации и на других языках программирования, но в существенно более слабом виде. Сравнение этих двух библиотек показывает, что несомненным лидером в плане полноты предложенных функциональных элементов является набор библиотек Qt. В свою очередь WxWidgets имеет ряд своих преимуществ, первым из которых является использование лицензии GPL, позволяющей бесплатно использовать данную библиотеку для разработки как 29


коммерческих, так и некоммерческих приложений и изменять ее исходный код. Библиотека Qt предоставляет возможность использования двух лицензии LGPL и GPL, на ряду с коммерческой. Указанные лицензии, в принципе, позволяют бесплатно использовать программу даже в коммерческих целях, но с рядом ограничений. Рассмотрев указанные выше универсальные кроссплатформенные библиотеки классов, предоставим более детальный обзор их интерфейсов. 2.3.1. Стандартная библиотека шаблонов STL Стандартная библиотека шаблонов языка C++ содержит в себе многие универсальные классы, облегчающие написание программного кода. Библиотека разбита не несколько логических частей, каждая из которых представляет собой набор схожих по смыслу классов. К таким частям условно можно выделить классы универсальных контейнеров, алгоритмов и потоков. Также существуют дополнительные классы для автоматизации процесса работы с памятью, класс умного указателя, строковой класс, класс для комплексных чисел и пр. К числу универсальных контейнерных классов относятся: • Vector. Класс реализует идею простого массива данных, элементы которого располагаются в памяти друг за другом, а каждый новый элемент добавляется в конец; • List. Класс списка, каждый элемент которого занимает произвольную ячейку памяти и связан с двумя соседними посредством указателя, новый элемент может быть добавлен на произвольную позицию; • Deque. Дек – подобие вектора с возможностью добавления элементов, как в начало, так и в конец; • Set. Упорядоченное множество элементов, каждый из которых занимает позицию в порядке убывания, возможно наличие только одного одинакового элемента; • Multiset. Мультимножество, отличающееся от обычного возможностью наличия одинаковых элементов; • Map. Класс отображения, реализует собой пару ключей и значение, упорядоченных по ключу в порядке убывания, также как и в случае с множеством, имеется возможность наличия лишь одного элемента с данным ключем; • Multimap. Мультиотображение – отличие от отображение такое же как и у мультимножества. Классы потоков представляют собой универсальные потоки ввода/вывода, одним из которых является стандартный поток ввода информации с клавиатуры и вывода данных на монитор: • Cin – стандартный поток ввода данных с клавиатуры; 30


• Cout – стандартный поток вывода данных на монитор; • Fstream – поток файлового ввода/вывода; • StringStream – поток строкового ввода/вывода. 2.3.2. Библиотека шаблонов Boost 1.39.0 Данная библиотека значительно расширяет набор стандартных классов, представленных в STL, добавляя огромное количество новых контейнеров для решения различных специфических задач, расширен набор алгоритмов, а также добавлено большое количество классов помогающих решать практически любые задачи, к ним относятся: классы для работы с файловой системой, универсальные кроссплатформенные средства работы с многопоточностью, классы сетевого взаимодействия и пр. Особый интерес для разработки технического ПО представляют математические классы данной библиотеки. Они представляют огромное количество всевозможных математических функций, а также реализации методов статистического анализа. Входящая в состав математического пакета классов Math.Boost библиотека uBLAS реализует классы матриц и всевозможных операций над ними, что необходимо для реализации алгоритмов настоящей работы. 2.3.3. Библиотека больших чисел GMP 4.3.1 GMP – бесплатная библиотека, реализующая арифметику чисел произвольной точности для таких типов данных, как целые числа, рациональные числа и числа с плавающей точкой. Точность вычислений ограничивается лишь доступностью свободной оперативной памяти в системе. Алгоритмы библиотеки оптимизированы на максимальное быстродействие как для маленьких чисел, так и для чисел с очень большой разрядностью. Подобный эффект достигается использованием полных машинных слов как базового арифметического типа и алгоритмов, реализованных на низком уровне, оптимизированных для различных процессорных архитектур. Библиотека разделена на несколько различных категорий: • Арифметические функции для работы с целыми числовыми типами (mpz); Категория содержит более 140 арифметических и логических функций; • Функции для работы с рациональными числами (mpq). Представлены 35 функций; • Функции, реализующие операции с числами с плавающей точкой (mpf), данный тип расширяет стандартный числовой тип языка C – double; • Интерфейс классов, представляющий оболочку для языка C++; • Внутренние функции в категории mpn реализуют низкоуровневые процедуры, используемые в других категориях;

31


2.3.4. Библиотека графического пользовательского интерфейса Qt 4.5 Библиотека Qt версии 4.5 является в настоящее время собственностью корпорации Nokia. Текущая версия поддерживает большое количество разнообразных операционных систем и платформ, в том числе помимо основных ОС для персональных компьютеров (Mac OS, Windows, Linux), имеется возможность разрабатывать графические приложения для мобильных устройств на основе Embedded Linux, WinCE и Symbian S60. На самом деле, Qt давно уже перешла за рамки просто набора графических библиотек. В настоящий момент представляет собой целую программную среду для разработки различного рода приложений. Включая в себя такие инструменты, как кроссплатформенную среду разработки программ (редактор исходных текстов с подсветкой синтаксиса, поиском и прочими расширениями), редактор для интерактивной разработки графических пользовательских интерфейсов, инструменты для интернализации, мощную справочную систему и утилиты для компиляции и сборки готовых исполняемых приложений. В наличие имеются следующие библиотеки, для решения практически любых задач: • Qt Core Module. Представляет собой основу для всех остальных библиотек и содержит все необходимые функции для выполнения общих процедур, таких как управление потоками, файловый ввод/вывод, реализацию интерфейса сигналов и слотов. • Qt WebKit Integration. Данный модуль представляет собой интеграцию с WebKit – ядром кроссплатформенного интернет браузера. Qt WebKit Integration позволяет использовать систему графического отображения HTML-текста в разрабатываемых приложениях. Система поддерживает все доступные технологии, используемые на веб сайтах: HTML, XHTML, CSS и JavaScript, а также позволяет использовать Flash, аудио и видео ресурсы. • GUI Module. Является одним из ключевых модулей в Qt и представляет собой набор библиотек для создания продвинутых пользовательских интерфейсов в разрабатываемых приложениях. При этом, для отображения стандартных графических компонентов, используются родные системные функции, что позволяет получать максимальную производительность. Данный модуль включает в себя полный набор настраиваемых виджетов (готовых графических форм), поддержку технологий 2D graphics canvas и OpenGL для работы с графикой, мощную систему отображения шрифтов и систему компоновки виджетов. Также имеется встроенная система управления стилями и поддержка таблиц стилей для изменения внешнего вида графических виджетов (на подобие css, используемого в разработке веб приложений). • Qt Script Module. Представляет собой полностью интегрируемую систему эмулирования скриптового языка Qt Script, базирующегося на 32


стандарте ECMAScript 3 (составляющего основу широко известного языка javascript). Данный модуль представляет возможность использования механизма сигналов и слотов, а также интеграцию с объектом C++ QObject, являющимся экземпляром базового класса практически всех используемых в библиотеке классов. Также имеется встроенный отладчик для скриптов. • Networking Module. Модуль предлагает удобный кроссплатформенный интерфейс для программирования приложений, которым необходимо использование сетевого взаимодействия. Основу модуля составляют два абстрактных интерфейса, описывающих работу клиентской и серверной сторон, и ряд классов, реализующих низкоуровневый интерфейс: QTcpSocket, QTcpServer и QUdpSocket. Также предлагается реализация на их базе основных сетевых протоколов взаимодействия, таких, как HTTP, FTP и DNS, с поддержкой асинхронного протокола HTTP 1.1. • Database Module. Модуль QtSql осуществляет интеграцию разрабатываемого приложения с интерфейсом баз данных. Поддерживаются все известные платформы баз данных: ODBC, MySQL, PSQL, SQLite, ibase, Oracle, Sybase, DB2. Предоставляется возможность отправления собственных SQL запросов, а также ряд классов, автоматически формирующих стандартные запросы на сервер базы данных. Модуль разделен на два уровня абстракции данных: уровень API, реализующий интерфейс взаимодействия с протоколом баз данных и уровень пользовательского интерфейса, реализующий представляющий универсальные виджеты, связанные с базой данных. Также поддерживается модель программирования Model/View, при которой одноименные таблицы базы данных связаны с графическими элементами. • Unit Testing Framework. Этот модуль предлагает все необходимые инструменты для проведения различного рода тестов, в том числе тесты для графического пользовательского интерфейса. В число данных инструментов входит полная интеграция с Microsoft Visual Studio и KDevelop студиями, эмуляция клавиатуры и мыши и пр. • XML Module. Модуль QtXml представлен классами для потокового чтения и записи для XML документов, а также реализациями на языке C+ + основных XML-интерфейсов, таких как SAX, DOM, XQuery и XPath. XML – универсальный язык разметки, составляющий основу нового поколения языков разметки веб-документов XHTML. Технология XQuery предоставляет мощную систему работы с XML-документами на подобие SQL-запросов, что в значительной мере ускоряет работу и избавляет программиста от использования большого количества методов доступа к элементам XML-дерева. Также предоставляется поддержка XSLT – языка трансформаций для XML. •

OpenGL Module. Qt предлагает удобный интерфейс работы с популярной кроссплатформенной библиотекой для работы с 3D графикой – OpenGL. Данная библиотека использует все возможности аппаратного 33


ускорения, что позволяет добиваться максимальной производительности и гибкости в разрабатываемых приложениях. На платформах Windows модуль предоставляет возможность использовать библиотеку Direct3D. • Multithreading Features. В модуле представлены кроссплатформенные функции для реализации многопотокового программирования, в добавок к этому имеются инструменты для оптимизации программирования для семейства современных многоядерных процессоров, что позволит еще больше повышать производительность разрабатываемого ПО. Классы предоставляют возможность для управления потоками, данными и объектами, безопасной работы через механизм сигналов и слотов, а также высокоуровневые абстрактные интерфейса для реализации низкоуровневых операций. • Qt Graphics View. Данный модуль предоставляет набор классов для управления и взаимодействия с большим числом отдельных графических элементов, которые располагаются в специальном виджете отображения с поддержкой изменения графических размеров элементов и возможностью их вращения. Graphics View использует алгоритм двоичного разбиения пространства (BSP) для реализации быстрого доступа к произвольному элементу, что позволяет отображать и работать в режиме реального времени даже с миллионами подобных элементов. Также имеется поддержка механизма Drag-and-Drop, и возможности вывода графического отображения на принтер. • Phonon Multimedia Framework. Phonon – кроссплатформенная мультимедийная библиотека, позволяющая воспроизводить аудио и видео данные. Интеграция данной библиотеки в составе Qt предлагает следующие возможности: воспроизведение звука и видео на различных платформах, возможность чтения, как локальных файлов мультимедиа, так и потоков данных через интернет. Также данный модуль представляет абстракцию родных форматов мультимедиа и библиотек для каждой конкретной платформы: QuickTime для ОС Mac OS X, DirectShow для Windows и GStreamer для Linux. 2.3.5. Библиотека для построения графиков функций Qwt 5.2 Qwt содержит в себе компоненты для построения графического пользовательского интерфейса технических приложений. Основу библиотеки составляет виджет для построения графиков, с возможностью настройки шкалы, обозначения осей и многого другого. Также библиотека включает в себя ряд компонентов для визуализации трехмерных технических приборов: различные термометры, шкалы, переключатели. Библиотека Qwt реализована на базе рассмотренной выше кроссплатформенной библиотеки классов графического интерфейса Qt, что позволяет использовать ее в настоящей работе.

34


2.4. Результаты проведенного анализа В результате проведенного обзора и анализа современных технологий программирования, можно сделать некоторые выводы о выборе наиболее подходящих для разрабатываемой программы. Рассмотрев принципы языков высокого уровня, можно придти к выводу о том, что наиболее распространенной парадигмой программирования является парадигма ООП, которую реализует большинство языков программирования на настоящий момент. Из подобных языков, несомненно наибольшее распространение занимает язык С++, который используется в подавляющем большинстве профессиональных программных продуктов. В добавление к этому, существуют большое количество полезных и бесплатных функциональных библиотек, написанных на этом языке. В предыдущем параграфе были рассмотрены некоторые из них, которые представляют большой интерес для использования в разрабатываемой программе. Таким образом, целесообразнее всего выбрать основным языком разрабатываемой программы язык С++. Рассмотренные библиотеки существенно облегчат процесс разработки, так как предлагаемые ими высокоуровневые интерфейсы скрывают под собой большое количество исполняемого низкоуровневого кода, разрабатываемого многими независимыми разработчиками, что делает его также более оптимизированным и отлаженным. Интерфейс разрабатываемой программной реализации системы схемотехнического моделирования будет разработан с использованием набора библиотек графического пользовательского интерфейса Qt 4.5. Для повышения точности расчетов, производимых в программе, будет использована мощная библиотека для работы с числами произвольной разрядности – GMP 4.3.

3. Разработка математического аппарата для составления модели и проведения анализа РТЦ 3.1. Полная математическая модель нелинейной инерционной РТЦ в методе переменных состояния Любые РТЦ по своей сути являются нелинейными и инерционными. Пренебрежение этими свойствами часто может дать неприемлемые погрешности при проведении различного рода анализов, а в ряде случаев – привести к абсолютно неверным результатам. Поэтому для проведения различных видов анализа необходимо учитывать влияние этих инерционных нелинейностей при конкретном режиме работы и уровне сигнала. Таким образом, для описания РТЦ будем использовать полную математическую модель, позволяющую описать любые нелинейные элементы. 35


Для проведения моделирования, ЭВМ необходимо иметь следующие данные о РТЦ: • данные топологии, определяющие набор ветвей и способ, которым они соединены друг с другом; • компонентные данные, определяющие тип и параметры элементов, присутствующих в ветвях; • положительные направления токов и напряжений в ветвях схемы. При описании топологии схемы не учитывают компонентных данных. Это позволяет каждую ветвь схемы представлять линией, соединяющей соответствующие узлы. При этом образуется так называемый граф цепи. На Рис. 3 .1 приведен пример простой РТЦ и ее графа.

36


Рис. 3.1 Простая линейная РТЦ и ее граф

Компонентные уравнения выражают зависимость между током и напряжением для элементов схемы. Приведем такие зависимости для различных типов элементов: • линейный резистивный элемент: ir (t ) = rur (t ) , • линейный индуктивный элемент: u L (t ) = L • линейный емкостной элемент: iC (t ) = C

d iL (t ) , dt

d iC (t ) , dt

• управляемый источник: y yпр (t ) = f ( x yпр (t )) . Здесь y yпр ( t ) – управляемая величина (ток или напряжение управляемого идеального источника соответственно тока или напряжения); х yпр ( t ) – управляющая величина (ток или напряжение управляющей ветви). Будем рассматривать четыре вида управляемых источников: • источники тока, управляемые током (ИТУТ): i y = ai ; • источники тока, управляемые напряжением (ИТУН): i y = au ; • источники напряжения, управляемые напряжением (ИНУН): u y = au ; • источники напряжения, управляемые током (ИНУТ): u y = ai . Приведенные выражения можно записать для каждой ветви (каждого элемента) схемы. 37


Топологические уравнения характеризуют только способ соединения ветвей и не отражают их содержимого, т. е. типа и значения параметров включенных в ветви элементов. Такими уравнениями являются уравнения, которые строятся по законам Кирхгофа. Действительно, для узла схемы по закону Кирхгофа для токов (ЗКТ) алгебраическая сумма токов, связанных с узлом равна нулю. Это уравнение не содержит сведений о том, каковы типы элементов, включенных в ветви, и каковы параметры этих элементов. По закону Кирхгофа для напряжений (ЗКН) алгебраическая сумма напряжений ветвей в замкнутом контуре равна нулю. Это уравнение также не содержит компонентных данных. Математическая модель РТЦ Подход метода переменных состояния заключается в рассмотрении цепи, как пассивной линейной резистивной, с вынесенными за ее пределами источниками тока и напряжения, реактивными и нелинейными элементами. Реактивные и нелинейные элементы замещаются эквивалентными им источниками тока и напряжения, Рис. 3 .1:

Рис. 3.2 Представление РТЦ в методе переменных состояния

Таким образом, математическая модель в методе переменных состояния при наличии в цепи нелинейных элементов составляется достаточно просто и включает в себя три уравнения [1]: I рез ( t ) = B1X ( t ) + B 2 X ни ( t ) + B3 X нел ( t ) , d X ( t ) = A1X ( t ) + A 2 X ни ( t ) + A 3 X нел ( t ) , dt

φ ( X нел ( t ) ) = M1X ( t ) + M 2 X ни ( t ) + M 3Xнел ( t ) . где I рез ( t ) – вектор токов линейных резистивных элементов; X ( t ) – вектор состояния, который содержит напряжения на линейных емкостных элементах и токи через линейные индуктивные элементы; X ни ( t ) – вектор напряжений и токов независимых источников; X нел – вектор напряжений на нелинейных резистивных и емкостных элементах и токов через нелинейные резистивные и индуктивные элементы. Bi , Ai , M i – матрицы коэффициентов системы 38


φ ( Xнел ( t ) ) уравнений математической модели; – вольтамперные характеристики нелинейных элементов, т.е. зависимости напряжения на нелинейном элементе от тока через него, для нелинейных емкостных и резистивных элементов (проводимость), и зависимости тока через нелинейный элемент от напряжения на нем для нелинейных индуктивных и резистивных элементов (сопротивление). Уравнение называется уравнением токов линейных резистивных элементов, уравнение – уравнением состояния, а уравнение – уравнением напряжений и токов нелинейных элементов. При известном значении вектора напряжений и токов независимых источников X ни ( t ) , система уравнений – является полной т.к. она имеет три неизвестных I рез ( t ) , X ( t ) , X нел ( t ) , и состоит из трех уравнений. При составлении топологических уравнений электрических цепей в методе переменных состояния различают цепи, не содержащие особенностей, и цепи, содержащие особенности [1]. К цепям с особенностями относят такие цепи, которые содержат замкнутые контуры, составленные только из линейных емкостных элементов (C-контуры), или из источников напряжения и линейных емкостных элементов (UC-контуры), либо сечения, содержащие только источники тока (I-сечения), или источники тока и линейные индуктивные элементы (IL-сечения). Также к особенностям относят UН-контуры, UНСконтуры, UНU-контуры, UНUC-контуры, IН-сечения, IНL-сечения, IНI-сечения, IНIL-сечения; где UН – напряжения на нелинейных емкостных и резистивных элементах, IН – токи через нелинейные индуктивные и резистивные элементы. Составление матриц математической модели РТЦ зависит от ее топологии. В методе переменных состояния топология цепи определяется матрицей главных сечений [1]. Для полного описания любых нелинейных инерционных РТЦ матрица главных сечений должна учитывать следующие моменты: возможность описания топологии цепей с особенностями, учитывать наличие в цепи управляемых источников, а также возможность описания нелинейных цепей. В [8] была предложена подобная полная матрица главных сечений, позволяющая описать практически любую современную РТЦ:  0   0  0 F =  F  CРC Х  0   0

FUУ RХ

FUУ LХ

FUУ I

FUУ I Н

FU Н RХ

FU Н LХ

FU Н I

FU Н I Н

FURХ

FULХ

FUI

FUI Н

FCР RХ

FCР LХ

FCР I

FCР I Н

FRР RХ

FRР LХ

FRР I

FRР I Н

0

FLР LХ

0

0

FUУ IУ   FU Н IУ  FUIУ  . FCР IУ   FRР IУ   0  39


Строки и столбцы этой матрицы сгруппированы по типам элементов, где UУ – строки управляемых источников напряжения, U Н – строки нелинейных элементов, представленных источниками напряжения, U – строки независимых источников напряжения, CР – строки линейных емкостных элементов, являющихся ребрами, RР – строки линейных резистивных элементов, являющихся ребрами и LР – строки линейных индуктивных элементов, являющихся ребрами; С Х – столбцы линейных емкостных элементов, являющихся хордами, RХ – столбцы линейных резистивных элементов, являющихся хордами, LХ – столбцы линейных индуктивных элементов, являющихся хордами, I – столбцы независимых источников тока, I Н – столбцы нелинейных элементов, представленных источниками тока и IУ – столбцы линейных управляемых источников тока. Подматрицы, расположенные вдоль строки и взятые с обратным знаком, являются коэффициентами, связывающими вектор тока группы ребер, которой принадлежит строка, с векторами тока соответствующих групп хорд. Например: ICР = −FCРC Х I C Х − FCР RХ I RХ − FCР LХ I LХ − −FCР I I − FCР IНН I −C FI

Р уУ

I .

Подматрицы, расположенные вдоль столбца некоторой группы однотипных хорд, после транспонирования являются коэффициентами, линейно связывающими вектор напряжения этих хорд с векторами напряжения соответствующих групп ребер. Например: U LХ = FUTУ LУХ U U+ FLTН

U UL + FT Х U +

ХН

+FCTР LХ UCР + FRTР LХ U RР + FLTР LХ U LР . В матрице учитывается содержание в электрической цепи линейных резистивных, емкостных и индуктивных элементов, независимых источников напряжения и тока, управляемых источников четырех типов (ИНУН, ИНУТ, ИТУН, ИТУТ) и нелинейных резистивных, емкостных и индуктивных элементов. Также в учитываются особенности в виде C-контуров и L-сечений. Введение нулевых подматриц обусловлено тем, что емкостная хорда (первый столбец матрицы ) может быть только в контуре, в котором остальные элементы – емкостные ребра, т.е. напряжения емкостных хорд могут выражаться только через напряжения на емкостных ребрах, отсюда FUУ C Х = 0 , FU Н C Х = 0 , FUС Х = 0 , FRС = 0 и FLС = 0 . Индуктивное ребро может быть в Р Х Р Х сечении, в котором все остальные ветви – индуктивные хорды, т.е. ток в индуктивных ребрах может выражаться только через токи индуктивных хорд. Отсюда FLРC Х = 0 , FLР RХ = 0 , FLР I = 0 , FLР I Н = 0 и FLР IУ = 0 . 40


3.2. Анализ нелинейной РТЦ по постоянному току Анализ РТЦ по постоянному току необходим: • Для возможности линеаризации электрической цепи и получения АЧХ, ФЧХ, характеристики группового времени запаздывания (ГВЗ) и для составления карт режимов работы компонентов устройства и определения рассеиваемых мощностей соответствующих компонентов [11]. • Для определения начальных условий (значений вектора токов резистивных элементов I рез , вектора состояния X и вектора нелинейных элементов X нел ). Для определения нелинейных передаточных функций нелинейной инерционной РТЦ необходимым является процесс разложения характеристик нелинейных элементов в степенной ряд или аппроксимация их степенным многочленом. Для проведения этого процесса необходимо знать значения параметров точек покоя, в окрестности которых можно аппроксимировать характеристики нелинейных элементов, например, степенным многочленом. • Для проведения различных видов временного анализа. В этом случае необходимо знать начальные условия переходных процессов, чтобы посмотреть их динамику. При проведении анализа по постоянному току, т.е. при отсутствии входного воздействия, математическая модель РТЦ преобразуется следующим образом [1]. Вектор независимых источников представляют в виде: X  X ни =  сигн  ,  Xпит  где в векторе Xсигн объединены все источники переменного напряжения, например, источник входного воздействия, а в векторе X пит – все источники постоянного напряжения, например, источники питания. При отсутствии входного воздействия вектор независимых источников принимает вид [1]:  0  X ни =  . X  пит  Так как при постоянном токе ток через емкостные элементы и напряжения на индуктивных элементах равны нулю, то левая часть уравнения состояния будет равна нулю, и матрицы A1 , A 2 , A3 в будут отличаться от таковых при наличии входного воздействия. Таким образом, математическая модель РТЦ для анализа по постоянному току примет вид [1]:  0  I рез = B1X + B 2   + B3 X нел ,  X пит  41


 0  0 = G1X + G 2   + G 3 X нел ,  X пит   0  ϕ ( X нел ) = M1X + M 2   + M 3 X нел .  Xпит  Существуют нелинейные электрические цепи, где напряжение или ток нелинейных элементов выражаются через ток или напряжения не их самих, а других элементов цепи. К таким цепям, например, относятся нелинейные эквивалентные схемы биполярных и полевых транзисторов (см. п. 6.1 и 6.2). Таким образом, в [4] предлагается вместо уравнения использовать уравнение :   I рез     0  ÷ ϕ   X  ÷ = M1X + M 2   + M 3 X нел . X пит    X  ÷ нел   Уравнение позволяет определять напряжение и ток нелинейных элементов не только в зависимости от тока или напряжения на них самих, но и в зависимости от токов через линейные резистивные и индуктивные элементы и напряжения на линейных емкостных элементах, что невозможно было сделать в уравнении .   I рез    ÷ ϕ   X  ÷ означает, что в выражение для токов или напряжений  X  ÷   нел   нелинейных элементов входят значения вектора токов линейных резистивных элементов I рез , значения вектора состояния X и значения вектора нелинейных элементов X нел . Важно отметить, что значения элементов матриц M i в правой части уравнения остаются неизменными.

3.3. Составление линеаризованной математической модели нелинейной РТЦ В связи с невозможностью анализа частотных характеристик (АЧХ, ФЧХ и ГВЗ) нелинейной РТЦ в явном виде, необходимо произвести ее линеаризацию. Такой подход приемлем при анализе некоторых видов нелинейных РТЦ, при воздействии слабого уровня сигнала на входе (не смещающего выбранную рабочую точку нелинейного элемента более чем на 30% [2]). При проведении линеаризации нелинейной РТЦ в ее математической модели будет отсутствовать уравнение , а в уравнениях – будут отсутствовать слагаемые B3 Xнел ( t ) и A3 Xнел ( t ) . 42


Обычно в РТЦ бывает обозначен выход, отклик на котором представляет интерес, также выходной элемент необходим при анализе частотных характеристик для определения передаточной функции. Откликом может быть напряжение uвых между некоторыми узлами (называемыми выходными узлами) схемы, либо ток iвых в некоторой ветви (называемой выходной ветвью) схемы. В общем виде отклик можно обозначить как xвых, чтобы не конкретизировать его вид. Так как отклик есть напряжение между некоторыми узлами или ток в некоторой ветви R-цепи, его можно выразить линейной зависимостью от вектора состояния X и вектора независимых источников Xни, такая зависимость называется уравнением выхода. Учитывая все изложенные выше обстоятельства, математическая модель линеаризованной РТЦ принимает следующий вид [1]: I рез ( t ) = B1X ( t ) + B 2 X ни ( t ) , d X ( t ) = A1X ( t ) + A 2 X ни ( t ) , dt xвых ( t ) = D1X ( t ) + D2 Xни ( t ) . Следует заметить, что при построении уравнения выхода считается, что схема имеет единственный выход [1], поэтому xвых(t) является скалярной (а не векторной) величиной.

3.4. Метод Леверрье-Фаддеева для определения выражения передаточной функции РТЦ Для проведения анализа частотных характеристик РТЦ необходимо получить выражение ее передаточной функции. Выражение передаточной функции цепи имеет форму дроби, числитель и знаменатель которой, представляют собой полиномы от p [1]: M ( p) an p n + an −1 p n −1 + ... + a1 p + a0 K ( p) = = n . N ( p) p + β n −1 p n −1 + ... + β1 p + β 0 Степень n полинома N(p) равна порядку анализируемой цепи, т. е. числу реактивных элементов в ней с независимыми начальными условиями или, что то же самое, разности общего числа реактивных элементов и числа особенностей, содержащихся в цепи. В числителе ряд коэффициентов при старших степенях могут быть равны нулю и степень полинома M(p) может быть меньше степени N(p). Знаменатель передаточной функции представляет собой характеристический полином линейной цепи. По расположению корней характеристического полинома на комплексной плоскости можно оценивать устойчивость линейной цепи [7]. Причем, если линейная цепь является результатом линеаризации 43


нелинейной цепи, то можно оценить устойчивость исходной нелинейной цепи в малом. Следует отметить, что, по определению, передаточная функция есть отношение выходного отклика к входному воздействию. Обычно, находится аналитическое выражение, которое путем довольно сложных преобразований можно привести к виду . Огромным преимуществом метода переменных состояния является возможность непосредственного нахождения коэффициентов α и β. Расчет коэффициентов полиномов производится из следующих уравнений математической модели: d X ( t ) = A1X ( t ) + A 2 xвх ( t ) , dt хвых ( t ) = D1X ( t ) + D2 xвх ( t ) . Отличие данных выражений от приводившихся ранее и состоит лишь в том, что вместо вектора независимых источников здесь используется скалярная величина xвх(t). Это связано с тем, что в цепи предполагается только один независимый источник, для которого выбрано обозначение xвх(t). Входящие в уравнения переменные представляются их изображениями по Лапласу, и в предположении нулевых начальных условий получается: pX( p) = A1X( p ) + A 2 X вх ( p ), X вых ( p ) = D1X( p) + D2 X вх ( p). А выражение передаточной функции находится как: K ( p ) = D1 ( p ×1 − A1 ) −1 A 2 + D2 . Данное выражение может быть использовано для построения алгоритма вычисления передаточной функции. Основная трудность вычисления состоит в нахождении обратной матрицы ( p ×1 − A1 ) . В [1] предложен метод вычисления такой матрицы, называемый методом Леверрье-Фаддеева. Этот метод предусматривает следующую схему вычислений: Пусть дана квадратная неособенная матрица A1 (этим условиям удовлетворяет матрица A1 уравнения состояния реальной схемы) n-го порядка. Все получаемые в ходе вычислений матрицы будут также квадратными матрицами n-го порядка. Приняв B n = 0 и β n = 1 , проводят вычисления по следующей схеме:

44


1 β n −1 = − tr B n −1 , 1 1 α n − 2 = B n −1 + β n ×1, B n − 2 = α n − 2 A1 , β n − 2 = − tr B n − 2 , 2 1 α n − 3 = B n − 2 + β n −1 ×1 B n − 3 = α n − 3 A1 , β n − 3 = − tr B n − 3 , 3 1 α 0 = B1 + β1 ×1, B0 = α 0 A1 , β 0 = − tr B 0 , n 0 = B 0 + β0 ×1.

α n −1 = B n + β n ×1,

B n −1 = α n −1A1 ,

Последнее выражение – тождество, которое можно использовать для проверки безошибочности проведенных вычислений. В схеме вычислений в выражениях для βi использована операция нахождения следа матрицы, обозначенная символом tr (под следом матрицы понимают сумму ее элементов, расположенную на главной диагонали). Через величины, значения которых рассчитываются в схеме ЛеверрьеФаддеева, можно выразить: 1. обратную матрицу, используя выражение A1−1 = −(1 β0 )α 0 ; 2. характеристический полином исходной матрицы характеристический полином анализируемой цепи)

(иначе,

det( p ×1 − A1 ) = p n + β n −1 p n −1 + ... + β1 p + β0 ; 3. обратную матрицу ( s ×1 − A1 ) −1 , входящую в выражение передаточной функции : ( p ×1 − A1 )

−1

=

α n −1 p n −1 + α n − 2 p n − 2 + ... + α1 p + α 0 p n + β n −1 p n −1 + ... + β1 p + β 0

.

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

3.5. Анализ частотных характеристик Переход от передаточной функции K(p) к комплексному коэффициенту передачи K& ( jω ) осуществляется заменой в выражении K(p) переменной p на jω [1]. Применяя этот прием к , получаем: an ( jω ) n + an −1 ( jω ) n −1 + ... + a1 jω + a0 P1 (ω ) + jP2 (ω ) & K ( jω ) = = , Q1 (ω ) + jQ2 (ω ) ( jω ) n + β n −1 ( jω ) n −1 + ... + β1 jω + β 0 45


где P1(ω) и Q1(ω) – сумма действительных членов полиномов соответственно числителя и знаменателя; P2(ω) и Q2(ω) – сумма мнимых членов этих полиномов. Очевидно, P1 (ω ) = a0 − a2ω 2 + a4ω 4 − ..., P2 (ω ) = a1ω − a3ω 3 + a 5 ω 5 − ..., Q1 (ω ) = β0 − β 2ω 2 + β 4ω 4 − ..., Q2 (ω ) = β1ω − β3ω 3 + β 5ω 5 − ..., Из следует, что АЧХ определяется выражением: K (ω ) = K& (ω ) =  P12 (ω ) + P12 (ω )  Q12 (ω ) + Q22 (ω )  .     Для построения расчетного выражения для ФЧХ предварительно преобразуем с получением в знаменателе дроби действительной величины. Для этого числитель и знаменатель умножаем на величину, сопряженную со знаменателем, т. е. на Q1 (ω ) − jQ2 (ω ) : P (ω )Q1 (ω ) + P2 (ω )Q2 (ω ) + j [ P2 (ω )Q1(ω ) − P1(ω )Q2 (ω ) ] K& (ω ) =` 1 . Q12 (ω ) + Q22 (ω ) Отсюда получаем выражение для расчета ФЧХ:

ϕ (ω ) = arctg

P2 (ω )Q1 (ω ) − P1(ω )Q2 (ω ) . P1 (ω )Q1 (ω ) + P2 (ω )Q2 (ω )

Для определения аналитического вида характеристики группового времени запаздывания необходимо взять первую производную по частоте от выражения для ФЧХ: t( ω) =

dϕ ( ω ) dω

4. Разработка алгоритмов анализа РТЦ 4.1. Обобщенный алгоритм работы системы Работу любой компьютерной программы можно условно разделить на 3 основные части: 1. Получение входных данных. 2. Их обработка. 3. Вывод выходных данных. Применительно к программе схемотехнического моделирования такое разделение примет следующий вид. 46


• Входными данными будут являться в первую очередь описание моделируемой РТЦ, а также параметры анализа (например, элемент, с которого будет сниматься выходное напряжение). Описание моделируемой РТЦ может быть представлено в двух видах: графическом и текстовом. Для целей настоящей работы можно ограничится одним текстовым описанием. • Обработка данных должна происходить в следующей последовательности: разбор описания РТЦ (в данном случае текстового), загрузка полученных данных о РТЦ в оперативную память ЭВМ в удобном для дальнейшего анализа виде, формирование матриц математической модели цепи, выполнение необходимой процедуры анализа (информация о которой должна содержаться во входных данных). • Тип выходных данных будет зависеть от типа проводимого анализа, это может быть как представление графической информации (например, график изображающий АЧХ), так и вывод текстовых данных в случае анализа по постоянному току. Для отображения данных может использоваться одно из стандартных устройств вывода в ЭВМ: монитор или принтер. Таким образом, алгоритм работы разрабатываемой программы можно представить следующим образом Рис. 4 .3: • разбор текстового описания схемы; • преобразование полученных данных в удобный для дальнейших вычислений вид; • составление матриц математической модели РТЦ; • выполнение процедуры анализа (анализ по постоянному току, анализ частотных характеристик); • вывод результатов моделирования.

47


Рис. 4.3 Общий алгоритм работы программы схемотехниче ского моделирования

4.2. Алгоритм работы интерпретатора языка описания схем Выбрав текстовый способ описания РТЦ необходимо разработать так называемый интерпретатор языка подобного текстового описания. Для начала необходимо определиться с самим языком. Как говорилось в п. 3.1 для полного описания РТЦ необходимо иметь данные о ее топологии (определяющие набор ветвей и способ, которыми они соединены друг с другом), компонентные данные (определяющие тип и параметры 48


элементов, присутствующих в ветвях), а также положительные направления токов и напряжений в ветвях схемы. Используемый язык должен иметь возможность описать все эти данные наиболее удобным для работы ЭВМ способом и в то же время понятным для человека, который его подготавливает. Для целей настоящей работы удобно использовать язык описания схем Spice, разработанный в лаборатории электронных устройств калифорнийского университета в Беркли. Синтаксис данного языка довольно простой, также он поддерживается большинством современных систем схемотехнического моделирования. Но для корректной работы разрабатываемой программы, придется внести некоторые изменения в стандартное представление языка. 4.2.1. Алгоритм интерпретации текстового описания РТЦ Каждая строка текстового описания схемы представляет собой описание одного из элементов. В ней содержатся данные об имени элемента, об узлах к которым он подключен и о его параметрах. Например, R1 2 5 10K – текстовое описание резистора, который имеет имя R1, включен между узлами 2 и 5 (порядок следования узлов для всех пассивных элементов и источников тока зависит от выбранного направления протекания тока через элемент) и имеет номинал 10кОм. Сведения о типе элемента находятся в первом символе строки. ниже приведена таблица соответствия первого символа электрическому элементу. Первая буква

Элемент

R

Резистор

C

Емкость

L

Индуктивность

V

Независимый источник напряжения

I

Независимый источник тока

E

Источник напряжения, управляемый напряжением

H

Источник напряжения, управляемый током (ИНУТ)

G

Источник тока, управляемый напряжением (ИТУН)

F

Источник тока, управляемый током (ИТУТ)

Z Y

Нелинейный напряжения

элемент,

замещаемый

источником

Нелинейный элемент, замещаемый источником тока Таблица 4.1

49


Далее может следовать любое количество латинских символов или цифр, задающих уникальное наименование элемента в схеме. Номинал элемента может быть записан в нескольких разных формах: в виде обычного числа, с использованием размерности и в инженерном виде, использую экспоненту. Например, следующие варианты написания номинала резистора 10КГц из предыдущего абзаца являются абсолютно идентичными друг другу: 10000, 10K, 1e5. Размерность представляется в виде кода, ниже приведен список таких кодов, с расшифровкой размерности и десятичного обозначения. Код

Префикс размерности

Десятичный вид

T

Тера

1012

G

Гига

109

Meg

Мега

106

K

Кило

103

M

Мили

10-3

U

Микро

10-6

N

Нано

10-9

P

Пико

10-12

F

Фемто

10-15 Таблица 4.2

Для независимых источников напряжения или тока необходимо иметь возможность указать тип генерируемого ими сигнала, разрабатываемая программа будет поддерживать два значения типов сигнала – сигнал постоянного направления и величины (DC) и переменный синусоидальный сигнал (AC). Например, следующая запись – V1 1 9 AC 0.01 описывает независимый источник напряжения с переменным синусоидальным сигналом. Для управляемых источников тока и напряжения необходимо указать управляющий элемент, например запись F1 6 8 R1 130.3 будет описывать ИТУТ с управляющим элементом R1.

50


Рис. 4.4 Схема алгоритма работы интерпретатора языка описания схем

Также в стандарте языка Spice не имеется возможности описывать нелинейные резистивные, емкостные и индуктивные элементы. Нелинейный элемент может быть описан коэффициентами разложения в ряд Фурье его вольтамперной характеристики. Таким образом, для описания нелинейного элемента необходимо перечислить эти коэффициенты. Коэффициенты можно записать в том же месте, где записывается номинал линейного элемента, заключив их в скобки, например, следующей строкой становится возможным описать нелинейное сопротивление: 51


ZX1 5 8 (R 3.532E-5 0.00136 0.0261 0.335 3.219 24.767 159.423 874.272 4015.548 17406.861 89665.263 89665.263) В зависимости от типа элемента организованы разные алгоритмы разбора текстовых строк. Но все они строятся на принципе выделения элементов строки, которые отделены друг от друга более чем одним символом пробела.

4.3. Алгоритм формирования матрицы главных сечений и матриц, входящих в основу математической модели нелинейной РТЦ 4.3.1. Алгоритм формирования матрицы главных сечений Формирование матрицы главных сечений производится в два этапа. На первом этапе по введенным в ЭВМ данным цепи формируется структурная матрица. На следующем этапе в результате преобразований, проводимых над структурной матрицей, получается матрица главных сечений. Рассмотрим построение структурной матрицы. Составим матрицу следующего вида. Припишем столбцы матрицы определенным ветвям графа, строки – его узлам. Дадим элементам ai,j следующие значения: • 0, если j-я ветвь графа не подключена к i-му узлу; • +1, если j-я ветвь графа подключена к i-му узлу и направлена от него; • -1, если j-я ветвь графа подключена к i-му узлу и направлена к нему. Рассмотрим на примере схемы, приведенной на Рис. 3 .1, последовательность действий для составления матрицы главных сечений. Структурная матрица для данной схемы формируется следующим образом:ы  1 0 1 1 0 0 0 0 0  0 0 0 −1 1 0 0 1 0     0 0 −1 0 0 1 1 0 0  A= . 0 0 0 0 0 0 − 1 − 1 − 1    0 1 0 0 −1 0 0 0 0     −1 −1 0 0 0 −1 0 0 1 Каждая i-я строка такой матрицы показывает, какие ветви подключены к i-му узлу и каково их направление относительно узла; а каждый j-й столбец указывает, с какими узлами соединена j-я ветвь. Так как каждая ветвь подключена к двум узлам, то в любом из столбцов матрицы имеется два ненулевых элемента, один из которых +1, другой –1. В связи с этим значения элементов одной из строк матрицы всегда могут быть определены через элементы других строк. Иначе говоря, одна из строк является независимой, не несет информации и может быть вычеркнута из матрицы. Вычеркивая последнюю строку, получаем следующую матрицу: 52


   A=   

1 0 0 0 0

0 1 1 0 0 0 −1 1 0 −1 0 0 0 0 0 0 1 0 0 −1

0 0 0 0 0 0 1 0  1 1 0 0 .  0 −1 −1 −1 0 0 0 0 

Матрица дает топологическое описание цепи. Назовем ее структурной (или матрицей инциденций). Так как строки матрицы A указывают ветви, подключенные к соответствующим узлам, и их направление относительно узлов, то умножая строки матрицы на вектор токов ветвей получаем алгебраическую сумму токов в узлах, равную нулю по ЗКТ. Это соответствует системе уравнений . Для получения матрицы F необходимо данную систему решить относительно токов ребер. Эту операцию можно выполнить методом исключения переменных, что преобразует матрицу A таким образом, что в левой ее части образуется единичная матрица, а правая часть представляет искомую матрицу главных сечений. В ходе преобразований используется перестановка строк и столбцов матрицы, суммирование или вычитание строк. Допустимость таких операций связана с тем, что перестановка строк в матрице A вызывает лишь изменение порядка, в котором следуют уравнения в системе уравнений токов (3.2.1); перестановка столбцов соответствует перестановке членов уравнений; суммирование или вычитание строк соответствует суммированию или вычитанию левых частей уравнений токов. Алгоритм получения из матрицы A матрицы F можно представить следующей последовательностью шагов [1]: 1. задается j = 1; 2. исключая из рассмотрения первые (j – 1) строк и (j – 1) столбцов, последовательно просматривают остальную часть матрицы по столбцам и ищут первый ненулевой элемент. Пусть этот элемент aik; 3. если k ≠ l, то k-й столбец ставится на j-е место, столбцы от j-го до (k – 1)го сдвигаются вправо; 4. если i > j , то меняются местами i-я и j-я строки; 5. если ajj = –1, то меняются на обратные знаки элементов j-й строки; 6. если в j-м столбце кроме элемента ajj имеются дополнительные ненулевые элементы, то они устраняются прибавлением (или вычитанием) j-й строки к строкам этих элементов; 7. задается j = j + 1. Если j ≤ n – 1 (где n – число узлов цепи), идти к шагу 2; в противном случае m – (n – 1) (где m – число ветвей) правых столбцов матрицы есть искомая матрица.

53


Рис. 4.5 Схема алгоритма формирования матрицы главных сечений

В итоге преобразований получается следующая матрица главных сечений, определяющая топологию схемы: 54


 1 1 0 −1  −1 0 0 0    F =  0 −1 1 1  .    −1 0 −1 0   0 0 1 1  Как было сказано выше, матрица главных сечений определяет полную систему топологических уравнений. Зная также и компонентные уравнения можно приступить к формированию математической модели цепи. Схема алгоритма формирования матрицы главных сечений представлена на Рис. 4 .5. 4.3.2. Алгоритм вычисления коэффициентов уравнения токов резистивных элементов Пользуясь правилом построения топологических уравнений с использованием матрицы главных сечений (2.2.3) и (2.2.5), записываются топологические уравнения для токов резистивных ребер и напряжений резистивных хорд: I RP = −FRP RX I RX − FRP LX I LX − FRP I I I − FRPуI IуI , U RXу =X FUT

R у

T UU X+ FUR UUP +X FCT

R P

UC P +X FRT PR U R .

Топологические уравнения дополняются компонентными уравнениями для резистивных элементов, определяющими по закону Ома зависимость между напряжением и током для этих элементов: U RP = R P I RP , U RX = R X I RX . Здесь RР, RХ – матрицы сопротивлений резистивных ребер и резистивных хорд. В этих матрицах элементы, расположенные на главной диагонали, – сопротивления соответствующих резистивных элементов, остальные элементы имеют нулевые значения. Напряжения на резистивных элементах выражаются через токи этих элементов, при использовании компонентными уравнениями, после чего все члены, содержащие токи резистивных элементов можно перенести в левые части равенств: 1 ×I RP + FRP RX I RX = −FRP LX I LX − FRP I I I − FRPуI IуI , T −FRTP R X R P I RP + R X I RX = FCTP RX UC P + FUR U + FуUT Xу XU

R

UU .

Объединив эти уравнения в одно матричное уравнение, получаем:

55


1 FRP RX   I R   0 −FRP LX   UC   P  T   P  + = T R X  I RX  FCP RX 0   I LX   −FRP RX R P 1 2 3 1 4 4 4 2 4 4 4 3 1 4 44 2 4 4 43 1 2 3 I рез

A11

X

B11

−FRPуI   U  −FRP I   U   0  0   у .   +  T + T 0   I у   FERXу X 0  {  I  FU R 1 4 42 4 43 1 4 44 2 4 4 43  { X B12

ни

Xy

B13

или с учетом введенных обозначений: A11I рез = B11X + B12 X ни + B13X y . Матричные коэффициенты B получаются из матрицы главных сечений на основании и содержат лишь топологическую информацию. Матрица A11 получена на основании с учетом и несет в себе компонентную информацию (параметры сопротивлений). Вектор Xy объединяет токи и напряжения управляемых источников. Так как эти токи и напряжения линейно зависят от токов и напряжений других элементов схемы (и могут быть однозначно через них выражены), строится зависимость: X yрез = N1′ I

+ N′2 X + ниN′3X

+y N 4 X .

Уравнение предусматривает все возможные варианты управления зависимых источников. Такой метод позволяет строить любые эквивалентные схемы устройств. Управляемый источник может управляться с любой ветви, в то время как разработанные ранее методы позволяли включать управляемый источник таким образом, что управление осуществлялось только либо с резистивного элемента, либо с элемента, входящего в вектор состояния. Матрицы Nʹ имеют количество строк, равное количеству управляемых источников. Количество столбцов определяется количеством элементов в соответствующем векторе. Число, определяющее зависимость ставится на соответствующее место строки матрицы, другие элементы строки – нули. Матрица N4 является квадратной и введена на тот случай, если управляемый источник управляется с ветви, содержащей также управляемый источник. (Следует заметить, что в этом случае последний может также управляться с ветви, содержащей управляемый источник и т. д. Важно лишь, чтобы первый источник в этой цепочке управлялся с ветви, не содержащей управляемый источник). Сгруппировав члены, содержащие Xy в левой части и произведя преобразования уравнения (3.3.9), получим зависимость вектора Xy от векторов токов резистивных элементов, вектора состояния и вектора независимых источников: 56


= N1′ I ( 1 − N 4 ) X yрез −1

+ N′2 X + ниN′3X , −1

X yрез = ( 1 − N 4 ) N1′ I 1 44 2 4 43

−1

+ ( 1 − N 4 ) N′2 X + N ) N′ X , ни(11 − 1 44 2 4 43 44 24 4 43 3

N1

N3

N2

X yрез = N1I

+ N2X + ниN 3X .

Используя полученное выражение можно записать уравнение токов резистивных элементов: −1

I рез = ( A11 − B13N1 ) ( B11 + B13N 2 ) X + 1 4 4 4 4 4 2 4 4 4 4 43 B1

−1

+ ( A11 − B13N1 ) ( B12 + B13N3 ) X ни . 1 4 4 4 4 4 2 4 4 4 4 43 B2

или с учетом введенных обозначений, конечный результат примет вид: I рез = B1X + B 2 X ни . 4.3.3. Алгоритм вычисления коэффициентов уравнения состояния По матрице главных сечений записываются топологические уравнения: T U LX = FLTP LX U LP + FRTP LX U RP + FCTP LX UCP + FUL U X + FUT XУ U

L

UUу ,

I CP = −FCPC X IC X − FCP RX I RX − FCP LX I LX − FCP I I I − FCPУI I Iу . Компонентные уравнения для индуктивных и емкостных элементов d iL ( t ) , dt d iC ( t ) = C iC ( t ) dt

uL ( t ) = L

Используя зависимости U RP = R P I RP , U LP = L P

(

)

IC X

(

)

d −FRP LX I LX , dt d T = CX FCP C X U CP . dt

можно выразить соответствующие члены и записать равенства в следующем виде:

57


(C

P

+ FCP C X C X FCTP C X

) dtd U

=

CP

= −FCP RX I RX − FCP LX I LX − FCP I I I − FCPУI I Iу ,

(L

X

+ FLTP LX L P FLP LX

) dtd I

LX

=

T T = FRTP LX R P I RP + FCTP LX UCP + FUL U + F U U Xу X у

UU .

L

Объединим полученные выражения в одно матричное уравнение: C P + FC C C X FCT C   UC  0 P X P X   d  P= T   dt  I LX  LX L P FLP LX  1 4 4 4 4 04 4 4 44 2 4L X4 +4F4LP 4 123 4 4 4 43 X

A 22

−FCP RX   I R   0 −FCP LX   UC   0 P  T   P  + + T 0  I RX   FCP LX 0   I LX  FRP LX 1 4 44 2 4 4 43  1 2 3 1 4 44 2 4 4 43  1 2 3 I рез

A 21

X

B 21

−FRPуI   U  −FCP I   U   0  0    у .  T   + T 0   I у  FULXу X 0  {  I  FU L 1 4 4 2 4 43 X 1 4 44 2 4 4 43  { X ни B 22

y

B 23

С учетом введенных в обозначений: A 22

d X = A 21I рез + B 21X + B 22 X ни + B 23X y . dt

Подставив в выражение для вектора управляемых источников получаем: A 22

d X = A 21I рез + B 21X + B 22 X ни + dt

(

)

+B 23 N1I рез + N 2 X + N 3X ни . Подставим в выражение для вектора токов резистивных элементов: d X = A 21 ( B1X + B 2 X ни ) + B 21X + dt + B 23 ( N1 ( B1X + B 2 X ни ) + N 2 X + N3X ни ) .

A 22 +B 22 X ни

Раскрыв скобки и приведя подобные члены, получаем: A 22

d X = ( A 21 + B 23N1 ) B1 + B 21 + B 23N 2  X + dt + ( A 21 + B 23N1 ) B 2 + B 22 + B 23N3  X ни . 58


Решим уравнение относительно производной: d X = A −221 ( A 21 + B 23N1 ) B1 + B 21 + B 23N 2  X + 1 4 4 4 4 4 44 2 4 4 4 4 4 4 43 dt A1

+ A −221 ( A 21 + B 23N1 ) B 2 + B 22 + B 23N3  X ни . 1 4 4 4 4 4 4 4 2 4 4 4 4 4 4 43 A2

С учетом введенных обозначений получим окончательное выражение для уравнения состояния: d X = A1X + A 2 X ни . dt 4.3.4. Алгоритм вычисления коэффициентов уравнения выхода Как отмечалось выше, откликом на выходе схемы может быть напряжение или ток. Под выходом подразумевается напряжение между узлами подключения одного из элементов схемы или ток в одном из элементов схемы. Если выходным элементом является резистор, то вектора D1 и D2 уравнения выхода для тока представляют собой соответствующие этому резистору строки матриц B1 и B2, а для напряжения – строки матриц B1 и B2, умноженные на значение данного резистора. Если выходным элементом является элемент вектора состояния, то для тока через емкостные элементы и напряжения на индуктивных элементах вектора D1 и D2 уравнения выхода представляют собой строки матриц A1 и A2, умноженные на значение элемента. Для тока через индуктивность и напряжения на емкости D1 представляет собой вектор, из нулей и единицы, причем единица соответствует току через индуктивность или напряжению на емкости, а D2 – вектор из нулей. Если выходным элементом является независимый источник, то D2 представляет собой вектор, из нулей и единицы, причем единица соответствует источнику, а D1 – вектор из нулей. Если пользователя интересует напряжение между двумя узлами схемы, но между этими узлами включено несколько элементов, то можно добавить в схему резистивный элемент с достаточно большим сопротивлением и задать его в качестве выходного элемента. Схема алгоритма расчета коэффициентов уравнения выхода представлена на Рис. 4 .6

59


Рис. 4.6 Схема алгоритма формирования уравнения выхода

4.4. Алгоритм решения уравнений РТЦ при ее анализе по постоянному току Анализ режима работы по постоянному току является одной из важнейших частей всех современных ССМ. Он необходим для расчета точек покоя электрической цепи, составления карт режимов работы компонентов цепи, 60


определения рассеиваемых мощностей в компонентах и т.п. Перед проведением других типов анализа, таких как анализ частотных характеристик и вычисление нелинейных передаточных функций, необходимо выполнить разложение вольтамперных, кулон-вольтных и вебер-амперных характеристик нелинейных элементов в степенной ряд, или провести их аппроксимацию степенным многочленом. Для того чтобы корректно провести данную операцию необходимо знать начальные условия работы РТЦ. Кроме того, анализ режима по постоянному току позволяет линеаризовать нелинейные эквивалентные схемы усилительных элементов, для того, чтобы их можно было исследовать как линейные с целью получения частотных характеристик и сделать вывод об их устойчивости в малом (п. 3.4). Как показано в п. 3.2, вектор нелинейных источников Xни не зависит от времени и принимает вид [1]:  0  X ни =  .  Xпит  Уравнение токов резистивных элементов в таком случае примет вид:  0  I рез = B1X + B 2   + B3 X нел . X  пит  Коэффициенты B1 и B2 в этом уравнении останутся прежними. Иначе дело обстоит с уравнением состояния. Проведем секционирование матриц A2 B2. В результате каждую из указанных матриц представим в виде элементов-подматриц следующим образом: A 2 = ( A 21 A 22 B 2 = ( B 21 B 22

A 23 ) ,

B 23 ) .

Путем несложных преобразований над матрицами токов резистивных элементов и матрицами уравнения состояния получаем: −1 A1 = A 22 ×( B 21 + A 21 + B1 ) , −1 A 2 = A 22 ×( B 22 + A 21 + B 2 ) , −1 A3 = A 22 ×( B 23 + A 21 + B3 ) .

Учитывая , запишем уравнение: −1 A −221 ×( B 21 + A 21 + B1 ) ×X + A 22 ×( B 22 + A 21 + B 2 ) ×X ни +

+ A −221 ×( B 23 + A 21 + B3 ) ×X нел = 0. Из левой части уравнения можно вынести общий множитель A −221 . Т.к. в общем случае A −221 ≠ 0 , справедливо следующее: 61


+ B ) ×X + ( B 22 + A 21 + B 2 ) ×X ни + (1B421 4+ A 2 21 4 4 31 1 4 4 2 4 4 3 G1

G2

+ ( B 23 + A 21 + B3 ) ×X нел = 0 1 4 42 4 43 G3

С учетом введенных обозначений исходное уравнение примет вид:  0  0 = G1X + G 2   + G 3 Xнел , X  пит  Путем несложных матричных преобразований выразим вектор состояния X из : X=−

G 2  0  G3 − X нел G1  X пит  G1

Из видно, что для нахождения вектора состояния нелинейной цепи необходимо предварительно вычислить вектор состояния нелинейных элементов Xнел. Из матрицы главных сечений можно получить систему уравнений для токов и напряжений на нелинейных элементах: IU Н = −FU H RX ×I RX − FU H L ×I L − FU H I ×I − FU H IНH ×I , T T U I H = FUI ×U + FCI ×UC + FRTP I H ×U RP + FUT H I H ×U H . H H

Объединив эти два уравнения в одно матричное и воспользовавшись соотношением запишем:  IU Н   UI  H

−FU H L   U   0 −FU H I   U    0 C ÷× ÷× ÷+ ÷=  T ÷+  T ÷ F ÷ ÷I I 0 F 0  L   UI H   CI H 1 4 4 2 4 4 3 1 4 4 2 4 4 3 H1

H2

−FU H I H   U   0 −FU H RX   I R  0 ÷× H ÷+  ÷× P + T T  FU I ÷  I RX 0 ÷ 0  I Н   RP ×FRP I H 1 4H44 H  2 4 4 43 1 4 4 44 2 4 4 4 43  H3

 ÷. ÷ 

H4

С учетом введенных обозначений, получаем:  IU Н   UI  H

  I RP ÷ = H1 ×X + H 2 ×X ни + H1 ×X нел + H 4 × ÷  IR   X

 ÷. ÷ 

Учитывая, что Iрез в и последний множитель в имеют один и тот же смысл, подставим Iрез в полученное выражение:

62


 IU Н   UI  H

 ÷ = H1 ×X + H 2 ×X ни + H 3 ×X нел + H 4 ×B1 ×X + ÷  + H 4 ×B 2 ×X ни + H 4 ×B3 ×X нел .

Вектор в левой части уравнения представляет собой вольтамперные характеристики нелинейных элементов, обозначив его через ϕ ( Xнел ) и вынеся общие множители в правой части X, Xни, Xнел, получим:

ϕ ( X нел ) = ( H1 + H 4 ×B1 ) ×X + ( H 2 + H 4 ×B 2 ) ×X ни + 1 44 2 4 43 1 4 4 2 4 43 M1

M2

+ ( H 3 + H 4 ×B3 ) ×X нел . 1 4 4 2 4 43 M3

В итоге уравнение для нелинейных элементов примет следующий вид:  0  ϕ ( X Hнел ) = M1X + M 2   + M 3X X пит  

.

Как было показано в п. 3.2, в некоторых случаях подобной формы записи недостаточно для описания РТЦ, поэтому уравнение примет вид:   I рез     0  ÷ ϕ   X  ÷ = M1X + M 2   + M 3X нел . X  пит   X  ÷   нел   Наличие вектора под знаком функции φ(.) в уравнении означает, что напряжение на нелинейном элементе или ток через нелинейный элемент может, во-первых, зависеть не только от тока через сам нелинейный элемент или напряжения на самом нелинейном элементе (вектор Xнел), но и от тока через резистивный элемент (вектор Iрез) или напряжения на линейном емкостном элементе, или тока через линейный индуктивный элемент (вектор X); а вовторых, зависеть сразу от напряжений на нескольких элементах или токов через несколькие элементы. Так как вектор Xпит, а следовательно и Xни являются известными, то анализ режима по постоянному току сводится к решению системы уравнений, состоящей из , и относительно Iрез, X и Xнел. Система уравнений , и является нелинейной т.к. в уравнении левая часть представляет собой нелинейную зависимость. Для решения системы нелинейных уравнений применяется один из численных методов, например метод Бройдена, рассмотренный подробно в [1]. Результаты анализа режима работы по постоянному току представляют собой значения вектора токов резистивных элементов, вектора состояния и вектора напряжений на нелинейных элементах и токов через нелинейные элементы. 63


На основе полученных результатов можно разложить характеристики нелинейных элементов в степенной ряд Тейлора или провести их аппроксимацию степенным полиномом. Также полученные результаты дают необходимые сведения для процесса линеаризации РТЦ.

4.5. Алгоритм вычисления коэффициентов полиномов передаточной функции линейной РТЦ методом ЛеверрьеФаддеева Как показано в п. 3.4 выражение передаточной функции цепи имеет форму дроби, числитель и знаменатель которой, представляют собой полиномы от p: M ( p) an p n + an −1 p n −1 + ... + a1 p + a0 K ( p) = = n . N ( p) p + β n −1 p n −1 + ... + β1 p + β 0 В качестве исходных выражений для расчета принимаются уравнения состояния и выхода анализируемой схемы d X ( t ) = A1X ( t ) + A 2 xвх ( t ) , dt хвых ( t ) = D1X ( t ) + D2 xвх ( t ) . Входящие в уравнения переменные представляются их изображениями по Лапласу, и в предположении нулевых начальных условий: pX( p) = A1X( p ) + A 2 X вх ( p), X вых ( p ) = D1X( p ) + D2 X вх ( p). Таким образом, следующий вид:

выражение

для

передаточной

функции

принимает

K ( p ) = D1 ( p ×1 − A1 ) −1 A 2 + D2 . В п. 3.4 также рассмотрен метод Леверрье-Фаддеева для нахождения обратной матрицы вида ( p ×1 − A1 ) , входящий в состав выражения передаточной функции. Вычисления в данном методе производятся по следующей схеме, приняв B n = 0 и β n = 1 : 1 β n −1 = − tr B n −1, 1 1 α n − 2 = B n −1 + β n ×1, B n − 2 = α n − 2 A1, β n − 2 = − tr B n − 2 , 2 1 α n −3 = B n −2 + β n −1 ×1 B n −3 = α n −3A1, β n −3 = − tr B n −3 , 3 1 α 0 = B1 + β1 ×1, B 0 = α 0 A1, β 0 = − tr B 0 , n 0 = B 0 + β 0 ×1.

α n −1 = B n + β n ×1,

B n −1 = α n −1A1,

64


В результате обратная матрица выражается следующим образом: ( p ×1 − A1 ) −1 =

α n −1 p n −1 + α n − 2 p n − 2 + ... + α1 p + α 0 . p n + β n −1 p n −1 + ... + β1 p + β 0

После подстановки в получаются коэффициенты полиномов числителя и знаменателя. Причем, если задан один источник входного воздействия, то коэффициентами числителя являются действительные числа, а если несколько, то квадратные матрицы, размер которых соответствует количеству входных источников. Следует иметь в виду, что в ЭВМ вычисления производятся с определенной точностью и для проверки правильности полученных значений пользуются выражением B0 + β0 ×1 ≤ γ , Где γ – некоторая малая величина. Получение значения евклидовой нормы (квадратный корень из суммы квадратов всех элементов) для матрицы в , превышающей γ свидетельствует о том, что исходная матрица является особенной. Заметим, что в каждой строке вычислений схемы Леверрье-Фаддеева при определении αi используется значение матрицы Bi, найденное в предыдущей строке, которое затем не используется в последующих вычислениях. Поэтому новое вычисленное значение Bi+1 может помещаться в памяти ЭВМ на место значений этой матрицы, найденных в предыдущей стоке схемы вычислений. Значения αi можно использовать для нахождения коэффициентов полинома числителя передаточной функции непосредственно в процессе вычислений, что также экономит память ЭВМ. Схема алгоритма расчета полиномов передаточной функции методом Леверрье-Фаддеева представлена на Рис. 4 .7

65


Рис. 4.7 Схема алгоритма расчета коэффициентов полиномов передаточной функции методом Леверрье-Фаддеева

66


4.6. Алгоритмы составления и расчета значений частотных характеристик РТЦ Для анализа частотных характеристик РТЦ необходимо перейти от выражения для передаточной функции к комплексному коэффициенту передачи (п. 3.5): an ( jω ) n + an −1 ( jω ) n −1 + ... + a1 jω + a0 P1 (ω ) + jP2 (ω ) & K ( jω ) = = . Q1 (ω ) + jQ2 (ω ) ( jω ) n + β n −1 ( jω ) n −1 + ... + β1 jω + β 0 P1(ω) и Q1(ω) – сумма действительных членов полиномов соответственно числителя и знаменателя; P2(ω) и Q2(ω) – сумма мнимых членов этих полиномов: P1 (ω ) = a0 − a2ω 2 + a4ω 4 − ..., P2 (ω ) = a1ω − a3ω 3 + a 5 ω 5 − ..., Q1 (ω ) = β0 − β 2ω 2 + β 4ω 4 − ..., Q2 (ω ) = β1ω − β3ω 3 + β 5ω 5 − ..., По определению АЧХ – есть модуль комплексного коэффициента передачи, следовательно, ее выражение находится как: K (ω ) = K& (ω ) =  P12 (ω ) + P12 (ω )  Q12 (ω ) + Q22 (ω )  .     Выражение для ФЧХ принимает следующий вид (п. 3.5):

ϕ (ω ) = arctg

P2 (ω )Q1 (ω ) − P1(ω )Q2 (ω ) . P1 (ω )Q1 (ω ) + P2 (ω )Q2 (ω )

Характеристика группового времени запаздывания представляет собой первую производную по частоте от выражения для ФЧХ: t( ω) =

dϕ ( ω ) , dω

по определению производная есть предел отношения приращения аргумента к значению функции для него: lim

x → x0

f ( x ) − f ( x0 ) , x − x0

а так как ЭВМ оперирует с дискретным множеством значений, то приведенную выше формулу, применительно к ГВЗ можно переписать как: t ( ωi ) =

ϕ ( ωi ) − ϕ ( ωi −1 ) , ωi − ωi −1

где ωi – дискретное значение частоты. 67


5. Разработка программы для моделирования РТЦ методом переменных состояния на языке C++ 5.1. Проектирование структуры основных модулей программы Как было показано в п. 4.1, алгоритм разрабатываемой программы должен быть следующим: • разбор текстового описания схемы; • преобразование полученных данных в удобный для дальнейших вычислений вид; • составление матриц математической модели РТЦ; • выполнение процедуры анализа (анализ по постоянному току, анализ частотных характеристик); • вывод результатов моделирования. В концепции модульного объектно-ориентированного программирования, каждый логически отдельный функциональный элемент в программе должен быть вынесен в свой обособленный от других модуль, и реализовываться в виде класса или набора классов со своим строгим интерфейсом. Таким образом, для начала необходимо выделить в разрабатываемой программе отдельные функциональные логические элементы, спроектировать на их основе классы и сгруппировать их в модули. Каждый подобный модуль будет иметь свою открытую для других часть интерфейса, а также скрытые функции для выполнения собственных обособленных задач. Разбор текстового описания схемы является одним из самых важных в разрабатываемой программе, он отвечает за перевод текстового представления схемы в удобный для дальнейших расчетов вид, а также проверяет ошибки записи. Чтобы в последствии можно было легко заменить данный модуль на модуль графического описания схемы, представляется логичным ограничить его функционал сохранением результатов работы в памяти, а их обработку и составление математической модели вынести в отдельный модуль. Таким образом, можно выделить первые две части программы: модуль интерпретации языка текстового описания схем и модуль составления матриц математической модели цепи. После составления математической модели моделируемой РТЦ и сохранения ее в памяти ЭВМ становится возможным проведение различных видов анализов и, в случае, когда исследуемая схема не линейна – проведение ее линеаризации. Таким образом, целесообразно отделить каждый вид анализа и представить его своим собственным модулем. В программе представлены два основных вида анализа – анализ по постоянному току и анализ частотных характеристик. 68


В результате получим два модуля проведения анализа схемы: модуль расчета цепи по постоянному току и модуль расчета частотных характеристик схемы. Отдельным и обособленным элементом в программе будет выступать графический интерфейс. Его необходимо максимально возможно отделить от основного функционала программы, чтобы в любое время была возможность поменять способ его реализации без больших затрат времени. Из элементов графического интерфейса необходимо создать основные формы для обеспечения интерактивной работы с пользователем, а также разработать модуль построения графиков, который будет связан со всеми имеющимися модулями анализа схемы. В программе будут использоваться вспомогательные библиотеки функций, описанные в п. 2.3, в их число входит библиотека стандартных шаблонов STL, расширяющая ее функционал библиотека Boost, библиотека работы с большими числами, позволяющая решить проблему точности вычислений при расчете передаточной функции и, наконец, библиотеки графического пользовательского интерфейса – Qt 4.5 и Qwt (для построения графиков). Структура модулей программы представлена на Рис. 5 .8:

Рис. 5.8 Структура модулей программы.

5.2. Модуль интерпретации языка текстового описания схем Данный модуль реализует разбор текстового описания схемы в формате Spice. Модуль представлен одним классом CSpiceParser, содержащим методы, реализующие алгоритмы разбора текстового описания схемы, выделения элементов и их параметров и составления матрицы инциденций. 69


Методы, предоставляемые классом CSpiceParcer: • makeStructure – реализует формирование матрицы инциденций; • makeElements – реализует формирование матриц с номиналами элементов РТЦ и формирование векторов с их именами; • makeSources – формирование матриц зависимых источников, таких как источник напряжения, управляемый напряжением (ИНУН), источник напряжения, управляемый током (ИНУТ), источник тока, управляемого напряжением (ИТУН), источника тока, управляемого током (ИТУТ); Каждый из указанных выше методов сохраняет результаты своей работы, представленные в виде матриц, и возвращает указатель на эту структуру данных. Входными данными для класса, передающимися его конструктору, является ссылка на строку с текстовым описанием моделируемой РТЦ.

5.3. Модуль формирования матрицы главных сечений и матриц для составления математической модели нелинейной РТЦ После предварительного разбора текстового описания схемы необходимо сформировать ее математическую модель, которая будет представлена в виде основных матриц, описанных в п. 3.1. Данный модуль также состоит из одного класса CSchemeModel. Методы данного класса представляют собой реализацию алгоритмов, разобранных в п. 4: формирование матрицы главных сечений, формирований матриц уравнения токов резисторов, формирование матриц уравнения состояния и матриц нелинейных элементов. Ниже приведены методы класса CShemeModel: • makeSection – формирование матрицы главных сечений; • takeSection – формирование разбиения матрицы главных сечений на подматрицы для упрощения формирования уравнений математической модели; • makeCurrents – формирование матриц для уравнения токов линейных резистивных элементов • makeState – формирование матриц для уравнения состояния • makeNonLinear – формирование матриц напряжений и токов нелинейных элементов • makeOutput – формирование матриц уравнения выхода Данные методы, подобно методам класса CSpiceParcer, сохраняют результаты своей работы в виде матриц и возвращают указатель на эти структуры данных. 70


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

5.4. Модуль анализа РТЦ по постоянному току Модуль анализа цепи по постоянному току реализует алгоритм метода Бройдена для решения систем нелинейных дифференциальных уравнений. Для составления данной системы уравнений высчитываются вспомогательные матрицы и формируется вектор источников питания. Матрицы Gi, входящие в состав математической модели для анализа режима работы по постоянному току, формируется в методе класса CShemeModule – makeState, т.к. матрицы Ai выражаются через них. Модуль представлен классом CDCAnalyzes: • makeSources – формирование матрицы, состоящей из матриц Bi, Gi, Mi, которая является основной для составления системы нелинейных уравнений; • makeCalc – основная процедура, где вычисляются значения вектора токов линейных резистивных элементов, вектора состояния и вектора напряжений и токов нелинейных элементов; • makeBroiden – процедура реализующая алгоритм решения системы нелинейных уравнений методом Бройдена; • mainFunction – функция, для вычисления вольтамперных характеристик нелинейных резистивных элементов (нелинейные функции); • mainDerivative – функция, для вычисления производных вольтамперных характеристик по определенному параметру;

от

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

5.5. Модуль расчета частотных характеристик РТЦ с использованием библиотеки для увеличения разрядности чисел Модуль расчета частотных характеристик реализует алгоритм ЛевверьеФаддеева, рассмотренный в п. 4.5, а также алгоритмы вычисления значений функций частотных характеристик схемы Модуль представлен классом CFreqResponce: • makePolynoms – метод, реализующий вычисление коэффициентов полиномов. 71


• makeParts – метод вычисляющий отдельно действительную и мнимую часть передаточной функции • makeMagnitude – расчет значений функции АЧХ • makePhase – расчет значений функции ФЧХ В процедуре обращения матрицы методом Леверрье-Фаддеева используется библиотека для работы с большими числами, для избежания погрешностей вычислений. Входные данные, полученные модулем, преобразуются из стандартных числовых типов в числовые типы с увеличенной разрядностью, после чего над ними производятся необходимые вычисления, затем полученные значения преобразуются обратно к стандартным типам и используются остальными методами модуля. Выходные данные представляют собой массивы со значениями функций АЧХ и ФЧХ, использующиеся в графическом модуле построения графиков.

5.6. Разработка графического интерфейса программы Интерфейс пользователя имеет определенный вид для каждого вида анализа. При открытии файла с расширением *.cx, в котором находится текстовое описание исследуемой РТЦ, его содержимое открывается в окне, показанном на Рис. 5 .9 (используется операционная система Mac OS X 10.5).

Рис. 5.9 Окно вывода текстового описания схемы

Текстовое описание РТЦ представляется в формате Spice, кроме нелинейных инерционных элементов, формат записи которых представляет собой набор 72


коэффициентов вольтамперной, кулон-вольтной характеристик в зависимости от типа элемента.

и

вебер-амперной

Далее, если схема линейна, то доступен анализ частотных характеристик (АЧХ и ФЧХ). Вид окна задания на анализ показан на Рис. 5 .10.

Рис. 5.10 Окно задания на анализ

Результат анализа усилительного каскада на биполярном транзисторе, описание которого в формате Spice изображено на Рис. 5 .9, приведен на Рис. 5 .11

73


Рис. 5.11 Результат анализа АЧХ

При выборе режима анализа РТЦ по постоянному току появляется окно, представляющее результаты данного вида анализа. На Рис. 5 .12 представлены результаты анализа указанного выше усилительного каскада.

Рис. 5.12 Результаты анализа усилительного каскада на биполярном транзисторе по постоянному току

74


6. Примеры схемотехнического моделирования линейных и нелинейных РТЦ 6.1. Каскад апериодического усилителя на биполярном транзисторе Одним из типичных узлов РЭА является усилительный каскад, где в качестве усилительного элемента используется либо биполярный, либо полевой транзистор. Рассмотрим апериодический усилительный каскад на биполярном транзисторе. Его принципиальная схема представлена на Рис. 6 .13.

Рис. 6.13 Принципиальная схема апериодического усилительного каскада на биполярном транзисторе

Усилительным элементом каскада является биполярный транзистор КТ316Д. Каскад работает в режиме A. R1 = 18.5 кОм, R2 = 4.3 кОм, Rк = 1 кОм, Rэ = 200 Ом, Rн = 1 кОм. Сэ = 20 мкФ, С1 = = С2 = 20 мкФ, Еп = 10 В. Точка покоя имеет следующие параметры: Iб0 = 39 мкА, Iк0 = 5 мА, Uбэ0 = 0.734 В, Uкэ0 = 5 В. На основе этих параметров, а также параметров модели Spice можно рассчитать нелинейную модель биполярного транзистора КТ316Д для нормального активного режима работы. Она представлена на Рис. 6 .14.

75


Рис. 6.14 Нелинейная модель биполярного транзистора

Модель, представленная на Рис. 6 .14 содержит нелинейный резистивный элемент rб’э, который определяет безынерционные нелинейные свойства открытого перехода база-эмиттер, и нелинейный емкостной элемент cб’э, который определяет нелинейные инерционные свойства диффузионной емкости открытого перехода база-эмиттер. Все остальные элементы модели являются линейными. Модель биполярного транзистора КТ316Д, предложенная в [29] имеет следующие параметры: .MODEL KT316D NPN (IS=2.75f XTI=3 EG=1.11 VAF=96 BF=136.5 NE=2.496 XTB=1.5 VAR=55 BR=0.66 NC=2 RB=70.6 RC=8.4 CJC=4.1p VJC=0.65 MJC=0.33 FC=0.5 VJE=0.69 CJE=1.16p MJE=0.33 TR=27.8n TF=79.0p ITF=0.151 VTF=25 XTF=2). Остальные параметры имеют значения, заданные по умолчанию (см. [29]). Вольтамперная характеристика нелинейного резистивного элемента rб’э [29] irб 'э =

 uб ' э IS   exp  BF   NF ×φT

  ÷− 1÷  

где IS – ток насыщения при температуре 27ºС, BF – максимальный коэффициент усиления тока в нормальном активном режиме в схеме с общим эмиттером, NF – коэффициент неидеальности вольтамперной характеристики в нормальном активном режиме, φT = kT q ≈ 0.026 В – температурный потенциал p-n перехода при температуре 27ºС; Вольтфарадная характеристика нелинейного емкостного элемента сб’э [29] 76


 uб ' э   1  1 + h21э   cб ' э = IS  exp   ÷− 1÷× ÷  BF    NF ×φTгр T  2π f φ где fгр – справочное значение граничной частоты транзистора для схемы с общим эмиттером, h21э – дифференциальный коэффициент передачи тока транзистора для схемы с общим эмиттером в точке покоя. Значения линейных следующим образом:

элементов

предложенной

модели

определяются

объемное сопротивление базы [29] rб ' б =

τк Ск

где τк – справочное значение постоянной времени цепи внутренней обратной связи, Cк – справочное значение проходной емкости в нормальном активном режиме при заданном Uкб; барьерная емкость закрытого перехода коллектор-база cС б 'к =

к

сопротивление утечки закрытого перехода коллектор-база [29] rб ' к = rкэ ( 1 + h21э ) где rкэ = duкэ d iк – дифференциальное значение выходного сопротивления транзистора в схеме с общим эмиттером. Iк – ток линейного управляемого источника, причем iк = h21эirб ' э . Характеристики нелинейных элементов аппроксимируют полиномами n-ой степени следующим образом. Интервал, в пределах которого может изменяться напряжение, разбивают на n равных частей, а затем приравнивают значение характеристики и степенного полинома в каждой точке разбиения, где коэффициенты полинома являются неизвестными. После этого решают систему n линейных уравнений, в результате чего получают значения коэффициентов степенного полинома. Таким образом, вольтамперная характеристика элемента rб’э: irб 'э = 3.532 ×10−5 + 0.00136 ×uб 'э + 0.0261 ×uб2'э + 0.335 ×uб3'э + +3.219 ×uб4'э + 24.767 ×uб5'э + 159.423 ×uб6'э + 874.272 ×uб7'э + 11 +4015.548 ×uб8'э + 17406.861 ×uб9'э + 89665.263 ×u10 б 'э + 301333.943 ×uб 'э ,

а вольтамперная характеристика элемента cб’э:

77


iCб 'э

 3.013 ×10−11 ×uб'э + 5.794 ×10−10 ×uб2'э + 7.429 ×10−9 ×uб3'э +   ÷ −8 4 −7 5 −6 6  + 7.143 × 10 × u + 5.493 × 10 × u + 3.552 × 10 × u + d б'э б 'э б 'э ÷ =  ÷. dt  +1.943 ×10−5 ×u 7 + 9.324 ×10−5 ×u8 + 3.810 ×10−4 ×u 9 + ÷ б'э б 'э б 'э  ÷ 10 11 12 ÷ + 0.00149 × u + 0.00695 × u + 0.02 14 × u б'э б 'э б'э  

После замещения биполярного транзистора его нелинейной моделью эквивалентная схема апериодического усилительного каскада примет вид, представленный на Рис. 6 .15.

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

Rг = 600 Ом (внутреннее сопротивление источника сигнала), Rдел = 3.5 кОм, rб’б = 70 Ом, rб’к = 2.75 Мом, Rк = 1 кОм. С1 = С2 = 20 мкФ, Cб’к = 3 пФ. Rдоп = 10-3 Ом. Резистор Rдоп введен в цепь для исключения особенностей, возникающих при параллельном соединении нелинейных элементов. Коэффициент передачи управляемого источника тока h21э = 130.3. Для определения рабочего диапазона частот проведем линеаризацию эквивалентной схемы апериодического усилительного каскада, после которой получим АЧХ сквозного коэффициента усиления. Процесс линеаризации заключается в замещении всех нелинейных элементов их линейными частями. Таким образом, после данного преобразования, проведенного с нелинейной эквивалентной схемой, представленной на Рис. 6 . 15, получим линеаризованную эквивалентную схему, представленную на Рис. 6 .16.

78


Рис. 6.16 Линеаризованная эквивалентная схема апериодического усилительного каскада на биполярном транзисторе

Здесь Rб’э = 735 Ом, Сб’э = 30 пФ. 6.1.1. Результаты моделирования УК при использовании стандартных числовых типов данных Проведем анализ амплитудно-частотных характеристик методом переменных состояния для вычислений со стандартными числовыми типами. Для этого составим описание схемы на языке Spice: ZX1 5 8 (R 3.532E-5 0.00136 0.0261 0.335 3.219 24.767 159.423 874.272 4015.548 17406.861 89665.263 89665.263) ZX2 4 8 (C 3.548E-11 6.823E-10 8.748E-9 8.411E-8 6.468E-7 4.147E-6 2.288E-5 0.00011 0.000448 0.00175 0.00819 0.0252) V1 1 9 AC 0.01 Rg 1 2 600 C1 2 3 20u Rdl 3 9 3.5k Rbb 3 4 70 R1 4 5 1m Rbk 4 6 2.75Meg Cbk 4 6 3p F1 6 8 R1 130.3 R3 6 8 1Meg Rk 6 9 1k 79


C2 6 7 20u Rn 7 8 1k Re 8 9 200 Ce 8 9 20u После линеаризации в описании появятся следующие линейные элементы: Rx1 5 8 735.294117647059 Cx1 4 8 3.548E-11 Расчеты будут проводится для интервала частот от 100Гц до 20МГц. Ce – емкость, задающая глубину обратной связи анализируемого УК. Проведем анализ для нескольких значений данной емкости: 20мкФ, 50мкФ и 100мкФ. Результаты моделирования представлены на Рис. 6 .17 а), б), в):

а)

80


б)

в) Рис. 6.17 Результаты моделирования УК при стандартных числовых типах данных

6.1.2. Результаты моделирования при использовании числовых типов данных с увеличенной разрядностью Произведем расчет той же эквивалентной схемы для нескольких значений емкости Ce: 20мкФ, 200мкФ, 2000мкФ. Интервал частот можно несколько расширить, чтобы нагляднее рассмотреть область нижних частот: 10Гц – 20МГц. 81


а)

б)

82


в) Рис. 6.18 Результаты моделирования УК при числовых типах данных с увеличенной разрядностью

Проведем анализ по постоянному току линеаризованной эквивалентной схемы усилительного каскада. Цепи, содержащие емкостные элементы, не оказывают влияния на анализ режима работы по постоянному току, поэтому их можно исключить. Таким образом, цепь для анализа по постоянному току примет вид, представленный на Рис. 6 .19.

83


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

Rd1 = R1 = 18.5 кОм, Rd2 = R2 = 4.3 кОм, Rbb = rб’б = 70 Ом, Rbk = rб’к = 2.75 Мом, Rk = Rк = 1 кОм, Re = Rэ = 200 Ом, Rdd = Rдоп = 10-3 Ом, Rbе = rб’э. Результаты режима анализа эквивалентной схемы (см. Рис. 6 .19) по постоянному току в созданном программном комплексе имеют вид: I(Rd1) = 4.4568E-04 A I(Rbb) =

3.7535E-05 A

I(Rdd) =

3.8699E-05 A

I(Rbk) = -1.1637E-06 A I(Rd2) =

4.0814E-04 A

I(Rk)

=

5.0475E-03 A

I(Re)

=

5.0851E-03 A 6.1.3. Анализ полученных результатов

При анализе апериодического усилительного каскада на биполярном транзисторе были рассмотрены две программных реализации модуля расчета коэффициентов полинома передаточной функции методом Леверрье-Фаддеева. Одна из которых использует стандартные числовые типы данных, а другая библиотеку для работы с числами произвольной разрядности. Приведенные графики АЧХ наглядно показывают зависимость точности расчетов от разброса постоянных составляющих при использовании первой реализации модуля и безошибочные результаты при использовании модуля больших чисел. 84


6.2. Каскад апериодического усилителя на полевом транзисторе Рассмотрим апериодический усилительный каскад на полевом транзисторе с управляемым p-n переходом. Его принципиальная схема представлена на Рис. 6 .20.

Рис. 6.20 Принципиальная схема апериодического усилительного каскада на полевом транзисторе

Усилительный каскад построен на полевом транзисторе с управляющим p-n переходом и n-каналом КП303Е. Каскад работает в режиме A без отсечки тока стока и без тока затвора. Rз = 2 МОм, Rс = 1.5 кОм, Rи = 300 Ом, RН = 1.5 кОм. С1 = С2 = 10 мкФ, Си = 10 мкФ, Еп = 14 В. Точка покоя имеет следующие параметры: Iз0 = 0, Iс0 = 5 мА, Uзи0 = -1.5 В, Uси0 = 5 В. На основе этих параметров, а также параметров Spice модели ШихманаХоджеса [29] можно рассчитать нелинейную модель полевого транзистора КП303Е в нормальном режиме для области насыщения. Она представлена на Рис. 6 .21.

85


Рис. 6.21 Нелинейная модель полевого транзистора с управляющим p-n переходом

Модель, представленная на Рис. 6 .21 содержит нелинейный зависимый источник тока Iс, нелинейный резистивный элемент rси, который определяет нелинейные безынерционные свойства канала сток-исток и нелинейный емкостной элемент Cзи, который определяет нелинейные инерционные свойства барьерной емкости закрытого перехода затвор-исток. Все остальные элементы модели являются линейными. Модель Spice полевого транзистора КП303Е, предложенная в [29] имеет следующие параметры: .MODEL KT303Е NJF (VT0=-4.12 BETA=782.5u LAMBDA=9.13m RS=21 RD=21 CGS=4.2p CGD=3.8p FC=0.5 PB=1 IS=10f). Остальные параметры имеют значения, заданные по умолчанию (см. [29]). Вольтамперная характеристика нелинейного зависимого источника тока Iс [29] iC = β ( 1 + λU cи 0 ) ( u зи − U отс ) , 2

где β – коэффициент пропорциональности, λ – коэффициент модуляции длины канала, Uотс – напряжение отсечки; Gси =

dic 2 = β ( u зи − U отс ) λ , duси

следовательно irси = β ( uзи − Uотс ) λUси 0 , 2

где β – коэффициент пропорциональности, λ – коэффициент модуляции длины канала, Uотс – напряжение отсечки; 86


C зи =

Cзи 0 u 1 − зи , ψ

где Cзи0 – справочное значение барьерной емкости затвор-исток при Uзи0, ψ – контактная разность потенциалов p-n перехода затвора. Значение барьерной емкости перехода затвор-сток определяется выражением [29] C зс = C зс 0 ( U зс 0 ) . Объемные сопротивления стока rс и истока rи являются справочными данными. Характеристики нелинейных элементов также аппроксимируют полиномами n-ой степени. Таким образом, вольтамперная характеристика элемента Ic: icзи( u

) = 0.00562 + 0.00429зиu

2 + 0.000818 зиu

вольтамперная характеристика элемента rси: 2 ircи ( u зи ) = 0.245 ×10−3 + 0.187 ×10−3 u зи + 0.0357 ×10−3 u зи

а вольтамперная характеристика элемента Cзи: iCзи ( uзи ) =

(

d 2 3 2.656 ×10−12 uзи + 2.656 ×10−13 uзи + 5.313 ×10−14 uзи + dt

)

4 5 6 +1.328 ×10−14 u зи + 3.719 ×10−15 u зи + 1.116 ×10−15 u зи .

После замещения полевого транзистора его нелинейной моделью эквивалентная схема апериодического усилительного каскада примет вид, представленный на Рис. 6 .22.

87


Рис. 6.22 Нелинейная эквивалентная схема апериодического усилительного каскада на полевом транзисторе

Вспомогательная цепь с источником напряжения, управляемым напряжением E1 является цепью передачи управления для зависимого источника тока стока IC. Так как источник тока стока IC нелинейно зависит от напряжения затвористок, то происходит следующее: напряжение источника E1 равно напряжению на нелинейном элементе Cзи, нелинейный резистивный элемент Rзи1 имеет одинаковую с источником тока Iс вольтамперную характеристику, таким образом, через линейный резистор Rит1 течет ток, равный по величине току стока. Источник тока IС в этом случае является линейным источником тока, управляемый током, протекающим через линейный резистор Rит1. Вспомогательная цепь с источником напряжения, управляемым напряжением E2 также является цепью передачи управления для нелинейного резистивного элемента Rси. Так ток через резистивный элемент Rси нелинейно зависит от напряжения затвор-исток, то происходит следующее: напряжение источника E2 равно напряжению на нелинейном элементе Cзи, нелинейный резистивный элемент Rзи2 имеет одинаковую с Rси вольтамперную характеристику, таким образом, через линейный резистор Rит2 течет ток, равный по величине току через Rси. Нелинейный резистивный элемент Rси в данном случае заменен линейным источником тока, управляемый током, протекающим через линейный резистор Rит2. Rг = 200 Ом (внутреннее сопротивление источника сигнала), rи = rс = 21 Ом, Rс = 1.5 кОм, Rн = 1.5 кОм C1 = С2 = 0.1 мкФ, Cзс = 1.5 пФ, Rит1 = Rит2 = 10-3 Ом.

88


Для определения рабочего диапазона частот проведем линеаризацию эквивалентной схемы апериодического усилительного каскада, после которой получим АЧХ сквозного коэффициента усиления. Процесс линеаризации заключается в замещении всех нелинейных элементов их линейными частями. Таким образом, после данного преобразования, проведенного с нелинейной эквивалентной схемой, представленной на Рис. 6 . 22, получим линеаризованную эквивалентную схему, представленную на Рис. 6 .23. Цепь RиСи влияет на форму АЧХ в области нижних частот, и ее нельзя исключать из эквивалентной схемы.

Рис. 6.23 Линеаризованная эквивалентная схема апериодического усилительного каскада на полевом транзисторе

Здесь Rзи1 = 200 Ом, Rзи2 = 5.1 кОм, Сзи = 2.5 пФ. АЧХ апериодического усилительного каскада на полевом транзисторе представлена на Рис. 6 .24.

89


Рис. 6.24 АЧХ сквозного коэффициента усиления апериодического усилительного каскада на полевом транзисторе

6.3. Нагруженный фильтр нижних частот Фильтры различного рода представляют особый интерес при анализе их частотных характеристик. Рассмотрим Г-образный ФНЧ четвертого порядка, нагруженный на активное сопротивление R1 = 600 Ом, принципиальная схема которого приведена на Рис. 6 .25.

Рис. 6.25 Г-образный ФНЧ четвертого порядка

V1 = 1 В, L1 = L2 = 0.25 мкГн, C1 = C2 = 1 мкФ, R1 = 600 Ом. Схема не содержит нелинейных элементов и источников сигнала сложной формы, поэтому модели компонентов не используются, все элементы определяются своими параметрами. Текстовое описание схемы приведено ниже: V1 1 2 DC 1 L1 2 3 0.25u C1 3 1 1u 90


L2 3 4 0.25u C2 4 1 1u R1 4 1 600 Данная схема линейна, поэтому можно провести анализ АЧХ без дополнительных преобразований.

Рис. 6.26 АЧХ фильтра нижних частот

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

Рис. 6.27 Схема ФНЧ четвертого порядка при анализе по постоянному току

Анализ по постоянному току дает следующие результаты: U(C1) = 1.0000E+00 В U(C2) = 1.0000E+00 В I(L1) = 1.6666E-03 А I(L2) = 1.6666E-03 А I(R3) = 1.6666E-03 А

91


Заключение 1. Проведен анализ широко распространенных систем схемотехнического моделирования радиотехнических устройств и методов расчета. Показано, что метод переменных состояния представляет большой интерес при проведении различных видов анализа, в том числе анализа устойчивости и анализа нелинейных эффектов. 2. Рассмотрены различные технологии компьютерного программирования, а также приведен список полезных для разработки технического ПО библиотек функций. 3. Рассмотрена структура современных систем схемотехнического моделирования, структура математической модели в методе переменных состояния и основные методы анализа нелинейных цепей, в том числе анализ по постоянному току. 4. Разработаны алгоритмы всех составляющих системы схемотехнического моделирования радиотехнических устройств на основе метода переменных состояния. 5. Создана программная реализация модулей системы схемотехнического моделирования радиотехнических устройств методом переменных состояния на объектно-ориентированном языке высокого уровня C++ с использованием рассмотренных библиотек классов. 6. Проведен анализ различных схем в разработанной системе схемотехнического моделирования. Результаты анализа показали работоспособность системы и возможность ее использования для моделирования аппаратуры радиосвязи, радиовещания и телевидения. Также приведенное сравнение работы программы, включающей в себя модуль управления числами произвольной разрядности, и программы использующей стандартные числовые типы показало что первый дает необходимую точность результатов, что позволяет говорить о возможности использования метода переменных состояния для анализа любых радиотехнических систем без предварительной обработки РТЦ.

92


Список литературы 1.

Калабеков Б.А., Лапидус В.Ю., Малафеев В.М. Методы автоматизированного расчета электронных схем в технике связи. – М.: «Радио и связь», 1990.

2.

Кубицкий А.А., Захаров А.М. Методика вычисления нелинейных передаточных функций. Сборник статей – М.: МТУСИ,2004 г. С. 129 – 132.

3.

Кубицкий А.А., Захаров А.М. Исследование нелинейных устройств с помощью ряда Вольтерры. РАДИОТЕХНИКА, ЭЛЕКТРОНИКА и ЭНЕРГЕТИКА. Девятая Международная научно-техническая конференция студентов и аспирантов. Тезисы докладов. – М.: МЭИ, 2003.

4.

Кубицкий А.А., Захаров А.М. Исследование нелинейных устройств с помощью ряда Вольтерры. Тезисы докладов научно-технической конференции профессорско-преподавательского, научного и инженернотехнического состава. – М., МТУСИ, 2003.

5.

Кубицкий А.А., Захаров А.М. Методика вычисления коэффициента гармоник с использованием нелинейных передаточных функций./Радиотехника. – 2006. №2, С.42-48

6.

Долин Г.А., Захаров А.М. Моделирование аналоговых радиотехнических устройств методами узловых потенциалов и переменных состояния. – М.: ЦНТИ "Информсвязь", от 22.05 №2188 св. 2001.

7.

Долин Г. А., Захаров А. М. Оценка устойчивости схем радиотехнических устройств методом переменных состояния. РАДИОТЕХНИКА, ЭЛЕКТРОНИКА и ЭНЕРГЕТИКА. Десятая Международная научнотехническая конференция студентов и аспирантов. Тезисы докладов. – М.: МЭИ, 2004.

8.

Долин Г.А., Захаров А.М. Анализ радиотехнических устройств методом переменных состояния. Тезисы докладов научно-технической конференции профессорско-преподавательского, научного и инженерно-технического состава. – М., МТУСИ, 2001.

9.

Вольтерра В. Теория функционалов, интегральных интегродифференциальных уравнений. – М.: Наука, 1982. – 304 с.

и

10. Автоматизированное проектирование цифровых устройств // Под ред. Бодулина С.С. – М.: «Радио и связь», 1981. 11. Автоматизация проектирования радиоэлектронных средств: Учеб. Пособие для вузов/ О. В. Алексеев, А. А. Головков, И. Ю. Пивоваров и др.; Под ред. О. В. Алексеева. – М.: Высшая школа, 2000. — 479 с. 12. Берсекерский В.А., Попов Е.П. регулирования. – М.: «Наука», 1966.

Теория

систем

автоматического

13. Борисов Ю.П., Цветнов В.В. Математическое моделирование радиотехнических систем и устройств. – М.: «Радио и связь» ,1985. 93


14. Бурин Л.И., Мельников Л.Я., Топуриа В.З., Шелковников Б.Н. Проектирование приемно-усилительных устройств с применением ЭВМ. – М.: «Радио и связь», 1981. 15. Влах И., Сингхал К. Машинные методы анализа и проектирования электронных схем. - М.: «Радио и связь», 1988 16. Влейминк И., Коутс Р. Интерфейс “человек-компьютер”. – М.: «Мир», 1990. 17. Головин О.В. Радиоприемные устройства. – М.: «Высшая школа», 1987. 18. Деньбровенко Б.Н., Малика А.С. Автоматизация электронных устройств. – М.: «Высшая школа», 1980.

конструирования

19. Дьяконов В.П. От моделирования схем к их сквозному проектированию! // Монитор-Аспект. – 1994, – № 1. 20. Ильин В.Н. Основы автоматизации схемотехнического проектирования. – М.: «Энергия», 1979. — 392 с. 21. Корн Г., Корн Т. Справочник по математике. // Пер с англ. – М.: «Наука», 1978 22. Кофлин Р., Дрискол Ф. Операционные усилители и линейные интегральные микросхемы. // Пер. с англ. – М.: «Мир», 1979. 23. Нерретер В. Расчет электрических цепей на персональной ЭВМ. – М.: «Энергоатомиздат», 1991. 24. Орлов М.А. Актуальные направления развития САПР изделий электронной и вычислительной техники // Вопр. Радиоэлектроники. Сер. ЭВТ. – 1991. – №15. – с 61-66. 25. Проектирование усилительных устройств. // Под ред. Терпугова Н. В. – М.: «Высшая школа», 1982. 26. Разевиг В.Д. Пакет программ моделирования цифровых устройств DDL. // Монитор - Аспект. – 1994. №1. C. 69 - 73. 27. Разевиг В.Д., Блохин С.М. Система P-CAD 7.0. – М.: МП “Русь-90”. 1995. 28. Разевиг В.Д., Констандиниди В.К. Система проектирования печатных плат FLY.// Мир - ПК, N 9, 1994, C. 52 - 57. 29. Разевиг В.Д. Применение программ P-CAD и PSpice для схемотехнического моделирования на ПЭВМ. – М.: «Радио и связь», 1992. 30. Разевиг В.Д. Многоликий SPICE.// Монитор, 4, 1995. 31. Разевиг В.Д. Моделирование аналоговых электронных устройств на персональных ЭВМ. – М.: Изд-во МЭИ, 1993. 32. Разевиг В.Д. Программа моделирования на ПЭВМ аналоговых электронных устройств Micro-CAP V. – М.: Изд-во МЭИ, 1994. 33. Разевиг В.Д. Применение программ P-CAD и PSpice для схемотехнического моделирования на ПЭВМ: В 4 выпусках. – М.: «Радио и связь», 1992. 94


34. Селютин В.А. Машинное конструирование электронных устройств. – М.: «Сов. радио», 1977. 35. Справочник. Системы автоматизированного радиоэлектронике. - М.: «Радио и связь», 1986.

проектирования

в

36. Чуа Л.О., Пен-Мин Лин. Машинный анализ электронных схем. Алгоритмы и вычислительные методы. – М.: «Энергия», 1980. – 640 с. 37. Страуструп Б. Язык программирования C++ Специальное издание. – М.: «Невский диалект», 2008. – 1099 с. 38. Плаугер, Ли, Массер, Степанов. STL - стандартная библиотека шаблонов C++. – Спб.: «BHV-СПб», 2004. – 656 с. 39. Стефенс Д.Р. С++. Сборник рецептов. – М.: «Кудиц-пресс», 2007. – 624 с. 40. Бланшет Ж., Саммерфилд М. Qt 4. Программирование GUI на C++. – М.: «Кудиц-пресс», 2008. – 736 с.

95


Приложение Интерфейсы разработанных программных модулей 1. Модуль разбора текстового представления схемы #ifndef RTSIM_SPICEPARSER_H #define RTSIM_SPICEPARSER_H #include "types.h" #include "stltypes.hpp" #include <iostream> class CSpiceParser { public: CSpiceParser(std::istream &is); ~CSpiceParser(); pByteMatrix makeStructure(); pElemMatrix makeElements(); pSourceMatrix makeSources(); private: std::istream *_is; }; #endif // RTSIM_SPICEPARSER_H

2. Модуль формирования матриц математической модели нелинейной РТЦ #ifndef RTSIM_SHEMEMODEL_H #define RTSIM_SHEMEMODEL_H #include "types.h" #include "stltypes.hpp" class CShemeModel {

96


public: CShemeModel(pByteMatrix structure, pElemMatrix elems, pSourceMatrix sources); virtual CShemeModel(); pDoubleMatrix makeSection(); pDoubleMatrix takeSection(); pDoubleMatrix makeCurrents(); pDoubleMatrix makeState(); pDoubleMatrix makeNonLinear(); pDoubleMatrix makeOutput(); private: pByteMatrix _structure; pElemMatix _elems; pSourceMatrix _sources; }; #endif // RTSIM_SHEMEMODEL_H

3. Модуль анализа РТЦ по постоянному току #ifndef RTSIM_DCANALYZES_H #define RTSIM_DCANALYZES_H #include "types.h" #include "stltypes.hpp" class CDCAnalyzes { public: CDCAnalyzes(pDoubleMatrix sections, pDoubleMatrix pDoubleMatrix state, pDoubleMatrix nonlinear);

currents,

virtual CDCAnalyzes(); pDoubleMatrix makeSources(); pDoubleVector makeCalc(); pDoubleVector makeBroiden(); double mainFunction(); pDoubleVector makeDerivative();

97


double mainNorma(); private: pDoubleMatrix _sections; pDoubleMatrix _currents; pDoubleMatrix _state; pDoubleMatrix _nonlinear; }; #endif // RTSIM_DCANALYZES_H

4. Модуль расчета частотных характеристик #ifndef RTSIM_FREQRESPONCE_H #define RTSIM_FREQRESPONCE_H #include "types.h" #include "stltypes.hpp" class CFreqResponce { public: CFreqResponce(pDoubleMatrix sections, pDoubleMatrix currents, pDoubleMatrix state, pDoubleMatrix output); virtual CFreqResponce(); void makePolynomes(); void makeParts(); double makeMagnitude(const double freq); double makePhase(const double freq); private: double p1(const double freq); double p2(const double freq); double q1(const double freq); double q2(const double freq); private: pDoubleMatrix _sections; pDoubleMatrix _currents;

98


pDoubleMatrix _state; pDoubleMatrix _output; } #endif // RTSIM_FREQRESPONCE_H

5. Главное окно программы #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtGui/QMainWindow> #include <QMap> namespace Ui { class MainWindowClass; } class shemeForm; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow();

private slots: void open(); void save(); void dc(); void lenearize(); void transfere(); private: Ui::MainWindowClass *ui; shemeForm *sf;

99


QMap<QString, QAction *> mainActions; }; #endif // MAINWINDOW_H

6. Форма задания на анализ #ifndef BODEPARAMS_H #define BODEPARAMS_H #include <QtGui/QWidget> namespace Ui { class bodeParams; } class bodeParams : public QWidget { Q_OBJECT Q_DISABLE_COPY(bodeParams) public: explicit bodeParams(QWidget *parent = 0); virtual ~bodeParams(); protected: virtual void changeEvent(QEvent *e); private: Ui::bodeParams *m_ui; private slots: void on_start_btn_released(); }; #endif // BODEPARAMS_H

7. Модуль построения графиков #ifndef PLOTFORM_H #define PLOTFORM_H

100


#include "cfreqresponse.h" #include <qwt_plot.h> #include <qwt_data.h> class plotForm; class plotForm : public QwtPlot { Q_OBJECT public: explicit plotForm(QWidget *parent = 0); virtual ~plotForm(); private: double plot(double val); CFreqResponse resp; }; #endif // PLOTFORM_H

101


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.