مقدمه
در دهه شصت دانشجوی رشته مهندسی برق بودم. درآن زمان درس «مدار منطقی» معمولاً از کتابهایی مانند مانو و پترسون تدریس میشد، زیرا فقط این کتب در دسترس بود که به صورت زبان اصلی بودند و هنوز ترجمه نشده بودند.
این دو کتاب، کتابهای بسیار مفیدی بودند، اما دو اشکال داشتند؛ اول اینکه انگیزه فراگیری در خواننده ایجاد نمیکردند. علت این بود که دانشجو تا قبل از آن با مدارهای آنالوگ آشنا شده بود و ناگهان در این درس با مفهوم دیجیتال آشنا میشد. اگر موضوع تفاوتها و ضرورتهای این دو سیستم آناگوگ و دیجیتال بهخوبی برای دانشجو مطرح نشود، تا انتهای کتاب دانشجو با ابهاماتی مواجه خواهد بود. اشکال دیگر این دو کتاب این بود که کاربردی نبودند و دانشجو با مفاهیم کاربردی اینگونه مدارها توسط این کتابها آشنا نمیشد. کاربردهای این مدارها فقط به توضیحات اساتید محترم به هنگام ارائه درس منحصر بود که باعث مشکلاتی در درس آزمایشگاه مدار منطقی نیز میشد.
در سال 1375 که اولین بار این درس را تدریس کردم، بسیار جستوجو کردم تا کتابی مناسب را انتخاب کنم که نه تنها دو اشکال مذکور را نداشته باشد بلکه متن آن برای فهم بیشتر، متنی سسلیس و روان باشد. پس از بررسی دهها کتاب دیجیتال به زبان اصلی کتاب Fundamental of Digital نوشتۀ Floyd را بسیار مناسب یافتم و پس از دو سال تدریس این کتاب، در صدد ترجمۀ آن برآمدم. ویرایش پنجم کتاب را ترجمه کردم که متوجه شدم ویرایش ششم آن منتشر شده است، لذا ویرایش ششم را ترجمه کردم و در سال 1378 کتاب منتشر شد.
در تمام این مدت در سالهای مختلف این درس را تدریس کردهام. پس از تصویب سرفصل جدید در سال 1400 و تغییر نام درس از مدار منطقی به سیستمهای دیجیتال 1 بر آن شدم که با همکار محترم خود جناب آقای مهندس آژنگ صائب که ایشان هم سالیان متمادی این درس و آزمایشگاه آن را ارائه کرده بودند کتابی مناسب تدوین کنیم. کتاب حاضر محصول سالیان متمادی تدریس و تجربۀ اینجانبان است که تقدیم حضور علاقهمندان میشود. مبنای اصلی کتاب ویرایش یازدهم کتاب فلوید است، اما براساس سرفصل جدید مطالبی از آن حذف شده و مطالب جدیدی به آن اضافه شده است. از طرف دیگر بهمنظور غنای بیشتر مطالب کتاب و کمک به درک بهتر مفاهیم سعی شده است کتاب حاوی مثالهای زیاد و متنوع باشد و این خود وجه تمایز دیگر این کتاب با کتب مشابه است. از ویژگیهای مهم دیگر این کتاب وجود یک فصل نرمافزاری براساس زبان برنامهنویسی VHDL جهت برنامهریزی FPGA است که امروزه دانستن آن برای فارغالتحصیلان یک ضرورت محسوب میشود. در پایان از سرکار خانمها ناهید استیری، سپیده قاضی مغربی و فاطمه قاضی مغربی که در ویرایش و تصحیح کتاب ما را یاری کردند و نیز از ریاست محترم و کارکنان گرامی انتشارات دانشبنیاد که در مراحل مختلف چاپ کتاب ما را یاری کردند، کمال تشکر را داریم.
سعید قاضی مغربی
فهرست مطالب
فصل 1
مقدمهای بر مفاهیم دیجیتال 1
1.1 کمیتهای دیجیتال و آنالوگ 2
1.2 رقم دودویی، سطوح منطقی و شکل موجهای دیجیتال 5
1.3 عملیات منطقی پایه 14
1.4 توابع منطقی پایه 16
1.5 مدارهای مجتمع دیجیتال 24
1.6 مقدمهای بر منطق قابل برنامهریزی 28
فصل 2
سيستمهاي اعداد، عمليات و كدها 33
2.1 اعداد دهدهي 34
2.2 اعداد دودويي 35
2.3 تبديل دهدهي به دودويي 38
2.4 محاسبات دودويي 41
2.5 مكملهاي يكي و دويي اعداد دودويي 45
2.6 اعداد علامتدار 46
2.7 عمليات محاسباتي با اعداد علامتدار 49
2.8 اعداد شانزدهتايي 58
2.9 اعداد هشتتايي 63
2.10 عدد دهدهي كد شده به دودويي (BCD) 66
2.11 كدهاي ديجيتال 69
2.12 روش توازن براي آشكارسازي خطا 79
فصل 3
گِيتهاي منطقي، جبر بولي و سادهسازي منطقي 95
3.1 معكوسكننده 96
3.1.1 نشاندهندهي قطبيت و نفي 96
3.1.2 جدول صحت معكوسكننده 97
3.1.3 عملكرد معكوسكننده 97
3.1.4 نمودارهاي زماني 97
3.1.5 بيان منطقي براي معكوس كننده 98
3.1.6 كاربرد معكوسكننده 98
3.2 گيت AND 99
3.2.1 عملكرد منطقي گيت AND 99
3.2.2 جدول صحت گيت AND 100
3.2.3 عملكرد پالسي 101
3.2.4 عبارت منطقي براي گيت AND 103
3.3 گيت OR 105
3.3.1 عملكرد منطقي گيت OR 105
3.3.2 جدول صحت گيت OR 106
3.3.3 عملكرد پالسي 106
3.3.4 عبارت منطقي براي گيت OR 107
3.3.5 يك كاربرد: آشكارسازي ورود بدون اجازه 108
3.4 گيت NAND 109
3.4.1 عملكرد منطقي گيت NAND 109
3.4.2 عملكرد پالسي 110
3.4.3 گيت OR منفي معادل گيت NAND 111
3.4.4 عبارتهاي منطقي براي گيت NAND 113
3.5 گيت NOR 114
3.5.1 عملكرد منطقي گيت NOR 114
3.5.2 عملكرد پالسي 115
3.5.3 گيت NOR بهعنوان گيت AND با ورودي فعال - پايين 116
3.6 گيتهاي OR انحصاري و NOR انحصاري 117
3.6.1 گيت OR انحصاري 117
3.6.2 گيت NOR انحصاري 119
3.6.3 عملكرد پالسي 119
3.7 خانوادههای آیسیهای منطقی 121
3.7.1 مشخصات عملي 122
3.7.2 قطعات ويژه 124
3.7.3 ورقهي اطلاعات 129
3.7.4 توضيح پارامترهاي ورقهي اطلاعات 129
3.8 عمليات و عبارتهاي بولي 131
3.8.1 جمع بولي 132
3.8.2 ضرب بولي 132
3.9 قوانين و قواعد جبر بولي 133
3.9.1 قوانين جبر بولي 133
3.9.2 قانون جابجايي 133
3.9.3 قانون شركتپذيري 134
3.9.4 قانون توزيعپذيري 134
3.9.5 قواعد جبر بولي 135
3.10 قضاياي دمورگان 139
3.10.1 بهكار بردن قضاياي دمورگان 141
3.11 تحليل بولي مدارهاي منطقي 143
3.11.1 عبارت بولي براي مدارهاي منطقي 143
3.11.2 تشكيل جدول صحت براي مدار منطقي 144
3.12 سادهسازي با استفاده از جبر بولي 145
فصل 4
نقشه كارنو و منطق تركيبي 169
4.1 شكلهاي استاندارد عبارتهاي بولي 170
4.1.1 شكل مجموع حاصلضربها (SOP) 170
4.1.2 شكل SOP استاندارد 171
4.1.3 شكل حاصلضرب مجموعها (POS) 174
4.1.4 شكل POS استاندارد 174
4.2 عبارتهاي بولي و جداول صحت 177
4.2.1 تبديل عبارتهاي SOP استاندارد به قالب جدول صحت 178
4.2.2 تعيين عبارتهاي استاندارد از جدول صحت 179
4.3 نقشه كارنو 181
4.3.1 نقشه كارنو سه متغيره 181
4.4 حداقل كردن SOP توسط نقشه كارنو 183
4.4.1 ترسيم عبارت SOP غير استاندارد 185
4.4.2 ترسيم مستقيم از جدول صحت 192
4.4.3 حالتهاي بيتفاوت 192
4.5 حداقل كردن POS توسط نقشه كارنو 194
4.5.1 ترسيم يك عبارت POS استاندارد 194
4.5.2 نقشه كارنو در سادهسازی عبارتهاي POS 195
4.5.3 تبديل بين POS و SOP با استفاده از نقشه كارنو 197
4.6 نقشههاي كارنو پنج متغيره 198
4.6.1 مجاورت سلولي 198
4.6.2 عبارت بولي ساده شده 200
4.7 سيستم ديجيتال كاربردي 200
4.7.1 صفحه نمايش 7 قطعهاي 200
4.8 منطق كدگشايي قطعه 203
4.9 مدارهاي منطق تركيبي 207
4.9.1 منطق AND-OR 207
4.9.2 منطق AND-OR-NOT 208
4.9.3 منطق OR انحصاري 210
4.9.4 منطق NOR انحصاري 210
4.10 پيادهسازي منطق تركيبي 211
4.10.1 مدار منطقي با استفاده از عبارت بولي 211
4.10.2 ارائه مدار منطقي با استفاده از جدول صحت 213
4.11 خاصيت عموميت گيتهاي NAND و NOR 218
4.11.1 گيت NAND بهعنوان يك قطعهی منطقي عمومي 218
4.11.2 گیت NOR بهعنوان یک قطعهی منطقی عمومی 220
4.12 منطق تركيبي با استفاده از گيتهاي NAND و NOR 221
4.12.1 نمودارهای منطقی NAND 222
4.12.2 منطق NOR 224
4.13 عملكرد با شكل موجهاي پالسي 226
فصل 5
توابع منطقي تركيبي 265
5.1 جمعكنندههاي پايه 266
5.1.1 نيمه جمع كننده 266
5.1.2 جمعكننده كامل 267
5.2 جمعكنندههاي دودويي موازي 271
5.3 آيسيهاي جمعکننده MSI،LS83A74 و LS28374 273
5.3.1 توسعه جمع كننده 274
5.3.2 يك جمعکننده كاربردي 276
5.4 مقايسهي جمعكنندههاي رقم نقلي سلسله مراتبي و جمعکننده با پيشبيني رقم نقلي 278
5.4.1 جمعكننده رقم نقلي سلسله مراتبي 278
5.4.2 جمعکننده با پيشبيني رقم نقلي 279
5.5 مقايسهكنندهها 282
5.5.1 مدارهاي مجتمع مقايسهکننده 284
5.6 كدگشاها 289
5.6.1 كدگشاي دودويي پايه 289
5.6.2 كدگشاي چهار بيتي 290
5.6.3 آيسي 74154 كدگشاي 4 خط به 16 خط 292
5.6.4 يك کدگشاي كاربردي 294
5.6.5 كدگشاي BCD به دهدهي 296
5.6.6 کدگشاي BCD به 7 قطعهاي 297
5.7 كدكنندهها 300
5.7.1 كدكننده دهدهي به BCD 300
5.7.2 کدكننده دهدهي به BCD با اولويت 302
5.7.3 آيسي 74LS147 كدکننده دهدهي به BCD 304
5.7.4 آيسي 74148 كدكننده هشتتايي به دودويي 305
5.7.5 كاربردي از كدكننده 306
5.8 مبدلهاي كد 307
5.8.1 تبديل كد BCD به دودويي 307
5.8.2 مبدلهاي MSI، BCD به دودويي و دودويي به BCD 310
5.8.3 تبدیل گری به دودویی و دودویی به گری 311
5.9 مولتي پلكسر (انتخابگر دادهها) 313
5.9.1 آیسی 74157 چهار مولتیپلکسر/ انتخابگر دادههای دو ورودی 316
5.9.2 نماد منطقی ANSI/ IEEE 317
5.9.3 آیسی 74151A مولتیپلکسر/ انتخابگر دادههای هشت ورودی 317
5.9.4 آیسی 74150 مولتیپلکسر/ انتخابگر دادههای شانزده ورودی 318
5.10 کاربردهای انتخابگر دادهها/ مولتیپلکسر 320
5.10.1 مولتیپلکسر صفحه نمایش هفت قطعهای 320
5.10.2 مولد تابع منطقی 322
5.11 دیمولتی پلکسر 325
5.11.1 آیسی 74154 بهعنوان دیمولتیپلکسر 326
5.12 مولد/ آزماینده توازن 326
5.12.1 منطق توازن 327
5.12.2 منطق مولد/ آزماینده توازن 328
5.12.3 آیسی 74180 مولد/ آزماینده توازن 9 بیتی 331
5.12.4 سیستم انتقال دادهها با آشکارسازی خطا 332
5.13 سیستم دیجیتال کاربردی 334
5.13.1 نیاز عمومی سیستم 334
5.13.2 توسعه نمودار بلوکی سیستم 334
5.13.3 نمودار حالت 336
5.13.4 منطق خروجی و کدگشای حالت 337
فصل 6
فليپ و فلاپها و وسايل مربوط 375
6.1 نگهدارنده 376
6.1.1 نگهدارنده S-R 376
6.1.2 نگهدارنده بهعنوان حذف كننده پرش اتصال 379
6.1.3 نگهدارنده چهارتايي 279LS74 380
6.1.4 نگهدارنده S-R با مدخل 381
6.1.5 نگهدارنده D با مدخل 382
6.1.6 آي سي 75LS 74 نگهدارنده چهارتايي 383
6.2 فليپ فلاپهاي تحريك با لبه 383
6.2.1 فليپ فلاپ S-R تحريك شده با لبه 384
6.2.2 روشي براي راهاندازي با لبه 386
6.2.3 فليپ فلاپ D تحريك با لبه 388
6.2.4 فليپ فلاپ J-K تحريك بالبه 390
6.2.5 ورودي غيرهمزمان 392
6.2.6 وسايل خاص 394
6.2.7 آي سي 74LS74A با دو فليپ فلاپ D 394
6.2.8 آي سي 74LS76A با دو فليپ فلاپ J-K 395
6.3 فليپ فلاپهاي تابع - متبوع 396
6.3.1 فليپ فلاپهاي J-K تحريك شده با پالس (تابع- متبوع) 396
6.3.2 فليپفلاپ J-K تابع- متبوع سدکننده دادهها 398
6.4 مشخصات عملي فليپ فلاپ 400
6.4.1 زمانهاي تأخير انتشار 400
6.4.2 زمان برپايي 401
6.4.3 زمان نگهداري 401
6.4.4 حداكثر فركانس ساعت 401
6.4.5 عرض پالس 402
6.4.6 توان تلفاتي 402
6.4.7 مقايسه فليپ فلاپهاي خاص 402
6.5 كاربردهاي فليپ فلاپ 403
6.5.1 ذخيرهسازي دادههاي موازي 403
6.5.2 تقسيم فركانس 404
6.5.3 شمارش 406
فصل 7
شمارندهها 431
7.1 عملكرد شمارندههاي غيرهمزمان 432
7.1.1 شمارنده دودويي غيرهمزمان دوبيتي 432
7.1.2 نمودار زماني 433
7.1.3 شمارنده دودويي غيرهمزمانِ سه بيتي 434
7.1.4 زمان تاخير 434
7.1.5 شمارندههاي دهدهي غيرهمزمان 437
7.1.6 آيسي 74LS93A شمارنده دودويي چهاربيتي 440
7.2 عملكرد شمارنده همزمان 442
7.2.1 شمارنده دودويي همزمان 2 بيتي 442
7.2.2 شمارنده دودويي همزمان 3 بيتي 444
7.2.3 شمارنده دودويي همزمان 4بيتي 445
7.2.4 شمارندههاي دهدهي همزمان 446
7.2.5 آيسي 74HC163 شمارنده دودويي همزمان 4 بيتي 448
7.3 شمارندههاي همزمان بالا/ پايين شمار 451
7.3.1 آيسي 74LS190 شمارنده دهدهي بالا/ پايين شمار 454
7.4 طراحي شمارندههاي همزمان 455
7.4.1 مرحله 1: نمودار حالت 456
7.4.2 مرحله 2: جدول حالت بعدي 457
7.4.3 مرحله 3: جدول انتقال فليپ فلاپ 457
7.4.4 مرحله 4: نقشههاي كارنو 458
7.4.5 مرحله 5: عبارات منطقي براي وروديهاي فليپ فلاپ 459
7.4.6 مرحله 6: پيادهسازي شمارنده 459
7.5 شمارندههاي پشت سرهم 466
7.5.1 آيسي شمارندهي پشت سر هم با رشتههاي ناقص 469
7.6 كدگشايي شمارنده 470
7.6.1 كدگشاييِ زائدههاي ناگهاني 472
7.7 كاربردهاي شمارنده 474
7.7.1 ساعت ديجيتال 474
7.7.2 كنترل پارك اتومبيل 476
7.7.3 تبديل دادههاي موازي به متوالي (مولتي پلكسكردن) 478
فصل 8
ثبّاتهاي انتقالي 505
8.1 وظايف اصلي ثبّات انتقالي 506
8.2 ثبّاتهاي انتقالي ورودي متوالي/ خروجي متوالي 507
8.3 ثبّاتهاي انتقالي ورودي متوالي/ خروجي موازي 512
8.4 ثبّاتهاي انتقالي ورودي موازي/ خروجي متوالي 514
8.5 ثبّاتهاي انتقالي ورودي موازي/ خروجي موازي 518
8.6 ثبّاتهاي انتقالي دوطرفه 520
8.7 شمارندهي ثبّات انتقالي 523
8.8 كاربردهاي ثبّات انتقالي 525
فصل 9
حافظهها 547
9.1 اساس حافظههای نیمههادی 548
9.2 حافظههای فقط خواندنی (ROM) 553
9.3 ROMهای قابل برنامهریزی (PROM و EPROM) 562
9.4 حافظههای با دستیابی تصادفی (RAM) خواندنی/ نوشتنی 565
9.5 حافظههای آنی 576
9.6 توسعهی حافظه 577
9.7 انواع خاص حافظهها 583
فصل 10
وسايل منطقي قابل برنامهريزي و کاربرد آنها 599
10.1 دستهبنديها و آرايشهاي PLD 600
10.2 آرايه قابل برنامهريزي منطقي (PAL) 604
10.3 آرايهي عمومي منطقي (GAL) 610
10.4 معرفي GAL22V10 613
10.5 معرفي GAL16V8 621
10.6 OLMC کامل 624
10.7 انتخاب روال OLMC 627
10.8 زبان توصيف سختافزاري Verilog 630
10.8.1 طراحي در سطح گيت 634
10.8.2 طراحي در سطح توصيف انتقال ثبّاتي (جريان دادهها) 637
10.8.3 طراحي در سطح رفتاري 641