whatsapp call admin

تحقیق در مورد شبیه سازی و پیاده سازی مدار سخت افزار پایه به کمک VHDL

word قابل ویرایش
36 صفحه
8700 تومان
87,000 ریال – خرید و دانلود

شبیه سازی و پیاده سازی مدار سخت افزار پایه به کمک VHDL

چکیده
شبیه سازی و پیاده سازی مدار سخت افزار پایه به کمک VHDL .
در این پروژه یک مدار سخت افزاری با ۱۷ ورودی و ۲ خروجی از نوع 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 قابل برنامه ریزی است . نمودار قالبی آن در شکل (۱-۱) نشان داده شده است . از آنجائی که PROM دارای قابلیتهای لازم برای پیاده سازی مدارهای منطقی نمی باشد ، از این تراشه ها بیشتر به عنوان حافظه های قابل برنامه ریزی استفاده می شود .

اولین قطعه ای که به عنوان یک قطعه برنامه پذیر برای مدارات منطقی ساخته شد ، آرایه های منطقی و برنامه پذیر بود . این قطعات دارای دو آرایه قابل برنامه ریزی هستند . یک آرایه قابل برنامه ریزی AND و یک آرایه قابل برنامه ریزی OR . نمودار قالبی این قطعه PLA در شکل (۱-۲ ) نشان داده شده است .
در سال ۱۹۲۰ که Philips ، ساختار PLA را به بازار عرضه کرد ، دو اشکال بر آن وارد بود . یکی هزینه گران ساخت PLA و دوم ، سرعت کم آن بود .
شرکت Memories Monolithic برای پوشش دادن اشکالات PLA ، ساختار آرایه قابل برنامه ریزی منطقی PLA را به بازار عرضه نمود . PLA شامل یک آرایه AND قابل برنامه ریزی و یک آرایه OR تثبیت شده است . نمودار قالبی این PLA در شکل ( ۱-۳ ) نشان داده شده است .

PLA های استاندارد ، آرایشهای متنوعی دارند که هر یک از آنها توسط عددی یکتا ، مشخص می شود . این عدد ، همیشه با پیشوند PLA شروع می شود . دو رقم بعد از PLA ، تعداد ورودیها را نشان می دهد که شامل خروجیهایی که می توانند به صورت ورودی به کار روند نیز هست . حرف بعد از تعداد ورودیها ، نوع خروجی را نشان می دهد : L یعنی فعال پایین ، H یعنی فعال بالا و P یعنی قابل برنامه ریزی .

یک یا دو عدد بعدی که بعد از نوع خروجی قرار می گیرد ، تعداد خروجیهاست . به عنوان مثال PLA 10 L8 دارای ۱۰ ورودی و ۸ خروجی فعال پایین است .
علاوه بر این شماره ، PLA می تواند پسوندهایی برای تعیین سرعت ، نوع بسته بندی و حوزه حرارتی داشته باشد .

بعد از PLA ، یکی دیگر از تراشه های منطقی قابل برنامه ریزی ( PLD ) که در بسیاری از کاربردها ، جایگزین مدارهای SSI و MSI شد ، توسط شرکت Lattice Semiconductor با عنوان آرایه عمومی منطقی ( GAL ) به بازار عرضه شد .
GAL شامل آرایه ای قابل برنامه ریزی از گیت های AND است که به آرایه ثابتی از گیت های OR متصل شده است . نمودار قالبی GAL در شکل ( ۱-۴ ) نشان داده شده است .

در GAL به جای فیوز ، از سلولهایی از نوع CMOS که قابل پاک شدن به صورت الکتریکی E2CMOC ) ) هستند ، استفاده شده است .
GAL ، آرایشهای متنوعی دارد که هر یک توسط شماره یکتایی مشخص می شود . این شماره ، همواره با پیشوند GAL ، آغاز می شود . دو رقم اولیه که بعد از پیشوند GAL می آیند ، تعداد ورودیها را نشان می دهند که خروجیهایی که می توانند به عنوان ورودی نیز به کار روند را در بر دارد . حرف V که بعد از ورودیها می آید ، خروجی متغیر و یک یا دو رقم بعد از آن ، تعداد خروجیها را نشان می دهد . به عنوان مثال GAL 16 V8 دارای ۱۶ ورودی و ۸ خروجی متغیر است .

به همراه تراشه های قابل برنامه ریزی ، ASIC قابل ماسک MPGA نیز شروع به رشد کرد که به صورت آرایه ای از ترانزیستورهای پیش ساخته هستند و برای پیاده سازی در مدارهای منطقی ، در کارخانه های سازنده به یکدیگر متصل می شوند . ظرفیت آنها طی ده سال ، از حدود هزار گیت به مرز چند ده هزار گیت رسید . بیشتر این رشد مدیون پیشرفت در ابزارهای طراحی اتوماتیک بود که در فرایند طراحی این تراشه ها وارد شده بودند .

پیشرفت در ابزارهای طراحی و نیز تراشه های قابل برنامه ریزی منجر به عرضه FPGA ها در اوایل دهه ۱۹۹۰ شد و پس از آن ، این محصولات رشد قابل توجهی پیدا کردند . از نقطه نظر تکنولوژی ، هم اکنون FPGA ها در زمره بزرگترین مدارهای مجتمع موجود در بازار می باشند . برای مثال محصولات Altera از سری FLEX 10 K با تکنولوژی نیم میکرون ، حدود ۱۰ میلیون ترانزیستور را در گستره ای به ابعاد cm 5/1 × cm 8/1 جای دادند . گرچه این محصولات ظرفیتی بیش از ۰۰۰/۳۰۰ گیت و ۳۰۰ پایه I/O را به کاربر عرضه کرده اند ولی با این همه هنوز از تراشه هایی همچون ۱۶V8 و نیز سری ۷۴LS00 استفاده فراوانی به عمل می آید ، با وجود اینکه می توان ۷۰۰۰ نوع از تراشه اخیر را در یک FPGA معمولی جای داد .

از نظر آماری بیشتر FPGA های مورد استفاده ظرفیتی حدود ۸۰۰۰ گیت دارند . از FPGA های بزرگتر برای ساخت نمونه های اولیه به منظور پیاده سازی نهایی با MPGA ها استفاده می گردد . این امکان نتیجه پیشرفت درنرم افزارهای طراحی است که می توانند مستقل از تراشه نهایی ، طراحی را انجام دهند و درنهایت طراح می تواند تصمیم بگیرد که طرح با FPGA و یا MPGA پیاده سازی گردد .

به نظر می رسد که درآینده ، ایده FPGA همچنان قوام بیشتری به خود گرفته و فراگیر گردد و با ایجاد ابزارهای طراحی قوی تر که دستورات پیشرفته تری از VHDL و AHDL را پشتیبانی می کنند ، راه برای بکارگیری هرچه بیشتر این گونه تراشه ها هموار گردد .

همچنین امروزه برنامه های نوشته شده به زبان VHDL تحت عنوان مگا فانکشن ها درصنعت وجود دارند که کار را برای طراحان سخت افزار آسان کرده است .
مگا فانکشن ها قطعه کدهای نوشته شده آماده ای هستند که برای برخی ا زتراشه های خاص فراهم شده و تست گردیده اند . به عنوان مثال مگا فانکشن میکرو کنترلر ۸۰۵۱ بصورت آماده و تست شده و آماده برای برنامه ریزی روی FPGA یا CPLD در بازار موجود است . این مگا فاکنشن دقیقاً عملکرد میکرو کنترلر ۸۰۵۱ را پیاده سازی می کند .

لازم به ذکر است که درمداراتی که ما احتیاج به عملکرد با فرکانس در حدود چند مگا هرتز داریم عملاً نمی توانیم از خود تراشه کنترلر ۸۰۵۱ استفاده کنیم .
در صورتی که FPGA ها در فرکانسهای بالای ۵۰MHZ کار می کنند و می توانند منظور ما راپیاده سازی کنند . به هر حال استفاده از مگا فانکشن ها باعث دقت و سرعت و اطمینان بیشتر در طراحی های دیجیتالی شده است .

 

فصل دوم :
روش تحقیق و مواد
۱-۲ طراحی مدار voter هوشمند
طرح اصلی مدار سخت افزار پایه در واقع یک Voter هوشمند است . Voter در معنای لغوی به معنی رای دهنده است . فکر نمی کنیم « رای دهنده » انتخاب مناسبی برای بیان مفاهیم مدار باشد . کما اینکه در صنعت نیز عیناً از خود کلمه Voter استفاده می شود .
به سراغ بحث اصلی برمی گردیم . من برای کل سیستم نام « انتخابگر داده » را انتخاب کرده ام .

انتخابگر داده به تعداد N ورودی اصلی و تعداد M ورودی کمکی یا به اصطلاح زاپاس دارد . لازم به ذکر است که من کل سیستم را طوری طراحی و کد نویسی کرده ام که اعداد صحیح M , N را نیز می توانیم به عنوان یکی دیگر از ورودیها به مدار انتخابگر داده بدهیم . همچنین باید به تعداد N ورودی داده ای اصلی و M ورودی داده ای کمکی برای مدار انتخابگر داده فراهم کنیم .

بدیهی است که سیستم برای هر N , M ای که ما برای آن انتخاب کنیم پیکر بندی مناسبی را انجام داده و طبق روال تعریف شده عمل می کند . البته باید رابطه M > = N/2 برقرار باشد .
مدار انتخابگر داده در نهایت یک خروجی دارد . برای درست عمل کردن مدار ما احتیاج به یک ورودی پالس ساعت هم داریم تا سیستم را در زمانهای مشخص به عمل وا دارد .

خوب تا بحال ما یک جعبه سیاه تعریف کردیم که به تعداد M + N ورودی داده و یک ورودی پالس ساعت و یک خروجی نهایی داده دارد ولی از محتوای این جعبه سیاه و نحوه عملکرد آن چیزی به میان نیامده است .

طرز کار این جعبه سیاه اینگونه است که اگر به تعداد M تا از N ورودی مثل هم باشند یک نمونه از ارزش اکثریت به عنوان خروجی نهایی ارسال می شود . دوباره تکرار می کنم چنانچه تعداد ورودیهای سالم بیشتر یا مساوی M باشد ، یک نمونه از ارزش ورودیهای سالم به خروجی ارسال می شود ولی اگر تعداد ورودیهای نابرابر یا باصطلاح خراب از عدد M بزرگتر بود سیستم در خروجی خود حالت بی اهمیت را قرار می دهد و باقی می ماند . در واقع با چنین شرایطی عملیات سیستم متوقف می شود و همینطور باقی می ماند تا دوباره سیستم خاموش و روشن شود .

حال اگر به تعداد M تا از N ورودی اصلی سیستم سالم بود ، مثلاً یکی یا دو تای آنها خراب و با بقیه ورودیها فرق می کرد و همچنین خروجی سیستم فراهم شده و ما ورودیهای خراب را تصحیح نکردیم و تکلیف آنها را مشخص نکردیم چه اتفاقی می افتد .
فرض می کنیم که هر کدام از ورودیها که خراب شد تا ابد خراب باقی می ماند و درست نمی شود .

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

اینجاست که وظیفه آن M ورودی کمکی سیستم معلوم می شود . سیستم به ازای هر ورودی خراب از N ورودی اصلی یک ورودی کمکی قرار می دهد و از آن پس آن ورودی کمکی در تولید خروجی نهایی نقش دارد و جای ورودیهای اصلی محسوب می شود .

این عمل تا جایی ادامه پیدا می کند که ما ورودی کمکی به تعداد لازم داشته باشیم . اگر پس از بکار گرفتن M امین ورودی کمکی باز هم یکی از آنها خراب شد و سیستم دستور داد تا یک ورودی کمکی جایگزین شود فکر می کنید چه اتفاقی می افتد ، بلی بازهم سیستم در خروجی خود حالت بی اهمیت را قرار داده و باصطلاح halt می شود ، چون دیگر تمام M ورودی کمکی آن به کار گرفته شده اند . در این بین ممکن است خود ورودیهای کمکی که جایگزین شده ، خراب شوند و احتیاج به تعویض داشته باشند ، باز هم اگر هنوز از ورودیهای جایگزین نشده کمکی وجود داشته باشد ، جای آن ورودی خراب کمکی ایفای نقش می کند . عملیات جایگزین کردن ورودیهای کمکی به جای ورودیهای اصلی را بخش سوئیچینگ سیستم انجام می دهد . شکل ( ۲-۱ ) بلوک دیاگرام سیستم انتخابگر داده را نشان می دهد . همچنین نحوه بسته شدن سوئیچ های کمکی کوچک به هم را می توانید در شکل ( ۲-۲ ) ملاحظه کنید.

لازم به ذکر است که در اشکال اخیر برای پارامترهای M , N مقادیر ۵ و ۳ فرض شده است . همچنین ازاینجا به بعد ما سیستم انتخابگر داده را با ۵ ورودی اصلی ، ۳ ورودی کمکی ، ۱ ورودی پالس ساعت و ۱ خروجی نهایی داده طراحی ، تست و آنالیز می کنیم و باید بگویم که تمام ورودیهای داده و خروجی نهایی داده سیستم ، دوبیتی هستند .

 

۲-۲ کد نویسی با VHDL و شبیه سازی بوسیله برنامه model sim
در فصل قبل راجع به مدار سخت افزاری انتخابگر داده و نحوه عملکرد آن مطالبی را ذکر کردم . در این فصل قصد دارم سیستم انتخابگر داده را به چند زیر سیستم تقسیم کرده و وظیفه هر یک از آن زیر سیستم ها را شرح دهم . روال کار به این صورت است که درابتدا نگاهی به عملکرد هر یک از قسمتها داریم و پس از آن هر زیر سیستم را به همراه قطعه کد نوشته شده به زبان VHDL مربوط به آن مفصل شرح می دهم .

۲-۲-۱ توصیف عملیاتی
همانطور که در شکل (۲-۱ ) از بخش قبل ملاحظه کردید سیستم انتخابگر داده در بلوک دیاگرام مربوطه دارای ۶ بلوک است . هر یک از این بلوک ها وظیفه خاص خود را دارا می باشند . برای هر بلوک سطح توصیفی وجود دارد و از روی آن سطح توصیف قطعه کد VHDL خاص آن نوشته شده که آن سطح توصیف را شبیه سازی می کند . بعضی از این بلوک ها از یک یا چند زیر بلوک تشکیل شده که البته برای آن زیر بلوک ها نیز قطعه کد خاص آن نوشته شده که در صفحات بعد از آنها صحبت خواهم کرد .

۲-۲-۱-۱ عملیات بخش switching
همانطور که از شکل پیداست ۵ ورودی اصلی و ۳ ورودی کمکی به بخش سوئیچینگ وارد شده اند . بخش سوئیچینگ ۵ خروجی داده ای را نیز دارا می باشد . شکل ( ۲-۲ ) را که به خاطر دارید . در ابتدای امر سوئیچ ها به گونه ای اتصالات را برقرار کرده اند که ۵ ورودی داده اصلی مستقیم ار بین سوئیچ های هم ردیف خودشان عبور کرده و به خروجی داده بخش سوئیچینگ متصل می شوند . لازم به ذکر است که بخش سوئیچینگ از متصل کردن ۱۵ زیر بخش یا همان زیر بلوک با نام Switch _ Cell تشکیل شده که عملکرد زیر بخش Switch _ Cell را در صفحات بعدی توضیح خواهم داد .

به این مطلب اکتفا می کنم که بخش سوئیچینگ پس از پیدا شدن آدرس ورودی خراب یکی پس از دیگری، وردیهای کمکی که از قسمت پایین بلوک سوئیچینگ به آن متصل شده اند را وارد کار می کند . همچنین برای هر Switch _ Cell تاخیر ۱ ns در نظر گرفته شده است .

۲-۲-۱-۲ عملیات بخش master _ slave
پس از بخش سوئیچینگ بخش master _ slave قرار دارد . این بخش ۵ خروجی بخش سوئیچینگ را به عنوان ورودی گرفته و ۵ خروجی متناظر را برای عملکرد مابقی سیستم فراهم می کند . لذا بااین تفاوت که تنها در زمانهایی که ورودی سیگنال CIK به آن اجازه می دهد ، این کار را انجام می دهد . خیلی ساده است . بلوک master _ slave با فرار رسیدن لبه بالا رونده در سیگنال CLK یک نمونه از خروجیهای بخش سوئیچینگ بر می دارد وبا فرا رسیدن لبه پایین رونده CLK آن را در خروجی خود قرار می دهد . به عبارت دیگر این بخش در مدت زمان ، عرض پالس سیگنال CLK نمونه داده ای از خروجیهای بخش قبل را در خود نگه می دارد .

علیرغم مدت زمان عرض پالس ورودی CLK ، این بلوک به مدت ۱ ns تاخیر دارد که به مقدار قبل اضافه می شود . بطور کلی تاخیر کلی بخش master _ slave طبق فرمول ۲-۱ به دست می آید .
(۲-۱ ) Td = (Pulse Width + 1 ) ns
خوب خروجی بخش master _ slave به عنوان گلوگاه مدار ترقی می شود . به عبارت دیگر سیستم با هر رخدادی که در خروجی بخش m – s رخ می دهد کار مقایسات و نمونه برداری و تولید خروجی و نحوه پیکر بندی بخش سوئیچینگ را انجام می دهد .

۲-۲-۱-۳ عملیات بخش Comparement
بخش Comparement وظیفه انجام مقایسات بین ورودیهای داده را به عهده دارد . حاصل این مقایسات ایجاد یک جدول مقایسات است که آن را به عنوان خروجی خود تولید می کند . تاخیر این بخش نیز در کد نویسی باندازه ۱ ns در نظر گرفته شده است . یعنی پس از هر رخداد در خروجی بخش master _ slave ، ۱ ns بعد جدول مقایسات حاصل از مقایسه تمام ورودیها با هم ، درخروجی Comparement آماده می شود .

۲-۲-۱-۴ عملیات بخش ed _ om
در بلاک Output _ maker فرآیند تولید خروجی برای سیستم انتخابگر داده رخ می دهد . اجازه بدهید این بلاک را ed _ om نامگزاری کنم . چون این بلاک وظیفه شناسایی خطا راهم به عهده دارد و سر نام کلمات error detector نیز به خاطر همین خاصیت است .
ورودی این بلاک جدول مقایسات محصول بلاک Comparement است . ed _ om از روی جدول مقایسات تشخیص می دهد که اولاً آیا به تعداد M تا از N ورودی مانند هم است یا نه ، و دوماً اگر بود یک نمونه از اکثریت ورودیهای داده ای سالم را به عنوان خروجی انتخاب می کند . بدیهی است که اگر باندازه M تا از N تا ورودی سالم پیدا نکرد پیام Stop به سیستم می دهد .
بلاک ed _ om به غیر از جدول مقایسات یک سری از خروجیهای داده ای بلاک m _ s را در ورودی دارد . این بلاک پس از هر رخداد روی ورودی های داده ای پس از ۲ ns خروجی داده ای یا پیام خطا را تولید می کند .
توجه داشته باشید که این در زمانی اتفاق می افتد که تنها ۱ ns از فراهم شدن جدول مقایسات می گذرد .

۲-۲-۱-۵ عملیات بخش error finder
بخش error finder ( اشتباه نشود error detector در قسمت قبل بود ) وظیفه ایجاد جدولی را دارد که پیکر بندی بخش سوئیچینگ را انجام می دهد . پس از ایجاد یک خروجی نمونه توسط ed _ om ، error finder این نمونه خروجی را با تک تک خروجیهای بخش master _ slave مقایسه می کند تامعلوم شود که کدام یک خراب است . اگر هیچکدام تفاوتی نداشت ، می گذارد سوئیچینگ طبق روال عادی به کار خود ادامه دهد ولی اگر با هر کدام که تفاوت داشت بسته به اینکه نوبت کدامیک از ورودی های کمکی باشد ، جدول مربوط به سوئیچینگ راطوری مقدار دهی می کند تا ورودی کمکی مربوطه جای ورودی خراب شده قرار بگیرد . بخش سوئیچینگ با جدولی که از قسمت error finder می گیرد نحوه اتصال بین سوئیچها را مشخص کرده و آنها را پیکر بندی می کند .

۲-۲-۱-۶ عملیات بخش data_ selector
در این بخش خروجی نهایی سیستم تولید می شود . به این صورت که اگر بخش ed _ om یا error _ finder پیام stop ندهند ، نمونه انتخابی ed _ om را در خروجی نهایی قرار می دهد . در غیر اینصورت با اعلام پیام stop حالت بی اهمیت در خروجی قرار می گیرد .
تمام بخشها به جز بخش switching و m _ s از یک قطعه کد تشکیل شده اند . همانطور که گفته شد بخش سوئیچینگ از زیر بخشهایی با نام Switch _ cell به تعداد ۱۵ عدد استفاده می کند .
همچنین بخش m _ s نیز از زیر بخشهای dff _ 2 bit , ms _ dff _ 2 bit به تعداد ۵ عدد استفاده می کند . درتعریف و کد نویسی این بخش ها از بسته کتابخانه ای تحت عنوان basic _ utility استفاده کرده ام که انواع داده ای جدید و همچنین توابع مورد نیاز برای کار با نوع داده های جدید را در آن تعریف کرده ام . در بخش بعد به شرح و توصیف تک تک قطعه کدها و شبیه سازی آنها به وسیله برنامه کامپیوتری model sim خواهم پرداخت .

۲-۲-۲ کد نویسی در VHDL
2-2-2-1 کدنویسی بسته basic _ utility
در شبیه سازی و کد نویسی مدار سخت افزاری انتخابگر داده از بسته کتابخانه ای تحت عنوان basic _ utility استفاده کرده ام . استفاده از بسته کتابخانه ای ( package )این امکان را به ما می دهد تا بتوانیم نوع داده هایی را که مایلیم با آنها کار کنیم را برای کامپایلر برنامه model sim معرفی کنیم .

این فقط قسمتی از متن مقاله است . جهت دریافت کل متن مقاله ، لطفا آن را خریداری نمایید
word قابل ویرایش - قیمت 8700 تومان در 36 صفحه
87,000 ریال – خرید و دانلود
سایر مقالات موجود در این موضوع
دیدگاه خود را مطرح فرمایید . وظیفه ماست که به سوالات شما پاسخ دهیم

پاسخ دیدگاه شما ایمیل خواهد شد