دسترسی سریع به بخش های قبلی :
مقدمه
FPGA یا Field-Programmable Gate Array ( به معنای آرایه گیت های برنامه پذیر ) یک مدار مجتمع است که در ابتدا کاملا خالی و بدون مصرف هستند اما با برنامه ریزی صحیح آنان میتوان مدارهای دیجیتال دلخواه را درون آن بوجود آورد. FPGA ها که جزو دسته چیپ های دیجیتال قابل برنامه ریزی یا PLD ( مخفف Programmable Logic Device ) قرار می گیرند ، پس از اتمام فرآیند تولید ، مطابق نیاز طراح برنامه ریزی شده و انواع سیستم های دیجیتال را بوجود آورد. از مزیت های اصلی چیپ های FPGA میتوان به سرعت بالای و همزمانی اجرای عملیات های منطقی مختلف اشاره کرد. به همین علت چیپ های FPGA در صنایع نظامی، پزشکی، ماهواره ای و خودروسازی کاربرد زیادی دارد و میتواند حجم بزرگی از پردازش ها را در زمان کوتاهی انجام دهد. ضمن اینکه این چیپ ها قابل برنامه ریزی بوده و مدار دیجیتال درونی آن ها به راحتی تغییر می کند. در این بخش اصول اولیه الکترونیک دیجیتال را یادآوری می کنیم. اصولی که کمک زیادی به فهم عمیق از FPGA می کند.
تاریخچه بوجود آمدن دیجیتال
تاریخچه اولین سیستم های الکتریکی دیجیتال به سال 1866 بر میگردد. جایی که اولین مدارهای الکتریکی سوئیچی به نام electrical switching circuits بوجود آمد که با استفاده از سوئیچ ها و رله ها و با منطق 0 و 1 کار می کردند. اما اولین استفاده مدرن از مدارهای منطقی دیجیتال الکتریکی به جنگ جهانی دوم و سال 1924 بر می گردد جایی که اولین گیت منطقی یعنی گیت AND ساخته شد. بوجود آمدن مدارهای منطقی دیجیتال الکترونیکی به صورت مدرن امروزی به زمان بعد از اختراع ترانزیستور یعنی سال 1947 بر میگردد. تا قبل از اختراع ترانزیستور مدارهای منطقی به صورت آنالوگ و مکانیکی وجود داشتند. حتی کامپیوترها هم کامپیوترهای آنالوگی بودند که متحمل هزینه های بسیار زیادی بودند. با اختراع ترانزیستور ، الکترونیک و مهندسی الکترونیک شکل گرفت و استفاده از سیستم های منطقی دیجیتال با هزینه بسیار کمتر از آنالوگ رایج شد. تصویرمعروف زیر زیر آقایان William Shockley ، John Bardeen و Walter Brattain مخترعین ترانزیستور را در آزمایشگاه Bell در شهر New Jersey آمریکا نشان می دهد.
برتری سیستمهای دیجیتال نسبت به سیستمهای آنالوگ
امروزه استفاده از سیستم های الکترونیکی دیجیتال در همه ابعاد گسترش یافته است و بر سیستم های مبتنی بر طراحی آنالوگ برتری دارد. برتری ویژهی سیستمهای دیجیتال بر آنالوگ ، امروزه باعث شده تمایل بسیاری برای طراحی بر پایهی سیستمهای دیجیتال بهوجود آید. در یک سیستم دیجیتال تمامی داده ها و اطلاعات به صورت کدهای ۰ یا ۱ نمایش ، پردازش و ذخیره می شود که باعث می شود مزیت های زیر برای این سیستمها بوجود آید.
- قابل برنامه ریزی بودن : به سادگی برای اجرای هر الگوریتمی قابل تغییر و برنامه ریزی هستند.
- سرعت بالاتر : سرعت انجام پردازش های گوناگون بسیار بیشتر و قوی تر است.
- دقت بیشتر و کاهش خطا : سیگنال های دیجیتال دارای دقت بالاتر هستند و در نتیجه امکان خطای پردازش کمتری دارند.
- حجم کمتر و توان پایین تر : سیستم های دیجیتال روز به روز به سمت کوچکتر شدن و توان مصرفی پایین تر پیش می روند.
گر چه کامپیوتر مثال بارزی از یک سیستم دیجیتال است اما سیستمهای بسیار دیگری نیز مبتنی بر طراحی دیجیتال وجود دارند مانند ساعت های دیجیتال ، ماشین حساب ، گوشی های تلفن همراه و تبلت ها و …
سطوح طراحی سیستم های دیجیتال
سیستم های دیجیتال را می توان در سطوح مختلف طراحی و پیاده سازی نمود. از بالاترین سطح که تنها رفتار و عملکرد یک سیستم را شامل می شود و هیچ تشریحی از سخت افزار ذکر نشده است تا سطوحی که ساختار فیزیکی مواد سازنده آنها را نیز مورد مطالعه قرار می دهد. به طور کلی سطوح طراحی یک سیستم دیجیتال به صورت زیر است :
- سطح رفتار ( Structure Level ) : بالاترین سطح طراحی دیجیتال است که در آن رفتار هر سیستم بدون مشخص بودن جزئیات سخت افزاری توصیف می گردد. در این سطح هر سیستم از به هم پیوستن یک یا چند سیستم دیگر که توسط سیگنال های دیجیتال با هم ارتباط دارند توصیف می شود. به این سطح System Level نیز گفته می شود زیرا در یک سیستم نیز ، ورودی ها ، خروجی ها و رفتار بین آن ها اهمیت دارد.
- سطح ثبات ( Register Level ) : در این سطح به یک سیستم دیجیتال به صورت مجموعه ای از ماژول های ترکیبی و ترتیبی نظاره می شود که سیگنال های دیجیتال را با انتقال بین ثبات ها (رجیسترها) پردازش می کند . در این سطح طراحی ، از سطح توصیف رفتار یک سیستم ، پایین تر آمده و به توصیف ساختار داخلی به صورت ماژولار می پردازیم. از این رو به این سطح Module Level نیز گفته می شود.
- سطح گیت ( Gate Level ) : گیت ها کوچکترین واحد منطقی یک سخت افزار دیجیتال هستند که عملکرد های مخصوص به خود را دارند و از به هم پیوستن آنها ، مدارات بزرگتر شامل انواع ماژول های ترکیبی و ترتیبی شکل می گیرند . بنابراین در این سطح نیز به توصیف رفتارهای جزئی تری از یک سخت افزار دیجیتال می پردازیم .
- سطح مدار ( Circuit Level ) : در این سطح یک سخت افزار دیجیتال به صورت مجموعه ای از ترانزیستورها درون مدار در نظر گرفته می شود . در این سطح ، طراحی پایین تر از سطح گیت آمده و رفتار سیستم توسط مداری ترانزیستوری بیان می شود .
- سطح ترانزیستور ( Transistor Level ) : پایین ترین سطح طراحی مدار می باشد که بر اساس تعیین چگونگی ساختار فیزیکی یک ترانزیستور سیستم را توصیف می کند به طوری که از به هم پیوستن ترانزیستورها ، مدار و گیت ساخته می شود . بنابراین در این سطح کوچکترین جزئیات طراحی یک ترانزیستور در نظر گرفته می شود. به این سطح Device Level نیز گفته می شود که منظور از دیوایس همان ترانزیستور است.
طراحی دیجیتال در سطح ترانزیستور
امروزه ترانزیستور به عنوان مهمترین قطعه الکترونیکی شناخته شده است و جزو اصلی سازنده سیستم های دیجیتال می باشد به طوری که یک سیستم دیجیتال از ترکیب تعداد بسیار زیادی ترانزیستور با هم بوجود می آید. ترانزیستور ها شامل دو تکنولوژی BJT ( مخفف Bipolar Junction Transistor به معنای ترانزیستور دوقطبی پیوندی ) و FET ( مخفف Field Effect Transistor به معنی ترانزیستور اثر میدانی ) می باشند. هر یک از این دو تکنولوژی مزایا و کاربردهای خود را دارد. BJT ها کم هزینه تر ، حجم بیشتر ، توان مصرفی بالاتر و نیز سرعت سوئیچ شدن بالاتر نسبت به FET ها دارند اما امروزه در مدارهای دیجیتال اغلب از تکنولوژی FET استفاده می شود. علت ارجحیت FET این است که میتواند در حجم های بسیار کم در حد نانومتر کنار هم قرار گیرد و این مسئله به طرز چشمگیری باعث کاهش توان مصرفی و حجم نهایی مدار و در نتیجه افزایش کارایی مدار می گردد. ترانزیستورهای FET خود به دو نوع JFET ( مخفف junction gate FET به معنی ترانزیستور اثر میدانی با گیت پیوندی ) و MOSFET ( مخفف metal–oxide–semiconductor FET به معنی ترانزیستور اثر میدانی با نیمه هادی و اکسید فلز ) تقسیم بندی می گردد. در شکل زیر انواع ترانزیستورها را مشاهده می کنید.
در شکل زیر نماد مداری ترانزیستورهای BJT و MOSFET را مشاهده می کنید. به علت اینکه از ترانزیستورهای JFET کمتر استفاده می گردد از آوردن آن صرفنظر می گردد.
ترانزیستورهای BJT دارای دو نوع NPN یا PNP هستند در حالی که ترانزیستورهای MOSFET دارای دو نوع N-MOS یا P-MOS هستند. ترانزیستورهای BJT دارای سه پایه به نام های Base ، Collector و Emmiter هستند در حالی که ترانزیستورهای FET دارای سه پایه به نام های Gate ، Drain و Source هستند.
برای آشنایی بیشتر با ترانزیستورهای BJT پیشنهاد می شود مقاله زیر را بخوانید :
هر دو ترانزیستور BJT و FET دارای 4 ناحیه عملکرد به شرح زیر هستند.
1- ناحیه فعال مستقیم ( Forward Active )
2- ناحیه فعال معکوس ( Reverse Active )
3- ناحیه قطع ( Cut-Off )
4- ناحیه اشباع ( Saturation )
از ترانزیستور در ناحیه های فعال ( فعال مستقیم و معکوس ) در مدارهای آنالوگ استفاده می گردد و در مدارات دیجیتال از ترانزیستور در نواحی قطع ( منطق 0 یا Low ) و اشباع ( منطق 1 یا High ) استفاده می شود. عملکرد ترانزیستور در این نواحی به صورت سوئیچ قطع و وصل ( ۰ و ۱ ) می باشد. بدین معنی که میتوان ترانزیستور را با یک کلید قطع/وصل جایگزین نمود. شکل زیر این موضوع را نشان می دهد.
همانطور که در شکل فوق مشاهده می کنید، از طریق بیس ( گیت ) میتوان سوئیچی که بین امیتر ( سورس ) و کلکتور ( درین ) وجود دارد را کنترل کرد، به طوری که وقتی به بیس ( گیت ) ولتاژ High متصل شود ، سوئیچ وصل شده و اتصال بین امیتر ( سورس ) و کلکتور ( درین ) برقرار می گردد و زمانی که به بیس ( گیت ) ولتاژ Low متصل شود ، سوئیچ قطع شده و اتصال بین امیتر ( سورس ) و کلکتور ( درین ) قطع می گردد.
از به هم پیوستن آنها سیگنال های دیجیتال شکل می گیرند. سیگنال دیجیتال مجموعه ای از صفرها و یک های منطقی است که در واحد زمان از یک سیم ( هادی جریان ) عبور می کند. بنابراین یک سیگنال دیجیتال در بردارنده اطلاعات به صورت کدهای ۰ و ۱ می باشد.
در این سطح طراحی به تمامی جزئیات مربوط به فیزیک ترانزیستور از جمله ابعاد ترانزیستور و تکنولوژی ساخت آن توجه بسیاری می شود. تکنولوژی های ساخت ترانزیستور در جهت طراحی ترانزیستور با سرعت بالاتر ، توان مصرفی کمتر ، بسته بندی کم حجم تر و قیمت تمام شده پایین تر پیش می رود. برای طراحی در این سطح مسیر کاملا متفاوتی نسبت به سطوح دیگر وجود دارد چرا که این سطح نیازمند دانش عمیق فیزیک الکترونیک و طراحی مدارات مجتمع دیجیتال می باشد. شکل زیر یک ترانزیستور FET طراحی شده را نشان می دهد.
همانطور که در شکل فوق نیز مشاهده می شود ، در این سطح از طراحی ، جنس مواد به کار رفته ، نوع ناخالصی استفاده شده ، پارامترهایی نظیر حجم بیس ، عرض کانال و… مورد توجه طراح است. این پارامتر ها تاثیر مستقیم روی پارامترهای کلی تر نظیر حداکثر فرکانس سوئیچینگ ، توان مصرفی و … می گردد.
طراحی دیجیتال در سطح مدار
در این سطح از طراحی ، فراتر از یک ترانزیستور عمل می شود به طوری که از به هم پیوستن چند المان الکترونیکی یک مدار تشکیل می گردد. این مدار میتواند در بستری از سیلیکون به صورت ترانزیستورهای متصل شده از درون ( Interconnected Transistor ) تشکیل گردد و تشکیل یک سلول استاندارد دهد.
تکنولوژی هایی که در این سطح مورد استفاده قرار می گیرد شامل چهار دسته زیر می باشد :
1- Bipolar : که مبتنی بر ترانزیستورهای BJT می باشد.
2- MOS : که مبتنی بر ترانزیستورهای MOSFET می باشد.
3- CMOS : که مبتنی بر جفت ترانزیستورهای MOSFET می باشد یعنی در این مدارها همواره به تعداد زوج MOSFET وجود دارد.
4- BiCMOS : که مبتنی بر ترکیب ترانزیستور BJT و CMOS می باشد. و به علت اینکه ترانزیستورهای BJT و MOSFET نقاط ضعف یکدیگر را می پوشانند ، قوی ترین تکنولوژی است.
برای مثال مدار CMOS زیر را در نظر بگیرید که معادل آن در Bipolar نیز رسم شده است.
در این سطح از طراحی ، مدار فوق به صورت یک سلول طراحی می گردد که در شکل زیر آن را مشاهده می کنید.
تکنولوژی CMOS ( مخفف Complementary MOS ) از معروفترین تکنولوژی هایی است که در انواع IC ها نظیر ریزپردازنده ها ، میکروکنترلرها ، حافظه های RAM و … مورد استفاده قرار می گیرند. در این تکنولوژی از زوج ترانزیستورهای MOSFET در کنار هم و به عنوان مکمل یکدیگر استفاده می شود. دو خصوصیت اصلی این تکنولوژی یکی مقاومت در برابر نویز و دیگری مصرف جریان پایین آن می باشد. چرا که به علت استفاده از دو ترانزیستور MOSFET در کنار یکدیگر ، مدار تنها وقتی که در حال تغییر حال بین 0 یا 1 است ، جریان می کشد و در زمان ثابت بودن حالت جریان تقریبا صفر است. مزیت دیگر این تکنولوژی ساخت آی سی های VLSI ( مخفف Very Large Scale Integrated Circuit به معنای مدارات با فشردگی بسیار زیاد ) در ابعاد بسیار کوچک ( میکرو و نانو ) می باشد.
طراحی دیجیتال در سطح گیت
گیت های منطقی ( Logic gate ) دسته ای مدارهای سطح بالاتر از ترانزیستور هستند. بدین معنی که درون این دسته از مدارات ترانزیستور وجود دارد. گیت های منطقی روی یک یا دو ورودی منطقی ، عملیاتی منطقی را انجام میدهد و سرانجام یک خروجی منطقی را تولید میکند. گیتهای منطقی ممکن است به صورت یک مدار با اجزای الکترونیکی ساخته شده باشند یا بصورت یک آی سی درآمده باشند. در درون این آی سی ها علاوه بر ترانزیستور ممکن است تعدادی دیود ، ترانزیستور ، خازن و مقاومت نیز وجود داشته باشد. گیتهای منطقی معروف و پرکاربرد عبارتند از : AND , OR , NOT , Buffer , XOR , XNOR , NAND , NOR که در شکل زیر نماد مداری همه آنها را مشاهده می کنید.
هر یک از این گیتهای منطقی یک سمبل ( نماد ) و یک کارکرد خاص دارند. طرز کار آنها به این صورت است که هر کدام یک یا چند پایه ورودی و یک پایه خروجی دارند ؛ با توجه به اینکه وضعیت ورودی ها به چه صورتی باشد ، خروجی وضعیت خاصی می یابد و همواره رابطه بین ورودی ها و خروجی یک رابطه منطقی است. برای هر گیت منطقی یک جدول وجود دارد که رابطه بین ورودی ها و خروجی در آن نمایش داده شده. مخصوصا گیتهای منطقی که بصورت آی سی در بازار موجودند دارای جداولی به نام Truth Table (جدول درستی) در دیتاشیت خود هستند که در آنها نشان داده شده که در هر وضعیت ورودی ها، خروجی چگونه خواهد بود. شکل زیر نام ، نماد ، رابطه منطقی بین ورودی با خروجی و جدول درستی همه این گیت ها را نشان می دهد.
درون هر یک از این گیت ها مداری ترانزیستوری وجود دارد. این مدار میتواند یکی از تکنولوژی های Bipolar ، MOS ، CMOS یا BiCMOS باشد. برای مثال ساده ترین مدار معادل دو گیت Not و Buffer در تکنولوژی Bipolar در شکل زیر نشان داده شده است.
طراحی دیجیتال در سطح رجیستر
در این سطح ، یک سیستم دیجیتال از به هم پیوستن مدارهای منطقی مبتنی بر گیت توصیف می گردد. از به هم پیوستن گیت ها ، مدارهای بزرگتری موسوم به RTL ( مخفف Register Transfer Level به معنای سطح انتقال رجیستری ) تشکیل می شود. این مدارها به دو دسته کلی زیر تقسیم بندی می گردد.
- مدارهای Combination یا ترکیبی (آسنکرون) مانند انکودر ( Encoder ) ، دیکودر ( Decoder ) ، مالتی پلکسر ( Multiplexer ) و…
- مدارهای Sequention یا ترتیبی (سنکرون) مانند لچ ( Latch ) ، فلیپ فلاپ ( Flip-Flop ) و …
در مدارهای ترتیبی یک سیگنال مرجع وجود دارد که عملکرد مدار به آن وابسته است و مدار نسبت به تغییرات آن حساسیت دارد به طوری که مدارهای ترتیبی فقط به سیگنال های ورودی که روی زمان خاصی می رسند، پاسخ می دهند. به این پالس مرجع پالس ساعت (Clock) گویند .
در مدارهای ترکیبی هیچ گونه سیگنالی به عنوان تعیین پذیرش ورودی ندارند و همه ورودیها به طور یکسان می توانند بر مدار اثر بگذارند. در این مدارها لازم است که تمامی تغییرات در سیگنالهای ذخیره شده داخلی پیگیری شود.
شکل زیر یک نمونه از سیستم دیجیتال طراحی شده در این سطح را نشان می دهد.
طراحی دیجیتال در سطح سیستم
در این سطح که بالاترین سطح طراحی دیجیتال می باشد ، یک سیستم دیجیتال به صورت مجموعه ای از گیت ها ، رجیسترها و بلوک های رفتاری توصیف می گردد. در بلوک رفتاری ، رابطه بین ورودی ها و خروجی ها به صورت رابطه منطقی رفتاری ( Behavioral ) توصیف می گردد و به اجزای ترکیبی یا ترتیبی درون آن بلوک کاری نداریم. شکل زیر شماتیک مدار طراحی شده نمونه را در سطح سیستم نشان می دهد.
همانطور که در تصویر فوق مشاهده می شود، علاوه بر گیت ، رجیستر ، جمع کننده و مالتی پلکسر بلوک هایی وجود دارد که به جز ورودی ها و خروجی های آن درباره درون آن ها اطلاعاتی نداریم. توصیف رفتاری یک بلوک توسط یکی از زبان های برنامه نویسی توصیف سخت افزار یا HDL ( مخفف Hardware Description Language ) نظیر زبان های برنامه نویسی Verilog ، VHDL ، System C و… انجام می گیرد.
برای آشنایی بیشتر با زبان های توصیف سخت افزار پیشنهاد می شود مقاله زیر را مطالعه نمایید.
مقایسه تفاوت های بین دو زبان Verilog و VHDL
انواع پلتفورم های طراحی دیجیتال
SoC : مخفف System On Chip به معنای سیستم روی چیپ می باشد. این پلتفورم شامل سیستم هایی است که دارای مدارهای مجتمع نظیر پردازنده ها ، شتاب دهنده ها و کنترل کننده ها هستند. میکروکنترلر، میکروپرسسور، DSP ، GPU و… جزو این دسته هستند.
ASIC : مخفف Application Specific Integrated Circuit به معنای مدارهای مجتمع با کاربرد خاص می باشد. این پلتفورم همانطور که از نام آن پیداست به منظور انجام عملیات خاص، طراحی و ساخته می شود ولی ساخت آن در صورت تولید کم ، از دیدگاه اقتصادی قابل توجیه نیست. در این پلتفورم ، مسیر طراحی طولانی تر ، پرهزینه تر ولی با کیفیت بیشتر از سایر پلتفورم ها می باشد. در این پلتفورم در صورت نیاز به ایجاد یک تغییر کوچک در طراحی، باید پروسه زمان بر و پر هزینه فوق مجدد سپری شود.
ASSP : مخفف Application-specific standard parts به معنای مدارهای استاندارد با کاربرد خاص می باشد. طراحی و ساخت این پلتفورم دقیقا مشابه ASIC می باشد با این تفاوت که در سطح جهانی استاندارد شده است. برای مثال کنترلرهای USB و Ethernet جزو این دسته می باشد.
PLD : مخفف Programmable Logic Device به معنای تراشه های قابل برنامه ریزی می باشد. FPGA ها جزو این دسته هستند.
نکته 1 : برای طراحی یک ASIC ابتدا آن را با استفاده از FPGA نمونه سازی میکنند تا از صحت عملکرد آن مطمئن شوند سپس اقدام به ساخت آن میکنند.
نکته 2 : با تراشه های FPGA میتوان سیستم های دیجیتال را در سه سطح بالایی ( یعنی گیت ، رجیستر و سیستم ) طراحی و توصیف کرد در حالی که با استفاده از تراشه های ASIC میتوان یک سیستم دیجیتال را در کلیه سطوح طراحی و توصیف کرد.
نکته 3 : تراشه های جدیدی موسوم به FPGA-SoC روانه بازار شده است که ترکیبی از FPGA های قابل برنامه ریزی و Soc هایی نظیر پردازنده ARM هستند.
برای رفتن به بخش بعدی آموزش FPGA روی تصویر زیر کلیک کنید
در صورتی که این مطلب مورد پسندتان واقع شد لایک و اشتراک گذاری فراموش نشود
دیدگاه (3)
سلام.با تشکر از سایت بسیار خوب و مطالب مفیدتون.
فقط اگع میشه پی دی اف مطالب رو با ارم خود سایت در اختیارمون بذارید ک در حالت افلاین هم مطالعه کنیم
سلام ممنون از لطفتون ، حتما این کار انجام خواهد شد و در کانال تلگرام قرار خواهد گرفت
دمت گرم خیلی مردی