회로 시뮬레이터는 실제로 어떻게 작동합니까?


31

나는 최근 회로 시뮬레이터 인 LiveWire 를 가지고 놀 수있는 기회를 가졌으며 각 구성 요소의 전압과 각 트랙을 통과하는 전류가 정확히 어떻게 계산되는지 궁금해하기 시작했다.

지금까지 기본 회로 분석 기술 (메시 분석 및 노드 분석 등)에 대해서만 배웠으며 회로 시뮬레이터 내에서 '전부 적합'방식으로 구현하기에 충분히 일반적인지 확실하지 않습니다.

프로그래머로서 이것은 흥미 로웠으며이 같은 회로 시뮬레이터를 구축 할 때 어떤 기술이 일반적으로 사용되는지 알고 싶습니다.

이것이 여기에 속하지 않으면 사과드립니다. 여기와 StackOverflow 사이의 선택이었으며 소프트웨어 개발 지향 질문이지만이 사이트에 대한 질문이 더 적합하고 사용자 기반이라고 생각했습니다.


주요 트릭은 많은 시간 조각입니다. 따라서 시간의 복잡한 함수는 작은 시간 조각으로 많은 수의 미분 방정식을 실행하여 처리됩니다. 불쾌한 복잡성은 미분 방정식으로 표현 될 수있는 경우 일반적으로 크게 감소하며, 이는 디지털 시뮬레이션에서 차이 방정식이됩니다.
Olin Lathrop

답변:


14

Falstad 시뮬레이터의 코드를 자세히 살펴 보았습니다. 저항, 스위치 및 전압 소스와 같은 선형 구성 요소로만 구성되는 회로의 경우 (시뮬레이션을 위해 논리 게이트 출력과 같은 것은 접지 연결 전압 소스로 간주 됨) 시뮬레이터는 각 회로 노드, 전압 소스 (두 노드 연결)를 고려합니다. 또는 방정식의 수와 변수의 수가 항상 같도록 선형 방정식과 변수를 정의 할 때 와이어와 유사하게 연결합니다. 회로 노드의 경우 변수는 노드의 전압이며 방정식은 전류 소스에 의해 주입 된 총 전류와 동일하게 흐르는 총 전류를 계산합니다. 전압원 또는 전선 (전위차가 0 인 전압원으로 취급되는 전선)의 경우,

전류 소스 및 저항과 같은 것은 저항 또는 변수와 관련이 없습니다. 대신 전류 소스는 하나의 회로 노드에 필요한 총 전류를 증가시키고 (각 회로 노드에는 유입 및 유출되는 총 전류를 평가하는 방정식이 있음을 기억하십시오) 다른 하나에 대해서는 감소시킵니다. 저항기는 조금 까다 롭습니다. 각 종단점 방정식에 대해 저항기는 각 종단점의 노드 전압에 대한 항을 추가합니다.

예를 들어 노드 1과 2를 연결하는 100 옴 저항은 노드 1의 각 전압 증가가 노드 1로 흐르는 전류를 0.01 암페어만큼 줄이고 노드 2로 흐르는 전류를 같은 양으로 증가시킬 것이라고 말합니다. 마찬가지로, 노드 2의 각 전압 증가는 노드 1로 흐르는 전류를 0.01 암페어만큼 증가시키고 노드 2로 흐르는 전류는 같은 양만큼 감소시킵니다.

노드 1과 5를 연결하는 10 볼트 전원 공급 장치와 노드 1과 2, 2, 3, 2, 4, 3, 4를 연결하는 100 옴 저항이있는 회로를 고려하십시오. 노드 1에 접지 아이콘이 있다고 가정하십시오.

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

접지 전압과 10V 전원 (각각 방정식 / 가변 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 항목 배열로 표현 될 수 있습니다. 각 방정식은 행렬의 행으로 표시되며 각 행의 값은 각 변수의 계수를 나타냅니다. 각 방정식의 오른쪽은 별도의 배열에 저장됩니다. 방정식을 풀기 전에 각 노드에 흐르는 순 전류 (이 경우 0)와 전압 소스로 연결된 노드 쌍 간의 전압 차이를 알 수 있습니다. 방정식을 해결하면 각 노드의 전압과 각 전압원을 통해 흐르는 전류가 산출됩니다.

회로에 커패시터가 포함 된 경우 각 커패시터는 저값 저항과 직렬로 연결된 전압 소스로 간주됩니다. 각 시뮬레이션 단계 후, 전압 소스는 흐르는 전류의 양에 따라 조정됩니다. 인덕터는 하나의 전류를 공급하고 다른 하나를 제거하는 고 저항 저항기로 간주됩니다 (저항 양단의 전압에 따라 조정되는 전류량). 커패시터와 인덕터의 경우 저항 값은 시뮬레이션 단계로 표시되는 시간에 의해 제어됩니다.

트랜지스터와 같은 더 복잡한 회로 요소는 전압 소스, 전류 소스 및 저항의 조합으로 간주됩니다. 시뮬레이션 시간 단계마다 모든 것을 한 번 처리 할 수있는 더 간단한 회로 요소와 달리, 트랜지스터와 같은 요소는보고있는 전압과 전류를 기반으로 유효 저항 등을 계산하고 모든 결과 방정식을 평가 한 후 저항을 다시 평가합니다. 새로운 전압 및 전류, 유효 저항이 트랜시버가보고있는 전압 및 전류와 같아야하는 평형에 도달하기 위해 방정식 등을 재평가합니다.

Falstad 시뮬레이터는 전체적으로 "선형"요소로 구성된 중간 크기 회로에 대해 매우 빠릅니다. 방정식 시스템을 반복적으로 풀기위한 시간은 변하는 유일한 것이 오른쪽 계수라면 매우 합리적입니다. 시스템이 방정식을 "리팩토링"해야하므로 왼쪽이 변하면 (예 : 트랜지스터의 유효 저항이 올라가거나 내려가므로) 시간이 훨씬 느려집니다. 시뮬레이션 단계마다 여러 번 방정식을 리팩토링해야하는 경우 (트랜지스터에 필요할 수 있음) 아직 속도가 느려집니다.

모든 것을 위해 하나의 큰 매트릭스를 사용하는 것은 큰 시뮬레이션에 대한 좋은 접근 방식이 아닙니다. 매트릭스가 상당히 희소하더라도 노드 수의 제곱에 전압 소스를 더한 공간을 차지합니다. 각 시뮬레이션 단계에서 행렬을 해결하는 데 필요한 시간은 리팩토링이 필요하지 않은 경우 행렬 크기의 제곱 또는 리팩토링이 필요한 경우 행렬 크기의 큐브에 비례합니다. 그럼에도 불구하고이 접근법은 회로와 선형 방정식 시스템 간의 관계를 보여줄 때 특정 우아함을 가지고 있습니다.


대부분의 SPICE 유형 시뮬레이터는이 유형의 알고리즘도 사용합니다. 여기에 양념 개요입니다 ecircuitcenter.com/SpiceTopics/Overview/Overview.htm은
user6972

1
참고로 KLU는 회로 시뮬레이터에 사용되는 일반적인 알고리즘입니다. KLU는 Clark Kent LU의 약자입니다. Gilbert-Peierls의 수퍼 노달 알고리즘 인 Superbert의 알고리즘 인 Gilbert-Peierls의 알고리즘을 기반으로하기 때문입니다. KLU는 하이브리드 순서 메커니즘과 우아한 인수 분해 및 해석 알고리즘을 사용하는 희소 한 고성능 선형 솔버입니다.
user6972

예를 들어 BSIM 또는 EKV와 같은 몇 가지 트랜지스터 모델이 있습니다. 기본적으로 이러한 모델은 단일 트랜지스터의 작동 및 전기적 특성에 미치는 영향과 관련하여 모든 물리학을 고려합니다. 전압원, 전류원 및 저항의 조합으로 표현하는 것보다 훨씬 더 많은 것이 있습니다. 다른 모델을 선택하려면 LEVEL 매개 변수를 사용할 수 있습니다. Jacob Baker 의이 튜토리얼 은 좋은 시작입니다. 도움이되기를 바랍니다.

11

LiveWire는 다양한 수준의 기능을 갖춘 많은 회로 시뮬레이터 중 하나입니다.

예를 들어, Falstad Circuit Simulator 는 LiveWire와 비슷한 기능 수준 인 것 같습니다. 소스 코드는 해당 링크에서 제공됩니다. 좋은 시작이되어야합니다.

보다 정교한 회로 시뮬레이션을 위해 많은 도구 가 UC Berkley 의 근본을 SPICE로 추적합니다 . SPICE 소스 코드는 요청시 BSD 라이센스에 따라 UCB에 제공됩니다.

제조업체 별 SPICE 에디션은 일반적으로 자체 제품의 매우 상세한 반도체 시뮬레이션 모델을 시뮬레이터에 통합합니다. 예를 들어 Linear Technologies의 LTSpice IV 또는 Texas Instruments의 TINA-TI 입니다. 그 아래는 보통 SPICE입니다.

SPICE에 대한 WikiPedia 페이지에서 인용 :

SPICE와 파생물이 가장 두드러지는 회로 시뮬레이션 프로그램은 회로 요소 (트랜지스터, 저항, 커패시터 등)와 그 연결을 설명하는 텍스트 넷리스트를 가져 와서이 설명을 풀어야 할 방정식으로 변환합니다. 생성 된 일반 방정식은 암시 적분법, 뉴턴 법 및 희소 행렬 기법을 사용하여 해결되는 비선형 미분 대수 방정식입니다.

더욱 정교한 수준에서 Proteus Virtual System Modeling 과 같은 여러 상용 제품 에서 Proteus Design Suite의 일부인 은 혼합 모드 SPICE 회로 시뮬레이션을위한 독점적 향상 기능을 사용합니다. 이러한 도구는 아날로그 회로 동작과 디지털 마이크로 컨트롤러 코드를 모두 시뮬레이션 할 수 있습니다. 그들 사이의 상호 작용이 완전히 모델링되었습니다.

훨씬 제한적이고 제한적인 수준에서이 사이트에 통합 된 Circuit Lab 도구와 같은 일부 회로도 편집기는 작은 범위의 시뮬레이션 기능을 제공합니다. 실용적이지 않은 전자 디자인에 유용한 것은 아니지만, 기능과 구현을 연구하면 소프트웨어 개발자에게 사용자에게 잘 작동하는 것과 그렇지 않은 것에 대한 통찰력을 제공 할 수 있습니다.


5

SPICE와 유사한 회로 시뮬레이터로 수행되는 세 가지 주요 분석이 있습니다.

  • DC 작동 점
  • AC 분석
  • 과도 분석

DC 동작 점 (DC 소스로부터 선형 저항을 형성하고, 소스 제어 선형) 선형 회로에 대한 분석은 수정 된 노드 분석 (MNA)을 사용하여 수행된다. 메시 분석도 사용할 수 있지만 절점 분석에 대한 방정식을 설정하는 것은 매우 쉽습니다.

비선형 회로 (트랜지스터와 같은 장치를 포함하며 비선형 제어 소스로 모델링 될 수 있음)의 경우 몇 가지 추가 트릭을 사용해야합니다. 개념적으로 간단한 방법은 여러 방정식 에 Newton 's Method 의 확장을 사용하는 것 입니다.

뉴턴의 방법은 솔루션을 추측 한 다음 추측 된 솔루션에 대해서만 "정확한"회로의 선형 모델을 만드는 것입니다. 선형화 회로에 대한 솔루션은 솔루션에 대한 새로운 추측으로 사용되며 비선형 회로에 대한 (희망적으로) 올바른 솔루션에서 연속적인 반복이 "수렴"될 때까지 프로세스가 반복됩니다. 현실에서는 더 복잡한 비선형 솔버를 사용하여 수렴 실패로 인한 오류를 줄이고 더 신속하게 솔루션을 수행 할 수 있습니다.

AC 분석은 먼저 동작 점을 찾기 위해 DC 분석을 수행하여 이루어집니다. 그런 다음 작동 지점 주변의 작은 섭동 효과를 연구합니다. "작은"은 정의상 비선형 효과가 중요하지 않을 정도로 작다는 것을 의미합니다. 즉, 회로 요소가 작동 지점에 따라 선형 등가 요소로 변환됩니다. 그런 다음 MNA를 사용하여 (에너지 저장 요소의 임피던스를 나타내는 복소수로) 회로의 AC 소스로 인한 섭동의 영향을 해결할 수 있습니다.

과도 분석 올린 댓글 말한다처럼 회로 변수가 시간에 아주 작은 단계를 걸쳐 진화하는 방법을 고려하여, 이루어집니다. 각각의 시간 단계에서 회로는 동작 점을 중심으로 선형화되므로 MNA를 사용하여 방정식을 설정할 수 있습니다. 시간이 지남에 따라 동작을 해결하는 간단한 방법은 Euler 's Method 입니다. 그러나 실제로는 더 복잡한 방법을 사용하여 더 작은 오류로 더 큰 타임 스텝을 사용할 수 있습니다.

이 방법의 공통 스레드는 회로 동작에 대한 선형 근사를 만들고 비선형 회로 동작에 대한 솔루션을 찾을 때까지 MNA를 사용하여이를 해결하는 것입니다.

이 세 가지 분석은 1970 년대 이후 SPICE와 유사한 시뮬레이터에 의해 수행 된 주요 분석입니다. 최신 시뮬레이터는 고조파 균형 (비선형 요소의 믹싱 효과를 수용하기 위해 AC 어닐 레이션의 확장) 또는 전송선 효과를 시뮬레이션하는 전자기 시뮬레이션과 같은 추가 기능을 추가합니다. 그러나 SPICE와 유사한 시뮬레이터를 사용할 때는 DC, AC 및 과도 시뮬레이션을 이해해야합니다.


: 나는 이전의 대답에 MNA 방정식을 설정하는 방법에 대해 이야기 electronics.stackexchange.com/questions/19198/...
광자

2
또한 디지털 회로 시뮬레이션은 완전히 다른 방법을 사용한다고 덧붙여 야합니다. 그것은 아날로그-디지털 공동 시뮬레이션을 그 자체의 문제로 만듭니다.
광자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.