شبیهسازی مدارهای الکترونیکی چگونه کار میکند؟ بررسی معماری داخلی
نرمافزارهایی مانند Proteus و Wokwi
بخش اول: مبانی شبیهسازی مدارهای الکترونیکی و موتورهای Simulation
مقدمه
امروزه تقریباً در تمام مراحل طراحی سیستمهای الکترونیکی، از یک مدار ساده شامل چند مقاومت و LED گرفته تا سیستمهای پیچیده مبتنی بر میکروکنترلرهایی مانند ESP32، STM32 و پردازندههای قدرتمند، از ابزارهای شبیهسازی استفاده میشود.
نرمافزارهایی مانند Proteus، LTspice، Multisim، Wokwi، Tinkercad Circuits و SimulIDE این امکان را فراهم کردهاند که مهندسان و برنامهنویسان قبل از ساخت نمونه واقعی، رفتار مدار خود را بررسی کنند. در این محیطها میتوان قطعات را کنار هم قرار داد، سیمکشی انجام داد، برنامه میکروکنترلر را اجرا کرد و حتی عملکرد پایههای ورودی و خروجی را مشاهده کرد.
اما یک سؤال مهم وجود دارد:
این نرمافزارها چگونه یک قطعه کاملاً مجازی را طوری شبیهسازی میکنند که مانند قطعه واقعی رفتار کند؟
چگونه یک مقاومت، ترانزیستور یا میکروکنترلر ESP32 در یک محیط نرمافزاری میتواند همان واکنشهایی را نشان دهد که در دنیای واقعی از خود نشان میدهد؟
پاسخ این سؤال در مفاهیمی مانند مدلسازی قطعات الکترونیکی، موتور شبیهسازی، مدلهای ریاضی، حل معادلات مدار، امولیشن پردازنده و مدلهای رفتاری قرار دارد.
در این مقاله، ابتدا با پایههای شبیهسازی مدار آشنا میشویم و بررسی میکنیم که نرمافزارهای شبیهساز چگونه یک مدار را از یک تصویر ساده به یک سیستم الکترونیکی قابل اجرا تبدیل میکنند.
شبیهسازی مدارهای الکترونیکی چیست؟
شبیهسازی مدار الکترونیکی فرآیندی است که در آن رفتار یک مدار واقعی، به کمک مدلهای ریاضی و الگوریتمهای نرمافزاری، در محیط کامپیوتر بازسازی میشود.
در یک مدار واقعی، اتفاقات مختلفی رخ میدهد:
- الکترونها در مسیرها حرکت میکنند.
- ولتاژ بین نقاط مختلف تغییر میکند.
- جریان از قطعات عبور میکند.
- خازنها شارژ و دشارژ میشوند.
- ترانزیستورها قطع و وصل میشوند.
- پردازندهها دستورها را اجرا میکنند.
اما کامپیوتر نمیتواند مستقیماً حرکت واقعی الکترونها را شبیهسازی کند، زیرا تعداد ذرات و پیچیدگی رفتار فیزیکی بسیار زیاد است.
بنابراین مهندسان از مدلهای سادهتر و قابل محاسبه استفاده میکنند.
برای مثال:
یک مقاومت واقعی از میلیاردها اتم تشکیل شده است، اما در شبیهساز فقط یک رابطه ساده دارد:
V = I × R
یعنی نرمافزار فقط باید بداند اگر مقدار مقاومت مشخص باشد، رابطه بین ولتاژ و جریان چگونه تغییر میکند.
تفاوت شبیهسازی (Simulation) و امولیشن (Emulation)
یکی از اشتباهات رایج در حوزه الکترونیک این است که شبیهسازی و امولیشن را یک مفهوم بدانیم، در حالی که تفاوت مهمی دارند.
شبیهسازی (Simulation)
در شبیهسازی، رفتار یک سیستم با استفاده از مدلهای ریاضی بازسازی میشود.
مثلاً:
یک ترانزیستور:
- مدل جریان
- ولتاژ آستانه
- بهره جریان
- رفتار فرکانسی
را دارد.
نرمافزار این پارامترها را محاسبه میکند و نتیجه را نمایش میدهد.
امولیشن (Emulation)
در امولیشن، تلاش میشود یک سیستم واقعی تقریباً به صورت کامل بازسازی شود.
مثلاً یک میکروکنترلر:
- معماری CPU
- دستورهای ماشین
- رجیسترها
- حافظه
- واحدهای جانبی
شبیهسازی میشوند.
به همین دلیل در نرمافزارهایی مانند Proteus، برنامهای که برای یک میکروکنترلر نوشته شده است میتواند بدون وجود سختافزار واقعی اجرا شود.
اجزای اصلی یک نرمافزار شبیهسازی مدار
تقریباً تمام نرمافزارهای حرفهای شبیهسازی مدار از چند بخش اصلی تشکیل شدهاند.
ساختار کلی به شکل زیر است:
طراحی مدار توسط کاربر
↓
مدلسازی مدار (Netlist)
↓
موتور شبیهسازی
↓
محاسبه ولتاژ و جریان
↓
بهروزرسانی وضعیت قطعات
↓
نمایش گرافیکی
هر بخش وظیفه مشخصی دارد.
Netlist چیست و چرا اهمیت دارد؟
وقتی کاربر در محیطی مانند Proteus یک مدار طراحی میکند، در ظاهر فقط تعدادی قطعه و سیم مشاهده میشود.
اما نرمافزار این تصویر را به یک ساختار متنی و منطقی تبدیل میکند که به آن Netlist گفته میشود.
برای مثال:
کاربر این مدار را میسازد:
ESP32 GPIO2 —- مقاومت —- LED —- GND
نرمافزار آن را تبدیل میکند به چیزی شبیه:
Component1:
Type = ESP32
Pin = GPIO2
Component2:
Type = Resistor
Value = 220 Ohm
Component3:
Type = LED
Connection:
ESP32.GPIO2 → Resistor.Pin1
Resistor.Pin2 → LED.Anode
LED.Cathode → GND
اکنون موتور شبیهسازی میداند چه قطعاتی وجود دارند و چگونه به یکدیگر متصل شدهاند.
موتور شبیهسازی (Simulation Engine) چیست؟
مهمترین بخش یک نرمافزار شبیهساز، موتور شبیهسازی است.
این بخش مسئول انجام محاسبات و تعیین وضعیت مدار است.
برای مثال:
فرض کنید یک باتری ۵ ولت، یک مقاومت و یک LED داریم.
موتور شبیهسازی باید محاسبه کند:
- ولتاژ دو سر مقاومت چقدر است؟
- چه مقدار جریان عبور میکند؟
- LED روشن است یا خاموش؟
- توان مصرفی چقدر است؟
این محاسبات هزاران یا میلیونها بار در طول اجرای مدار تکرار میشوند.
شبیهسازی آنالوگ چگونه انجام میشود؟
مدارهای آنالوگ مانند:
- مقاومت
- خازن
- سلف
- دیود
- ترانزیستور
- تقویتکننده عملیاتی
با معادلات ریاضی شبیهسازی میشوند.
برای مثال یک مدار مقاومت و خازن:
Vcc
|
R
|
C
|
GND
نرمافزار باید تغییر ولتاژ خازن در طول زمان را محاسبه کند.
یعنی بداند:
در زمان صفر:
Voltage = 0V
بعد از چند میلیثانیه:
Voltage = 2V
و بعد:
Voltage = 5V
این کار معمولاً با روشهای عددی مانند:
- Euler Method
- Runge-Kutta
- Newton-Raphson
انجام میشود.
مدلهای SPICE چیستند؟
یکی از مهمترین استانداردهای شبیهسازی مدار، مدل SPICE است.
SPICE مخفف:
Simulation Program with Integrated Circuit Emphasis
است.
این سیستم ابتدا برای شبیهسازی مدارهای مجتمع ساخته شد، اما بعدها به استانداردی در صنعت الکترونیک تبدیل شد.
در مدل SPICE، یک قطعه با مجموعهای از پارامترها تعریف میشود.
مثلاً یک ترانزیستور:
.model BC547 NPN
BF=200
VAF=100
IS=1e-14
این پارامترها رفتار واقعی قطعه را مشخص میکنند.
چگونه یک مقاومت در شبیهساز کار میکند؟
یک مقاومت سادهترین مثال برای درک شبیهسازی است.
در دنیای واقعی:
V = IR
وجود دارد.
در نرمافزار:
مدل مقاومت فقط یک تابع ریاضی است:
ورودی:
- ولتاژ دو سر مقاومت
خروجی:
- جریان عبوری
مثلاً:
اگر:
R = 1000 Ohm
V = 5V
نرمافزار محاسبه میکند:
I = 5 / 1000
I = 5mA
سپس این مقدار جریان را به سایر قسمتهای مدار منتقل میکند.
شبیهسازی قطعات دیجیتال چگونه انجام میشود؟
قطعات دیجیتال مانند:
- گیت AND
- گیت OR
- فلیپفلاپ
- شمارندهها
معمولاً با منطق صفر و یک کار میکنند.
برای مثال گیت AND:
A B | Output
0 0 | 0
0 1 | 0
1 0 | 0
1 1 | 1
مدل نرمافزاری آن فقط یک قانون منطقی است.
اما قطعات دیجیتال واقعی دارای تأخیر زمانی هستند.
مثلاً:
ورودی تغییر کرد
↓
بعد از 10ns
↓
خروجی تغییر میکند
شبیهسازهای حرفهای این تأخیرها را نیز در نظر میگیرند.
Event Driven Simulation چیست؟
یکی از روشهای مهم در شبیهسازی دیجیتال، روش Event Driven Simulation است.
در این روش نرمافزار مجبور نیست دائماً تمام مدار را محاسبه کند.
بلکه فقط زمانی محاسبات انجام میدهد که اتفاقی رخ دهد.
مثلاً:
یک کلید تغییر وضعیت میدهد.
رویداد:
Switch = ON
ایجاد میشود.
سپس نرمافزار فقط قطعات مرتبط را بررسی میکند:
Switch
↓
Wire
↓
GPIO
↓
LED
این روش باعث افزایش سرعت شبیهسازی میشود.
چرا شبیهسازی کامل یک مدار واقعی بسیار سخت است؟
در دنیای واقعی عوامل زیادی وجود دارند:
- نویز
- دمای محیط
- تلرانس قطعات
- مقاومت سیمها
- ظرفیت پارازیتی
- میدانهای الکترومغناطیسی
اما اگر بخواهیم همه این موارد را شبیهسازی کنیم، حتی یک مدار کوچک نیز به قدرت پردازشی بسیار زیادی نیاز خواهد داشت.
به همین دلیل نرمافزارهای شبیهسازی معمولاً بین دقت و سرعت تعادل ایجاد میکنند.
جمعبندی بخش اول
نرمافزارهایی مانند Proteus و Wokwi در واقع تصاویر متحرک از مدار نیستند؛ آنها سیستمهای محاسباتی پیچیدهای هستند که رفتار قطعات الکترونیکی را با استفاده از مدلهای ریاضی بازسازی میکنند.
هر قطعه در این محیطها دارای یک مدل است:
- مقاومت با قوانین الکتریکی
- ترانزیستور با مدل SPICE
- گیت منطقی با قوانین دیجیتال
- میکروکنترلر با مدل CPU و حافظه
موتور شبیهسازی با دریافت ساختار مدار (Netlist)، وضعیت تمام قطعات را محاسبه میکند و نتیجه را به صورت گرافیکی نمایش میدهد.
اما زمانی که وارد دنیای میکروکنترلرها میشویم، موضوع بسیار پیچیدهتر میشود؛ زیرا دیگر فقط جریان و ولتاژ مطرح نیست، بلکه باید یک پردازنده واقعی، حافظه، رجیسترها، دستورهای ماشین و واحدهای جانبی نیز شبیهسازی شوند.
در بخش دوم به صورت کامل بررسی خواهیم کرد که: برا مشاهده بخش دوم اینجا کلیک کنید.
میکروکنترلرهایی مانند ESP32، STM32 و AVR چگونه در محیطهای شبیهسازی اجرا میشوند و چگونه یک برنامه واقعی روی یک قطعه کاملاً مجازی اجرا میشود.
