مقدمه
به انسان آنچه را نمیدانست آموخت (قرآن کریم، سوره علق)
در دهه شصت دانشجوی رشته مهندسی برق بودم. درآن زمان درس «مدار منطقی» معمولاً از کتابهایی مانند مانو و پترسون تدریس میشد، زیرا فقط این کتب در دسترس بود که به صورت زبان اصلی بودند و هنوز ترجمه نشده بودند. این دو کتاب، کتابهای بسیار مفیدی بودند، اما دو اشکال داشتند؛ اول اینکه انگیزه فراگیری در خواننده ایجاد نمیکردند. علت این بود که دانشجو تا قبل از آن با مدارهای آنالوگ آشنا شده بود و ناگهان در این درس با مفهوم دیجیتال آشنا میشد. اگر موضوع تفاوتها و ضرورتهای این دو سیستم آناگوگ و دیجیتال بهخوبی برای دانشجو مطرح نشود، تا انتهای کتاب دانشجو با ابهاماتی مواجه خواهد بود. اشکال دیگر این دو کتاب این بود که کاربردی نبودند و دانشجو با مفاهیم کاربردی اینگونه مدارها توسط این کتابها آشنا نمیشد. کاربردهای این مدارها فقط به توضیحات اساتید محترم به هنگام ارائه درس منحصر بود که باعث مشکلاتی در درس آزمایشگاه مدار منطقی نیز میشد.
در سال 1375 که اولین بار این درس را تدریس کردم، بسیار جستوجو کردم تا کتابی مناسب را انتخاب کنم که نه تنها دو اشکال مذکور را نداشته باشد بلکه متن آن برای فهم بیشتر، متنی سلیس و روان باشد. پس از بررسی دهها کتاب دیجیتال به زبان اصلی کتاب Fundamental of Digital نوشتۀ Floyd را بسیار مناسب یافتم و پس از دو سال تدریس این کتاب، در صدد ترجمۀ آن برآمدم. ویرایش پنجم کتاب را ترجمه کردم که متوجه شدم ویرایش ششم آن منتشر شده است، لذا ویرایش ششم را ترجمه کردم و در سال 1378 کتاب منتشر شد.
در تمام این مدت در سالهای مختلف این درس را تدریس کردهام. پس از تصویب سرفصل جدید در سال 1400 و تغییر نام درس از مدار منطقی به سیستمهای دیجیتال 1 بر آن شدم که با همکار محترم خود جناب آقای مهندس آژنگ صائب که ایشان هم سالیان متمادی این درس و آزمایشگاه آن را ارائه کرده بودند کتابی مناسب تدوین کنیم. پس از چاپ کتاب سیستمدیجیتال 1 متوجه شدیم که سرفصل جدید در سال 1403 تصویب شده است. براین اساس نام درس به مدار منطقی تغییر یافته بود و با توجه به سرفصل جدید کتاب بازنگری و ویرایش شد. کتاب حاضر محصول سالیان متمادی تدریس و تجربۀ اینجانبان است که تقدیم حضور علاقهمندان میشود. مبنای اصلی کتاب ویرایش یازدهم کتاب فلوید است، اما براساس سرفصل جدید مطالبی از آن حذف شده و مطالب جدیدی به آن اضافه شده است. از طرف دیگر بهمنظور غنای بیشتر مطالب کتاب و کمک به درک بهتر مفاهیم سعی شده است کتاب حاوی مثالهای زیاد و متنوع باشد و این خود وجه تمایز دیگر این کتاب با کتب مشابه است. از ویژگیهای مهم دیگر این کتاب وجود یک فصل نرمافزاری براساس زبان برنامهنویسی VHDL جهت برنامهریزی FPGA است که امروزه دانستن آن برای فارغالتحصیلان یک ضرورت محسوب میشود. ضمناً از سرکار خانمها ناهید استیری، سپیده قاضی مغربی و فاطمه قاضی مغربی که در ویرایش و تصحیح کتاب ما را یاری کردند و نیز از ریاست محترم و کارکنان گرامی انتشارات دانشبنیاد که در مراحل مختلف چاپ کتاب ما را یاری کردند، کمال تشکر را داریم.
در خاتمه این اثر ارزشمند به رزمندگانی تقدیم می شود که با رشادت، فداکاری و ایثار جان خویش چنان فضای آرام و امنی فراهم آورده اند که محققین و پویندگان دانش قادر باشند دستاوردهای تحقیقاتی و علمی خویش را در سراسر میهن اسلامی گسترش دهند.
سعید قاضی مغربی
ساختار کتاب
این کتاب براساس آخرین سرفصل مصوبه وزارت علوم، تحقیقات و فناوری در سال 1403 تدوین شده است. محتویات این کتاب که آن را از کتب مشابه متمایز میکند عبارتند از:
1. اکثر مثالها کاربردی هستند.
2. ویژگی آیسیها در ورقه اطلاعات آنها آورده شده است و توضیحات لازم درباره ورقه اطلاعات نیز ارائه شده است.
3. در هر فصل بخشی تحت عنوان مثالهای تکمیلی ارائه شده است؛ مسائلی که نسبتاً دشوار و متنوع است و ابعاد محتویات این کتاب را نشان میدهد.
4. در انتهای هر فصل نیز مسائل تکمیلی ارائه شده است که این مسائل نسبت به مسائل هر فصل دشوارتر است و اساتید میتوانند براساس وضعیت کلاس نسبت به درخواست حل این مسائل توسط دانشجویان تصمیم مقتضی را اخذ نمایند.
این کتاب در ده فصل تدوین شده است. در فصل اول کلیاتی در مورد دیجیتال و لوازم آزمایشگاهی مورد نیاز و نحوهی استفاده از این وسایل بهصورت مختصر ارائه شده است. حتی بخشهایی از فصول کتاب بهمنظور آشنایی بیشتر خواننده ارائه شده است. خواندن این فصل به دانشجویان شدیداً توصیه میشود زیرا تأثیر بسزایی در فهم و درک مطالب خواهد داشت.
در فصل دوم محاسبات در مبناهای 2، 8، 10 و 16 تعریف میشود و با مثالهای متنوع نحوهی تبدیل از یک مبنا به مبنای دیگر و نیز انجام چهار عمل اصلی در این مبناها ارائه شده است. در فصل سوم ابتدا گیتهای منطقی معرفی شدهاند و عملکرد آنها تشریح شده است. سپس جبر بولی بهعنوان یک ابزار ریاضی در منطق ارائه شده است و نحوهی توصیف گیتها توسط جبربولی ارائه شده است. قوانین و قواعد جبر بولی و نحوه سادهسازی عبارات و مدارهای مشتمل بر گیتها نیز در این فصل ارائه شده است. ضمناً بهمنظور آشنایی دانشجویان با ورقه اطلاعات، در این فصل ورقه اطلاعات آیسیهایِ مورد استفاده آورده شده است و در مورد جزئیات آنها نیز توضیح داده شده است.
در فصل چهارم نقشه کارنو معرفی شده است و از آن برای سادهسازی عبارات بولی و نیز نهایتاً پیادهسازی مدار سادهشده توسط نقشه کارنو ارائه شده است. حداقل کردن عبارتهای SOP و POS و ارتباط نقشه کارنو با جدول صحت ارائه شده است. در انتهای این فصل خاصیت عمومیت گیتهای NOR و NAND ارائه شده است. همچنین عملکرد پالسی مدارهای مختلف تشریح و ارائه شده است.
فصل پنجم در واقع اولین فصلی است که دانشجو با قطعات و آیسیهای پایه در مدارهای دیجیتال آشنا میشود. در این فصل مبانی، نحوهی عملکرد و شکل موجهای پالسی انواع جمعکننده، مقایسهکننده، کدگشا، کد کننده، مولتی پلکسر و دیمولتی پلکسر ارائه شده است. در انتهای فصل پنجم مفهوم توازن در آشکارسازی و برطرفسازی خطا معرفی شده است و نحوهی تولید و نحوهی دریافت آن نیز توضیح داده شده است. این فصل مهمی است که در فصول بعد از این فصل بسیار استفاده میشود.
در فصل ششم با انواع فلیپفلاپ بهعنوان ذخیرهکننده یک یا چند بیت آشنایی حاصل میشود. مشخصات عملی فلیپ فلاپها و نیز کاربردهای مختلف فلیپ فلاپها ارائه شده است. در این فصل مفهوم پسخور در مدارهای دیجیتال بهوضوح دیده میشود. نمودارهای زمانی و اهمیت آنها در مدارهای دیجیتال در این فصل بهوضوح معلوم میشود.
در فصل هفتم کاربردی مهم از فلیپفلاپها، یعنی شمارندهها مطرح میشود. عملکرد شمارندههای همزمان و غیرهمزمان، صعودیشمار و نزولیشمار مطرح شده است. نحوهی طراحی انواع شمارنده به همراه نمودار زمانی خروجیها و نمودار حالت نیز ارائه شده است. شمارندههای پشت سرهم و نیز کدگشایی شمارنده و کاربردهای مختلف شمارنده در انتهای این فصل ارائه شده است. در این فصل مفهوم پالس ساعت و کاربرد آن نیز ارائه شده است.
در فصل هشتم کاربرد دیگر فلیپ فلاپها، یعنی ثبّاتهای انتقالی ارائه شده است. انواع ثبّاتهای انتقالی و نحوهی عملکرد و شکل موجهای زمانی آنها ارائه شده است. ثباتهای انتقالی دوطرفه، شمارنده ثبّات انتقالی و نیز کاربرد ثبّاتهای انتقالی در این فصل ارائه شده است.
در فصل نهم مفهوم حافظه ارائه شده است. انواع حافظههای ROM، EPROM و RAM تعریف شده است و نحوهی خواندن و نوشتن و آدرسدهی هر یک از انواع حافظهها ارائه شده است. در این فصل نحوهی اتصال حافظههای مختلف برای توسعه حافظه در دو جهت یکی توسعه هر محل حافظه از تعدادی بیت به تعداد بیت بیشتر و نیز توسعه تعداد محلهای حافظه نیز ارائه شده است.
فصل دهم به آشنایی با وسایل منطقی قابل برنامهریزی و کاربرد آنها اختصاص دارد. در این فصل آرایههای مختلف برنامهریزی PLD، GAL و PAL ارائه شده است. در انتهای این فصل زبان VHDL بهعنوان یک زبان توصیف سختافزار FPGA در سطوح مختلف ارائه شده است.
سعید قاضی مغربی (عضو هیأت علمی دانشگاه)
آژنگ صائب (عضو هیأت علمی دانشگاه)
فهرست مطالب
فصل 1 : مقدمهای بر مفاهیم دیجیتال 1
1.1 کمیتهای دیجیتال و آنالوگ 2
1.2 رقم دودویی، سطوح منطقی و شکل موجهای دیجیتال 5
1.3 عملیات منطقی پایه 13
1.4 توابع منطقی پایه 15
1.5 مدارهای مجتمع دیجیتال 22
1.6 مقدمهای بر منطق قابل برنامهریزی 27
فصل 2 : سيستمهاي اعداد، عمليات و كدها 31
2.1 اعداد دهدهي 32
2.2 اعداد دودويي 33
2.3 تبديل دهدهي به دودويي 36
2.4 محاسبات دودويي 39
2.5 مكملهاي يكي و دويي اعداد دودويي 43
2.6 اعداد علامتدار 44
2.7 عمليات محاسباتي با اعداد علامتدار 47
2.8 اعداد شانزدهتايي 56
2.9 اعداد هشتتايي 61
2.10 عدد دهدهي كد شده به دودويي (BCD) 63
2.11 كدهاي ديجيتال 66
2.12 روش توازن براي آشكارسازي خطا 75
فصل 3 : گِيتهاي منطقي، جبر بولي و سادهسازي منطقي 91
3.1 معكوسكننده 92
3.1.1 نشاندهندهي قطبيت و نفي 92
3.1.2 جدول صحت معكوسكننده 93
3.1.3 عملكرد معكوسكننده 93
3.1.4 نمودارهاي زماني 93
3.1.5 بيان منطقي براي معكوسكننده 94
3.1.6 كاربرد معكوسكننده 94
3.2 گيت AND 95
3.2.1 عملكرد منطقي گيت AND 95
3.2.2 جدول صحت گيت AND 96
3.2.3 عملكرد پالسي 97
3.2.4 عبارت منطقي براي گيت AND 99
3.3 گيت OR 101
3.3.1 عملكرد منطقي گيت OR 101
3.3.2 جدول صحت گيت OR 102
3.3.3 عملكرد پالسي 102
3.3.4 عبارت منطقي براي گيت OR 103
3.3.5 يك كاربرد: آشكارسازي ورود بدون اجازه 104
3.4 گيت NAND 105
3.4.1 عملكرد منطقي گيت NAND 105
3.4.2 عملكرد پالسي 106
3.4.3 گيت OR منفي معادل گيت NAND 107
3.4.4 عبارتهاي منطقي براي گيت NAND 109
3.5 گيت NOR 110
3.5.1 عملكرد منطقي گيت NOR 110
3.5.2 عملكرد پالسي 111
3.5.3 گيت NOR بهعنوان گيت AND با ورودي فعال - پايين 112
3.6 گيتهاي OR انحصاري و NOR انحصاري 113
3.6.1 گيت OR انحصاري 113
3.6.2 گيت NOR انحصاري 115
3.6.3 عملكرد پالسي 115
3.7 خانوادههای آیسیهای منطقی 117
3.7.1 مشخصات عملي 118
3.7.2 قطعات ويژه 120
3.7.3 ورقهي اطلاعات 125
3.7.4 توضيح پارامترهاي ورقهي اطلاعات 125
3.8 عمليات و عبارتهاي بولي 127
3.8.1 جمع بولي 128
3.8.2 ضرب بولي 128
3.9 قوانين و قواعد جبر بولي 129
3.9.1 قوانين جبر بولي 129
3.9.2 قانون جابجايي 129
3.9.3 قانون شركتپذيري 130
3.9.4 قانون توزيعپذيري 130
3.9.5 قواعد جبر بولي 131
3.10 قضاياي دمورگان 135
3.10.1 بهكار بردن قضاياي دمورگان 137
3.11 تحليل بولي مدارهاي منطقي 139
3.11.1 عبارت بولي براي مدارهاي منطقي 139
3.11.2 تشكيل جدول صحت براي مدار منطقي 140
3.12 سادهسازي با استفاده از جبر بولي 141
فصل 4 : نقشه كارنو و منطق تركيبي 161
4.1 شكلهاي استاندارد عبارتهاي بولي 162
4.1.1 شكل مجموع حاصلضربها (SOP) 162
4.1.2 شكل SOP استاندارد 163
4.1.3 شكل حاصلضرب مجموعها (POS) 166
4.1.4 شكل POS استاندارد 166
4.2 عبارتهاي بولي و جداول صحت 169
4.2.1 تبديل عبارتهاي SOP استاندارد به قالب جدول صحت 170
4.2.2 تعيين عبارتهاي استاندارد از جدول صحت 171
4.3 نقشه كارنو 173
4.3.1 نقشه كارنو سه متغيره 173
4.4 حداقل كردن SOP توسط نقشه كارنو 175
4.4.1 ترسيم عبارت SOP غيراستاندارد 177
4.4.2 ترسيم مستقيم از جدول صحت 184
4.4.3 حالتهاي بيتفاوت 184
4.5 حداقل كردن POS توسط نقشه كارنو 186
4.5.1 ترسيم يك عبارت POS استاندارد 186
4.5.2 نقشه كارنو در سادهسازی عبارتهاي POS 187
4.5.3 تبديل بين POS و SOP با استفاده از نقشه كارنو 189
4.6 نقشههاي كارنو پنج متغيره 190
4.6.1 مجاورت سلولي 190
4.6.2 عبارت بولي ساده شده 192
4.7 سيستم ديجيتال كاربردي 192
4.7.1 صفحه نمايش 7 قطعهاي 192
4.8 منطق كدگشايي قطعه 195
4.9 مدارهاي منطق تركيبي 199
4.9.1 منطق AND-OR 199
4.9.2 منطق AND-OR-NOT 200
4.9.3 منطق OR انحصاري 202
4.9.4 منطق NOR انحصاري 202
4.10 پيادهسازي منطق تركيبي 203
4.10.1 مدار منطقي با استفاده از عبارت بولي 203
4.10.2 طراحی مدار منطقي با استفاده از جدول صحت 205
4.11 خاصيت عموميت گيتهاي NAND و NOR 210
4.11.1 گيت NAND بهعنوان يك قطعهی منطقي عمومي 210
4.11.2 گیت NOR بهعنوان یک قطعهی منطقی
عمومی 212
فصل 5 : توابع منطقي تركيبي 243
5.1 جمعكنندههاي پايه 244
5.1.1 نيمه جمع كننده 244
5.1.2 جمعكننده كامل 245
5.2 جمعكنندههاي دودويي موازي 249
5.3 آيسيهاي جمعکننده MSI،LS83A74 و LS28374 251
5.3.1 توسعه جمع كننده 252
5.3.2 يك جمعکننده كاربردي 254
5.4 مقايسهكنندهها 256
5.4.1 مدارهاي مجتمع مقايسهکننده 258
5.5 كدگشاها 262
5.5.1 كدگشاي دودويي پايه 262
5.5.2 كدگشاي چهار بيتي 264
5.5.3 آيسي 74154 كدگشاي 4 خط به 16 خط 265
5.5.4 يك کدگشاي كاربردي 268
5.5.5 كدگشاي BCD به دهدهي 269
5.5.6 کدگشاي BCD به 7 قطعهاي 271
5.6 كدكنندهها 273
5.6.1 كدكننده دهدهي به BCD 274
5.6.2 کدكننده دهدهي به BCD با اولويت 275
5.6.3 آيسي 74LS147 كدکننده دهدهي به BCD 278
5.6.4 آيسي 74148 كدكننده هشتتايي به دودويي 278
5.6.5 كاربردي از كدكننده 280
5.7 مبدلهاي كد 281
5.7.1 تبديل كد BCD به دودويي 281
5.8.2 مبدلهاي MSI، BCD به دودويي و دودويي به BCD 282
5.8.3 تبدیل گری به دودویی و دودویی به گری 284
5.8 مولتي پلكسر (انتخابگر دادهها) 286
5.8.1 آیسی 74157 چهار مولتیپلکسر/ انتخابگر دادههای دو ورودی 289
5.8.2 نماد منطقی ANSI/ IEEE 289
5.8.3 آیسی 74151A مولتیپلکسر/ انتخابگر دادههای هشت ورودی 290
5.8.4 آیسی 74150 مولتیپلکسر/ انتخابگر دادههای شانزده ورودی 291
5.9 کاربردهای انتخابگر دادهها/ مولتیپلکسر 293
5.9.1 مولتیپلکسر صفحه نمایش هفت قطعهای 293
5.9.2 مولد تابع منطقی 295
5.10 دیمولتی پلکسر 298
5.10.1 آیسی 74154 بهعنوان دیمولتیپلکسر 299
5.11 مولد/ آزماینده توازن 299
5.11.1 منطق توازن 300
5.11.2 منطق مولد/ آزماینده توازن 301
5.11.3 آیسی 74180 مولد/ آزماینده توازن 9 بیتی 304
5.11.4 سیستم انتقال دادهها با آشکارسازی خطا 305
فصل 6 : فليپ و فلاپها و وسايل مربوط 339
6.1 نگهدارنده 340
6.1.1 نگهدارنده S-R 340
6.1.2 نگهدارنده بهعنوان حذف كننده پرش اتصال 343
6.1.3 نگهدارنده چهارتايي 279LS74 344
6.1.4 نگهدارنده S-R با مدخل 345
6.1.5 نگهدارنده D با مدخل 346
6.1.6 آي سي 75LS 74 نگهدارنده چهارتايي 347
6.2 فليپ فلاپهاي تحريك با لبه 347
6.2.1 فليپ فلاپ S-R تحريك شده با لبه 348
6.2.2 فليپ فلاپ D تحريك با لبه 350
6.2.3 فليپ فلاپ J-K تحريك بالبه 352
6.2.4 ورودي غيرهمزمان 354
6.2.5 وسايل خاص 356
6.2.6 آي سي 74LS74A با دو فليپ فلاپ D 356
6.2.7 آي سي 74LS76A با دو فليپ فلاپ J-K 357
6.3 فليپ فلاپهاي تابع - متبوع 358
6.3.1 فليپ فلاپهاي J-K تحريك شده با پالس (تابع- متبوع) 358
6.3.2 فليپفلاپ J-K تابع- متبوع سدکننده دادهها 360
6.4 مشخصات عملي فليپ فلاپ 362
6.4.1 زمانهاي تأخير انتشار 362
6.4.2 زمان برپايي 363
6.4.3 زمان نگهداري 363
6.4.4 حداكثر فركانس ساعت 363
6.4.5 عرض پالس 364
6.4.6 توان تلفاتي 364
6.4.7 مقايسه فليپ فلاپهاي خاص 364
6.5 كاربردهاي فليپ فلاپ 365
6.5.1 ذخيرهسازي دادههاي موازي 365
6.5.2 تقسيم فركانس 366
6.5.3 شمارش 368
فصل 7 : شمارندهها 389
7.1 عملكرد شمارندههاي غيرهمزمان 390
7.1.1 شمارنده دودويي غيرهمزمان دوبيتي 390
7.1.2 نمودار زماني 391
7.1.3 شمارنده دودويي غيرهمزمانِ سه بيتي 392
7.1.4 زمان تاخير 392
7.1.5 شمارندههاي دهدهي غيرهمزمان 395
7.1.6 آيسي 74LS93A شمارنده دودويي چهاربيتي 398
7.2 عملكرد شمارنده همزمان 400
7.2.1 شمارنده دودويي همزمان 2 بيتي 400
7.2.2 شمارنده دودويي همزمان 3 بيتي 402
7.2.3 شمارنده دودويي همزمان 4بيتي 403
7.2.4 شمارندههاي دهدهي همزمان 404
7.2.5 آيسي 74HC163 شمارنده دودويي همزمان
4 بيتي 406
7.3 شمارندههاي همزمان بالا/ پايين شمار 409
7.3.1 آيسي 74LS190 شمارنده دهدهي بالا/ پايين شمار 412
7.4 طراحي شمارندههاي همزمان 413
7.4.1 مرحله 1: نمودار حالت 414
7.4.2 مرحله 2: جدول حالت بعدي 415
7.4.3 مرحله 3: جدول انتقال فليپ فلاپ 415
7.4.4 مرحله 4: نقشههاي كارنو 416
7.4.5 مرحله 5: عبارات منطقي براي وروديهاي فليپ فلاپ 417
7.4.6 مرحله 6: پيادهسازي شمارنده 417
7.5 شمارندههاي پشت سرهم 424
7.5.1 آيسي شمارندهي پشت سر هم با رشتههاي
ناقص 427
7.6 كدگشايي شمارنده 428
7.6.1 كدگشاييِ زائدههاي ناگهاني 430
7.7 كاربردهاي شمارنده 432
7.7.1 ساعت ديجيتال 432
7.7.2 كنترل پارك اتومبيل 434
7.7.3 تبديل دادههاي موازي به متوالي (مولتي
پلكسكردن) 436
فصل 8 : ثبّاتهاي انتقالي 457
8.1 وظايف اصلي ثبّات انتقالي 458
8.2 ثبّاتهاي انتقالي ورودي متوالي/ خروجي متوالي 459
8.3 ثبّاتهاي انتقالي ورودي متوالي/ خروجي موازي 464
8.4 ثبّاتهاي انتقالي ورودي موازي/ خروجي متوالي 466
8.5 ثبّاتهاي انتقالي ورودي موازي/ خروجي موازي 470
8.6 ثبّاتهاي انتقالي دوطرفه 472
8.7 شمارندهي ثبّات انتقالي 475
8.8 كاربردهاي ثبّات انتقالي 477
فصل 9 :حافظهها 497
9.1 اساس حافظههای نیمههادی 498
9.2 حافظههای فقط خواندنی (ROM) 503
9.3 ROMهای قابل برنامهریزی (PROM و EPROM) 512
9.4 حافظههای با دستیابی تصادفی (RAM) خواندنی/ نوشتنی 515
9.5 حافظههای آنی 526
9.6 توسعهی حافظه 527
9.7 انواع خاص حافظهها 533
فصل 10 : وسايل منطقي قابل برنامهريزي و کاربرد آنها 549
10.1 دستهبنديها و آرايشهاي PLD 550
10.2 آرايه قابل برنامهريزي منطقي (PAL) 554
10.3 آرايهي عمومي منطقي (GAL) 558
10.4 زبان توصيف سختافزاري VHDL 561
10.4.1 قواعد پایهای VHDL 561
10.4.2 شکل کلی برنامه VHDL 565
10.4.3 سطوح طراحی در زبان VHDL 566