نحوه شبیه سازی و پیاده سازی سیستم های قدرت
به وسیله زبان SystemC
زمستان 93
A
فهرست
1- زبان سیستم C 1
1-1- زمان 2
1-2- رخدادها 3
1-3- تابع اصلی 3
1-4- انواع داده 3
1-5- ماژول ها 4
1-6- واسط ها، پورت ها و کانال ها 4
1-7- پروسس 4
1-8- دیگر امکانات 6
1-9- SystemC – AMS 6
2- طراحی سیستم های قدرت 7
3- استفاده از زبان SYSTEMC برای مدل سازی معماری کنترل سیستم های قدرت 9
3-1- مدل کردن و شبیه سازی مبدل های توان با استفاده از زبان توصیف سیستم system-C 9
3-2- شبیه سازی و مدلسازی مبدل های دی سی به دی سی با کنترل دیجیتال SystemC -AMS 15
3-3- تخمین توان سیستم با استفاده از زبان SystemC 22
4- نتیجه گیری 26
5- منابع و مآخذ 26
1- زبان سیستم C
SystemC یک زبان توصیف سخت افزار بر اساس توسعه C++ است و ویژگی های منحصر به فردی دارد. در حقیقت SystemC مجموعه ای از کلاس های C++ و مجموعه روش هایی برای استفاده از این کلاس هاست. چون SystemC بسط داده شده از زبان c است، اجازه استفاده از کد های به زبان سی را می دهد و تمام ویژگی های شی گرای زبان C++ مانند وراثت و چند ریختی در مدل کردن سخت افزار می توانند به کار روند. بر این اساس تمام ماژول های سیستم به عنوان کلاس پیاده سازی می شوند. در اصل، این زبان برای مدل کردن المان های سخت افزاری و نرم افزاری در نظر گرفته شده است. اگرچه می توان آن را برای مدل کردن فیزیک هر سیستمی تعمیم داد. در این زبان ویژگی هایی گنجانده شده است که برای یک شبیه سازی نزدیک به واقعیت به آن احتیاج داریم:
* مفهوم زمان در مدل گنجانده شده است.
* فرآیندها می توانند در شبیه ساز به نحوی تعریف شوند که موازی باهم انجام شوند درست مثل سخت افزار واقعی.
* انواع داده سخت افزاری را در برمی گیرد مانند 'Z' برای یک باس سه حالته.
میزان جزییات مدلی که برای توصیف هر سیستم استفاده می شود می تواند مطابق نیاز شبیه ساز تغییر کند. سطوح اصلی توصیف جزییات عملکرد بدون زمان1، عملکرد زمان دار2، چرخه باس دقیق3عملکرد دقیق پایه ها4و انتقال رجیستری دقیق است. علاوه بر این ها انواع قابل استفاده مدل می توانند به عنوان مدل معماری سیستم، مدل کارایی سیستم، مدل کردن در سطح تراکنش5 مدل عملکرد و مدل سطح انتقال رجیستری تعریف شوند. جدول زیر معماری این زبان را نشان می دهد. اساس هسته زبان یک شبیه ساز حساس به رخداد6 است که با رخدادها و پروسس ها کار می کند. المان های دیگر هسته زبان شامل ماژول ها و پورت ها برای ارائه ساختار استفاده می شوند. واسطه ها، کانال ها و پورت ها برای توصیف ارتباطات استفاده می شوند. برنامه شامل یک مجموعه از ماژول هاست که ماژول ها توان توصیف ساختار ها را فراهم می کند. ماژول ها عموما شامل پروسه ها، پورت ها، داده های داخلی، کانال ها و نمونه گیری از دیگر ماژولهاست. تمام پروسس ها موازی هستند و می تواند برای مدل کردن عملکرد ماژول به کار روند.
شکل1-1-اجزای SystemC
ارتباط میان پروسس ها درون ماژول های مختلف با استفاده از پورت ایجاد می شود. حساسیت به رخدادها از قابلیت های دیگر این زبان است.
شکل 1-2- ارتباط ماژول ها و پروسس ها
دسترسی به تمام کلاس های زبان با اضافه کردن سرفایل systemc.h امکانپذیر است.
1-1- زمان
مدل زمان یک مقدار integer حداقل 64 بیتی است. نوع داده sc_time برای ارائه زمان و تاخیر استفاده می شود. کمترین مقدار زمان به صورت پیش فرض 1 نانو ثانیه است.
1-2- رخدادها
کلاس sc_event برای معرفی رخدادهاست. اعلام رخدادها می تواند از سه راه انجام شود: بلافاصله، با تاخیر دلتا و یا زماندار. که به ترتیب با ()notify،notify(SC_ZERO_TIME) ، ( unit of time,notify(time تابعی از کلاس تعریف می شوند.
1-3- تابع اصلی
تابع ()sc_main نقطه آغاز ورود به کد کاربر است.
int sc_main( int argc, char* argv[] );
Instantiation در MAIN انجام می شود. کهSyntax آن به صورت زیر است:
module_type module_instance_name("string_name");
پس از آن که یک ماژول نمونه گیری شد باید پورت های آن به کانال ها اتصال یابند. برای این کار دو راه وجود دارد:
اتصال پورت نامگذاری شده:
module_instance_name.port_name(channel_name);
پورت بدون نام:
module_instance_name(channel_name1, channel_name2)
که در این حال هر پورت به کانال متناظر خود متصل می شود. پس از انجام پیکره بندی در انتهای MAIN باید تابع ()sc_start صدا می شود. این تابع ساخت جدول زمانی SystemC را آغاز می کند.
1-4- انواع داده
تمام انواع داده که در C معتبر است در اینجا هم از اعتبار برخوردار است. همچنین انواع دیگری از داده به آن برای مدلسازی سخت افزار اضافه شده است از جمله انواع مهم داده، نوع منطقی است که شامل 0، 1، X، Z است.
'0'
sc_logic_0, Log_0 :
'1'
sc_logic_1, Log_1 :
'X'
sc_logic_X, Log_X :
'Z'
sc_logic_Z, Log_Z :
1-5- ماژول ها
یک ماژول، بلوک ساختاری اساسی در SystemC است. ماژول ها باید شامل پورت، داده های عضو، کانال ها، پروسس ها، توابعی که تحت عنوان پروسس ثبت نشده اند و نمونه گیری از ماژول های دیگر باشد. نمونه ای از تعریف:
SC_MODULE(module_name){
// ports, data members, member functions
// processes etc.
SC_CTOR(module_name) { // Constructor
// body of constructor
// process registration, sensitivity lists
// module instantiations, port binding etc. }};
Constructor ماژول به وسیله SC_CTOR تعریف می شود.
1-6- واسط ها، پورت ها و کانال ها
مدل کردن المان های پایه ای برای ارتباط شامل واسط، پورت و کانال است. کانال، واسط را پیاده سازی می کند. کانال ها بر دو نوعند: 1- کانال های اولیه 2- کانال های سلسله مراتبی. کانال های اولیه: sc_buffer()،sc_fifo، sc_mutex، sc_sempahore، sc_signal، sc_signal_resolved، sc_signal_rv
پورت شیی است که امکان ارتباط را برای ماژول فراهم می کند. از طریق پورت یک ماژول می تواند با یک یا چند کانال ارتباط برقرار کند. چند پورت گرفته شده از کلاس sc_port که برای استفاده های خاص طراحی شده اند عبارتند از: sc_buffer، sc_signal، sc_in، sc_inout، sc_out، همچنین برای انواع کانال ها به صورت اختصاصی ویژگی ها تعریف شده است برای مثال برای کانال FIFO: sc_fifo_in، sc_fifo_out.
1-7- پروسس
عملکردها در پروسس تعریف می شوند. پروسس یک تابع عضو ماژول است که به صورت مستقیم نمی تواند توسط کد صدا شود بلکه با تغییر در لیست حساسیتش در حین اجرا مورد استفاده قرار می گیرد. پروسس ها سلسله مراتبی نیستند. SystemC دو نوع پروسس دارد: متد پروسس ها و ترد پروسس ها. در فاز مقداردهی اولیه تمام پروسس ها اجرا می شوند. برای جلوگیری از این امر می توان از تابع dont_initialize استفاده کرد.
متد پروسس ها:
هنگامی که اجرا شود تمام بدنه پروسس اجرا می شود. پس از پایان اجرا کنترل را به هسته SystemC برمی گرداند. تمام متغیرهای محلی پس از اتمام اجرا از بین می روند. متد پروسس نباید در حالت تعلیق نگه داشته شود یعنی اجازه استفاده از ()wait در آن نیست. متد پروسس می تواند از لیست حساسیت ساکن یا پویا یا هردو استفاده کند. حساسیت پویا به وسیله با تابع next_trigger() ساخته می شود. یک تابع عضو ماژول با ماکروی SC_METHOD در constructor ماژول تعریف می شود.
این تابع زمان تاخیر برای تریگر بعدی، رخداد خاص یا محموعه ای از رخدادهای فعال کننده پروسس را تعیین می کند.
اگر این تابع هیچ آرگومانی نداشته باشد، لیست حساسیت ساکن آن می تواند آن را صدا کند.
ترد پروسس:
ترد پروسس تنها یک بار اجرا می شود. آن هم در مقداردهی اولیه، پروسس اجرا می شود تا وقتی که دستور wait آن را متوقف کند. در این موقعیت حالت پروسس کاملا ذخیره می شود. پروسس با فعال شدن لیست حساسیتش ادامه می یابد. اگر نیاز به اجرای چندباره یک قسمت باشد از حلقه استفاده می شود. در این نوع از پروسس لیست حساسیت پویا با تابع wait ساخته می شود.
1-8- دیگر امکانات
از دیگر امکانات این زبان به وجود توابع ریاضی، sc_abs()،sc_min()،sc_max()می توان اشاره کرد. همچنین امکان تعقیب داده و عیب یابی فراهم است به این صورت که ابتدا با دستور sc_create_vcd_trace_file یک فایل ردیابی می سازیم سپس متغیرهایی که باید ردیابی شوند را با این تابع sc_trace لیست می کنیم. قبل از return در sc_main فایل ردیابی را با دستور sc_close_vcd_trace_file می بندیم. به این صورت می توانیم متغیرهای مورد نظر را در طول اجرا ردیابی کنیم.
1-9- SystemC -AMS
در حالیکه SystemC تنها برای مدلسازی سیستمهای دیجیتال به کار می رود، SystemC -AMS امکان طراحی در سطح سیستم و مدل کردن سیگنال آنالوگ و ترکیبی با ایجاد توان استفاده از یک کرنل اختصاصی سنکرون با کرنل استاندارد SystemC را به وجود آورده است. به همین خاطر می توانیم شبکه خطی الکتریکی را در آن مدل کنیم. پس برای مدل کردن مبدل تنها نیاز به وارد کردن لیست شبکه ها داریم. در مقابل در نرم افزار مدلسازی مثل متلب باید بسیاری از معادلات دیفرانسیل را به صورت دستی وارد کنیم البته اگر نخواهیم از تولباکس استفاده کنیم. واضح است که تغییر شبکه ها بسیار ساده تر از تغییر دادن معادلات است.
SystemC -AMS می تواند در سطوح مختلف توصیف انتزاعی به کار گرفته شود. از طرف دیگر ابزارهای در سطح سیستم مانند سیمولینک متلب که عموما برای مدل کردن سیستم های قدرتی به کار گرفته می شوند قادر به فهم و انتقال رفتار زمان پیوسته هستند اما در طراحی معماری سیستم های سیگنال ترکیبی ناتوانند.
2- طراحی سیستم های قدرت
الکترونیک قدرت با استفاده از تکنولوژی هایی که اجازه پیاده سازی سیستم های قدرت با کارایی بهبودداده شده، بازدهی بالاتر و هزینه کمتر را می دهند پیشرفت چشمگیری داشته است. امتیاز اصلی راهکارهای دیجیتال قابل برنامه ریزی بودن، همه جانبه بودن و مصرف کمتر توان است. همچنین حساسیت کمتر به نویز و تغییرات آنالوگ و راحتی یکپارچه کردن این سیستم ها با سیستم های دیجیتال مزیت های دیگر این روش هستند. کنترل دیجیتال نقش کلیدی در این ماجرا دارد. برای پیاده سازی معماری کنترل دیجیتال دو راه پیش رو داریم:
> استفاده از میکروپروسسورها، میکروکنترلرها و پردازنده های سیگنال دیجیتال. استفاده از این ابزارها یک راه تمام نرم افزاری را ارائه می دهد.
> استفاده از FPGA می تواند کارهای به خصوصی را که برای میکروها مناسب نیست انجام دهد. همچنین پیشرفت در این تکنولوژی در استفاده از FPGA به ما این اجازه را می دهد تا با پیاده سازی هسته نرم افزاری یا سخت افزاری یک میکروپروسسور به آن اضافه شود. این گونه معماری ها می توانند با کاهش هزینه از مزایای هر دو روش بهره برند.
در هنگام تست و طراحی این معماری های کنترل برخی مشکلات جدید سربرمی آورند. یکی از این مشکلات، شبیه سازی کامل سیستم شامل معماری کنترل و مبدل توان است. در گذشته کنترلرهای آنالوگ به راحتی با استفاده از شبیه سازهای سیگنال آنالوگ شبیه سازی می شدند. اما معماری های جدید به شبیه سازی نرم افزاری که در آن میکروپروسسور و پردازنده دیجیتال نوشته می شود احتیاج دارد. شبیه سازی کامل سیستم می تواند با دو ابزار انجام گیرد:
1- استفاده از ابزارهای سیگنال ترکیبی7 و شبیه سازی8 مشترک آنالوگ و دیجیتال با دو هسته سخت افزار و نرم افزار.
2- استفاده از یک زبان واحد برای بیان معماری تمام قسمت ها.
روش اول امکان یک شبیه سازی واقعی از سخت افزار و نرم افزار را فراهم می کند. البته این روش زمان بر است. در روش دوم زبان واحدی مثل C یا HDLرا در نظر می گیریم. این روش زمان شبیه سازی را بهبود می دهد اما باید برای مدل کردن زیرسیسستم ها به زبانی دیگر کار اضافه ای انجام دهیم. همچنین دقت تایید عملکرد و میزان اطمینان بخش بودن آن کاهش می یابد. در روش اول برای کاهش زمان از تکنیک های شتاب دهنده سخت افزار هم استفاده شده است. برخی از آنها تکنیک های HIL 9را استفاده می کنند تا با استفاده از همان HDL شبیه سازی را روی FPGA انجام دهند.
3- استفاده از زبان SystemC برای مدل سازی معماری کنترل سیستم های قدرت
در ادامه به بررسی چند نمونه مدل سازی معماری کنترل سیستم های قدرت با استفاده از زبان SystemC می پردازیم:
3-1- مدل کردن و شبیه سازی مبدل های توان با استفاده از زبان توصیف سیستم system-C
هدف این مقاله شبیه سازی معماری کنترل مبدل های توان است که به طراح اجازه دنبال کردن سیگنال آنالوگ و دیجیتال را در سیستم در هنگام اجرای سیستم می دهد. اساس این کار استفاده از برنامه نویسی به وسیله SystemC و یک روند طراحی معتبر برای هر مبدل توان معمول داده شده است. روند طراحی مطرح برای نشان دادن معماری کنترل بر مبنای FPGA بر روی یک مبدل تشدیدی10 گرمایش القایی اعمال شده است. در این مقاله نرم افزار با C نوشته شده و قطعات آنالوگ هم در C مدل شده اند. سخت افزارهای دیجیتالی با استفاده از HDL توصیف شده اند. سیستمC هم به عنوان زبان سطح بالا برای اتصال تمام المانها استفاده شده است.
مورد مطالعه این مقاله شامل یک سیستم گرمایش القایی داخلی است. شبیه ساز برای توسعه و تایید عملکرد استراتژی کنترل مد نظر، برای اینورتر های تشدیدی نیم پل طراحی شده است. ماژول ها برای ساختن یک طراحی سیستم سلسله مراتبی استفاده شده اند. در هر ترکیب ماژول، سیستم کامل را می توان متشکل از بسیاری از فرآیندهایی دانست که از طریق کانال ها یا رخدادها11مرتبط می شوند. ماژول های مختلف از طریق کانال ها به هم متصل می شوند. همانطور که در شکل زیر نشان داده شده است، سیستم تحت تست، ورودی را از یک مولد تراکنش دریافت می کند و خروجی سیستم ها به وسیله یک ناظر چک می شود. برای نمونه در یک مبدل توان، ولتاژ یا توان خروجی مورد نظر با مقدار موجود مقایسه می شوند. علاوه بر این تمام متغیرهای موجود آنالوگ و دیجیتال می توانند ردیابی شوند.
شکل 2-1- شبیه ساز، ورودی ها و خروجی ها
– روند طراحی
این روند طراحی از سطح بالای انتزاع آغاز می شود و به تدریج به سطح پیاده سازی نزدیک می شود. روش در شکل زیر خلاصه شده است.
شکل 3-2- روند طراحی
در مرحله اول تمام المان های سیستم در c مدل می شوند. هدف این مرحله تایید عملکرد تمام المان ها از جمله نرم افزار و سخت افزار دیجیتالی، مبدل توان و دیگر مدارهای آنالوگ است. مبدل توان به راحتی می تواند با معادلات دیفرانسیلش مدل شود و سخت افزارهای دیجیتال مانند PWM و ADC نیز می توانند با C مدل شوند. در این مرحله ارتباطات به وسیله متغیرها ساخته می شوند و به ساختار مناسبی نیاز است تا زمان بندی و اجرای پردازش های همزمان را امکان پذیر کند.
مرحله دوم در تصویر طرز ساخت شبیه ساز را در بردارد. در این مرحله سخت افزار دیجیتالی به وسیله HDL توصیف می شود. مدارهای آنالوگ هم با c هم با HDL می توانند مدل شوند. مدل کردن با c به خاطر هماهنگی با مرحله قبل ترجیح داده می شود. ارتباطات بین قسمت های مختلف سیستم با خواندن و نوشتن تراکنش انجام می گیرد. در این مرحله نرم افزار C و HDL دقیقا مطابق وضعیت پیاده سازی شده عمل می کنند. در مرحله آخر، شبیه سازی مدل ساخته شده انجام می گیرد. در این مرحله ورودی های مختلف به سیستم تحت تست داده می شود و خروجی ها آنالیز می شوند. پس شبیه ساز می تواند هم برای تحلیل عملکرد سیستم و تست سخت افزار دیجیتال به کار رود و هم می تواند برای طراحی و بهینه سازی پارامترها به کار رود. امتیاز اصلی این روش سرعت بالا درکنار دقت قابل قبول است.
– شکل مدارها و معادلات دیفرانسیل آن
همانطور که در ابتدای بحث ذکر شد برای مدلسازی، یک سیستم گرمایش القایی خانگی با ساختار اینورتر تشدیدی در نظر گرفته شد. معماری کنترل این مبدل، متشکل است از یک هسته ریزپردازنده نرم افزاری که کد c را اجرا می کند و یک سخت افزار دیجیتال که با VHDL توصیف شده است.
ماشین حالت در نظر گرفته شده را مشاهده می کنیم:
شکل3-3- a- مدل ساده.b- ماشین حالت مدار
یک موج مربعی و مدولاسیون چگالی پالس12 اعمال می شوند که در نتیجه توان خروجی با تغییر فرکانس سوییچینگ(fs) و یا با تغییر نسبت روشن بودن سوییچ ها(t_on/T_pdm) تغییر می کند. ماشین حالت به این صورت عمل می کند که اگر توان خروجی از یک توان مینیمم گذرای خاص(Pot) بزرگتر باشد، موج مربعی کنترلی اعمال می شود. قانون آن هست:
f_s (k)=f_s(k-1)+∆f_s (k) ,∆f_s (k)=k_f (P_o-P)=k_f e_p
اگر توان خروجی کمتر از Pot باشد PDM اعمال می شود یعنی f_s در مقدار ماکزیمم خود تنظیم می شود و پارامترهای کنترلی با در نظر گرفتن عبارت زیر محاسبه می شود:
t_on/T_pdm =P/P_o |_(t_on=T_pdm )
البته برای اندازه گیری توان یک مقدار هیستریسز ∆ انتخاب شده است.
شبیه سازی در سیستمC: یک برنامه شبیه سازی با سیستم c با استفاده از روشی که در قسمت قبل توضیح داده شد، ساخته شده است. ورودی برنامه مقدار توان خروجی مطلوب است در حالی که خروجی، توان واقعی خروجی، همراه با هر سیگنال دیگری است که عملکرد مناسب مبدل را اطلاع می دهد. سخت افزار دیجیتالی با زبان VHDL توصیف شده است در حالی که میکروپروسسور نرم افزاری به زبان C اجرا می کند. مبدل توان هم با استفاده از C مدل شده است.
یکی از مزیت های اصلی این روش این است که هردو کد C و VHDL که در شبیه سازی مورد استفاده قرار می گیرند، دقیقا همان کدهایی هستند که پیاده سازی شده اند. به همین دلیل برنامه علاوه بر شبیه سازی در تایید عملکرد نیز به کار می آید. کدهایی که برای شبیه سازی استفاده شدند به راحتی می توانند در طراحی نهایی کد سخت افزاری/ نرم افزاری به کار روند.
-نتایج شبیه سازی
در این قسمت، برخی نتایج شبیه سازی قابل ارائه بیان می شوند پارامترهای اصلی که برای مبدل تشدیدی در نظر گرفته شده اند:
Cr = 1440 nf Leq = 19µH Req=2.8Ω
شکل زیر یک دید از بالا به برنامه را نشان می دهد. در قسمت الف جریان خروجی، توان خروجی و فرکانس سوییچینگ ارائه شده اند .در ب کد نرم افزاری در حال اجرا که در یک break point متوقف شده است، نشان داده شده است. در این شکل ریپل بالا (مدولاسیون AM) در دو برابر فرکانس خط نیز دیده می شود. شکل بعد مبدل توانی که با شبیه سازی به دست آمده را با نتایج تجربی مقایسه می کند که به تطابق خوبی رسیده است.
الف
ب
ج
شکل3-4- نتایج شبیه سازی
در شکل زیر، یک مقایسه مفصل شکل موج های به دست آمده از شبیه سازی و نتایج عملی برای شرایط عملکردی مختلف داده شده است . نتایج یک تطابق خوب را نشان می دهد.
شکل3-5- نتایج دقیق شبیه سازی
در نهایت، در جدول، مقایسه ای از زمان شبیه سازی، داده شده است. سه روش با هم مقایسه شده اند: 1- توصیف کامل سیستم با VHDL 2- توصیف کامل سیستم باC 3- طرح پیشنهادی شبیه سازی باSystemC. همان طور که انتظار می رفت روش استفاده از C زمان کمتری برای دستیابی به نتایج شبیه سازی به نیاز دارد. به هرحال این مدل فقط برای چک کردن عملکرد الگوریتم کنترل به کار می آید و تلاش بیشتری برای بررسی سخت افزار لازم است. از طرف دیگر روش استفاده از VHDL به تنهایی، بیشترین مصرف زمان را دارد. علت عمده آن شبیه سازی سخت افزار در سطح RTL است. نهایتا روش سیستم C به نتایج متعادلی می رسد، زمان شبیه سازی کم، در حالی که شبیه سازی نرم افزار واقعی و سخت افزار دیجیتالی در طراحی نهایی گنجانده شده است.
3-2- شبیه سازی و مدلسازی مبدل های دی سی به دی سی با کنترل دیجیتال SystemC -AMS
در این مقاله روشی برای مدل کردن و شبیه سازی مبدل های دی سی به دی سی با حلقه کنترلی دیجیتالی یا آنالوگ- دیجیتالی با استفاده از زبان توصیف سخت افزار SystemC -AMS استفاده شده است. روش پیشنهادی، برای مدل کردن مورد تست خاص شامل یک کانورتر کاهنده با یک رگولاتور PID استفاده شد. میزان معتبر بودن مدل با نتایج شبیه سازی با متلب مقایسه شد. روش SystemC -AMS از نظر محاسباتی بازدهی خوبی دارد چون زمان شبیه سازی به شدت کاهش می یابد.
مورد تحت بررسی در این پژوهش مبدل کاهنده با رگولاتور PID است. مقادیر واقعی پارازیت ها نیز در مدل گنجانده شده است. در این سیستم، یک مبدل آنالوگ به دیجیتال ( ADC) و مدولاتور دیجیتال عرض پالس( DPWM ) واسط میان دو حوزه آنالوگ و دیجیتالند. به خاطر نوع ADC، نقاط هم فاصله روی دوره تناوب متوسط گیری می شوند و به رگولاتور PID داده می شوند. خروجی PID، یعنی عرض پالس به DPWM داده می شود. DPWM هم سیگنالهای درایور سوییچ ها را تولید می کند.
شکل 3-6- دیاگرام معماری کنترل دیجیتال
– پیاده سازی SystemC -AMS
بخشی از کدها برای نشان دادن مختصر چگونگی مدل کردن بلوک ها به زبان SystemC -AMS ارائه شده اند. در قسمت اول کلاس متوسط گیری ADC به نمایش در آمده است. مدل متوسط گیری ADC به نحوی تعریف شده است که تابع () sample_and_quantize در لبه مثبت سیگنال تریگر اجرا می شود که لبه مثبت سیگنال تریگر در هر پریود سوییچینگ دو بار اتفاق می افتد. پیاده سازی این تابع در ادامه آمده است.
متوسط ولتاژ ورودی ADC که در حقیقت میزان خطای ولتاژ خروجی را نشان می دهد در هر پریود سوییچینگ یک بار تولید می شود. کد دوم که رفتار PID را شبیه سازی می کند:
این ماژول مانند یک کلاس SystemC معمول پیاده سازی شده و تابع update() آن در هر لبه مثبت سیگنال data_ready اجرا می شود. این کد در حقیقت تابع تبدیل زیر را پیاده سازی می کند:
c(z)=g (z-z_1 )(z-z_2 )/(P-P_1 )(P-P_2 )
که یک عبارت زمان گسسته با یک قطب اضافی فرکانس بالا برای اطمینان از مناسب بودن( هم درجه بودن صورت و مخرج) تابع تبدیل است.
در طرف دیگر ماجرا مدل کاهنده با یک زیرکلاس از کلاس اصلی DcDcConverter ساخته می شود که از sc_module به ارث می برد.
لیست شبکه مدار با پیاده سازی مجدد تابع ()architecture فراهم شده است. شایان ذکر است که لیست شبکه مدار می تواند به صورت اتوماتیک از روی یک شماتیک از مدار تولید شود. تعریف سوییچ سمت ولتاژ بالا( ورودی کاهنده) در کد آمده است. ارتباطات به گره های الکتریکی موجود در خط 6 در خط 18 تعریف شده اند در حالیکه سیگنال کنترلی در خط 19 تخصیص شده است. در این مورد سیگنال کنترلی یک سیگنال بولی است که در خط دهم مشاهده می شود و با بلوک DPWM تولید می شود. پارامترهای دیگر مانند مقاومت خاموش و روشن در خطوط 20 و 21 تنظیم شده اند. یک منبع ولتاژ که باتری را مدل می کند در خطوط 23 تا 25 تعریف شده است. در خط 24 منبع ولتاژ به گرههای مربوطه متصل شده است. در حالی که دامنه ولتاژ تولید شده با این المان با یک سیگنال Vin در خط 25 تنظیم می شود. این سیگنال می تواند در یک شبیه ساز مناسب تولید شود و برای شبیه سازی پرش خط استفاده شود. تعریف المان های دیگر مبدل مانند منبع ولتاژ است پس از آن می گذریم.
استفاده از کلاس اصلی مبدل دی سی به دی سی مزایای زیادی دارد چون قسمت های کد می تواند میان توپولوژی های دی سی دی سی مختلف مثل افزاینده، کاهنده- افزاینده و کاهنده مشترکا استفاده شود و نیز می تواند در کلاس اصلی مشترک استفاده شود. این کار سبب استفاده مجدد کد می شود. کلاس اصلی همچنین می تواند برای تعریف یک واسط مشترک برای توپولوژی های مختلف به کار رود، بنابراین جایگزین کردن یک توپولوژی را بسیار ساده می کند.
– مقایسه با مدل های متلب سیمولینک
همین سیستم در محیط سیمولینک برای ارزیابی دقیق پیاده سازی SystemC -AMS مدل شده است. مبدل کاهنده در متلب با معادلات دیفرانسیلش مدل شده است. شبیه سازی حلقه باز مبدل برای چک کردن تطابق بین دو روش انجام شده است. نتایج در شکل زیر نمایش داده شده اند که نشان می دهند SystemC کاملا قابل اعتماد است. سپس سیستم حلقه بسته شامل رگولاتور PID دیجیتال در دو محیط شبیه سازی شد و نتایج در شکل بعد ارائه شده اند که بازهم تطابق کامل دارند.
الف
ب
شکل3-7- نتایج شبیه سازی
همانطور که در قسمت های قبل گفتیم یکی از مزیت های SystemC راحتی بهبود دادن مدل است. به عنوان مثال سلف سری معادل مربوط به خازن خروجی می تواند به راحتی در SystemC با اضافه کردن یک المان Sca_l و تغییر لیست شبکه در همان جهت انجام شود. برای دستیابی به همین نتیجه در محیط سیمولینک متلب باید تلاش بسیار بیشتری داشته باشیم چون بسیاری از معادلات ما عوض می شوند.
زمان اجرای شبیه سازی برای ارزیابی سرعت بازدهی در جدول مقایسه شده است. برای یک مقایسه عادلانه دو مدل دیگر نیز با استفاده از تولباکس SimPower که با یک طراحی شماتیک نیز می توان در آن شبیه سازی را انجام داد با متلب ساخته شدند.
– حلقه کنترلی سیگنال ترکیبی13
روش SystemC برای مدل کردن حلقه های کنترلی سیگنال ترکیبی یعنی حلقه کنترلی که بخشی از آن به صورت دیجیتالی و بخشی از آن به صورت آنالوگ است، نیز مناسب است. معماری PID دیجیتال که در قسمت سوم ارائه شد می تواند با بردن برخی از قسمت های آن در حوزه آنالوگ اصلاح شود. معماری کنترلر که در این قسمت ارزیابی شده یک کنترلر PID مد ولتاژی سیگنال ترکیبی همراه عملیات مشتق گیری آنالوگ است. عملیات مشتق گیری برای واکنش سریعتر به یک پرش بار یا خط به حوزه آنالوگ انتقال داده شده است. در حقیقت کمی سازی و خصوصا تاخیر مبدل آنالوگ به دیجیتال قسمت مشتق گیر کنترلر را تحت تاثیر قرار نمی دهد. قسمت های تناسبی و انتگرالگیر با استفاده از مبدل آنالوگ به دیجیتال و مبدل دیجیتال به آنالوگ در حوزه دیجیتال باقی مانده اند. برای مبدل آنالوگ به دیجیتال همان کد برای سیستم تمام دیجیتال است استفاده شده است. مدولاتور عرض پالس دیجیتال با یک مولد شیب دیجیتال و یک مقایسه گر آنالوگ جایگزین شد. پارامترهای سیستم در همان مقادیر مربوط به PID دیجیتال نگه داشته شده اند در حالیکه ضرایب کنترلر برای بهره برداری بهتر در معماری جدید اندکی تغییر داده شده اند.
نتایج شبیه سازی در شکل بعد گزارش شده اند. مشاهده می شود که انتقال مشتق گیر به حوزه آنالوگ کنترلر سیگنال ترکیبی قادر به واکنش سریعتر به پرش بار است که سبب کاهش بالازدگی و پایین زدگی خواهد شد. این تاثیر در تصویر مربوط به شکل موج جریان سلف دیده می شود که سریعا پس از پرش بار شروع به افزایش می کند. از سوی دیگر، پیاده سازی دیجیتال، تاخیری از پریود سوییچینگ اضافی را نشان می دهد.
الف
ب
شکل 3-8- نتایج شبیه سازی معماری آنالوگ-دیجیتال
لازم به ذکر است که زمان اجرای شبیه سازی کنترلر سیگنال ترکیبی 0.87 ثانیه بوده است.
3-3- تخمین توان سیستم با استفاده از زبان SystemC
با توجه به اینکه کم مصرف بودن در طراحی سیستم های الکترونیکی حال حاضر روز به روز اهمیت بیشتری می یابد، گروهی از ابزارهای طراحی کامپیوتری ما را به سمت طیف محاسبه کننده توان برای بهبود طراحی راهنمایی کرده اند. ابزارهایی در سطح گیت و مدار اجازه مدل سازی صحیح انرژی را می دهند اما منجر به سرعت شبیه سازی پایین و هزینه طراحی بالا می شوند. اخیرا با استفاده از زبان های سطح بالا پیشرفت هایی در طراحی سیستم ایجاد شده تا بیان گر ساختارهای سخت افزاری باشد که ارزیابی توان را در سطوح بالاتر انتزاع انجام دهد. SystemC از این لحاظ زبان مناسبی است.
در این پژوهش از یک زبان جانبی دیگر برای اندازه گیری توان که نقص SystemC به شمار می رود استفاده شده است. در آن مدلسازی سطح بالای قطعات ابتدایی CMOS و جمع کننده انجام شده است. سپس مدل توان آنها مدل های ساده ای پیشنهاد شده است. توان یک مدار کامل با استفاده از تقریب توان عناصرش به دست می آید. گیت های استفاده شده در این مقاله در شکل زیر به نمایش درآمده اند:
3-9- گیت های منطقی لازم برای طراحی همه جانبه
برای این کار ابتدا باید تکنولوژی ساخت قطعات را درنظر بگیریم که سهم به سزایی در مصرف توان دارد. از جمله ویژگی های تکنولوژی میزان خازن سوییچینگ، زمان صعود و سقوط سیگنال، ثابت های فیزیکی شکل هندسی و پارامترهای محیطی است. این مقادیر از مدل اسپایس قطعات استخراج شده اند. توان مصرفی یک گیت برابر با جمع توان دینامیک و استاتیک آن است. در این پژوهش تنها مصرف دینامیک توان مورد بررسی قرار گرفته است. مقدار توان دینامیکی برابر با مجموع مقدار توان مصرفی سوییچینگ و توان مصرفی اتصال کوتاه در نظر گرفته شده است. البته توان مصرفی سوییچینگ بسیار با اهمیت تر است. a10 و a01 را دو متغیر منطقی فرض می کنیم که در هنگام تغییر خروجی گیت از 0 به 1 یا از 1 به 0 یکی از آنها "صحیح" می شود. در نتیجه مقدار تلفات توان سوییچینگ و اتصال کوتاه به نحو زیر خواهند بود:
P_sw=a01〖 C〗_L 〖 V〗_DD^2 f
P_SC=(a01 |a10)(β/12〖)(V_DD-2V_t)〗^3 (t_rf f)
شکل زیر کلاس مدل SystemC و مدل توان یک معکوس کننده رانشان می دهد.
شکل 3-10- نحوه تعامل کلاس مدل با کلاس محاسبه توان
در این شکل کلاس "Inverter" عملکرد معکوس کننده را مدل می کند. کلاس "Driver" یک شبیه ساز از آن تولید می کند. مدل توان "Inverter" از "General powermodel" گرفته شده است که "General powermodel" به واسطهای کلاس ها، مدل تکنولوژی و گزارش توان انها دسترسی دارد. در شکل زیر جزییات مدلسازی کلاس معکوس کننده مشاهده می شود:
شکل 3-11- جزییات نحوه تعامل کلاس مدل با کلاس محاسبه توان
تابع prc not gate() رفتار معکوس کننده را شبیه سازی می کند. در ماژول Inverter powermodel تابع prc power() مصرف توان معکوس کننده را محاسبه می کند. تمام کدهای مربوط به توان در prc power() قرار داده شده اند. تابع prc cal power() تنها یک واسط است. در Aspect inverter، عبارت advice "Inverter" : slice class : public Inverter base کلاس پایه معکوس کننده را نشان می دهد. عبارت advice execution ("% Inverter:: prc not gate(…)"): around() برای بررسی فعالیت ماژول معکوس کننده به کار رفته است. هرگاه تغییری در مقدار خروجی معکوس کننده اتفاق بیفتد متغیر b not x تغییر می کند و Inverter powermodel از تغییر آگاه شده مقدار مصرف را محاسبه می کند. با استفاده از کامپایلر AspectC++ این ماژول ها به هم مرتبط می شوند.
4- نتیجه گیری
در این مطالعه سه برنامه برای شبیه سازی و مدلسازی مبدل های توان مطالعه شد. یک برنامه برای طراحی و تایید عملکرد مبدل های توان با معماری کنترل با سیستمC نوشته شد. این کار بر اساس سیستمC ، زبان توصیف سیستم انجام شد. در میان مزایای این روش مهمترین های آن کاهش زمان شبیه سازی و امکان شبیه سازی کردن دقیقا همان نرم افزار و سخت افزاری که قرار است پیاده سازی شود ، می باشند. روش طراحی برنامه پیشنهاد و به یک گرمایش القایی خانگی اعمال شد. برنامه شامل مبدل توان، سخت افزار دیجیتالی و کد C اجرا شده در هسته نرم افزاری میکروپروسسور است. برنامه دوم با استفاده از SystemC -AMS، به طراحی معماری کنترل یک مبدل دی سی به دی سی پرداخت. در مقایسه با ابزار شبیه سازی مانند سیمولینک متلب، SystemC -AMS عملکرد بهتری داشت. در برنامه سوم، هدف اندازه گیری تقریبی توان یک مدار بود که این کار با اندازه گیری توان تک تک قطعات می تواند انجام شود. با استفاده از یک کامپایلر مناسب برای اندازه گیری توان این برنامه نوشته شد. لازم به ذکر است مطالعه راجع به نحوه ارتباط این کامپیلر و زبان مرتبط آن با SystemC هدف ما نبوده و به همین دلیل تنها به مختصری راجع به مدلسازی گیت های CMOS در این برنامه قناعت کردیم. در این شبیه سازها نتایج شبیه سازی با نتایج عملی مقایسه شد و تطابق خوبی را نشان داد و دقت روش های پیشنهادی را ثابت کرد. علاوه بر این، زمان های شبیه سازی مقایسه شد که نشان داد سیستم C روش بهتری است. در نتیجه روش های شبیه سازی مبتنی بر SystemC روند طراحی مبدل توان و ولتاژ را بهبود می بخشد و سیکل طراحی را کوتاه می کند.
5- منابع و مآخذ
[1] D. Navrro, O. Lucia, I.Urriza, L.A.Barragan "Modeling and simulation of power converter systems using SystemC system-level description language" 38th Annual Conference on IEEE Industrial Electronics Society IECON,2012.pp 4694-4699.
[2] M. Agostinelli, R. Priewasser, M. Huemer, S. Marsili, and D. Straeussnigg, "SystemC-AMS modeling and simulation of digitally controlled DC-DC converters," in iEEE Applied Power Electronics Conference and Exposition APEC, 2010, pp. 170-175.
[3] F. Liu, N. Abbasi, and Q. Tan, "System-level power estimation using SystemC and aspect-oriented programming," International Journal of Electronics, vol. 97, no. 9, pp. 1095-1108, September 2010.
[4] SystemC 2.0.1 Language Reference Manual. "Open SystemC initiative." [Online]. Available: http://www.accellera.org
1 untimed functional (UTF)
2 timed functional (TF)
3 bus cycle accurate (BCA)
4 pin cycle accurate (PCA)
5 Transaction Level Modeling
6 Event-driven
7 Mixed-Signal
8 Co-Simulation
9 Hardware in loop
10 resonant
11 Event
12 pulse density modulation (POM)
13 Mixed Signal
—————
————————————————————
—————
————————————————————
27