Làm thế nào để mô phỏng mạch thực sự làm việc?


31

Gần đây tôi có cơ hội chơi xung quanh với LiveWire , một trình giả lập mạch và bắt đầu tự hỏi làm thế nào họ tính toán chính xác các điện áp trên mỗi thành phần và dòng điện đi qua từng rãnh dây.

Cho đến nay tôi chỉ được dạy các kỹ năng phân tích mạch cơ bản (như phân tích lưới và phân tích nút) và tôi không hoàn toàn chắc chắn rằng chúng sẽ đủ chung chung để thực hiện theo cách 'phù hợp với tất cả' trong trình mô phỏng mạch.

Là một lập trình viên, điều này đã thu hút tôi và tôi rất muốn xem những kỹ thuật nào thường được sử dụng khi xây dựng các trình mô phỏng mạch như thế này.

Tôi xin lỗi nếu điều này không thuộc về nơi này, đó là sự lựa chọn giữa đây và StackOverflow và tôi cảm thấy rằng mặc dù đó là một câu hỏi định hướng phát triển phần mềm, câu hỏi này có thể áp dụng nhiều hơn cho trang web này và đó là cơ sở người dùng.


Thủ thuật chính là rất nhiều lát cắt thời gian nhỏ. Do đó, các hàm phức tạp của thời gian được xử lý thực hiện rất nhiều phương trình khác nhau với các lát thời gian nhỏ. Độ phức tạp khó chịu thường giảm đáng kể nếu nó có thể được biểu thị dưới dạng phương trình vi phân, trở thành phương trình sai khác trong mô phỏng kỹ thuật số.
Olin Lathrop

Câu trả lời:


14

Tôi đã kiểm tra mã của trình giả lập Falstad một cách chi tiết. Đối với các mạch chỉ bao gồm các thành phần tuyến tính như điện trở, công tắc và nguồn điện áp (những thứ như đầu ra cổng logic được coi là nguồn điện áp nối đất cho mục đích mô phỏng), trình mô phỏng liên quan đến từng nút mạch, nguồn điện áp (kết nối hai nút) hoặc dây (tương tự) như xác định một phương trình tuyến tính và một biến, sao cho số phương trình và số lượng biến luôn bằng nhau. Đối với một nút mạch, biến là điện áp của nút và phương trình tính tổng dòng điện chạy qua nó bằng tổng dòng điện được bơm bởi bất kỳ nguồn hiện tại nào. Đối với nguồn điện áp hoặc dây (dây được xử lý như nguồn điện áp trong đó chênh lệch tiềm năng bằng 0),

Những thứ như nguồn và điện trở hiện tại không liên quan đến điện trở hoặc biến. Thay vào đó, các nguồn hiện tại làm tăng tổng dòng điện cần thiết cho một nút mạch (hãy nhớ rằng mỗi nút mạch có một phương trình để đánh giá tổng dòng chảy vào và ra) và giảm nó cho nút kia. Các điện trở phức tạp hơn một chút: đối với mỗi phương trình của điểm cuối, điện trở thêm các thuật ngữ cho điện áp nút của mỗi điểm cuối.

Ví dụ, một điện trở 100 ohm kết nối các nút 1 và 2 sẽ nói rằng mỗi lần tăng volt trên nút 1 sẽ làm giảm dòng điện chạy vào nút 1 thêm 0,01 amps và tăng dòng điện vào nút 2 thêm một lượng tương tự. Tương tự như vậy, mỗi lần tăng volt trên nút 2 sẽ làm tăng dòng chảy vào nút 1 thêm 0,01 amps và giảm dòng chảy vào nút 2 một lượng tương tự.

Hãy xem xét một mạch có nguồn cung cấp 10 volt kết nối các nút 1 và 5, và các điện trở 100 ohm kết nối nút 1 và 2, 2 và 3, 2 và 4, và 3 và 4. Giả sử thêm rằng có một biểu tượng mặt đất trên nút 1. Do đó:

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

Sẽ có hai "nguồn điện áp": dây dẫn đất và nguồn 10 volt (được coi là phương trình / biến 5 và 6, tương ứng). Các phương trình do đó sẽ là:

-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)

Hệ phương trình này có thể được biểu diễn dưới dạng ma trận NxN cộng với mảng mục N. Mỗi phương trình được biểu diễn bằng một hàng trong ma trận, với các giá trị trên mỗi hàng biểu thị các hệ số của từng biến. Phía bên phải của mỗi phương trình được lưu trữ trong mảng riêng biệt. Trước khi giải các phương trình, người ta sẽ biết dòng điện ròng chảy vào từng nút (trong trường hợp này là 0) và chênh lệch điện áp giữa các cặp nút được kết nối bởi các nguồn điện áp. Việc giải các phương trình sẽ mang lại điện áp tại mỗi nút và dòng điện chạy qua từng nguồn điện áp.

Nếu mạch chứa tụ điện, mỗi trong số đó sẽ được coi là một nguồn điện áp nối tiếp với điện trở giá trị thấp; sau mỗi bước mô phỏng, nguồn điện áp sẽ được điều chỉnh theo lượng dòng điện chạy qua nó. Cuộn cảm sẽ được coi là điện trở có giá trị cao, cung cấp dòng điện vào một và đưa nó ra ngoài (dòng điện được điều chỉnh theo điện áp trên điện trở). Đối với cả tụ điện và cuộn cảm, giá trị của điện trở sẽ được kiểm soát bởi lượng thời gian được biểu thị bằng một bước mô phỏng.

Các phần tử mạch phức tạp hơn như bóng bán dẫn được coi là sự kết hợp của nguồn điện áp, nguồn hiện tại và điện trở. Không giống như các phần tử mạch đơn giản hơn cho phép mọi thứ được xử lý một lần trong bước thời gian mô phỏng, các phần tử như bóng bán dẫn tính toán điện trở hiệu dụng của chúng, v.v. dựa trên điện áp và dòng điện mà chúng nhìn thấy, đánh giá tất cả các phương trình kết quả và đánh giá lại điện trở của chúng dựa trên các điện áp và dòng điện mới, đánh giá lại các phương trình, v.v ... trong nỗ lực đạt đến trạng thái cân bằng trong đó điện trở hiệu dụng của chúng là như đối với điện áp và dòng điện mà transitor đang nhìn thấy.

Trình mô phỏng Falstad có thể nhanh chóng cho các mạch có kích thước vừa phải bao gồm các phần tử "tuyến tính". Thời gian để liên tục giải một hệ phương trình là khá hợp lý nếu điều duy nhất thay đổi là các hệ số bên phải. Thời gian trở nên chậm hơn nhiều nếu phía bên trái thay đổi (ví dụ vì điện trở hiệu dụng của bóng bán dẫn tăng hoặc giảm) vì hệ thống phải "cấu trúc lại" các phương trình. Phải thực hiện cấu trúc lại các phương trình nhiều lần trên mỗi bước mô phỏng (có thể cần thiết với bóng bán dẫn) làm cho mọi thứ chậm hơn.

Sử dụng một ma trận lớn cho mọi thứ không phải là một cách tiếp cận tốt cho các mô phỏng lớn; mặc dù ma trận sẽ khá thưa thớt, nó sẽ chiếm không gian tỷ lệ với bình phương số lượng nút cộng với nguồn điện áp. Thời gian cần thiết để giải ma trận trên mỗi bước mô phỏng sẽ tỷ lệ với bình phương kích thước ma trận nếu không cần tái cấu trúc hoặc theo khối kích thước ma trận nếu cần phải tái cấu trúc. Tuy nhiên, cách tiếp cận này có một sự tao nhã nhất định khi thể hiện mối quan hệ giữa một mạch và một hệ phương trình tuyến tính.


Hầu hết các trình mô phỏng kiểu SPICE cũng sử dụng loại thuật toán này. Dưới đây là tổng quan về gia vị ecircuitcenter.com/SpiceTopics/Overview/Overview.htmlm
user6972

1
FYI - KLU là thuật toán phổ biến được sử dụng trong các trình mô phỏng mạch. KLU là viết tắt của Clark Kent LU, vì nó dựa trên thuật toán của Gilbert-Peierls, một thuật toán phi siêu nhiên, tiền thân của SuperLU, một thuật toán siêu nhiên. KLU là một bộ giải tuyến tính hiệu suất cao thưa thớt sử dụng các cơ chế đặt hàng lai và hệ số hóa và giải thuật toán thanh lịch.
dùng6972

Điều quan trọng cần lưu ý là có một số mô hình bóng bán dẫn, ví dụ như BSIM hoặc EKV. Về cơ bản, các mô hình này xem xét tất cả các vật lý, từ quan điểm, liên quan đến hoạt động của một bóng bán dẫn duy nhất và các ảnh hưởng đến các đặc tính điện của nó. Có nhiều thứ hơn là đại diện cho sự kết hợp của nguồn điện áp, nguồn hiện tại và điện trở. Nếu bạn muốn chọn một mô hình khác, bạn có thể sử dụng tham số LEVEL. Hướng dẫn này từ Jacob Baker là một khởi đầu tốt. hy vọng nó giúp.

11

LiveWire là một trong nhiều trình mô phỏng mạch, với nhiều mức độ khả năng khác nhau.

Chẳng hạn, Falstad Circuit Simulator dường như có mức độ khả năng tương tự như LiveWire - và mã nguồn được cung cấp tại liên kết đó. Đó nên là một khởi đầu tốt.

Để mô phỏng mạch phức tạp hơn, nhiều công cụ truy nguyên nguồn gốc của chúng trở lại SPICE của UC Berkley . Mã nguồn SPICE có sẵn theo yêu cầu từ UCB theo giấy phép BSD.

Các phiên bản SPICE dành riêng cho nhà sản xuất thường tích hợp các mô hình mô phỏng bán dẫn rất chi tiết của các sản phẩm của chính họ vào các trình giả lập. Chẳng hạn, LTSpice IV từ Công nghệ tuyến tính hoặc TINA-TI từ Texas Cụ. Bên dưới, tất cả thường là SPICE.

Trích dẫn từ trang WikiPedia về SPICE:

Các chương trình mô phỏng mạch, trong đó SPICE và các dẫn xuất là nổi bật nhất, lấy một danh sách mạng văn bản mô tả các thành phần mạch (bóng bán dẫn, điện trở, tụ điện, v.v.) và các kết nối của chúng, và dịch mô tả này thành các phương trình cần giải quyết. Các phương trình tổng quát được tạo ra là các phương trình đại số vi phân phi tuyến được giải bằng các phương pháp tích phân ngầm, phương pháp Newton và các kỹ thuật ma trận thưa thớt.

Ở mức độ tinh vi cao hơn nữa, một số sản phẩm thương mại như Proteus Virtual System Modelling , một phần của Proteus Design Suite, sử dụng các cải tiến độc quyền cho mô phỏng mạch SPICE chế độ hỗn hợp - những công cụ này có thể mô phỏng cả hành vi mạch tương tự và mã vi điều khiển kỹ thuật số, với các tương tác giữa chúng được mô hình hóa đầy đủ.

Ở mức độ hạn chế và hạn chế hơn nhiều, một số trình soạn thảo sơ đồ, như công cụ Circuit Lab được tích hợp vào trang web này, cung cấp một phạm vi nhỏ các khả năng mô phỏng. Mặc dù điều này có thể không hữu ích lắm trong thiết kế điện tử không tầm thường thực tế, nghiên cứu khả năng và triển khai của chúng sẽ cung cấp cho nhà phát triển phần mềm một số cái nhìn sâu sắc về những gì hoạt động tốt cho người dùng và những gì không.


5

Có ba phân tích chính được thực hiện bởi các trình mô phỏng mạch giống như SPICE:

  • Điểm vận hành DC
  • Phân tích AC
  • Thống kê tạm thời

Các hoạt động DC điểm phân tích cho một mạch tuyến tính (hình thành từ nguồn DC, điện trở tuyến tính, và tuyến tính nguồn kiểm soát) được thực hiện bằng cách sử dụng phân tích mối sửa đổi (MNA). Phân tích lưới cũng có thể được sử dụng, nhưng rất dễ dàng để thiết lập các phương trình để phân tích nốt.

Đối với các mạch phi tuyến (bao gồm các thiết bị như bóng bán dẫn, có thể được mô hình hóa bản chất như các nguồn được điều khiển phi tuyến), một số thủ thuật bổ sung phải được sử dụng. Một cách đơn giản về mặt khái niệm là sử dụng phần mở rộng của Phương pháp Newton cho nhiều phương trình.

Phương pháp của Newton liên quan đến việc đoán giải pháp, sau đó tạo ra một mô hình tuyến tính của mạch chỉ chính xác "gần" giải pháp đoán. Giải pháp cho mạch linearaized được sử dụng như một dự đoán mới về giải pháp và quá trình này được lặp lại cho đến khi các lần lặp kế tiếp "hội tụ" vào giải pháp đúng (hy vọng) cho mạch phi tuyến. Trong thế giới thực, các bộ giải phi tuyến phức tạp hơn được sử dụng để có thể thực hiện giải pháp nhanh hơn và ít lỗi hơn do lỗi hội tụ.

Các phân tích AC được thực hiện bằng cách đầu tiên thực hiện một phân tích DC để tìm một điểm hoạt động. Sau đó, bạn nghiên cứu ảnh hưởng của nhiễu loạn nhỏ xung quanh điểm vận hành. "Nhỏ" có nghĩa là, theo định nghĩa, đủ nhỏ để các hiệu ứng phi tuyến không quan trọng. Điều đó có nghĩa là các phần tử mạch được chuyển thành các phần tử tương đương tuyến tính tùy thuộc vào điểm vận hành. Sau đó, MNA có thể được sử dụng (với các số phức biểu thị trở kháng của các phần tử lưu trữ năng lượng) để giải quyết ảnh hưởng của nhiễu loạn gây ra bởi các nguồn AC trong mạch.

Các phân tích thoáng qua được thực hiện, như Olin nói trong ý kiến, bằng cách xem xét như thế nào biến mạch phát triển theo các bước rất nhỏ trong thời gian. Một lần nữa tại mỗi bước, mạch được tuyến tính hóa xung quanh điểm hoạt động của nó, do đó MNA có thể được sử dụng để thiết lập các phương trình. Một phương pháp đơn giản để giải quyết hành vi theo thời gian là Phương pháp của Euler . Tuy nhiên, một lần nữa trong thực tế, các phương pháp phức tạp hơn được sử dụng để cho phép sử dụng dấu thời gian lớn hơn với các lỗi nhỏ hơn.

Bạn có thể thấy rằng một luồng chung trong các phương thức này đang tạo ra một xấp xỉ tuyến tính cho hành vi mạch và giải quyết điều đó với MNA cho đến khi bạn tìm ra giải pháp cho hành vi mạch phi tuyến.

Ba phân tích này là những phân tích chính được thực hiện bởi các mô phỏng giống như SPICE từ những năm 1970. Các trình giả lập mới hơn bổ sung các khả năng bổ sung như cân bằng hài hòa (một phần mở rộng của anlaysis để tạo hiệu ứng trộn từ các phần tử phi tuyến) hoặc mô phỏng điện từ để mô phỏng các hiệu ứng đường truyền. Nhưng các mô phỏng DC, AC và tạm thời là ba mô phỏng đầu tiên bạn nên hiểu khi sử dụng trình giả lập giống như SPICE.


Tôi đã nói về cách thiết lập các phương trình MNA trong một câu trả lời trước đó: Electronics.stackexchange.com/questions/19198/
mẹo

2
Chúng ta cũng nên thêm rằng mô phỏng mạch kỹ thuật số sử dụng các phương pháp hoàn toàn khác nhau; và điều đó làm cho đồng mô phỏng kỹ thuật số tương tự thành một vấn đề của riêng nó.
Photon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.