Як насправді працюють симулятори ланцюга?


31

Нещодавно у мене була можливість пограти з LiveWire , який є симулятором ланцюга, і мені стало цікаво, як саме вони обчислюють напруги для кожного компонента та струм, що проходить через кожну доріжку дроту.

Досі мене навчали лише базовим навичкам аналізу ланцюгів (наприклад, Меш-аналіз та Нодальний аналіз), і я не зовсім впевнений, що вони будуть достатньо загальними для того, щоб реалізовуватись «підходить для всіх» у симуляторі схем.

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

Вибачте, якщо це тут не належить, це був вибір між тут та StackOverflow, і я відчув, що хоча це питання, орієнтоване на розробку програмного забезпечення, питання більше стосується цього сайту та його бази даних.


Основна хитрість - це багато невеликих шматочків часу. Таким чином, складні функції часу обробляються виконанням безлічі різницьких рівнянь невеликими часовими відрізками. Смутна складність зазвичай значно знижується, якщо це можна виразити як диференціальні рівняння, які стають різницевими рівняннями в цифровому моделюванні.
Олін Латроп

Відповіді:


14

Я детально вивчив код симулятора Falstad. Для схем, які складаються лише з лінійних компонентів, таких як резистори, вимикачі та джерела напруги (такі речі, як виходи логічного затвора, для цілей моделювання вважаються джерелами напруги, підключеними до землі), тренажер розглядає кожен вузол ланцюга, джерело напруги (з'єднує два вузли) або провід (аналогічно) як лінійне рівняння та змінну, таким чином, що кількість рівнянь та кількість змінних завжди рівні. Для вузла ланцюга змінною є напруга вузла, і рівняння обчислює загальний струм, що протікає через нього, рівний загальному струму, що вводиться будь-якими джерелами струму. Для джерела напруги або дроту (провід обробляється як джерело напруги, де різниця потенціалів дорівнює нулю),

Такі речі, як джерела струму та резистори, не пов'язані з резисторами чи змінними. Натомість джерела струму збільшують загальний струм, необхідний для одного вузла ланцюга (пам’ятайте, що кожен вузол схеми має рівняння, яке оцінює загальний струм, що протікає і виходить), і зменшує його для іншого. Резистори трохи складніші: для кожного рівняння кінцевої точки резистор додає терміни для напруги вузла кожної кінцевої точки.

Наприклад, 100-омний резистор, що з'єднує вузли 1 і 2, скаже, що кожне збільшення вольта на вузолі 1 зменшить струм, що надходить у вузол 1, на 0,01 ампер і збільшить струм, що надходить у вузол 2, на аналогічну кількість. Аналогічно, кожне збільшення вольта на вузлі 2 збільшило б струм, що надходить у вузол 1, на 0,01 ампер і зменшив би струм, що надходить у вузол 2, на аналогічну кількість.

Розглянемо схему з 10 вольт живлення, що з'єднує вузли 1 і 5, і резисторами 100 Ом, що з'єднують вузол 1 і 2, 2 і 3, 2 і 4, 3 і 4. Далі припустимо, що на вузлі 1. є значок заземлення.

neg ---+-1---R100---2---R100---3---100---4---pos
      gnd           |                    |
                    +---------100--------+

Були б два "джерела напруги": заземлення та 10-вольтове джерело (які розглядаються як рівняння / змінні 5 та 6 відповідно). Таким чином, рівняння будуть:

-X1*0.01                             +X5 -X6 = 0  Node 1
+X1*0.01 -X2*0.01          +X4*0.01          = 0  Node 2
         +X2*0.01 -X3*0.01 +X4*0.01          = 0  Node 3
         +X2*0.01          -X4*0.01      +X6 = 0  Node 4
-X1*1                                        = 0  Volts 5 (voltage between 1 and gnd)
-X1*1                      +X4*1             = 10 Volts 6 (voltage between 1 and 4)

Ця система рівнянь може бути представлена ​​у вигляді матриці NxN плюс масив N елементів. Кожне рівняння представлене рядком у матриці зі значеннями в кожному рядку, що представляють коефіцієнти кожної змінної. Права частина кожного рівняння зберігається в окремому масиві. Перш ніж розв’язувати рівняння, можна буде знати чистий струм, що надходить у кожен вузол (нуль у цьому випадку), та різницю напруги між парами вузлів, з'єднаних джерелами напруги. Розв’язуючи рівняння, буде виведена напруга на кожному вузлі та струм, що протікає через кожне джерело напруги.

Якщо схема містить конденсатори, кожен з них буде розглядатися як джерело напруги послідовно з низькозначним резистором; після кожного етапу моделювання джерело напруги буде коригуватися відповідно до кількості струму, що протікав через нього. Індуктори вважатимуться резисторами високої величини, які подають струм в одне, а виводять його в інше (величина струму, що регулюється відповідно до напруги на опір). Як для конденсаторів, так і для індукторів величина опору буде контролюватися протягом часу, представленого кроком моделювання.

Більш складні елементи схеми, як транзистори, розглядаються як комбінації джерел напруги, джерел струму та резисторів. На відміну від більш простих елементів схеми, які дозволяють все обробляти один раз за крок часу моделювання, такі елементи, як транзистори, обчислюють свої ефективні опори тощо, виходячи з напруг і струмів, які вони бачать, оцінюють усі результуючі рівняння та переоцінюють їх опір на основі нові напруги та струми, переоцініть рівняння тощо, прагнучи досягти рівноваги, де їх ефективний опір такий, який повинен бути для напруги та струму, який бачить транзитор.

Симулятор Falstad може бути пристойно швидким для схем середнього розміру, які повністю складаються з "лінійних" елементів. Час багаторазового вирішення системи рівнянь є досить розумним, якщо єдине, що змінюється, - це правобічні коефіцієнти. Час стає значно повільнішим, якщо змінюється лівий бік (наприклад, через те, що ефективний опір транзистора йде вгору або вниз), оскільки система повинна "рефакторировать" рівняння. Якщо зробити рефактор рівнянь кілька разів за крок моделювання (можливо, це буде потрібно з транзисторами), все ще стає повільнішим.

Використання однієї великої матриці для всього - не вдалий підхід для великих моделювання; незважаючи на те, що матриця буде досить рідкою, вона займе простір, пропорційний квадрату кількості вузлів плюс джерел напруги. Час, необхідний для вирішення матриці на кожному етапі моделювання, буде пропорційним квадрату розміру матриці, якщо рефакторинг не потрібен, або кубу розміру матриці, якщо потрібен рефакторинг. Тим не менш, підхід має певну елегантність, коли справа стосується показу взаємозв'язку між ланцюгом і системою лінійних рівнянь.


Більшість тренажерів типу SPICE використовують і цей тип алгоритму. Ось огляд спецій ecircuitcenter.com/SpiceTopics/Overview/Overview.htm
user6972

1
FYI - KLU - це загальний алгоритм, який використовується в тренажерах схеми. KLU розшифровується як Clark Kent LU, оскільки в його основі лежить алгоритм Гілберта-П'єрлса, ненадпороговий алгоритм, який є попередником SuperLU, супернодальним алгоритмом. KLU - це рідкісний лінійний вирішувач високої продуктивності, який використовує гібридні механізми упорядкування та елегантну факторизацію та розв’язування алгоритмів.
user6972

Важливо зауважити, що існує кілька моделей транзисторів, наприклад, BSIM або EKV. В основному ці моделі беруть до уваги всю фізику, з точки зору, що бере участь в роботі одного транзистора та впливає на його електричні характеристики. У ньому набагато більше, ніж просто представлення у вигляді комбінацій джерел напруги, джерел струму та резисторів. Якщо ви хочете вибрати іншу модель, ви можете скористатися параметром LEVEL. Цей підручник з Джейкоба Бейкера - це вдалий початок. сподіваюся, що це допомагає.

11

LiveWire - один із багатьох симуляторів ланцюгів, різного рівня можливостей.

Наприклад, Faltad Circuit Simulator схоже на рівень можливостей, як LiveWire - і вихідний код пропонується за цим посиланням. Це має бути гарним початком.

Для більш складного моделювання схем багато інструментів відслідковують свої корені до СПІСУ від UC Berkley . Вихідний код SPICE доступний на запит UCB за ліцензією BSD.

Спеціальні видання SPICE, як правило, інтегрують в свої тренажери дуже детальні напівпровідникові імітаційні моделі власних продуктів. Наприклад, LTSpice IV від Linear Technologies або TINA-TI від Texas Instruments. Внизу, як правило, все СПІС.

Цитуючи зі сторінки WikiPedia про SPICE:

Програми моделювання мікросхем, серед яких SPICE та похідні є найбільш помітними, беруть текстовий неттоп, що описує елементи ланцюга (транзистори, резистори, конденсатори тощо) та їх з'єднання, і переводить цей опис у рівняння, які слід вирішити. Вироблені загальні рівняння - це нелінійні диференціальні алгебраїчні рівняння, які розв’язуються за допомогою неявних методів інтеграції, методу Ньютона та методів розрідженої матриці.

На ще більш високому рівні вишуканості кілька комерційних продуктів, таких як моделювання віртуальної системи Proteus , що входить до програми Proteus Design Suite, використовують власні удосконалення для моделювання схеми SPICE у змішаному режимі - ці інструменти можуть імітувати як поведінку аналогових схем, так і цифровий код мікроконтролера, при повному моделюванні взаємодій між ними.

На значно більш обмеженому та обмежувальному рівні деякі схематичні редактори, такі як інструмент Circuit Lab, інтегрований у цей сайт, надають невеликий спектр можливостей моделювання. Хоча це може бути не всім корисним у практичному нетривіальному електронному дизайні, вивчення їх можливостей та впровадження дасть розробнику програмного забезпечення деяке уявлення про те, що добре працює для користувачів, а що ні.


5

Існує три основні аналізи, які виконуються на SPICE-подібних тренажерах:

  • Робоча точка постійного струму
  • Аналіз змінного струму
  • Перехідний аналіз

Аналіз робочої точки постійного струму для лінійної ланцюга (формується з джерел постійного струму, лінійних резисторів та лінійних керованих джерел) проводиться за допомогою модифікованого вузлового аналізу (МНК). Аналіз сітки також може бути використаний, але дуже легко створити рівняння для вузлового аналізу.

Для нелінійних схем (які включають такі пристрої, як транзистори, які можуть бути модельовані по суті як нелінійні контрольовані джерела), слід використовувати деякі додаткові хитрощі. Концептуально простий спосіб - використовувати розширення методу Ньютона для кількох рівнянь.

Метод Ньютона передбачає відгадування рішення, а потім виготовлення лінійної моделі схеми, яка є точною лише "біля" здогаданого рішення. Розв’язання лінійної схеми використовується як нова здогадка про рішення, і процес повторюється до тих пір, поки послідовні ітерації не "сходяться" на (сподіваюся) правильному рішенні для нелінійної схеми. У реальному світі використовуються складніші нелінійні розв'язувачі, які дозволяють зробити рішення швидше та з меншою кількістю помилок через збій конвергенції.

Аналіз змінного струму проводиться, попередньо роблячи аналіз постійного струму, щоб знайти робочу точку. Потім ви вивчаєте вплив невеликих збурень навколо робочої точки. "Малий" означає, за визначенням, досить малий, що нелінійні ефекти не важливі. Це означає, що елементи схеми перетворюються на лінійні еквівалентні елементи залежно від робочої точки. Тоді МНК можна використовувати (зі складними числами, що представляють опір елементів, що зберігають енергію) для вирішення ефекту збурень, викликаних джерелами змінного струму в ланцюзі.

Аналіз перехідних процесів робиться, як каже Олін в коментарях, розглядаючи , як змінні схеми розвиваються на дуже невеликих кроків у часі. Знову на кожному етапі ланцюг лінеаризується навколо своєї робочої точки, так що МНК можна використовувати для встановлення рівнянь. Простий метод вирішення поведінки у часі - метод Ейлера . Однак знову ж таки на практиці застосовуються більш складні методи, що дозволяють використовувати більші часові кроки з меншими помилками.

Ви можете бачити, що загальна нитка в цих методах робить лінійне наближення до поведінки ланцюга і вирішує це з MNA, поки не знайдете рішення нелінійної поведінки ланцюга.

Ці три аналізи були основними, зроблені на SPICE-подібних тренажерах з 1970-х років. Нові тренажери додають додаткові можливості, такі як гармонійний баланс (розширення анелізу змінного струму для розміщення ефектів змішування від нелінійних елементів) або електромагнітні імітації для імітації ефектів лінії передачі. Але постійне, змінне та перехідне моделювання - це перші три, які слід розуміти, використовуючи SPICE-подібний тренажер.


Я розповідав про те, як створити рівняння MNA у попередній відповіді: electronics.stackexchange.com/questions/19198/…
The Photon

2
Слід також додати, що моделювання цифрових схем використовують абсолютно різні методи; і це перетворює аналого-цифрове спільне моделювання у цілу власну проблему.
The Photon
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.