سوالات طراحی و پیاده سازی زبان های برنامه نویسی
انواع گیت هایی که اغلب در مدارهای مجتمع یافت می شوند، گیت-های NAND و NOR () -متصل میشوند، () -() = ()^’⋯()^’= (+ )’ = (‘ + ‘) (‘ + ‘)
—
-() =(+)^’+(+)^’=[(A+B)(C+D)]^’
––() () : (-) ً :
——-––—-= (++)^’
() () ——-() ’ –() —
––——–=[(A+B)(C+D)E]^’
() () () — ––’ –’ ‘ ‘ () ‘ –’ * () () :
^’=^’ +^’+=(^’ +^’+)^’
–––() —‘ ––::
=[(x+y+z)(x^’+y^’+z)]^’
–––() ()، ⊕ :
⊕=^’+^’ ()، :
(⊕)^’=+^’ ^’
-(⊕)^’=(^’+^’ )^’=(^’+)(+^’)=+^’ ^’
:
⊕=⊕=^’
⊕=⊕^’=⊕^’=^’⊕=(⊕)^’
درستی یا با جایگزین کردن عملیات ⊕ با عبارت بولی معادل آن اثبات کرد. هم چنین، می توان نشان داد که عملیات OR انحصاری هم جابه جایی پذیر و هم شرکت پذیر است. به این معنا که،
A⊕B=B⊕A
و
این به این معنی است که دو ورودی به یک گیت OR انحصاری را می توان بدون تأثیر بر عملکرد تعویض کرد. هم چنین به این معنی است که ما می توانیم یک عملیات OR انحصاری سه متغیره را به هر ترتیبی ارزیابی کنیم و به همین دلیل سه یا چند متغیر را می توان بدون پرانتز بیان کرد. این به معنای امکان استفاده از گیت های OR انحصاری با سه یا تعداد بیش تر ورودی است. با این حال، ساخت گیت های OR سوالات طراحی و پیاده سازی زبان های برنامه نویسی چند ورودی با سخت افزار دشوار است. در واقع، حتی یک تابع دو ورودی معمولاً با انواع دیگر گیت ها ساخته می شود. یک تابع OR انحصاری دو ورودی با گیت های معمولی با استفاده از دو معکوس کننده، دو گیت AND و یک گیت OR ساخته شده است، همان طور که در شکل 30.3 (الف) نشان داده شده است. شکل 30.3 (ب) پیاده سازی ORزبان های برنامه نویسی انحصاری را با چهار گیت NAND نشان می دهد. اولین گیت NAND عملیات (xy)^’=(x^’+y) را انجام می دهد. مدار NAND دو سطحی دیگر مجموع حاصلضرب های ورودی های خود را تولید می کند:
(x^’+y^’)x+(x^’+y^’)y=xy^’+x^’ y=x⊕y
دانلود رایگان تست نمونه سوالات طراحی و پیاده سازی زبان های برنامه نویسی با پاسخ تشریحی pdf با جواب
فقط تعداد محدودی از توابع بولی را می توان بر حسب عملیات OR انحصاری بیان کرد. با این وجود، این تابع اغلب در طول طراحی سیستم های دیجیتال ظاهر می شود. به ویژه در عملیات محاسباتی و مدارهای تشخیص و تصحیح خطا مفید است.
تابع فرد
عملیات OR انحصاری با سه یا چند متغیر را می توان با جایگزین کردن نماد ⊕ با عبارت بولی معادل آن به یک تابع بولی معمولی تبدیل کرد. به طور خاص، حالت سه متغیری را می-توان به صورت زیر به یک عبارت بولی تبدیل کرد:
A⊕B⊕C= (AB^( ‘)+A^’ B)C^’+(AB+A^’ B^’)C
=AB^’ C^’+A^’ BC^’+ABC+A^’ B^’ C
=Σ(1,2,4,7)
عبارت بولی به وضوح نشان می زبان های برنامه نویسی که اگر فقط یک متغیر برابر با 1 باشد یا اگر هر سه متغیر برابر با 1 باشد، تابع سه متغیره OR انحصاری برابر با 1 است. بر خلاف حالت دو متغیره، که در آن فقط یک متغیر باید برابر 1 باشد، در مورد سه یا چند متغیره، شرط لازم این است که تعداد فرد متغیرها برابر با 1 باشد. در نتیجه، عملیات OR انحصاری چند متغیره به عنوان یک تابع فرد تعریف می شود.
تابع بولی حاصل از عملیات OR انحصاری سه متغیره به صورت مجموع منطقی چهار مینترم که مقادیر عددی دودویی آن ها 001، 010، 100 و 111 است بیان می شود. هر یک از این اعداد دودویی دارای تعداد 1های فرد هستند. چهار سوالات طراحی و پیاده سازی زبان های برنامه نویسی باقی مانده که در تابع گنجانده نشده اند 000، 011، 101 و 110 هستند و در مقادیر عددی دودویی خود دارای یک عدد زوج 1 هستند. به طور کلی، یک تابع OR انحصاری n متغیره یک تابع فرد است که به صورت مجموع منطقی 2^n/2 مینترم تعریف می شود که مقادیر عددی دودویی آن دارای تعداد 1 فرد را می توان با رسم آن در نقشه روشن کرد.

زبان های برنامه نویسی
شکل 3.31 (الف) نقشه تابع OR انحصاری سه متغیره را نشان می-دهد. چهار مینترم تابع، یک واحد از یکدیگر فاصله دارند. تابع فرد از چهار مینترم که مقادیر دودویی آن ها دارای تعداد 1 های فرد هستند مشخص می شود. مکمل یک تابع فرد یک تابع زوج است. همان طور که در شکل 31.3 (ب) نشان داده شده است، تابع زوج سه متغیره زمانی برابر با 1 است که تعداد زوجی از متغیرهای آن برابر با 1 باشد (شامل شرطی که هیچ یک از متغیرها برابر با 1 نباشد).
همان طور که در شکل 32.3 (الف) نشان داده شده است، تابع فرد سه ورودی با استفاده از گیت های OR انحصاری دو ورودی پیاده-سازی می شود. مکمل یک تابع فرد با جایگزینی گیت خروجی با یک گیت NOR انحصاری، همان طور که در شکل 32.3 (ب) نشان داده شده است، به دست می آید.
اکنون عملیات OR انحصاری چهار متغیره را در نظر بگیرید. با زبان های برنامه نویسی جبری، می توانیم مجموع مینترم های این تابع را به دست آوریم:
A⊕B⊕C⊕D= (AB^’+A^’ B)⊕(CD^’+C^’ D)
= (AB^( ‘)+A^’ B)(CD+C^’ D^’)+(AB+A^’ B^’)(CD^’+C^’ D)
=Σ(1,2,4,7,8,11,13,14)
16 مینترم برای یک تابع بولی چهار متغیره وجود دارد. نیمی از مینترم ها دارای مقادیر عددی دودویی با عدد فرد 1 هستند. نیمه دیگر مینترم ها دارای مقادیر عددی دودویی با عدد زوج 1 هستند. در رسم تابع در نقشه، مقدار عددی دودویی برای یک جمله از اعداد سطر و ستون مربعی که نشان دهنده مینترم است، تعیین می شود. نقشه شکل 33.3 (الف) دیاگرامی از تابع چهار متغیره OR انحصاری است. این یک تابع فرد است زیرا مقادیر دودویی همه مینترم ها دارای تعداد 1 های فرد هستند. مکمل یک تابع فرد یک تابع زوج است. همان طور که در شکل 33.3 (ب) نشان داده شده است، تابع زوج چهار متغیره زمانی برابر با 1 است که تعداد زوجی از متغیرهای آن برابر با 1 باشد.
تولید و بررسی توازن
توابع OR انحصاری در سیستم هایی که نیاز به کدهای تشخیص و تصحیح خطا دارند بسیار مفید هستند. همان طور که در بخش 1.6 بحث شد، یک بیت توازن برای تشخیص خطاها در طول انتقال اطلاعات دودویی استفاده می شود. زبان های برنامه نویسی توازن یک بیت اضافی همراه با یک سوالات طراحی و پیاده سازی زبان های برنامه نویسی دودویی است تا عدد 1 را زوج یا فرد کند. پیام، از جمله بیت توازن، ارسال می شود و سپس در انتهای دریافت برای خطا بررسی می شود. اگر توازن بررسی شده با مورد ارسال شده مطابقت نداشته باشد، خطا شناسایی می شود. مداری که بیت توازن را در فرستنده تولید می کند، مولد توازن نامیده می شود. مداری که () :
=⊕⊕
() () ⊕=()، بر کامپیوتر استفاده می کنند. همراه با روش ساخت صحیح، ابزارهای طراحی مبتنی بر کامپیوتر از خلاقیت و تلاش یک زبان های برنامه نویسی بهره میبرند و خطر تولید یک طرح معیوب را کاهش میدهند. ساخت مدارهای مجتمع اولیه بسیار پرهزینه و زمان بر است، بنابراین تمام ابزارهای طراحی مدرن برای توصیف، طراحی و آزمایش مدار در نرم افزار قبل از تولید، به زبان توصیف سخت افزاری متکی هستند.
زبان توصیف سخت افزار (HDL) یک زبان مبتنی بر کامپیوتر است که سخت افزار سیستم های دیجیتال را به صورت متنی توصیف می-کند. این زبان شبیه یک زبان برنامه نویسی کامپیوتری معمولی مانند C است، اما به طور خاص برای توصیف ساختارهای سخت افزاری و رفتار مدارهای منطقی طراحی شده است. می توان از آن برای نمایش نمودارهای منطقی، جداول درستی، عبارات بولی و انتزاعات پیچیده رفتار یک سیستم دیجیتال استفاده کرد. یک راه برای درک HDL مشاهده این است که رابطه بین سیگنال هایی که ورودی مدار هستند و سیگنال هایی که خروجی مدار هستند را توصیف می کند. به عنوان مثال، یک توصیف HDL از یک گیت AND توضیح می دهد که چگونه مقدار منطقی خروجی گیت توسط مقادیر منطقی ورودی های آن تعیین می شود.
به عنوان یک زبان مستندسازی، HDL برای نمایش و مستندسازی سیستمهای دیجیتال به شکلی استفاده میشود که هم توسط انسان و هم توسط رایانه قابل خواندن باشد و به عنوان یک زبان تبادل بین طراحان مناسب است. محتوای زبان را می توان به راحتی ذخیره، بازیابی، ویرایش و انتقال داد و توسط نرم افزار کامپیوتری به شیوه ای کارآمد پردازش کرد.
HDLها در چندین مرحله اصلی در زبان های برنامه نویسی طراحی یک مدار مجتمع استفاده میشوند: ورود طراحی، شبیهسازی یا تأیید عملکرد، سنتز منطقی، تأیید زمان و شبیهسازی خطا.
ورودی طراحی، یک توصیف مبتنی بر HDL از عملکردی که قرار است در سخت افزار پیاده سازی شود ایجاد می کند. زبان های برنامه نویسی به HDL، توصیف می تواند به اشکال مختلفی باشد: معادلات منطقی بولی، جداول درستی، فهرست شبکه ای از گیت های به هم پیوسته، یا یک مدل رفتاری انتزاعی. مدل HDL هم چنین ممکن است پارتیشنی از یک مدار بزرگ تر را به واحدهای عملکردی کوچکتر به هم پیوسته و متقابل نشان دهد.
شبیه سازی منطقی، رفتار یک سیستم دیجیتال را با استفاده از کامپیوتر نشان می دهد. یک شبیهساز، توصیف HDL را تفسیر میکند و یا خروجی قابل خواندن تولید میکند، مانند ترتیب زمانی از مقادیر سیگنال ورودی و خروجی، یا شکل موج سیگنالها را نمایش میدهد. شبیه سازی مدار پیش بینی می کند که سخت افزار قبل از این که واقعا ساخته شود چگونه رفتار خواهد کرد. شبیه سازی، خطاهای عملکردی یک طراحی را بدون نیاز به ایجاد و راه اندازی فیزیکی مدار تشخیص می دهد. خطاهایی که در طول شبیه سازی شناسایی می شوند را می توان با اصلاح عبارات HDL مناسب تصحیح کرد. محرک (یعنی مقادیر منطقی ورودی های یک مدار) که عملکرد طرح را آزمایش می کند، میز تست نامیده می شود. بنابراین، برای شبیه سازی یک سیستم دیجیتال، ابتدا طرح در HDL توضیح داده می شود و سپس با شبیه سازی طرح و بررسی آن با یک میز تست، که در HDL نیز نوشته شده است، تایید می شود. یک رویکرد جایگزین و پیچیدهتر به روشهای ریاضی رسمی () -
فهرست مطالب