شبیه سازی و پیاده سازی مدار سخت افزار پایه به کمک VHDL .
در این پروژه یک مدار سخت افزاری با 17 ورودی و 2 خروجی از نوع qit کد نویسی و شبیه سازی شده و برای پیکربندی روی چیپ های FPGA یا CPLD آماده شده است .
کد نویسی این مدار بوسیله زبان VHDL و شیه سازی آن بوسیله نرم افزار model sim صورت گرفته است . مراحل آنالیز و سنتز قطعه کد های VHDL توسط دو برنامه foundation 2.1و FPGA express از شرکت xilinx انجام شده است .
در صفحات بعدی این مقاله هر قسمت از روال فوق را که عبارت اند از : کد نویسی اولیه و مشکلات کامپایل ، آنالیز قطعه کدهای غیر استاندارد ، استاندارد کردن قطعه کدها و سنتز آنها می باشد . بطور کامل توضیح داده ام . همچنین در پایان در قسمت اجرایی نحوه تولید فایل باینری نهایی جهت برنامه ریزی روی چیپ XC4005XLPC84 که یک FPGA از خانواده XC4000XL است را مشاهده می کنید .
امید دارم با مطالعه این مقاله به اطلاعات شما در این زمینه افزوده شود .
مقدمه
طی چند دهه اخیر ،مدارهای الکترونیکی پیشرفت قابل ملاحظه ای داشته اند . با پیچیده تر شدن هرچه بیشتر این مدارها ،نیاز به یافتن روشهایی است که سیستمها را بتوان با مجتمع سازی و جزئیات بیشتر طراحی و پیاده سازی نمود. قطعات قابل برنامه ریزی و FPGA ها ،آی سی هایی هستند که به تبع این پیشرفتها به بازار عرضه شده اند . هزینه ساخت کم و جزئیات زیاد این آی سی ها نسبت به حجم آنها،همچنین قابلیت برنامه ریزی شدن این قطعات بوسیله برنامه های نرم افزاری معمول و نرم افزارهای طراحی شماتیک باعث افزایش کاربرد این قطعات شده است . چنین پیش بینی می شود که با وجود این پیشرفت،آینده در تسخیر این قطعات قرار گیرد تا جائیکه بتوان بوسیله آنها تمامی یک سیستم پیچیده را به سادگی طراحی و اجرا نمود .
در این میان زبان توصیف سخت افزاری VHDL نقش مهمی را در طراحی و شبیه سازی مدارات سخت افزاری به عهده دارد . در این قسمت لازم می دانم تا توضیحی اجمالی از نحوه عملکرد و مزایای این زبان به شما ارائه کنم .
مروری بر VHDL
VHDLروش توسعه یافتهای از توصیف رفتار سیستمهای منطقی به وسیله روابط منطقی است . این زبان بسیاری از مشخصه های روابط منطقی و روابط حالت را در درون خود دارد .
زبان VHDL امروزه به عنوان استاندارد صنعتی MIL STD 454L معرفی شده است و تمامی طرحهای ASIC مربوط به دپارتمان دفاع ایالت متحده آمریکا باید طبق این زبان استاندارد نوشته شوند .
این زبان به عنوان قسمتی از پروژه VHSIC (مدارهای مجتمع با سرعت خیلی بالا ) ارائه شده است و به وسیله آن می توان ASICهای پیچیده را بدون مراجعه به تکنولوژی مشخصی ،تعریف و شبیه سازی نمود . زمانی که یک مدار به وسیله این زبان تعریف می گردد . می توان آنرا به هر پروسه منطقی و یا بر روی ماژولهای طراحی شده توسط هریک از تولیدکننده های ابزارهای منطقی انتقال داد .
(VHSIC HDL) VHDL یک سیستم منطقی را بصورت ساختار بالا باپائین توصیف می کند . برای بدست آوردن توصیفی از یک سیستم به صورت ساختار بالا به پایین ،سیستم را به صورت مجموعه ای از زیرسیستمها تقسیم می کنیم که بوسیله یک سری رابطه به هم متصل می گردند هریک از این زیرسیستمهای بالایی را می توان به توابع و زیرسیستمهای کوچکتر تقسیم کرد . این عمل همچنان ادامه می یابد تا به پائین ترین سطح از سیستم دست بیابیم که در این سطح هریک از سیستم ها را می توان بوسیله گیتها و ماژولهای آماده دیگر طراحی نمود .
به این ترتیب ، بدلیل آنکه هریک از طبقات این ساختار منطقی به صورت یکتا مشخص شدهاند ،هریک از آنها را میتوان به تنهایی شبیه سازی نمود و تابع منطقی اجرا شده بوسیله آنها را آزمایش کرده و خطاهای احتمالی را برطرف نمود . ابتدا صحت عملکرد پایین ترین طبقه این سیستم را آزمایش کرده و با ترکیب زیر سیستمهای پایین تر به زیرسیستمهای پیچیده تر می رسیم تا جائیکه به طرح سیستم موردنظر که در بالاترین طبقه این ساختار وجود دارد برسیم . پس از انجام این عمل ، به مرحله ترکیب می رسیم که در آن کل طرح را پیاده کرده وسپس برای بدست آوردن پارامترهای زمانی آن ،عمل شبیه سازی را انجام می دهیم .
این طرح سلسله مراتبی به طراح اجازه می دهد تا بدون مشخص کردن نوع تکنولوژی ابزارهای استفاده شونده و یا قسمت کردن طرح به ابزارهای مختلف ،بتواند سیستم را به طور کامل تعریف نماید . به این ترتیب ، می توان یک سیستم کامل را بدون مشخص کردن یک ابزار خاص تعریف و آزمایش کرد . ماژولها به صورت جداگانه طراحی می شوند و می توان از آنها در طرحهای آینده نیز استفاده نمود . به عبارت دیگر برای هر طرح کتابخانه ای از توابع وجود دارد که می توان آنها را برای استفاده آینده ذخیره کرد. در این پروژه نیز از توابع و جداول و کتابخانه های مجتمع تحت عنوان basic-utility استفاده شده است .
در زمان حاضر تعدادی از زبانهای توصیف کننده مدارات سخت افزاری مانندVerilog , TI – HDL ,TEGAS , CONLAN , CDL , AHDL وجود دارند که در این میان زبانهای , AHDL,Verilog ABEL از کاربرد و اهمیت بیشتری برخوردارهستند . با تحقیقاتی که تاکنون انجام داده ام ، از نظر من زبان VHDL قویترین و پر کاربردترین زبانهای توصیفگر سخت افزار است که امکانات زیادی را به کاربر می دهد تا مدار سخت افزاری مورد نظر خود را هر چه که پیچیده باشد بواسطه این زبان توصیف کرده و کد نویسی کند . البته کار با زبان VHDL برای کسانی که تازه پا به این عرصه گذاشته اند کمی دشوار است و ممکن است با خطاهای زیادی درطول کد نویسی و کامپایل روبرو شوند . لذا شناخت کامل و دقیق این زبان و مزایای آن نسبت به سایر روشهای توصیفی را ، دارای اهمیت زیادی می دانم . زیرا اگر ما در قسمت شبیه سازی و کد نویسی مدار سخت افزاری بوسیله VHDL دچار اشکال شویم یا مدار سخت افزاری را بصورت استاندارد کد نویسی نکنیم اگر چه که قطعه کد قابل کامپایل و شبیه سازی باشد ولی در قسمت آنالیز و سنتز قطعه کدها با مشکلات زیاد و غیرقابل حلی مواجه می شویم که در برخی اوقات ما رامجبورمی کنند تا طرح هود را دوباره به یک روش دیگری کد نویسی کنیم . همانطور که در عنوان پروژه ذکر شده ، کار اصلی اینجانب شبیه سازی و کدنویسی یک مدار سخت افزاری بوده که به مرحله سنتز و آماده برای پیکر بندی روی چیپ های FPGA یا CPLD رسیده است .
در ابتدا سعی شده تا مدار سخت افزاری نمونه که یک Voter هوشمند است ( انتخابگر و تولید کننده خروجی از بین چند ورودی ) بوسیله زبان توصیف سخت افزاری VHDL کد نویسی شود .
این کار با در نظر گرفتن تمامی تاخیر های ممکن از اعمال ورودی تا فراهم شدن خروجی آن انجام گرفته است . سپس قطعه کدهای حاصل شده بوسیله برنامه کامپیوتری model sim شبیه سازی شده و با اعمال ورودی به برنامه خروجی آن تولید شده و خطاهای احتمالی مدار چه از نظر منطقی و چه از نظر مدت زمان تاخیر شناسایی شده و رفع گردیده است .
پس از اتمام کار شبیه سازی توسط برنامه کامپیوتری model sim و اطمینان از صحت عملکرد آن ، قطعه کدها را به صورت استاندارد و قابل سنتز برای پیکر بندی روی چیپ های FPGA یا CPLD تبدیل کرده ام .
کار آنالیز و سنتز قطعه کدها به کمک دو برنامه کامپیوتری ساخته شرکت xilinx با نامهای FPGA expresss و foundation 2.1 انجام گرفته است .
طرحهای سطح گیت مدار اصلی و اجزاء آن توسط نرم افزار FPGA express تولید شده که درصفحات این مقاله به چاپ رسیده است .
همچنین فایل باینری نهایی برای پیکر بندی روی چیپ ها توسط نرم افزار foundation 2.1 تولید شده که نمونه آن را نیز می توانید درپیوست ؟ مشاهده بفرمایید . کلیه عملیات و گزارشاتی که در طی این روال تولید شده را تا جای ممکن در صفحات اصلی این مقاله شرح داده ام .
فصل اول :
مروری بر تحقیقات گذشته
بسیاری از دانشمندان بزرگ ، دنیا را در زمان کنونی ، درحال گذار می دانند . با آنکه متخصصان مختلف به توضیح و تبیین روشهای مختلف طراحی می پردازند ، همگی به طور یکپارچه ، تکامل دیجیتال را حداقل برای چند دهه آینده ، مرحله مرکزی فعالیت بشری پیش بینی می کنند . در حال حاضر طراحی های دیجیتال به صورت فراگیر درهمه ابعاد تکنولوژی ، خود را جایگزین طراحی صنعتی و زمانبر کرده است . بنابراین نیاز آشکاری به آموزش متدهای نوین طراحی به متخصصین دانشگاهی و سنتی احساس می شود . خوشبختانه ایران ما ، درطی چند سال اخیر ، در این روند رو به رشد ، خود را سهیم کرده است و خواه یا ناخواه بیشتر به این طریق کشیده خواهد شد ، زیرا که جهان مدرن امروز ، سنتی ترین افکار و رویه ها را ملزم به تبعیت از خود کرده است .
تراشه های قابل برنامه ریزی
با پیشرفت در زمینه ساخت قطعات قابل برنامه ریزی ، مراحل طراحی سخت افزار ، دچار تحولات بسیاری شده است . در روشهای پیشین طراحی سخت افزار ، مدارهای گسترده با استفاده از تکنولوژی SSI طراحی و ساخته می شدند . ولی اکنون این قطعات ، جای خودشان را با قطعات دیگری با تکنولوژی VLSI عوض کرده اند . این قطعات نیز دارای هزینه زیادی برای ساخت می باشند که این اشکال یک مانع بزرگ برای استفاده از این قطعات درطرح های نمونه سازی می باشند .
گسترش و پیچیده تر شدن سیستمهای الکترونیکی و نیز محدودیتهای ناشی از همه منظوره بودن آی سی های استاندارد نیز ، مشکلاتی را برای طراح ایجاد می کند و برای دستیابی به کار آیی بالا در طرح مورد نظر، باید از تعداد زیادی مدار مجتمع استاندارد استفاده کرد . اما خوشبختانه رشد سریع الکترونیک باعث شده تا امکان طراحی با مدارهای مجتمعی فراهم گردد که درآنها استفاده از قابلیت مدار مجتمع با تراکم بالا و کاربرد خاص ، نسبت به عمومیت کاربرد آن اهمیت بیشتری دارد . از این رو ، در دو دهه اخیر ، مدارهای مجتمع با کاربرد خاص به عنوان راه حل مناسبی مورد توجه قرار گرفته و روشهای متنوعی درتولید این تراشه ها پدید آمده است . کاهش هزینه ساخت و نیز انگیزه ارائه سریع طرح به بازار باعث شده است تا تولید کنندگان مدارهای مجتمع علاوه بر ساخت تمام سفارشی ، به تولید محصولات نیمه سفارشی نیز روی آورند .
روش طراحی تمام سفارشی از قدیمی ترین روشهای تولید مدارهای مجتمع با کاربرد خاص می باشد . دراین روش ، خریدار ، مشخصات مورد نظر خود را ارائه می کند و طراح بر این اساس طرح را در سطح ترانزیستور ، اجرا می نماید و بدیهی است که طراح باید دارای مهارتهای مختلفی در طراحی مدار ، توصیف فیزیکی مدار و طرح بندی باشد . با توجه به زمان طولانی که صرف یک طرح تمام سفارشی و نیز هزینه بالای تولید یک نمونه از آن می شود ، این روش طراحی هنگامی مقرون به صرفه است که تعداد تراشه های درخواستی بسیار زیاد باشد .
در روش طراحی نیمه سفارشی ، انعطاف پذیری بیشتری به چشم می خورد . این روش طراحی در سطح ترانزیستور ، ممکن نیست و عملکرد هر بخش از پیش مشخص است . درحالیکه در طراحی سفارشی هیچ بخش از قبل تعیین شده ای وجود ندارد .
در یک جمع بندی کلی مزایای زیر را می توان برای طراحی به روش ASIC بر شمرد :
کاهش ابعاد و حجم سیستم
کاهش هزینه و افزایش قابلیت اطمینان سیستم : این امر ناشی از آن است که بخش بزرگی از یک طرح به داخل تراشه منتقل می شود و همین امر باعث می گردد تا زمان ، هزینه مونتاژ ، راه اندازی و نگهداری طرح کمتر گردد و در نتیجه ، قابلیت اطمینان مدار افزایش یابد . به گونه ای که اندازه گیری مؤسسات ناظر بر این گونه فاکتورها نظیر PREP نیز مؤید میزان نرخ خطاهای بسیار ناچیز درحین عملکرد های طولانی مدت برای این گونه تراشه ها است .
کاهش مدت زمان طراحی و ساخت و عرضه به بازار
حفاظت از طرح : سیستمهایی که با استفاده از تراشه های استاندارد ساخته می شوند به علت وجود اطلاعات کامل درمورد این تراشه ها به راحتی از طریق مهندسی معکوس قابل شناسایی و مشابه سازی هستند . درعین حال امنیت طرح در تجارت از اهمیت زیادی برخوردار بوده و اکثر طراحان مایلند تا از این بابت اطمینان حاصل کنند .
کاهش توان مصرفی ، نویز و اغتشاش
اولین تراشه های قابل برنامه ریزی منطقی که به بازار عرضه شد ، حافظه های فقط خواندنی برنامه پذیر ( PROM ) بود که خطوط آدرس به عنوان ورودی و خطوط داده به عنوان خروجی این تراشه ها تلقی می شد .
PROM شامل دسته ای از گیت های AND ثابت شده ( غیر قابل برنامه ریزی ) که به صورت رمز گشا بسته شده اند و نیز یک آرایه OR قابل برنامه ریزی است . نمودار قالبی آن در شکل (1-1) نشان داده شده است . از آنجائی که PROM دارای قابلیتهای لازم برای پیاده سازی مدارهای منطقی نمی باشد ، از این تراشه ها بیشتر به عنوان حافظه های قابل برنامه ریزی استفاده می شود .
اولین قطعه ای که به عنوان یک قطعه برنامه پذیر برای مدارات منطقی ساخته شد ، آرایه های منطقی و برنامه پذیر بود . این قطعات دارای دو آرایه قابل برنامه ریزی هستند . یک آرایه قابل برنامه ریزی AND و یک آرایه قابل برنامه ریزی OR . نمودار قالبی این قطعه PLA در شکل (1-2 ) نشان داده شده است .
در سال 1920 که Philips ، ساختار PLA را به بازار عرضه کرد ، دو اشکال بر آن وارد بود . یکی هزینه گران ساخت PLA و دوم ، سرعت کم آن بود .
شرکت Memories Monolithic برای پوشش دادن اشکالات PLA ، ساختار آرایه قابل برنامه ریزی منطقی PLA را به بازار عرضه نمود . PLA شامل یک آرایه AND قابل برنامه ریزی و یک آرایه OR تثبیت شده است . نمودار قالبی این PLA در شکل ( 1-3 ) نشان داده شده است .
PLA های استاندارد ، آرایشهای متنوعی دارند که هر یک از آنها توسط عددی یکتا ، مشخص می شود . این عدد ، همیشه با پیشوند PLA شروع می شود . دو رقم بعد از PLA ، تعداد ورودیها را نشان می دهد که شامل خروجیهایی که می توانند به صورت ورودی به کار روند نیز هست . حرف بعد از تعداد ورودیها ، نوع خروجی را نشان می دهد : L یعنی فعال پایین ، H یعنی فعال بالا و P یعنی قابل برنامه ریزی .
یک یا دو عدد بعدی که بعد از نوع خروجی قرار می گیرد ، تعداد خروجیهاست . به عنوان مثال PLA 10 L8 دارای 10 ورودی و 8 خروجی فعال پایین است .
علاوه بر این شماره ، PLA می تواند پسوندهایی برای تعیین سرعت ، نوع بسته بندی و حوزه حرارتی داشته باشد .
بعد از PLA ، یکی دیگر از تراشه های منطقی قابل برنامه ریزی ( PLD ) که در بسیاری از کاربردها ، جایگزین مدارهای SSI و MSI شد ، توسط شرکت Lattice Semiconductor با عنوان آرایه عمومی منطقی ( GAL ) به بازار عرضه شد .
GAL شامل آرایه ای قابل برنامه ریزی از گیت های AND است که به آرایه ثابتی از گیت های OR متصل شده است . نمودار قالبی GAL در شکل ( 1-4 ) نشان داده شده است .
در GAL به جای فیوز ، از سلولهایی از نوع CMOS که قابل پاک شدن به صورت الکتریکی E2CMOC ) ) هستند ، استفاده شده است .
GAL ، آرایشهای متنوعی دارد که هر یک توسط شماره یکتایی مشخص می شود . این شماره ، همواره با پیشوند GAL ، آغاز می شود . دو رقم اولیه که بعد از پیشوند GAL می آیند ، تعداد ورودیها را نشان می دهند که خروجیهایی که می توانند به عنوان ورودی نیز به کار روند را در بر دارد . حرف V که بعد از ورودیها می آید ، خروجی متغیر و یک یا دو رقم بعد از آن ، تعداد خروجیها را نشان می دهد . به عنوان مثال GAL 16 V8 دارای 16 ورودی و 8 خروجی متغیر است .
به همراه تراشه های قابل برنامه ریزی ، ASIC قابل ماسک MPGA نیز شروع به رشد کرد که به صورت آرایه ای از ترانزیستورهای پیش ساخته هستند و برای پیاده سازی در مدارهای منطقی ، در کارخانه های سازنده به یکدیگر متصل می شوند . ظرفیت آنها طی ده سال ، از حدود هزار گیت به مرز چند ده هزار گیت رسید . بیشتر این رشد مدیون پیشرفت در ابزارهای طراحی اتوماتیک بود که در فرایند طراحی این تراشه ها وارد شده بودند .
پیشرفت در ابزارهای طراحی و نیز تراشه های قابل برنامه ریزی منجر به عرضه FPGA ها در اوایل دهه 1990 شد و پس از آن ، این محصولات رشد قابل توجهی پیدا کردند . از نقطه نظر تکنولوژی ، هم اکنون FPGA ها در زمره بزرگترین مدارهای مجتمع موجود در بازار می باشند . برای مثال محصولات Altera از سری FLEX 10 K با تکنولوژی نیم میکرون ، حدود 10 میلیون ترانزیستور را در گستره ای به ابعاد cm 5/1 × cm 8/1 جای دادند . گرچه این محصولات ظرفیتی بیش از 000/300 گیت و 300 پایه I/O را به کاربر عرضه کرده اند ولی با این همه هنوز از تراشه هایی همچون 16V8 و نیز سری 74LS00 استفاده فراوانی به عمل می آید ، با وجود اینکه می توان 7000 نوع از تراشه اخیر را در یک FPGA معمولی جای داد .
از نظر آماری بیشتر FPGA های مورد استفاده ظرفیتی حدود 8000 گیت دارند . از FPGA های بزرگتر برای ساخت نمونه های اولیه به منظور پیاده سازی نهایی با MPGA ها استفاده می گردد . این امکان نتیجه پیشرفت درنرم افزارهای طراحی است که می توانند مستقل از تراشه نهایی ، طراحی را انجام دهند و درنهایت طراح می تواند تصمیم بگیرد که طرح با FPGA و یا MPGA پیاده سازی گردد .
به نظر می رسد که درآینده ، ایده FPGA همچنان قوام بیشتری به خود گرفته و فراگیر گردد و با ایجاد ابزارهای طراحی قوی تر که دستورات پیشرفته تری از VHDL و AHDL را پشتیبانی می کنند ، راه برای بکارگیری هرچه بیشتر این گونه تراشه ها هموار گردد .
همچنین امروزه برنامه های نوشته شده به زبان VHDL تحت عنوان مگا فانکشن ها درصنعت وجود دارند که کار را برای طراحان سخت افزار آسان کرده است .
مگا فانکشن ها قطعه کدهای نوشته شده آماده ای هستند که برای برخی ا زتراشه های خاص فراهم شده و تست گردیده اند . به عنوان مثال مگا فانکشن میکرو کنترلر 8051 بصورت آماده و تست شده و آماده برای برنامه ریزی روی FPGA یا CPLD در بازار موجود است . این مگا فاکنشن دقیقاً عملکرد میکرو کنترلر 8051 را پیاده سازی می کند .
لازم به ذکر است که درمداراتی که ما احتیاج به عملکرد با فرکانس در حدود چند مگا هرتز داریم عملاً نمی توانیم از خود تراشه کنترلر 8051 استفاده کنیم .
در صورتی که FPGA ها در فرکانسهای بالای 50MHZ کار می کنند و می توانند منظور ما راپیاده سازی کنند . به هر حال استفاده از مگا فانکشن ها باعث دقت و سرعت و اطمینان بیشتر در طراحی های دیجیتالی شده است .