آموزش مدار منطقی به زبان ساده - بررسی مدار منطقی و انواع آن
مدار منطقی چیست
مدارهای منطقی (به انگلیسی Logic Circuit)، مدارات الکتریکی هستند که خروجی آنها به ورودی وابسته بوده، به نحوی که میتوان آن را به صورت تابعی در منطق نمادین بیان کرد. این مدارات دارای یک یا چند ورودی باینری هستند به این صورت که منطق یک به معنای روشن بودن و منطق صفر به معنای خاموش بودن آن پایه است. مدارات منطقی که عملکرد خاصی دارند، گیت منطقی نامیده میشوند که مهمترین آنها عبارتند از گیتهای AND ،OR و NOT که به ترتیب عملکردهای منطقی AND ،OR و NOT را انجام میدهند.
مدارات منطقی را میتوان از هر وسیله الکتریکی یا الکترونیکی باینری از جمله سوئیچها، رلهها، لولههای الکترونی، دیودهای حالت جامد و ترانزیستورها ساخت. انتخاب هر یک از این روشها بستگی به کاربرد و الزامات طراحی دارد.

امروزه درک صحیحی از مدارهای منطقی برای هر مهندس برق و کامپیوتر ضروری است. این مدارها عنصر اصلی کامپیوترها و بسیاری از وسایل دیگر نظیر: دستگاههای ضبط و پخش موسیقی و تصویر، بازیهای الکترونیک، ساعتهای دیجیتال، دوربینهای فیلمبرداری، گیرندههای تلویزیون، چاپگرها و بسیاری از لوازم خانگی و همچنین در سیستمهای بزرگ مانند شبکههای تلفن، تجهیزات اینترنت، ایستگاههای پخش رادیویی و تلویزیونی، کارخانههای صنعتی و تجهیزات پزشکی. هستند. مشخص است که مدارهای منطقی یکی از اجزای بسیار مهم در زندگی امروزی ما محسوب میشوند.
هدف درس مدار منطقی آشنا کردن شما با فرایند طراحی مدارهای منطقی است. روند آموزش در درس مدار منطقی به اینصورت است که ابتدا ایدههای کلیدی و عناصر پایهی مدارهای منطقی با مثالهای ساده تشریح میشود، سپس آموزش داده میشود که چگونه میتوان با این عناصر پایه مدارهای بسیار پیچیده خلق کرد.
مدار منطقی چیست و هر یک از گیتها در مدار منطقی چگونه عمل میکند؟
ساخت و تولید مدارهای منطقی
از مدارهای منطقی برای ساخت سختافزار کامپیوتر و بسیاری محصولات دیگر استفاده میشود، که همگی آنها را تحت نام سختافزار دیجیتال (Digital Hardware) طبقهبندی میکنیم. نام دیجیتال از روش نمایش اطلاعات در کامپیوترها گرفته شده است، که در آنها سیگنالهای الکترونیکی به عنوان عدد تعبیر میشود.
مدارهای منطقی روی تراشههای نیمهرسانا و با استفاده از ترانزیستور و سایر عناصر الکترونیکی پیادهسازی میشود. اغلب تراشههای امروزی (از جمله پردازندههای کامپیوتری) بیش از یک میلیارد ترانزیستور دارند. شناخت اجرای سازندهی این مدارها به سادگی امکانپذیر است، ولی مداری با بیش از یک میلیارد ترانزیستور را اصلاً نمیتوان چیز سادهای دانست پیچیدگی ذاتی چنین مدارهایی را فقط به کمک روشهای طراحی بسیار سازمانیافته میتوان تحت کنترل درآورد. در زیر کمی دربارهی فناوریهای سختافزاری مورد استفاده در تولید و ساخت مدارهای منطقی صحبت خواهیم کرد.
فناوری ساخت و تولید سختافزارهای دیجیتال در طول چند دههی گذشته به شدت دچار تحول شده است تا اواسط دههی 1960 مدارهای منطقی با مونتاژ کردن قطعات حجیم و منفصل، مانند ترانزیستورها و مقاومتهای مجزا، ساخته میشدند. با اختراع مدارهای مجمع (Integrated Circuit- IC) امکان قرار دادن تعداد زیادی ترانزیستور (و بنابراین یک مدار کامل) روی یک تراشهی نیمه هادی فراهم شد.
در ابتدا این مدارها چند ده ترانزیستور بیشتر نداشتند، ولی با تکامل فناوری ساخت IC آنها هم به سمت پیچیدهتر شدن رفتند. تراشههای مدار مجتمع روی یک قرص سیلیکونی ساخته میشوند.
بعد از تولید تعداد زیادی تراشه روی یک قرص، این تراشهها را میبُرند و به صورت ICهای مجزا بسته بندی میکنند. تا اوایل دههی 1970 فناوری تولید تراشه چنان پیشرفت کرد که قرار دادن تمامی مدارهای الکترونیکی یک ریزپردازندهی کامل روی یک تراشه ممکن شد. اگر چه قدرت پردازش ریزپردازندههای اولیه با استانداردهای امروزی بسیار ناچیز و خندهدار مینماید. اما آنها راه را برای انقلاب عصر اطلاعات، یعنی تولید کامپیوترهای شخصی ارزانقیمت، باز کردند.
حدود 30 سال پیش، گوردون مور (رئیس هیأت مدیرهی شرکت اینتل) با مشاهدهی رشد حیرت آور فناوری مدارهای مجتمع به این نتیجه رسید که تعداد ترانزیستورهای کاشته شده روی یک تراشه هر دو سال تقریباً دو برابر میشود. این پدیده، که به قانونر مور (Moore’s law) معروف شده، تا به امروز نیز همچنان به قوت خود باقی است. بنابراین، ریزپردازندههای اوایل دههی 1990 که فقط چند میلیون ترانزیستور داشتند، در آخر همین دهه به تراشههای با نزدیک به صد میلیون ترانزیستور تبدیل شدند. امروزه فناوری مدارهای مجتمع میتواند تراشههایی با چند میلیارد ترانزیستور تولید کند.
البته آشکار است که قانون مور نمیتواند برای مدتی طولانی معتبر باقی بماند (چون به هر حال یک ترانزیستور که نمیتواند از یک اتم کوچک تر باشد!). چندی پیش، گروهی از شرکتهای تولید مدارهای مجتمع دست به پیشبینی آیندهی این فناوری زدند. این پیشبینی که با نام نقشهی راه بینالمللی فناوری نیمه هادی (ITRS=International Technology Roadmap For Semiconductors) شناخته میشود، بسیاری از جنبههای این فناوری، از جمله حداکثر تعداد ترانزیستورهایی که میتوان روی یک تراشه کاشت، مورد بررسی قرار داده است. شکل زیر یکی از دادههای ITRS را نشان میدهد. همانطور که میبینید، این نمودار از 2430 میلیون ترانزیستور بر تراشه در سال 2006 شروع شده، به تراشههای امروزی با چند میلیارد ترانزیستور میرسد، و پیشبینی میکند که تا سال 2022 بتوانیم تراشههایی با 100 میلیارد ترانزیستور تولید کنیم. تردیدی نیست که این فناوری میتواند تمامی جنبههای زندگی ما را به شدت تحت تأثیر خود قرار دهد.
تعداد ترانزیستورها روی تراشه در سال های مختلف
وقتی یک سختافزار دیجیتال طراحی میکنید، شاید با این پرسش روبهرو شوید که آیا بهتر است مدارهای منطقی آن را به صورت یک تراشهی واحد پیادهسازی کنید یا آنها را با استفاده از تعدادی IC کوچکتر روی یک بورد مدار چاپی (Printed Circuit Board- PCB) مونتاژ کنید. برای پیاده سازی سیستمهای دیجیتال روش کار اغلب به این صورت است که قطعات مختلف بر روی یک بورد (Board) قرار داده میشوند و اتصالاتی که بر روی بورد قرار دارند که به این اتصالات track میگویند، این قطعات را به یکدیگر متصل میکنند. به چنین بوردهایی معمولا بورد مدار چاپی (Printed Circuit Board) یا به اختصار PCB گفته میشود. قطعاتی که بر روی بورد قرار میگیرند و توسط trackها به یکدیگر وصل میشوند گیتهای منطقیِ تکی نیستند و بسیار پیچیده تر و بزرگتر هستند، در واقع در پیاده سازی یک سیستم دیجیتال، تعدادی مدار مجتمع (Integrated Circuit) یا به اختصار IC به هم متصل میشوند، در هر آی سی ممکن است از دهها گیت تا چند میلیون گیت استفاده شود که این گیتها در درون ICها به یکدیگر متصل شدهاند و مدارهای منطقی کوچکتری را در مقایسه با کل بورد (که در واقع یک مدار منطقی بزرگ است) ایجاد نمودهاند.
در اغلب موارد، مدارهای منطقی را میتوان به صورت تراشههای آماده در بازار پیدا کرد، که این موضوع باعث ساده تر و کوتاه تر شدن فرایند طراحی محصول نهایی میشود. طیف وسیعی از تراشهها، از تراشههای ساده گرفته تا تراشههای فوقالعاده پیچیده وجود دارد که کارکردهای مختلف مورد استفاده در سختافزارهای دیجیتال را پیادهسازی میکنند. برای مثال، شاید برای محصول سختافزار دیجیتال خود به ریزپردازندهای نیاز دارید که کارهای محاسباتی را انجام دهد، یا به تراشههای حافظه که دادهها را ذخیره کنند، یا به تراشههای واسط که ارتباط با دستگاههای ورودی و خروجی را تسهیل کنند، همهی این تراشهها را میتوانید از فروشندگان مختلف تهیه کنید.
برای برخی محصولات سخت افزاری دیجیتال، طراحی و ساخت برخی مدارهای منطقی از ابتدا نیز ضروری است. برای پیادهسازی این قبیل مدارها میتوان از سه نوع تراشه استفاده کرد: تراشههای استاندارد، دستگاههای منطق قابل برنامهریزی، و تراشههای سفارشی. اجازه دهید کمی بیشتر دربارهی این سه نوع تراشه صحبت کنیم.
1. تراشههای استاندارد یا Commodity ICs یا Logic ICs(Integrated Circuits)
تراشههای زیادی وجود دارند که با آنها میتوان مدارهای منطقی مرسوم را پیادهسازی کرد. این تراشهها را تراشههای استاندارد (Standard Chips) مینامیم، چون از نظر عملکرد و پیکربندی فیزیکی معمولاً از استانداردهای موجود تبعیت میکنند. هر تراشهی استاندارد حاوی مدارات محدود (معمولاً کمتر از 100 ترانزیستور) برای انجام یک یا چند عملکرد ساده است. مواردی همچون مالتی پلکسر، دیکدر، AND، OR، NOT، شمارنده ها، شیفت رجیسترها و ... نمونههایی از تراشههای استاندارد هستند. برای ساخت یک مدار منطقی، طراح ابتدا تراشههایی را انتخاب میکند که عملکردهای مورد نیازش را انجام دهند و سپس نحوه اتصال این تراشهها برای ایجاد مدار منطقی بزرگتر تعیین میکند.
تا اوایل دههی 1980 اغلب مدارهای منطقی با همین تراشههای استاندارد ساخته میشدند. ولی با پیشرفت فناوری مدارهای مجتمع، دیگر استفاده از این تراشههای ساده مقرون به صرفه نبود. یکی دیگر از معایب تراشههای استاندارد ثابت و غیرقابل تغییر بودن عملکرد آنها است
تراشههای استاندارد یا commodity ICs
2. دستگاههای منطقی قابل برنامهریزی (Programmable Logic Device-PLD)
برخی از تولید کنندگان مدارهای مجتمع قطعاتی را در غالب IC تولید میکنند که مدار داخل این ICها برخلاف تراشههای استاندارد و بر خلاف ASICها که ساختار و عملکرد ثابتی دارند، ساختار ثابتی ندارند و مشتریان و استفاده کنندگان میتوانند در خارج از محیط کارخانه مشخص کنند که مدار درون آنها چه باشد، در واقع تولید کنندگان مدارات داخلی این تراشهها را طوری طراحی میکنند که پیادهسازی مدارهای منطقی مختلف توسط آنها ممکن باشد. این تراشهها که ساختاری بسیار کلی دارند، شامل مجموعهای از کلیدهای قابل برنامهریزی هستند که به کمک آنها میتوان مدارات داخلی تراشه را به شکلهای مختلف پیکربندی کرد، و طراح میتواند با تنظیم این کلیدهای قابل برنامهریزی عملکردهای موردنیاز برای یک کارکرد خاص را پیادهسازی کند. توجه کنید که این کلیدها نه در فرآیند تولید بلکه در زمان مصرف برنامهریزی میشوند. به همین دلیل به این تراشهها قطعات منطقی برنامه پذیر (Programmable Logic Device-PLD) میگویند.
PLDها از نظر اندازه مداری که درون آنها میتوان ایجاد نمود متفاوت هستند. برخی از PLDها فقط برای مدارهای منطقی ساده و کوچک ظرفیت دارند که به آنها SPLD گفته میشوند که S مخفف simple است، یک SPLD در بهترین حالت ممکن است بتواند مداری در حدود 500 گیت را در خود جای دهد، برای پیاده سازی مدارهای بزرگتر باید از PLDهایی مانند CPLD (که C مخفف Complex است) با ظرفیتی در حد چند هزار الی چند ده هزار گیت یا FPGA با ظرفیت ظرفیت در حد چند صد هزار گیت الی چند میلیون گیت استفاده نمود. متداولترین نوع PLD به آرایهی گیت قابل برنامهریزی میدانی (Field-Programmable Gate Array-FPGA) معروف است. FPGAهای بزرگ میتوانند تا چند میلیارد ترانزیستور داشته باشد، و با آنها میتوان پیچیدهترین سیستمهای دیجیتال را نیز پیادهسازی کرد. یک FPGA معمولاً حاوی تعداد زیادی مدار منطقی کوچک است که به کمک کلیدهای قابل برنامهریزی میتوان آنها را به یکدیگر متصل کرد. به دلیل همین ظرفیت بالا و انعطافپذیری عالی، امروزه FPGA یکی از پرکاربردترین ابزارهای طراحی سیستمهای دیجیتال است. اما برای اینکه برای یک مدار منطقی، IC داشته باشیم روش دیگری نیز وجود دارد، روش سوم در زیر توضیح داده شده است.
یک نمونه بورد FPGA
3. تراشههای با طراحی سفارشی (Custom – Designed Chip)
به دلیل محبوبیت گستردهی FPGA تولیدکنندگان زیادی اقدام به تولید آنها کردهاند و انواع زیادی از آن در بازار موجود است. یک FPGA را میتوانید هر طور که میخواهید برنامهریزی کنید و با آن سیستم دیجیتال دلخواه خود را بسازید. با این حال، FPGA نیز بیعیب نیست: کلیدهای قابل برنامهریزی FPGA بخش زیادی از سطح تراشه را اشغال میکنند و سرعت مدارهایی که با FPGA ساخته میشود، نیز محدود است. بنابراین، گاهی ممکن است استفاده از FPGA به لحاظ کارایی و قیمت تمام شده مقرون به صرفه نباشد. در چنین شرایطی معمولاً تراشهی موردنظر از صفر طراحی شده، و سپس تولید آن به شرکتهایی که تجهیزات لازم برای ساخت آن را داشته باشند، واگذار میشود. به این قبیل تراشههای سفارشی، یا نیمه سفارشی اغلب مدار مجتمع با کاربرد خاص (Application – Specific Integrated Circuit – ASIC) گفته میشود. پس از اینکه یک مدار منطقی به شکل ASIC تولید شد ساختار مدار قابل تغییر نیست و در صورتی که طراحان بخواهند تغییری در ساختار مدار ایجاد کنند لازم است طرح جدید خود را به تولید کنندگان بدهند تا قطعات ASIC جدید تولید شود.
مهمترین مزیت یک تراشهی سفارشی این است که میتوان طراحی آن را برای یک کار خاص بهینه کرد و به کارایی بالاتری دست یافت. همچنین میتوان مقدار مدارهای منطقی بیشتری را در تراشه های سفارشی در مقایسه با سایر تراشه ها در نظر گرفت و میتوان به تعداد لازم از انواع مدار منطقی را در آن قرار دهیم. تولید یک تراشهی سفارشی هزینهی بالایی دارد، اما اگر محصولی را در تعداد زیاد تولید کنید، به احتمال زیاد قیمت آن بسیار کاهش خواهد یافت.
بزرگترین عیب استفاده از تراشههای سفارشی زمان زیاد (گاه تا چند ماه) عملیاتی شدن آن است. در طرف مقابل، وقتی از FPGA برای تولید یک محصول استفاده میکنید، زمان تولید تراشه (در مقایسه با تراشههای سفارشی) تقریباً صفر است.
ساخت یک کامپیوتر
برای درک نقش مدارهای منطقی در سیستمهای دیجیتال، اجازه دهید ساختمان یک کامپیوتر را در نظر بگیریم؛ در داخل بدنه کامپیوتر تعدادی بورد مدار چاپی (PCB)، یک منبع تغذیه، و واحدهای ذخیرهسازی مانند هارد دیسک و درایوهای CD و DVD، قرار دارند. همهی این واحدها به PCB اصلی کامپیوتر که به motherboard معروف است، متصل میشوند. همانطور که در قسمت پایین شکل الف میبینید، خود بورد مادر از تعداد زیادی تراشهی مدار مجتمع ساخته شده است که بوردهای دیگر (مانند بوردهای صدا، تصویر و شبکه) از طریق شکافهای توسعه به آن وصل میشوند.
ساختار یکی از این تراشههای مدار مجتمع در شکل ب نشان داده شده است. در این تراشه تعدادی زیرمدار (Sub Circuit) وجود دارد که اتصال آنها به یکدیگر مدار کامل را میسازد. برای مثال، یک تراشهی ریزپردازنده دارای زیر مدارهایی برای اجرای عملیات ریاضی، ذخیرهسازی داده، و یا کنترل جریان داده بین بخشهای مختلف تراشه است. هر کدام از این زیرمدارها یک مدار منطقی است. همانطور که در وسط شکل ب نشان داده شده، یک مدار منطقی خود از به هم پیوستن چند گیت منطقی (Logic Gate) تشکیل میشود. انواع گیت های منطقی را میتوانید در شکل زیر مشاده کنید.
انواع گیت های منطقی
هر گیت منطقی یک عمل بسیار ساده را انجام میدهد، و برای ایجاد عملکردهای پیچیدهتر باید تعداد زیادی گیت منطقی را با آرایشی خاص به یکدیگر متصل کنیم. گیتهای منطقی از ترانزیستور ساخته شدهاند، که خود این ترانزیستورها نیز به کمک لایههای متعدد از مواد خاص روی یک قرص سیلیکون کاشته میشوند.
درس مدار منطقی اساساً دربارهی بخش مرکزی شکل ب است، یعنی طراحی مدارهای منطقی. در درس مدار منطقی به چگونگی طراحی مدارهای منطقی برای انجام عملکردهای مهم- مانند جمع، تفریق یا ضرب اعداد، شمارش، ذخیره کردن داده، و کنترل پردازش اطلاعات پرداخته میشود و نشان داده میشود که چگونه میتوان رفتار این مدارها را تعریف کرد، چگونه میتوان آنها را با کمترین هزینه و بیشترین سرعت عملیاتی طراحی کرد، و چگونه میتوان برای اطمینان از عملکرد صحیح این مدارها آنها را آزمایش کرد. در ادامه برخی از سرفصل ها و مباحث درس مدار منطقی به اختصار توضیح داده شده است.
نمایش اعداد در سیستم های دیجیتال
هر چند که انسان برای نمایش اعداد و انجام محاسبات ریاضی عمدتا از مبنای 10 استفاده میکند در کامپیوترها و سیستمهای دیجیتال معمولا از مبنا 2 برای نمایش اعداد و انجام محاسبات ریاضی استفاده میشود. دلیل این مسئله به نحوه پیاده سازی و ساخت سیستمهای دیجیتال بر میگردد. در مبنا 2 تنها از دو رقم 0 و 1 استفاده میشود. همچنین عناصر مورد استفاده در سیستمهای دیجیتال معمولا 2 حالته هستند، مثلا ترانزیستورهای مورد استفاده در سیستمهای دیجیتال در یکی از دو حالت خاموش یا روشن عمل میکنند، به همین دلیل دو رقمی بودن مبنا 2 موجب شده است که این مبنا تناسب بیشتر با ذات سیستمهایِ دیجیتالِ مورد استفاده در دنیای امروز داشته باشد و در طراحی و تحلیل مدارهای منطقی مبنای 2 از اهمیت زیادی برخوردار است. رایج است که برای دو رقم مورد استفاده در مبنای 2 یعنی ارقام 0 و 1 به جای استفاده از اصلاح رقم از اصلاح بیت (Bit) استفاده میشود. حال در مدارهای منطقی اطلاعات به صورت سیگنالهای الکترونیکی نمایش داده میشوند. در مدارهای الکترونیکی دو مقدار 0 و1 به صورت دو سطح ولتاژ پیادهسازی میشوند: مقدار 0 با ولتاژ صفر (زمین)، و مقدار 1 با ولتاژ منبع تغذیهی مدار.
ساده سازی توابع بولی
هر تابع را میتوان با عبارتهای جبری متفاوتی نشان داد و به ازای هر عبارت جبری دقیقا یک مدار منطقی وجود دارد، بنابراین میتوان نتیجه گیری کرد که برای هر تابع مدارهای منطقی زیاد و مختلفی وجود دارد، حال هر چند تمامی مدارهای منطقی که برای یک تابع وجود دارد تابع یکسانی را پیاده سازی میکنند و عملکرد یکسانی دارند ولی هر یک از آنها از نظر تاخیر و پیچیدگی سخت افزار با یکدیگر متفاوت هستند. حال هر گاه میخواهیم برای یک تابع مداری با تاخیر کمتر یعنی تعداد طبقات کمتر و ساده تر (با پیچیدگی سخت افزار کمتر) بیابیم به جای آنکه روی مدار منطقی آن فکر کنیم به عبارت جبری مربوط به تابع فکر میکنیم، به بیان دیگر روشهایی که از آنها برای دستیابی به سرعت و سادگی در مدارهای منطقی استفاده میشود، روشهای جبری هستند، یعنی هیچ کدام بر روی مدارهای منطقی اعمال نمیشوند بلکه بر روی عبارتهای جبری اعمال میشوند هر چند در نهایت هدف دستیابی به یک مدار منطقی سریع و ساده است.
نکته دیگری که باید به آن اشاره کرد این است که بین سرعت و سادگی در مدارهای منطقی مصالحه وجود دارد و در روشهای ساده سازی که در درس مدارهای منطقی آموزش داده میشود بر خلاف آنچه که اکثر افراد تصور میکنند اولویت اصلی با سرعت است نه با سادگی مدار، به نحوی که در درس مدارهای منطقی در پی سادهترین مدار نیستیم بلکه در پی سادهترین مدار در میان سریع ترین مدارها هستیم.
برای آشنایی بیشتر با موارد بیان شده و همین طور آشنایی با مزایای ساده سازی توابع در درس مدارهای منطقی فیلم زیر را مشاهده کنید.
ساده سازی مدارهای منطقی و مزایای آن
جدول کارنو در مدار منطقی
همان طور که در بالا اشاره کردیم ما به دنبال ساده ترین مدار در میان سریع ترین مدارها هستیم، با در نظر گرفتن اینکه نقیض هر یک از ورودی های مدار را داریم و با این فرض که برای ساختن مدار فقط از گیتهای and و or استفاده کنیم در این صورت سریعترین مدارها، مدارهای مبتنی بر SOP یا POS (SOP یعنی جمع حاصلضربها و POS یعنی ضرب حاصلجمعها) هستند که دارای حداکثر دو طبقه هستند، حال چون ما میخواهیم سادهترین مدار را از میان سریعترین مدارها بیابیم به دنبال یافتن سادهترین SOP یا ساده ترین POS هستیم. توجه کنید که ساده ترین SOP یا ساده ترین POS را ممکن است بتوان سادهتر کرد ولی چون شکل آن از SOP یا POS خارج میشود طبقات مدار از دو بیشتر میشود که این یعنی مدار حاصل جز سریعترین مدارها نیست.
برای رسیدن به ساده ترین SOP یا POS دو روش مهم وجود دارد، یکی روش جدول کارنو و دیگری روش کواین مک کلاسکی، چون روش جدول کارنو بصورت گسترده توسط دانشجویان استفاده میشود این روش را بصورت کامل در فیلم زیر آموزش دادهایم.
آموزش جدول کارنو
طراحی سطحِ قطعهِ مدارهای منطقی (Component-Level Design)
متوجه شدیم که با اتصال گیتهای منطقی به یکدیگر میتوانیم مدارهای منطقی مختلف برای پیاده سازی توابع گوناگون ایجاد کنیم. به متصل کردن گیتها به یکدیگر برای ساختن مدارهای منطقی معمولا طراحی سطح گیت (Gate-Level Design) گفته میشود. روش دیگری برای طراحی و ساخت مدارهای منطقی وجود دارد به نام طراحی سطح قطعه (Component-Level Design)، که در این روش برای ساخت مدارهای منطقی به جای آنکه گیتهای منطقی را به یکدیگر متصل کنیم، قطعات و اجزائی را به یکدیگر متصل میکنیم که هر کدام از این قطعات خود از اتصال گیتهای متعدد به یکدیگر ساخته شدهاند. قطعاتی که در طراحی سطح قطعه مدارهای منطقی استفاده میشود به دو دسته تقسیم میشوند:
1. قطعات ترکیبی: این قطعات از این جهت ترکیبی نامیده میشوند که دارای حافظه نیستند، از جمله قطعات ترکیبی میتوان به موارد زیر اشاره کرد
- دیکودر (Decoder)
- انکودر (Encoder)
- انکودر اولویت دار (Priority Encoder)
- مالتی پلکسر یا تسهیم کننده (Multiplexer)
- دی مالتی پلکسر (Demultiplexer)
- مدار جمع کننده (Adder)
- مدار مقایسه کننده (Comparator)
2. قطعات ترتیبی: این قطعات دارای حافظه هستند، یعنی در ساختار درون آنها از فلیپ فلاپ استفاده شده است
قطعات ترکیبی در مدارهای منطقی
دیکودر (Decoder)
معمولا یک قطعه ترکیبی دیکودر را با علامت اختصاری DEC مشخص میکنند. یک DEC n/2n یک مدار ترکیبی بدون حافظه است که دارای n ورودی و 2n خروجی است، خروجی ها که تعداد آنها 2n تا است را از شماره 0 تا 2n-1 شماره گذاری میکنند. ورودی که تعداد آنها n تا است یک عدد باینری را مشخص میکند که چون این عدد n بیتی است مقدار آن از 0 تا 2n-1 است، که این عدد مشخص کننده شماره خروجی است که باید فعال شود.
دیکودر 3 به 8
فیلم معرفی کامل دیکودر
انکودر (Encoder)
معمولا یک قطعه ترکیبی انکودر را با علامت اختصاری ENC مشخص میکنند. یک ENC 2n/n یک مدار ترکیبی بدون حافظه است که دارای 2n ورودی و n خروجی است، ورودی ها که تعداد آنها 2n تا است را از شماره 0 تا 2n-1 شماره گذاری میکنند. در یک مدار ENC همواره باید یک و فقط یکی از این 2n ورودی فعال باشد، نه کمتر و نه بیشتر. حال اگر تعداد ورودیهای فعال بیش از یک باشد یا اگر هیچ کدام از ورودی ها فعال نباشند، چنین ورودیای یک ورودی ممنونه برای انکودر محسوب میشود و خروجی مدار در این حالت dont care هواهد بود. خروجی ها که تعداد آنها n تاست یک عدد مبنا دو را مشخص میکند که چون این عدد n بیتی است مقدار آن از 0 تا 2n-1 است. عددی که مقدار انکودر به عنوان خروجی میدهد برابر شماره ورودی فعال شده است.
انکودر 8 به 3
فیلم معرفی کامل انکودر
انکودر اولویت دار (Priority Encoder)
یادگرفتیم که انکودر مداری است که ورودی و n خروجی دارد و در هر لحظه تنها یکی از ورودیها میتواند مقدار «1» داشته باشد و بقیه ورودیها باید در حالت 0 باشند. در صورتیکه چند ورودی به صورت همزمان در حالت «1» قرار داشته باشند، آن ورودی که اولویت بالاتری نسبت به بقیه دارد، در مدار اثر میگذارد. به چنین مداری، انکودر با اولویت گفته میشود. برای n=2 جدول صحت آن به صورت زیر میشود:
فیلم معرفی انکودر اولویت دار
مالتی پلکسر یا تسهیم کننده (Multiplexer)
معمولا یک قطعه ترکیبی تسهیم کننده را با علامت اختصاری MUX مشخص میکنند. یک MUX 2n/1 یک مدار ترکیبی بدون حافظه است که دارای دو گروه ورودی است، گروه اول ورودیهای داده است که تعداد آنها 2n است و آنها را با D0 و D1 و ... و D2n-1 نشان میدهیم و گروه دوم ورودی های انتخاب است که تعداد آنها n عدد است و معمولا آنها را با S0 و S1 و ... و Sn-1 نشان میدهیم. هر مالتی پلسر فقط یک خروجی دارد. ورودهای انتخاب که تعداد آنها n تا است یک عدد مبنای دو را مشخص میکنند که چون این عدد n بیتی است مقدار آن از 0 تا 2n-1 است. این عدد مشخص کننده شماره داده ای است که باید روی خروجی برود. در مالتی پلکسر خروجی برابر یکی از ورودی هاست و آن ورودی داده، ورودی ای است که شماره آن توسط خطوط انتخاب مشخص میشود. برای مشخص تر شدن نحوه کار یک تسهیم کننده، شکل یک MUX 4/1، جدول درستی آن و شکل مدار داخلی آن را در زیر برای شما آورده ایم.
مالتی پلسر 4 به 1
فیلم معرفی کامل مالتی پلکسر
دی مالتی پلکسر (Demultiplexer)
معمولا یک قطعه ترکیبی دیمالتی پلکسر را با علامت اختصاری DEMUX مشخص میکنند. همان طور که از نام DEMUX میتوان حدس زد عملکرد این قطعه دقیقا برعکس عملکرد تسهیم کنند است. یک DEMUX 1/2n دارای 2n خروجی است که با D0 و D1 و ... و D2n-1 مشخص میشود و دارای مجموعا n+1 ورودی است که یکی از این ورودی ها را با I نشان میدهیم و این ورودی، وروی داده است و سایر ورودیها، ورودیهای انتخاب هستند که با S0 و S1 و ... و Sn-1 نشان داده میشوند. ورودهای انتخاب که تعداد آنها n تا است یک عدد مبنای دو را مشخص میکنند که چون این عدد n بیتی است مقدار آن از 0 تا 2n-1است. این عدد مشخص کننده شماره خروجی است که داده ورودی (I) به آن منتقل میشود. برای مشخص تر شدن نحوه کار یک دیمالتی پلکسر، شکل یک DEMUX 1/4، جدول درستی آن و شکل مدار داخلی آن را در زیر برای شما آورده ایم.
دی مالتی پلکسر 1 به 4
فیلم معرفی کامل دی مالتی پلکسر
مدار جمع کننده (Adder)
مدار جمع کننده همانطور که از اسمش مشخص است، جمع اعداد را برای ما انجام میدهد. مدارات جمع کننده خود به دو دستهی نیم جمع کننده (Half Adder - HA) و تمام جمع کننده (Full Adder - FA) تقسیم میشوند. HA برای ما جمع دو بیت را انجام داده و در حاصل به ما حاصل جمع (Sum) و رقم نقلی خروجی (Carry Out) را میدهد. جدول صحت، شکل مدار و همچنین توابع خروجیهای آن به صورت زیر است:
مدار FA حاصل جمع سه بیت را بدست میآورد و در غالب دو خروجی به نامهای حاصل جمع (Sum) و رقم نقلی خروجی (Carry Out) برای ما نمایش میدهد. جدول صحت و شکل آن به صورت زیر است:
مدار مقایسه کننده (Comparator)
مدار مقایسه کننده مداری است که دو عدد را به عنوان ورودی دریافت کرده و با توجه به وضعیت آن دو عدد نسبت به هم، یکی از پایههای خروجیِ E (برابری)، L (کوچکتر) و G (بزرگتر) فعال میشود که در واقع به این معنی است که دو عدد را با یک دیگر مقایسه کرده و به ما میگوید که عدد اول، برابر یا بزرگتر یا کوچکتر از عدد دوم است. جدول صحت زیر مقایسه دو عدد 2 بیتی A و B را به همراه مدار آن نشان میهد:
فیلم معرفی مقایسه کننده
قطعات ترتیبی در مدارهای منطقی
لچ یا مدار نگهدارنده (Latch)
لچ مداری است که توانایی ذخیره یک بیت داده را دارد و دارای دو ورودی با نام های R و S است. در این مدار برای نوشتن 1 کافی است که مقدار پایه های ورودی R و S را برابر RS=01 و برای نوشتن مقدار 0 کافی است که پایههای ورودی R و S را برابر RS=10 قرار دهیم. پس از آنکه ما مقدار 0 و 1 را بوسیله پایههای کنترل R و S در لچ نوشتیم، با تغییر پایه های کنترلی به RS=00 میتوانیم این مقادیر را در لچ حفظ کنیم (نگه داریم).
شکل داخلی لچ SR
فلیپ فلاپ (Flip-Flop)
در سیستمهای دیجیتال نیاز است که از تعداد زیادی لچ برای نگهداری داده ها استفاده شود، همچنین در سیستمهای دیجیتال لازم است که لچ های مورد استفاده در مدارهای منطقی هنگامی که میخواهند تغییر مقدار دهند بصورت هماهنگ و همزمان با هم این کار را انجام دهند، برای رسیدن به این هماهنگی از سیگنالی به سیگنال ساعت (Clock signal) استفاده میشود، بدین منظور سیگنال ساعت به تمامی لچ های موجود در مدار متصل میشود و تغییرات آنها را با یکدیگر هماهنگ میکند. وقتی کلاک را به لچ وصل میکنیم به مدار جدید فلیپ فلاپ میگویند. ما فیلیپ فلاپ های مختلفی داریم از جمله فلیپ فلاپ D و SR و T و JK. یک فلیپ فلاپ میتواند حساس به سطح کلاک باشد یا حساس به لبه کلاک، هر فلیپ فلاپ حساس به سطح کلاک میتواند حساس به سطح منفی کلاک باشد یا حساس به سطح مثبت کلاک، همچنین هر فلیپ فلاپ حساس به لبه میتواند حساس به لبه منفی کلاک باشد یا حساس به لبه مثبت کلاک.
در شکل زیر یک فلیپ فلاپ RS حساس به سطح مثبت را مشاهده میکنید، در فلیپ فلاپ RS حساس به سطح مثبت وقتیکه CLK=0 است، لچ مقدارش را حفظ میکند و تغییر ورودی های R و S در این زمان ها اثری ندارند، هنگامیکه CLK=1 است ورودی های کنترلی R و S در تعیین مقدار لچ موثر هستند، در این وضعیت اگر RS=10 باشد مقدار لچ برابر 0 میشود، اگر RS=01 باشد مقدار لچ برابر 1 میشود و اگر RS=00 باشد مقدار نگهدارنده حفظ میشود، توجه کنید که ورودی RS=11 یک ورودی ممنونه است که نباید به فلیپ فلاپ RS اعمال شود.
شکل داخلی فلیپ فلاپ SR
ثبات (Register)
به گروهی از فلیپ فلاپ ها در کنار هم ثبات گفته میشود، به بیانی دیگر یک ثبات متشکل از گروهی از فلیپ فلاپ هاست که معمولا از یک نوع (به خصوص از نوع فلیپ فلاپ
مدار داخلی یک رجیستر 4 بیتی
سوالی که در اینجا ممکن است مطرح شود این است که بر چه اساسی فلیپ فلاپهای موجود در یک سیستم دیجیتال به ثباتها دسته بندی میشوند؟ مثلا اگر در یک سیستم دیجیتال 16 تا فلیپ فلاپ داشته باشیم آیا تمام این فلیپ فلاپها را میتوان در قالب یک ثبات 16 بیتی دسته بندی کرد؟ یا آیا میشود آنها را به شکل 4 ثبات 4 بیتی در نظر گرفت؟ در صورتی که بتوانیم فلیپ فلاپ ها را به شکل 4 ثبات 4 بیتی در نظر بگیریم کدام فلیپ فلاپ ها باید کنار هم قرار گرفته و تشکیل ثبات دهند؟ پاسخ این سوالات این است که معمولا طراح یک سیستم دیجیتال آن فلیپ فلاپهایی را در کنار هم به عنوان یک ثبات در نظر میگیرد که دادههای درون آن فلیپ فلاپها از نظر معنایی که دارند به هم مربوط باشند.
شمارنده (Counter)
میدانیم که برای هر مدار ترتیبی میتوانیم دیاگرام حالت اش را نیز بکشیم، حال به مدار ترتیبی که درون دیاگرام حالت اش چرخه ای وجود داشته باشند شمارنده میگویند، یا به بیانی دیگر به مدار ترتیبی که تعدادی حالت را در یک چرخح بطور تکراری سپری کند شمارنده گفته میشود، توجه به این نکته ضروری است که الزامی ندارد که کدهای تخصیص داده شده به حالت های یک شمارنده اعداد متوالی باشند. بعنوان مثال دیاگرام حالت یک شمارنده میتواند بصورت زیر باشد:
نمونه هایی از دیاگرام حالت های شمارنده
انواع مدار منطقی
دو نوع اصلی مدار منطقی وجود دارد:
مدارات ترکیبی
مدارات ترکیبی از گیتهای منطقی مختلفی ساخته میشوند. پیاده سازی این مدارات به گونهای است که خروجی تنها به مقادیر حال حاضر ورودیها بستگی دارد، یعنی خروجی مدار متاثر از عملکرد مدار در گذشته نیست.
انواع مدارات ترکیبی عبارتند از:
- مدارهایی جهت انجام عملیات منطقی و حسابی مانند: جمع کننده، تفریق کننده، مقایسه کنندهها، مدارات منطقی برنامه پذیر و ...
- مبدلهای کد (Code Converters) مانند: BCD و کد افزونه 3 (Excess-3 BCD) و ...
- دیگر عناصر انتقال دهنده داده مانند: Encoder, Decoder, Multiplexer, Demultiplexer و ...
مدارات ترتیبی
مدارات ترتیبی از مدارات ترکیبی و المانهای حافظه تشکیل شدهاند. این مدارها به گونهای پیاده سازی شدهاند که خروجی مدار فقط به ورودی های آن بستگی ندارد بلکه به تاریخچه گذشته ورودی های آن نیز بستگی دارد، به عبارت دیگر مدار ترتیبی دارای حافظه است.
به منظور درک بهتر عملکرد این نوع مدارات مثال کنترل تلویزیون را بیان میکنیم. هنگامی که شما در شبکهی 2 قرار دارید و دکمه Up کنترل را جهت عوض کردن شبکه میفشارید، میبینید که شبکه تلویزیون به شماره 3 تغییر پیدا کرد. این یعنی مدار داخلی تلویزیون حالت فعلی شما را (شبکه 2) ذخیره داشته و به محض فشردن دکمه Up، با توجه به ورودی کنترل و حالت فعلی شبکه، خروجی (شبکه 3) را برای شما نمایش میدهد.
انواع مدارات ترتیبی عبارتند از:
- مدارات ترتیبی سنکرون: مدارهای ترتیبی آسنکرون مداراتی هستند که از پالس کلاک استفاده نمیکنند. به عبارتی حالتهای داخلی با تغییر متغیرهای ورودی، بدون در نظر گرفتن کلاک، تغییر میکنند.
- مدارات ترتیبی آسنکرون: در مدارهای ترتیبی سنکرون، همگام سازی حالت عنصر حافظه توسط سیگنال کلاک انجام می شود. به عبارتی تغییرات ورودی همزمان با اعمال پالس کلاک به مدار تاثیر خود را میگذارند. همگام سازی خروجیها یا با لبههای منفی سیگنال ساعت یا با لبههای مثبت انجام میشود.
به عنوان مثالهایی از مدارهای ترتیبی میتوان به لچ (Latch)، فلیپ فلاپ (Flip-Flop)، شمارنده (Counter)، ثبات (Register) و ... اشاره کرد.
کاربرد مدارات منطقی
در فناوریهای مدرن، مدارهای منطقی در دستگاهها و قطعات مختلفی از جمله واحدهای منطقی حسابی (ALU)، حافظه رایانه (Memory) و ثباتها (Register)، مالتی پلکسرها و رمزگشا/رمزگذار یافت میشوند. این مدارات در ریزپردازندههای ارتقا یافته نیز استفاده میشوند که برخی از آنها میتوانند بیش از 100 میلیون گیت داشته باشند. همچنین گیتهای منطقی بلوکهای سازنده الکترونیک دیجیتال هستند و از ترکیب ترانزیستورها به منظور تحقق بخشی عملیات دیجیتالی ساخته میشوند. هر محصول دیجیتال از جمله رایانههای شخصی، تلفنهای همراه، تبلتها، ماشین حسابها و ساعتهای دیجیتال از گیتهای منطقی استفاده میکنند. از دیگر کاربردهای این مدارات میتوان به موارد زیر اشاره کرد:
- رادیوها و دستگاههای ارتباطی
- کارتهای هوشمند (Smart Card)
- مبدلهای دیجیتال به آنالوگ (DAC)
- مبدلهای آنالوگ به دیجیتال (ADC)
- ساخت Signal Generator و ...