• خانه
  • >
  • رشته برق
  • >
  • سری آموزش گام به گام نرم افزار Hspice بخش دوم (شبیه سازی گیت not)

سری آموزش گام به گام نرم افزار Hspice بخش دوم (شبیه سازی گیت not)

در این آموزش از سری آموزشهای گام به گام نرم افزار Hspice ابتدا به بررسی مختصر یک گیت not از دیدگاه مداری در تکنولوژی cmos خواهیم پرداخت. و در بخش بعدی نحوه صحیح نوشتن نت لیست و شبیه سازی گیت not طراحی شده در اچ اس پایس را به بحث خواهیم گذاشت و در انتها نتایج شبیه سازی ها را با استفاده از نرم افزار Spice explorer مورد بررسی و تجزیه و تحلیل قرار خواهیم داد.

طراحی اینورتر با استفاده از تکنولوژی cmos

شکل زیر شماتیک یک گیت not را همراه با جدول صحت آن نشان می دهد همانطور که از جدول مشخص است کار یک اینورتر یا معکوس کننده متمم گیری از ورودی است یعنی اگر ورودی صفر منطقی باشد خروجی یک منطقی خواهد شد و بلعکس.

جدول درستی گیت not

همچنین پیاده سازی یک گیت not با استفاده مدارات cmos در منطق استاتیک را در شکل زیر می بینیم. همانطور که مشاهده می کنیم یک اینورتر از دو ترانزیستور nmos , pmos تشکیل شده که ترانزیستور nmos نقش شبکه پایین کش   Pull Down Network (به اختصار PDN) و ترانزیستور pmos نقش شبکه بالاکش Pull Up Network (به اختصار PUN) را ایفا می کند یعنی وقتی ورودی در سطح بالا قرار دارد (وضعیت یک منطقی) ترانزیستور pmos که سورس آن به VDD متصل است و چون VDD بالاترین سطح ولتاژ مدار می باشد پس اختلاف بین ولتاژ گیت و سورس برابر صفر بوده و این ترانزیستور حالت خاموش به خود خواهد گرفت و مثل این می ماند که از مدار خارج شده باشد (مانند یک سویچ باز) و هیچ تاثیری بر خروجی نخواهد گذاشت. در همین حالت (ورودی برابر یک منطقی) ترانزیستور nmos چون سورس آن به زمین (پایین ترین ولتاژ مدار) متصل است اختلاف بین گیت و سورس آن با فرض ورودی برابر بالاترین سطح ولتاژ ممکن برابر VDDخواهد شد پس ولتاژ گیت به سورس ترانزیستور nmos از ولتاژ ترشلد یا آستانه (Vthnmos) بالاتر رفته و روشن شده و مانند یک سویچ روشن عمل خواهد کرد که این باعث تخلیه خازن CL که ولتاژ خروجی را نگه می دارد (البته با فرض اینکه این خازن از قبل شارژ شده باشد) خواهد شد. در نتیجه خروجی برابر صفر منطقی که متمم ورودی (یک منطقی) است می شود. و اگر خروجی قبلاً صفر بوده باشد تغییر حالتی در آن رخ نخواهد داد.

مدار داخلی گیت not در سطح ترانزیستور

تحلیل مشابهی را برای حالتی که ورودی برابر صفر است می توانیم داشته باشیم. در این حالت برعکس حالت قبلی ترانزیستور nmos از مدار خارج خواهد شد و ترانزیستور pmos باعث شارژ خازن CL می شود و خروجی از صفر به یک منطقی تغییر وضعیت خواهد داد و البته اگر این خازن از قبل شارژ بوده باشد همان حالت قبلی خود (یک منطقی) را حفظ خواهد نمود. پس می بینیم که این مدار دقیقاً مانند جدول صحت عمل نموده و خروجی متمم ورودی خواهد بود یعنی اگر یک سیگنال مربعی را به ورودی بدهیم در خروجی متمم آن را خواهیم داشت و جایی که سیگنال ورودی در سطح پایین قرار دارد خروجی بالا بوده و بلعکس.

منطق استاتیک را در مثال های عملی بعدی بیشتر توضیح خواهیم داد در اینجا هدف فقط یک آشنایی مختصر است. و هدف از بکارگیری این لاجیک برای پیاده سازی مدارات توان مصرفی پایین آن می باشد.

همانطور که بررسی نمودیم در هر دو حالت یعنی ورودی چه صفر باشد چه یک ، در حالت پایدار جریانی از منبع تغذیه VDD به زمین جاری نخواهد شد که عدم وجود این جریان ایستا خود دلیل مصرف پایین تر توان نسبت به لاجیک های دیگر است اما در حالت گذرا یعنی وقتی که ورودی از صفر به یک و یا از یک به صفر تغییر وضعیت می دهد برای مدت زمانی کوتاه (بسته به شیب تغییرات صعود یا نزول سیگنال ورودی) هر دو ترانزیستور به طور همزمان روشن شده و یک جریان گذرا از منبع VDD به زمین جاری خواهد شد که این خود عامل مصرف توان است. پس هر چه زمان های صعود (trising) و نزول (tfalling) کوتاه تر باشد و تغییر وضعیت ورودی سریعتر انجام شود زمان کمتری جریان گذرا بردوام خواهد بود و در نتیجه مصرف توان کمتر خواهد شد.

برای کسب اطلاعات بیشتر در مورد اینورترها یک سری منابع را معرفی می کنیم که دوستان علاقه مند بتوانند اطلاعات کامل تری را کسب کنند.

.(Jan M. Rabaey, Anantha chandrakasan, Borivoje Nikolic “Digital Integrated Circuits  A Design Perspective” ,  (۲nd Ed

 Neil H. E. Weste, David Money Harris, “CMOS VLSI Design A Circuits and Systems  Perspective” , ۴th Edition

نوشتن نت لیست و شبیه سازی اینورتر در نرم افزار Hspice

بعد از طراحی مدار و اختصاص یک اسم غیر تکراری به هر گره از مدار حال نوبت نوشتن نت لیست است. مدار گیت not طراحی شده از چهار گره تشکیل شده است که شامل گره های ورودی و خروجی IN , OUT گره مربوط به منبع تغذیه VDD و گره زمین است می باشد.

نکته۱: گره زمین یک گره عمومی (Global) و شناخته شده برای نرم افزار Hspice است و آن را با نام های GROUND , GND , 0 , GND! تعریف می کنیم و همگی آنها از لحاظ مفهمومی برای نرم افزار یکی می باشند و تفاوتی بین آنها نمی گذارد.

نکته۲: حروف بزرگ و کوچک برای نرم افزار یک مفهوم را می رساند مثلاً اگر یک گره را با نام IN تعریف کنیم نمی توانیم گره مستقل دیگری با نام in یا In و یا iN داشته باشیم و نرم افزار Hspice هر همه را به چشم یک گره مشترک نگاه می کند پس در اسم گذاری ها باید دقت کنیم و خیلی وقت ها که یک اشتباه منطقی پیش می آید نرم فزار هیچ خطایی (error) نمی گیرد و به همین دلیل است که نتیجه شبیه سازی با آنچه که انتظار داشتیم تفاوت خواهد داشت.

نکته۳: برای گره ها هر نامی را می توانیم اختصاص دهیم و محدودیتی از این لحاظ وجود ندارد فقط نام گره ها نباید از ۱۶ کاراکتر بیشتر شود. گره ها با اعداد یا حروف و یا ترکیبی از این دو قابل اسم گذاری هستند ، اما اگر یک گره را با عدد نام گذاری می کنیم نباید بعد از آن حروف قرار دهیم اما حالت برعکس مشکلی ایجاد نمی کند مثلاً گره a1 یک گره معنی دار است ولی ۱a قابل قبول نیست.

بعد از گره گذاری صحیح مدار حال نوشتن نت لیست را در محیط نرم افزار EmEditor  یا هر نرم افزار ویرایشگر متنی دیگری که با آن راحت هستید شروع می کنیم. اولین نکته ای که باید به خاطر داشته باشیم این است که خط اول نت لیست در شبیه سازی بی اثر است پس یا آن را خالی می گذاریم یا یک نام دلخواه برای آن انتخاب می کنیم مثلاً در این مدار که مربوط به یک گیت not است می توانیم خط اول را با نوشتن INVERTER آغاز کنیم. بعد از این کار حال باید المان های مدار را تعریف کنیم. اینجا ما سه المان شامل ترانزیستور ماسفت ، خازن و منبع ولتاژ تغذیه و ورودی داریم. ترانزیستور ماسفت را حرف M خازن را با حرف C و منبع ولتاژ مستقل را با حرف V مشخص می کنیم. پس تعریف المان های مدار به صورت زیر بوده و نت لیست ما تا به اینجای کار به صورت زیر در خواهد آمد.

                                                          INVERTER

Mn1     OUT    IN        ۰          ۰             mn18               W=1u              L=0.18u

Mp1     OUT    IN        VDD   VDD           mp18               W=3u              L=0.18u

CL       OUT    ۰          ۱p

VDD   VDD   ۰          ۱٫۸

VIN     IN        ۰          Pulse    ۰          ۱٫۸       ۰          ۱n        ۱n        ۱۰u      ۲۰u

اولین سطر این نت لیست مربوط به تعریف ترانزیستور nmos است. این ترانزیستور را با Mn1 نامگذاری کردیم و می توانیم هر اسم دلخواه دیگری را نیز بعد از حرف M بگذاریم ولی دلیل ما برای این نوع نامگذاری کردن واضح است اولاً حرف n که اولین حرف بعد از تعریف نام ترانزیستور است این مفهوم را می رساند که این ترانزیستور از نوع nmos است و شماره ۱ که بعد از آن می آید به این معنا است که یک ترانزیستور nmos بیشتر نداریم و اگر تعداد ترانزیستورهای nmos بیشتر از این باشد می توانیم به ترتیب شماره پیش برویم و یا اگر ترانزیستوری در یک جای خاصی در مدار قرار داست می توانیم اسم آن را به دلخواه تغییر دهیم. باز هم تاکید می کنیم که هیچ محدودیتی در اسم گذاری ها وجود ندارد و شما هر طور که راحت هستید عناصر و گره ها را اسم گذاری کنید. بعد از نام گذاری اولین ترانزیستور حال باید تکلیف گره هایی را که ترانزیستور بین آنها واقع شده است را مشخص کنیم. و ترانزیستور را به ترتیب درین ، گیت و سورس گره بندی کنیم مثلاً همین ترانزیستور را که بررسی کنیم خواهیم دید که درین آن به گره OUT ، گیت آن به گره IN و سورس آن به زمین متصل است. چهارمین گره مربوط به اتصال بدنه یا بالک می باشد که آن را به زمین وصل می کنیم. بعد از تعریف المان ترانزیستور حال باید نوع ترانزیستور به کار رفته mn18 ، طول و عرض ترانزیستور به ترتیب W , L را مشخص کنیم. که در اینجا طول را برابر مینیمم مقداری که پروسه اجازه می دهد قرار دادیم. و اینجا از پروسه ۰٫۱۸um میکرو متر استفاده کردیم پس مینیمم مقدار طول کانال را برابر L=0.18u قرار می دهیم و عرض ترانزیستور nmos را برابر یک میکرو متر انتخاب می کنیم W=1u. هیمن مراحل را برای تعریف ترانزیستور pmos هم تکرار می کنیم.

نکته۴: بدنه ترانزیستورهای nmos را به کمترین ولتاژ مدار یعنی زمین و بدنه ترانزیستورهای pmos را به بالاترین ولتاژ مدار یعنی VDDمتصل می کنیم. البته این موارد همیشگی نیست و در مدارات آنالوگ گاهاً پیش می آید که بدنه را به ولتاژهایی غیر از منبع تغذیه و زمین وصل کنیم. ولی برای طراحی مدارت دیجیتال همیشه این مورد را لحاظ خواهیم کرد.

نکته۵: عبارات mn18 , mp18 مربوط به تکنولوژی استفاده شده برای ترانزیستورهای ماسفت می باشد و هر تکنولوژی فایلی بسته به کتابخانه به کار رفته در آن عبارات نوشتاری متفاوتی خواهد داشت مثلاً بعضی از کتابخانه ها برای تعریف ترانزیستور از عبارات nmos , pmos و یا NCH,PCH استفاده می کنند که با باز کردن فایل کتابخانه مورد نظر می توان دید که نحوه تعریف ترانزیستور در آن چه گونه است.

سطر سوم مربوط به تعریف خازن می باشد که خازن CL بین گره های OUT و زمین قرار گرفته و ظرفیت آن یک پیکو فاراد است.

سطر چهارم مربوط به تعریف ولتاژ تغذیه VDD است که ما اینجا نام ولتاژ تغذیه را با گره مربوط به آن یکی در نظر گرفتیم و در ادامه مقدار آن را ۱٫۸ ولت قرار دادیم و این یعنی یک ولتاژ جریان مستقیم به نام VDD  بین گره  VDD و زمین قرار گرفته است که مقدار آن ۱٫۸ ولت می باشد نوشتن یا ننوشتن عبارت DC تاثیری ندارد و اگر ننویسیم خود نرم افزار متوجه خواهد شد که ولتاژ مورد نظر یک ولتاژ جریان مستقیم (DC) است.

سطر پنجم تعریف منبع ولتاژ ورودی است که ما آن را به صورت یک منبع ولتاژ پالسی تعریف می کنیم که بین صفر و ۱٫۸ ولت (ولتاژ تغذیه) در نوسان بوده ، تاخیر شروع آن صفر ، زمان صعود و نزول آن (trising , tfalling) آن برابر ۱ns نانو ثانیه ، زمان بالا بودن آن ۱۰us میکرو ثانیه و دروه تناوب آن ۲۰us میکرو ثانیه است.

بعد از تعریف المان های مدار حال نوبت به نوشتن دستورات است. اولین دستوری که می نویسیم دستور lib. است که با آن کتابخانه را تعریف می کنیم مثلاً در این مورد خاص که کتابخانه ۰٫۱۸um شرکت چینی CSMC را برای شبیه سازی ها در نظر گرفتیم اسم فایل کتابخانه را بعد از دستور lib. داخل جفت کوتیشن گذاشته و در انتها گوشه های پروسه را انتخاب خواهیم کرد که در مقالات آتی به تفصیل در مورد گوشه های پروسه بحث خواهیم نمود. اینجا ما حالت معمولی (typical) ترانزیستور را انتخاب می کنیم و در انتهای دستور عبارت tt را تایپ خواهیم کرد.

lib     ” hm1816m020233v11.lib” tt.

نکته۶: در نوشتن دستور lib. این نکته را به خاطر بسپارید که نت لیست را در هر پوشه ای که ذخیره کرده اید باید حتما فایل کتابخانه را هم در همانجا داشته باشیم در غیر این صورت می توانیم آدرس جایی که فایل کتابخانه را در آن تعریف کرده ایم قبل از اسم فایل مشخص کنیم.

بعد از تعریف کتابخانه حال باید تجزیه و تحلیل مد نظرمان را مشخص کنیم در اینجا ما می خواهیم تحلیل گذار (transient) مدار را ببینیم برای همین از دستور tran. استفاده می کنیم.

tran  ۱p     ۱۰۰u.

بعد از نوشتن tran. استپهای شبیه سازی را مشخص خواهیم نمود که ما اینجا ۱ps پیکو ثانیه در نظر می گیریم و در انتها زمان شبیه سازی را تعیین می کنیم که ما زمان ۱۰۰us ثانیه را با توجه به دوره تناوب ورودی که آن را ۲۰ میکرو ثانیه در نظر گرفتیم قرار خواهیم داد. این دستور به نرم افزار می گوید که مدار را از زمان صفر تا صد میکرو ثانیه با استپهای یک پیکو ثانیه شبیه سازی کند.

دستور بعدی که به کار خواهیم گرفت دستور option post. است که تاثیری در نحوه شبیه سازی گیت not ندارد اما باعث می شود که نتایج شبیه سازی به لحاظ گرافیکی بهتر دیده شود.

در انتهای برنامه دستور end. را خواهیم نوشت. مساله مهمی که باید در نظر داشت این است که این دستور پایان نت لیست را اعلام  می کند و بعد از این هر چیزی بنویسیم بی تاثیر است اما بقیه دستورها و حتی تعریف المان ها ترتیب نوشتاری شان هیچ تاثیری در روند کار ندارد و به سلیقه افراد بستگی دارد مثلاً اینکه اول دستورات را بنویسیم و بعد المان ها را تعریف کنیم یا بلعکس تفاوتی ندارد. ولی ما به این دلیل این نوع نوشتن را توصیه می کنیم که یک حالت استانداردی باشد تا بعداً به هنگام عیب یابی در مدارهای پیچیده تر دچار سردرگمی نشویم.

بعد از نوشتن نت لیست اینورتر باید آن را با پسوند sp. و با نام not ذخیره می کنیم و شبیه سازی گیت not را توسط نرم افزار Hspice انجام خواهیم داد. اگر همه مراحل را به درستی رفته باشیم هیچ خطایی رخ نخواهد داد. برای اینکه بدانیم شبیه سازی به درستی انجام شده است یا خیر بعد از زدن دکمه Simulate اگر هیچ اروری نداشته باشیم در بخش EditLL که فایل lis. در آن قرار دارد در انتهای این فایل با عبارت job concluded  که به معنی به نتیجه رسیدن شبیه سازی است روبه رو خواهیم شد و اگر فایل ارور داشت انتهای همین فایل lis. عبارت job aborted  به معنای شکست کار است را نشان خواهد داد. این فایل اطلاعات با بسیار ارزشی را در خود دارد که در جلسات آتی با مثالهای کاربردی در مورد آن بحث خواهیم کرد.

شکل زیر نت لیست کامل گیت not را در محیط EmEditor نشان می دهد.

 تجزیه و تحلیل نتایج شبیه سازی گیت not با استفاده از نرم افزار Spice explorer

بعد از اتمام شبیه سازی گیت not یک سری فایلهای اضافه در پوشه ای که نت لیستمان در آن قرار دارد ایجاد خواهد شد که یکی از آنها را (فایل lis.) را قبلاً بررسی کردیم. فایل tr0 اطلاعات مربوط به تحلیل گذرا (transient) را در خود نگه می دارد که می توانیم اطلاعات موجود درون آن را با ابزارهای موجود مشاهده کنیم. وارد محیط Spice Explorer می شویم و فایل tr0 را با زدن گزینه Import waveform File درون ریزی می کنیم. تمامی گره های مدار به علاوه جریان منبع تغذیه VDD و ورودی را در داخل فایلtr0  خواهیم داشت که با دو بار کلیک کردن بر روی هر کدام از آنها می توانیم آن را مشاهده کنیم. اگر ولتاژ گره های IN و OUT را وارد صفحه نمایش نرم افزار کنیم می بینیم که شبیه سازی گیت not با آنچه ما انتظارش را داشتیم دقیقاً همخوانی دارد. و خروجی معکوس ورودی ما خواهد بود.

نتیجه شبیه سازی اینورتر

نکته۷: می توانیم از خود محیط Hspice هم وارد نرم افزار Spice explorer شویم که در این صورت نیازی به درون ریزی فایل tr0 نخواهد بود و به صورت اتوماتیک درون ریزی شده است.

اگر این مقاله از سایت استاد راهنما مفید بود لطفاً آنرا در شبکه های اجتماعی به اشتراک بگذارید.

Telegram
WhatsApp
Facebook
Twitter
LinkedIn

ارسال به دوستان

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *