مقدمه
به انسان آنچه را نمیدانست آموخت (قرآن کریم، سوره علق)
در دهه شصت دانشجوی رشته مهندسی برق بودم. درآن زمان درس «مدار منطقی» معمولاً از کتابهایی مانند مانو و پترسون تدریس میشد، زیرا فقط این کتب در دسترس بود که به صورت زبان اصلی بودند و هنوز ترجمه نشده بودند.
این دو کتاب، کتابهای بسیار مفیدی بودند، اما دو اشکال داشتند؛ اول اینکه انگیزه فراگیری در خواننده ایجاد نمیکردند. علت این بود که دانشجو تا قبل از آن با مدارهای آنالوگ آشنا شده بود و ناگهان در این درس با مفهوم دیجیتال آشنا میشد. اگر موضوع تفاوتها و ضرورتهای این دو سیستم آناگوگ و دیجیتال بهخوبی برای دانشجو مطرح نشود، تا انتهای کتاب دانشجو با ابهاماتی مواجه خواهد بود. اشکال دیگر این دو کتاب این بود که کاربردی نبودند و دانشجو با مفاهیم کاربردی اینگونه مدارها توسط این کتابها آشنا نمیشد. کاربردهای این مدارها فقط به توضیحات اساتید محترم به هنگام ارائه درس منحصر بود که باعث مشکلاتی در درس آزمایشگاه مدار منطقی نیز میشد.
در سال 1375 که اولین بار این درس را تدریس کردم، بسیار جستوجو کردم تا کتابی مناسب را انتخاب کنم که نه تنها دو اشکال مذکور را نداشته باشد بلکه متن آن برای فهم بیشتر، متنی سلیس و روان باشد. پس از بررسی دهها کتاب دیجیتال به زبان اصلی کتاب Fundamental of Digital نوشتۀ Floyd را بسیار مناسب یافتم و پس از دو سال تدریس این کتاب، در صدد ترجمۀ آن برآمدم. ویرایش پنجم کتاب را ترجمه کردم که متوجه شدم ویرایش ششم آن منتشر شده است، لذا ویرایش ششم را ترجمه کردم و در سال 1378 کتاب منتشر شد. در تمام این مدت در سالهای مختلف این درس را تدریس کردهام. پس از تصویب سرفصل جدید در سال 1400 و تغییر نام درس از مدار منطقی به سیستمهای دیجیتال 1 بر آن شدم که با همکار محترم خود جناب آقای مهندس آژنگ صائب که ایشان هم سالیان متمادی این درس و آزمایشگاه آن را ارائه کرده بودند کتابی تحت عنوان سیستمهای دیجیتال1 تدوین شد. کتاب مذکور محصول سالیان متمادی تدریس و تجربۀ اینجانبان که بر مبنای ویرایش یازدهم کتاب فلوید است. ضمناً بهمنظور غنای بیشتر مطالب کتاب و کمک به درک بهتر مفاهیم سعی شده است کتاب حاوی مثالهای متنوع باشد و این خود وجه تمایز دیگر این کتاب با کتب مشابه است. پس از تدوین کتاب مذکور تصمیم گرفتیم کتاب جدیدی از آن کتاب استخراج شود که بیان سادهتری داشته باشد و از طرفی مطالب تکمیلی و مسائل و تمرینهای دشوار آن حذف شود تا فهم آن سادهتر باشد و در دانشگاههای بیشتر قابل تدریس باشد. مطالب این کتاب مطابق با آخرین سرفصلهای مصوب وزارت علوم و تحقیقات و فناوری است. بدیهی است کتاب سیستمهای دیجیتال1 میتواند به عنوان مکمل این کتاب مطالعه شود. ضمناً از سرکار خانمها ناهید استیری، سپیده قاضی مغربی و فاطمه قاضی مغربی که در ویرایش و تصحیح کتاب ما را یاری کردند و نیز از ریاست محترم و کارکنان گرامی انتشارات دانشبنیاد که در مراحل مختلف چاپ کتاب ما را یاری کردند، کمال تشکر را داریم.
در خاتمه این اثر ارزشمند به رزمندگانی تقدیم می شود که با رشادت، فداکاری و ایثار جان خویش چنان فضای آرام و امنی فراهم آورده اند که محققین و پویندگان دانش قادر باشند دستاوردهای تحقیقاتی و علمی خویش را در سراسر میهن اسلامی گسترش دهند.
سعید قاضی مغربی
ساختار کتاب
این کتاب براساس آخرین سرفصل مصوبه وزارت علوم، تحقیقات و فناوری در سال 1400 تدوین شده است. محتویات این کتاب که آن را از کتب مشابه متمایز میکند عبارتند از:
1. موضوعات به زبان بسیار ساده بیان شده است.
2. هر فصل حاوی مثالهای متنوع است.
3. اکثر مثالها کاربردی هستند.
این کتاب در نه فصل تدوین شده است. در فصل اول کلیاتی در مورد دیجیتال و لوازم آزمایشگاهی مورد نیاز و نحوهی استفاده از این وسایل بهصورت مختصر ارائه شده است. حتی بخشهایی از فصول کتاب بهمنظور آشنایی بیشتر خواننده ارائه شده است. خواندن این فصل به دانشجویان شدیداً توصیه میشود زیرا تأثیر بسزایی در فهم و درک مطالب خواهد داشت.
در فصل دوم محاسبات در مبناهای 2، 8، 10 و 16 تعریف میشود و با مثالهای متنوع نحوهی تبدیل از یک مبنا به مبنای دیگر و نیز انجام چهار عمل اصلی در این مبناها ارائه شده است. در فصل سوم ابتدا گیتهای منطقی معرفی شدهاند و عملکرد آنها تشریح شده است. سپس جبر بولی بهعنوان یک ابزار ریاضی در منطق ارائه شده است و نحوهی توصیف گیتها توسط جبربولی ارائه شده است. قوانین و قواعد جبر بولی و نحوه سادهسازی عبارات و مدارهای مشتمل بر گیتها نیز در این فصل ارائه شده است.
در فصل چهارم نقشه کارنو معرفی شده است و از آن برای سادهسازی عبارات بولی و نیز نهایتاً پیادهسازی مدار سادهشده توسط نقشه کارنو ارائه شده است. حداقل کردن عبارتهای SOP و POS و ارتباط نقشه کارنو با جدول صحت ارائه شده است. در انتهای این فصل خاصیت عمومیت گیتهای NOR و NAND ارائه شده است. همچنین عملکرد پالسی مدارهای مختلف تشریح و ارائه شده است.
فصل پنجم در واقع اولین فصلی است که دانشجو با قطعات و آیسیهای پایه در مدارهای دیجیتال آشنا میشود. در این فصل مبانی، نحوهی عملکرد و شکل موجهای پالسی انواع جمعکننده، مقایسهکننده، کدگشا، کد کننده، مولتی پلکسر و دیمولتی پلکسر ارائه شده است. این فصل مهمی است که در فصول بعد از این فصل بسیار استفاده میشود.
در فصل ششم با انواع فلیپفلاپ بهعنوان ذخیرهکننده یک یا چند بیت آشنایی حاصل میشود. مشخصات عملی فلیپ فلاپها و نیز کاربردهای مختلف فلیپ فلاپها ارائه شده است. در این فصل مفهوم پسخور در مدارهای دیجیتال بهوضوح دیده میشود. نمودارهای زمانی و اهمیت آنها در مدارهای دیجیتال در این فصل بهوضوح معلوم میشود.
در فصل هفتم کاربردی مهم از فلیپفلاپها، یعنی شمارندهها مطرح میشود. عملکرد شمارندههای همزمان و غیرهمزمان، صعودیشمار و نزولیشمار مطرح شده است. نحوهی طراحی انواع شمارنده به همراه نمودار زمانی خروجیها نیز ارائه شده است. شمارندههای پشت سرهم و کاربردهای مختلف شمارنده در انتهای این فصل ارائه شده است. در این فصل مفهوم پالس ساعت و کاربرد آن نیز ارائه شده است.
در فصل هشتم کاربرد دیگر فلیپ فلاپها، یعنی ثبّاتهای انتقالی ارائه شده است. انواع ثبّاتهای انتقالی و نحوهی عملکرد و شکل موجهای زمانی آنها ارائه شده است. ثباتهای انتقالی دوطرفه، شمارنده ثبّات انتقالی و نیز کاربرد ثبّاتهای انتقالی در این فصل ارائه شده است.
در فصل نهم مفهوم حافظه ارائه شده است. انواع حافظههای ROM، EPROM و RAM تعریف شده است و نحوهی خواندن و نوشتن و آدرسدهی هر یک از انواع حافظهها ارائه شده است.
فصل دهم به آشنایی با وسایل منطقی قابل برنامهریزی و کاربرد آنها اختصاص دارد. در این فصل آرایههای مختلف برنامهریزی PLD، GAL و PAL ارائه شده است. در انتهای این فصل زبان VHDL بهعنوان یک زبان توصیف سختافزار FPGA در سطوح مختلف ارائه شده است.
سعید قاضی مغربی (عضو هیأت علمی دانشگاه )
آژنگ صائب (عضو هیأت علمی دانشگاه
فهرست مطالب
فصل1 :مقدمهای بر مفاهیم دیجیتال 1
1.1 کمیتهای دیجیتال و آنالوگ 2
1.2 رقم دودویی، سطوح منطقی و شکل موجهای دیجیتال
فصل 2 : سيستمهاي اعداد، عمليات و كدها 13
2.1 اعداد دهدهي 14
2.2 اعداد دودويي 15
2.3 تبديل دهدهي به دودويي 18
2.4 محاسبات دودويي 21
2.5 مكملهاي يكي و دويي اعداد دودويي 25
2.6 اعداد علامتدار 26
2.7 جمع و تفریق اعداد علامتدار 29
2.8 اعداد شانزدهتايي 33
2.9 اعداد هشتتايي 38
2.10 عدد دهدهي كد شده به دودويي (BCD) 40
2.11 كدهاي ديجيتال 43
2.12 روش توازن براي آشكارسازي خطا 50
فصل 3 : گِيتهاي منطقي، جبر بولي و سادهسازي منطقي 57
3.1 معكوسكننده 58
3.1.1 نشاندهندهي قطبيت و نفي 58
3.1.2 جدول صحت معكوسكننده 59
3.1.3 عملكرد معكوسكننده 59
3.1.4 نمودارهاي زماني 59
3.1.5 بيان منطقي براي معكوسكننده 60
3.1.6 كاربرد معكوسكننده 60
3.2 گيت AND 61
3.2.1 عملكرد منطقي گيت AND 61
3.2.2 جدول صحت گيت AND 62
3.2.3 عملكرد پالسي 63
3.2.4 عبارت منطقي براي گيت AND 65
3.3 گيت OR 67
3.3.1 عملكرد منطقي گيت OR 67
3.3.2 جدول صحت گيت OR 68
3.3.3 عملكرد پالسي 68
3.3.4 عبارت منطقي براي گيت OR 69
3.3.5 يك كاربرد: آشكارسازي ورود بدون اجازه 70
3.4 گيت NAND 71
3.4.1 عملكرد منطقي گيت NAND 71
3.4.2 عملكرد پالسي 72
3.4.3 گيت OR منفي معادل گيت NAND 73
3.4.4 عبارتهاي منطقي براي گيت NAND 75
3.5 گيت NOR 76
3.5.1 عملكرد منطقي گيت NOR 76
3.5.2 عملكرد پالسي 77
3.5.3 گيت NOR بهعنوان گيت AND با ورودي فعال - پايين 78
3.6 گيتهاي OR انحصاري و NOR انحصاري 79
3.6.1 گيت OR انحصاري 79
3.6.2 گيت NOR انحصاري 81
3.6.3 عملكرد پالسي 81
3.7 خانوادههای آیسیهای منطقی 83
3.7.1 مشخصات عملي 84
3.7.2 قطعات ويژه 86
3.8 عمليات و عبارتهاي بولي 88
3.8.1 جمع بولي 88
3.8.2 ضرب بولي 89
3.9 قوانين و قواعد جبر بولي 89
3.9.1 قوانين جبر بولي 89
3.9.2 قانون جابجايي 89
3.9.3 قانون شركتپذيري 90
3.9.4 قانون توزيعپذيري 91
3.9.5 قواعد جبر بولي 91
3.10 قضاياي دمورگان 95
3.10.1 بهكار بردن قضاياي دمورگان 97
3.11 تحليل بولي مدارهاي منطقي 100
3.11.1 عبارت بولي براي مدارهاي منطقي 100
3.11.2 تشكيل جدول صحت براي مدار منطقي 100
3.12 سادهسازي با استفاده از جبر بولي 101
فصل 4 :نقشه كارنو و منطق تركيبي 111
4.1 شكلهاي استاندارد عبارتهاي بولي 112
4.1.1 شكل مجموع حاصلضربها (SOP) 112
4.1.2 شكل SOP استاندارد 113
4.1.3 شكل حاصلضرب مجموعها (POS) 116
4.1.4 شكل POS استاندارد 116
4.2 عبارتهاي بولي و جداول صحت 119
4.2.1 تبديل عبارتهاي SOP استاندارد به قالب جدول صحت 120
4.2.2 تعيين عبارتهاي استاندارد از جدول صحت 121
4.3 نقشه كارنو 123
4.3.1 نقشه كارنو سه متغيره 123
4.4 حداقل كردن SOP توسط نقشه كارنو 125
4.4.1 ترسيم عبارت SOP غير استاندارد 127
4.4.2 ترسيم مستقيم از جدول صحت 134
4.4.3 حالتهاي بيتفاوت 134
4.5 حداقل كردن POS توسط نقشه كارنو 136
4.5.1 ترسيم يك عبارت POS استاندارد 136
4.5.2 نقشه كارنو در سادهسازی عبارتهاي POS 137
4.5.3 تبديل بين POS و SOP با استفاده از نقشه كارنو 139
4.6 نقشههاي كارنو پنج متغيره 140
4.6.1 مجاورت سلولي 140
4.6.2 عبارت بولي ساده شده 142
4.7 سيستم ديجيتال كاربردي 142
4.7.1 صفحه نمايش 7 قطعهاي 142
4.8 منطق كدگشايي قطعه 145
4.9 مدارهاي منطق تركيبي 149
4.9.1 منطق AND-OR 149
4.9.2 منطق AND-OR-NOT 150
4.9.3 منطق OR انحصاري 152
4.9.4 منطق NOR انحصاري 152
4.10 پيادهسازي منطق تركيبي 153
4.10.1 مدار منطقي با استفاده از عبارت بولي 153
4.10.2 طراحی مدار منطقي با استفاده از جدول صحت 155
4.11 خاصيت عموميت گيتهاي NAND و NOR 164
4.11.1 گيت NAND بهعنوان يك قطعهی منطقي عمومي 164
4.11.2 گیت NOR بهعنوان یک قطعهی منطقی
عمومی 166
فصل 5 :توابع منطقي تركيبي 171
5.1 جمعكنندههاي پايه 172
5.1.1 نيمه جمع كننده 172
5.1.2 جمعكننده كامل 173
5.2 جمعكنندههاي دودويي موازي 177
5.3 آيسيهاي جمعکننده MSI،LS83A74 و LS28374 179
5.3.1 توسعه جمع كننده 180
5.3.2 يك جمعکننده كاربردي 182
5.4 مقايسهكنندهها 184
5.4.1 مدارهاي مجتمع مقايسهکننده 186
5.5 كدگشاها 190
5.5.1 كدگشاي دودويي پايه 190
5.5.2 كدگشاي چهار بيتي 192
5.5.3 آيسي 74154 كدگشاي 4 خط به 16 خط 194
5.5.4 يك کدگشاي كاربردي 196
5.5.5 كدگشاي BCD به دهدهي 198
5.5.6 کدگشاي BCD به 7 قطعهاي 199
5.6 كدكنندهها 202
5.6.1 كدكننده دهدهي به BCD 202
5.6.2 کدكننده دهدهي به BCD با اولويت 204
5.6.3 آيسي 74LS147 كدکننده دهدهي به BCD 206
5.6.4 آيسي 74148 كدكننده هشتتايي به دودويي 207
5.6.5 كاربردي از كدكننده 208
5.7 مبدلهاي كد 209
5.7.1 تبديل كد BCD به دودويي 209
5.7.2 مبدلهاي MSI، BCD به دودويي و دودويي به BCD 212
5.7.3 تبدیل گری به دودویی و دودویی به گری 213
5.8 مولتي پلكسر (انتخابگر دادهها) 214
5.8.1 آیسی 74157 چهار مولتیپلکسر/ انتخابگر دادههای دو ورودی 216
5.8.2 نماد منطقی ANSI/ IEEE 218
5.8.3 آیسی 74151A مولتیپلکسر/ انتخابگر دادههای هشت ورودی 218
5.8.4 آیسی 74150 مولتیپلکسر/ انتخابگر دادههای شانزده ورودی 218
5.9 کاربردهای انتخابگر دادهها/ مولتیپلکسر 221
5.9.1 مولتیپلکسر صفحه نمایش هفت قطعهای 221
5.9.2 مولد تابع منطقی 223
5.10 دیمولتی پلکسر 226
5.10.1 آیسی 74154 بهعنوان دیمولتیپلکسر 227
فصل 6 : فليپ و فلاپها و وسايل مربوط 235
6.1 نگهدارنده 236
6.1.1 نگهدارنده S-R 236
6.1.2 نگهدارنده بهعنوان حذف كننده پرش اتصال 239
6.1.3 نگهدارنده چهارتايي 279LS74 240
6.1.4 نگهدارنده S-R با مدخل 241
6.1.5 نگهدارنده D با مدخل 242
6.1.6 آي سي 75LS 74 نگهدارنده چهارتايي 243
6.2 فليپ فلاپهاي تحريك با لبه 243
6.2.1 فليپ فلاپ S-R تحريك شده با لبه 244
6.2.2 فليپ فلاپ D تحريك با لبه 246
6.2.3 فليپ فلاپ J-K تحريك بالبه 247
6.2.4 ورودي غيرهمزمان 250
6.3 فليپ فلاپهاي تابع- متبوع 252
6.3.1 فليپ فلاپهاي J-K تحريك شده با پالس (تابع- متبوع) 252
6.3.2 فليپفلاپ J-K تابع- متبوع سدکننده دادهها 254
6.4 كاربردهاي فليپ فلاپ 256
6.4.1 ذخيرهسازي دادههاي موازي 256
6.4.2 تقسيم فركانس 257
6.4.3 شمارش 259
فصل 7 : شمارندهها 265
7.1 عملكرد شمارندههاي غيرهمزمان 266
7.1.1 شمارنده دودويي غيرهمزمان دوبيتي 266
7.1.2 نمودار زماني 267
7.1.3 شمارنده دودويي غيرهمزمانِ سه بيتي 268
7.1.4 زمان تاخير 268
7.1.5 شمارندههاي دهدهي غيرهمزمان 271
7.1.6 آيسي 74LS93A شمارنده دودويي چهاربيتي 274
7.2 عملكرد شمارنده همزمان 276
7.2.1 شمارنده دودويي همزمان 2 بيتي 276
7.2.2 شمارنده دودويي همزمان 3 بيتي 278
7.2.3 شمارنده دودويي همزمان 4 بيتي 279
7.2.4 شمارندههاي دهدهي همزمان 280
7.2.5 آيسي 74HC163 شمارنده دودويي همزمان 4 بيتي 282
7.3 شمارندههاي همزمان بالا/ پايين شمار 285
7.3.1 آيسي 74LS190 شمارنده دهدهي بالا/ پايين شمار 288
7.4 طراحي شمارندههاي همزمان 289
7.4.1 مرحله 1: نمودار حالت 290
7.4.2 مرحله 2: جدول حالت بعدي 291
7.4.3 مرحله 3: جدول انتقال فليپفلاپ 291
7.4.4 مرحله 4: نقشههاي كارنو 292
7.4.5 مرحله 5: عبارات منطقي براي وروديهاي فليپ فلاپ 293
7.4.6 مرحله 6: پيادهسازي شمارنده 293
7.5 شمارندههاي پشت سرهم 300
7.5.1 آيسي شمارندهي پشت سر هم با رشتههاي
ناقص 303
7.6 كدگشايي شمارنده 304
7.7 كاربردهاي شمارنده 306
7.7.1 ساعت ديجيتال 306
7.7.2 كنترل پارك اتومبيل 308
فصل 8 : ثبّاتهاي انتقالي 315
8.1 وظايف اصلي ثبّات انتقالي 316
8.2 ثبّاتهاي انتقالي ورودي متوالي/ خروجي متوالي 317
8.3 ثبّاتهاي انتقالي ورودي متوالي/ خروجي موازي 322
8.4 ثبّاتهاي انتقالي ورودي موازي/ خروجي متوالي 324
8.5 ثبّاتهاي انتقالي ورودي موازي/ خروجي موازي 329
8.6 ثبّاتهاي انتقالي دوطرفه 330
8.7 شمارندهي ثبّات انتقالي 333
8.8 كاربردهاي ثبّات انتقالي 336
فصل 9 : حافظهها 343
9.1 اساس حافظههای نیمههادی 344
9.2 حافظههای فقط خواندنی (ROM) 349
9.3 ROMهای قابل برنامهریزی (PROM و EPROM) 358
9.4 حافظههای با دستیابی تصادفی (RAM) خواندنی/ نوشتنی 359
فصل 10 : وسايل منطقي قابل برنامهريزي و کاربرد آنها 369
10.1 دستهبنديها و آرايشهاي PLD 370
10.2 آرايه قابل برنامهريزي منطقي (PAL) 374
10.3 آرايهي عمومي منطقي (GAL) 378
10.4 زبان توصيف سختافزاري VHDL 381
10.4.1 قواعد پایهای VHDL 381
10.4.2 شکل کلی برنامه VHDL 385
10.4.3 سطوح طراحی در زبان VHDL 386