اگر با ، مدارهای منطقی و طراحی دیجیتال سروکار دارید، احتمالاً با دو عبارت مهم SOP و POS روبهرو شدهاید. این دو روش، راهی استاندارد برای نمایش یک تابع بولی هستند و در Truth Table، سادهسازی با K-Map و طراحی Combinational Circuit کاربرد زیادی دارند.
🔰 SOP و POS چرا مهم هستند؟
فرض کنید یک مدار دیجیتال چند ورودی دارد و خروجی آن بر اساس ترکیب صفر و یک ورودیها تغییر میکند. میتوانیم رفتار چنین مداری را با یک Truth Table نمایش دهیم؛ اما برای تبدیل جدول حقیقت به یک عبارت بولی، به یک روش منظم نیاز داریم.
دو روش بسیار مهم برای این کار، Sum of Products و Product of Sums هستند.
🧠 ابتدا سه عملگر اصلی Boolean را بشناسیم
AND
AND زمانی خروجی 1 میدهد که تمام ورودیهای آن 1 باشند.
OR
OR زمانی خروجی 1 میدهد که حداقل یکی از ورودیها 1 باشد.
NOT
عملگر NOT مقدار یک متغیر را معکوس میکند:
1️⃣ SOP چیست؟
SOP مخفف Sum of Products است.
در Boolean Algebra، کلمه Sum به OR و کلمه Product به AND اشاره دارد.
بنابراین در SOP چند عبارت AND شده داریم که با OR به یکدیگر متصل شدهاند.
در این عبارت سه Product Term داریم:
A'BACBC'
و این Termها با OR ترکیب شدهاند؛ بنابراین عبارت یک SOP است.
🔹 Product Term چیست؟
هر عبارتی که Literalهای آن با AND به یکدیگر متصل شده باشند، یک Product Term محسوب میشود.
در این مثال سه Literal یعنی A'، B و C
با AND ترکیب شدهاند.
2️⃣ POS چیست؟
POS مخفف Product of Sums است.
در POS چند عبارت OR شده داریم که با AND به یکدیگر متصل میشوند.
هر پرانتز یک Sum Term است و خود پرانتزها با AND به یکدیگر متصل شدهاند.
🔹 Sum Term چیست؟
هر گروهی از Literalها که با OR ترکیب شده باشند، یک Sum Term نام دارد.
⚖️ تفاوت SOP و POS
| ویژگی | SOP | POS |
|---|---|---|
| نام کامل | Sum of Products | Product of Sums |
| ساختار | OR از ANDها | AND از ORها |
| مثال | A’B + AC | (A+B)(A’+C) |
| Term اصلی | Product Term | Sum Term |
📋 چگونه از Truth Table یک SOP بسازیم؟
یکی از مهمترین کاربردهای SOP، استخراج تابع بولی از Truth Table است.
| A | B | C | F |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 0 |
مرحله 1: ردیفهای F=1 را پیدا کنیم
ردیفهای موردنظر:
مرحله 2: هر ردیف را به Minterm تبدیل کنیم
ردیف 001
A = 0 → A’
B = 0 → B’
C = 1 → C
ردیف 011
A = 0 → A’
B = 1 → B
C = 1 → C
ردیف 110
A = 1 → A
B = 1 → B
C = 0 → C’
مرحله 3: Mintermها را با OR ترکیب کنیم
F = 1 → ردیف را انتخاب کن → Minterm بساز → با OR ترکیب کن.
🔢 Minterm چیست؟
هر Product Term کامل که تمام متغیرهای تابع را دقیقاً یکبار شامل شود، یک Minterm است.
برای مثال:
یک Minterm برای تابع سهمتغیره است.
شماره ردیف Truth Table نیز میتواند برای نمایش Minterm استفاده شود. مثلاً:
011 → m₃
110 → m₆
بنابراین تابع مثال ما به شکل خلاصه نوشته میشود:
📋 چگونه از Truth Table یک POS بسازیم؟
در POS مسیر را برعکس SOP طی میکنیم.
در Truth Table بالا ردیفهای صفر عبارتاند از:
قانون تبدیل ردیف به Maxterm
- اگر مقدار متغیر 0 باشد → خود متغیر را مینویسیم.
- اگر مقدار متغیر 1 باشد → مکمل متغیر را مینویسیم.
ردیف 000
A = 0 → A
B = 0 → B
C = 0 → C
ردیف 010
A = 0 → A
B = 1 → B’
C = 0 → C
ردیف 100
A = 1 → A’
B = 0 → B
C = 0 → C
در نهایت تمام Sum Termها را با AND ترکیب میکنیم:
F = 0 → ردیف را انتخاب کن → Maxterm بساز → با AND ترکیب کن.
🔢 Maxterm چیست؟
Sum Termهایی که از ردیفهای صفر Truth Table ساخته میشوند، Maxterm نام دارند.
اگر شماره ردیفهای صفر مثال ما را بنویسیم:
فرم خلاصه POS به صورت زیر است:
🧩 چرا قانون مکمل در SOP و POS متفاوت است؟
این قسمت یکی از مهمترین نکات برای جلوگیری از اشتباه است.
در SOP
میخواهیم Minterm در ردیف انتخابشده برابر 1 شود.
مثلاً برای ردیف 001:
چون A و B صفر هستند، مکمل آنها برابر 1 میشود و C چون خودش 1 است، بدون مکمل نوشته میشود.
در POS
میخواهیم Maxterm در ردیف انتخابشده برابر 0 شود.
برای ردیف 000:
چون تمام متغیرها صفر هستند، OR نیز صفر خواهد شد.
SOP → Minterm → فقط در یک حالت 1 میشود.
POS → Maxterm → فقط در یک حالت 0 میشود.
🔌 SOP و POS در مدار منطقی
SOP و POS مستقیماً با ساختار Logic Gateها ارتباط دارند.
ساختار SOP
در SOP ابتدا Product Termها را با AND میسازیم و سپس خروجی آنها را به یک OR Gate میدهیم.
ساختار POS
در POS ابتدا Sum Termها را با OR میسازیم و سپس خروجی آنها را به AND میدهیم.
🔄 آیا یک تابع میتواند هم SOP داشته باشد و هم POS؟
بله. یک تابع Boolean را میتوان با هر دو فرم نمایش داد. این دو فرم فقط روشهای متفاوتی برای بیان یک رفتار منطقی هستند.
از Truth Table میتوان Canonical SOP را از ردیفهای 1 و Canonical POS را از ردیفهای 0 استخراج کرد.
Canonical Form
در Canonical SOP، هر Minterm تمام متغیرهای تابع را دارد. در Canonical POS نیز هر Maxterm تمام متغیرها را دارد.
✂️ Canonical SOP با SOP سادهشده چه تفاوتی دارد؟
این دو مفهوم را نباید با یکدیگر اشتباه گرفت.
Canonical SOP
هر Term تمام متغیرها را شامل میشود.
Simplified SOP
این عبارت همچنان SOP است، اما Canonical SOP نیست؛ چون همه Termها الزاماً تمام متغیرها را ندارند.
🗺️ ارتباط SOP و POS با K-Map
پس از استخراج تابع از Truth Table، معمولاً میخواهیم آن را ساده کنیم تا مدار نهایی گیتهای کمتری داشته باشد.
یکی از روشهای مهم این کار Karnaugh Map یا K-Map است.
برای سادهسازی SOP معمولاً خانههای دارای 1 را گروهبندی میکنیم.
برای سادهسازی POS معمولاً خانههای دارای 0 را گروهبندی میکنیم.
💻 ارتباط SOP و POS با Verilog
میتوان یک عبارت منطقی SOP را مستقیماً در Verilog توصیف کرد.
module logic_example (
input wire A,
input wire B,
input wire C,
output wire F
);
assign F = (A & B) | C;
endmodule
این کد تابع زیر را توصیف میکند:
از دید سختافزار، ابزار synthesis این توصیف را به ساختار منطقی مناسب برای فناوری هدف، مثلاً منابع منطقی FPGA، تبدیل میکند.
Code ≠ Hardware
Verilog یک Hardware Description Language است. یعنی کد Verilog قرار نیست مثل یک برنامه معمولی روی CPU اجرا شود؛ بلکه برای توصیف رفتار یا ساختار سختافزار استفاده میشود.
⚠️ اشتباهات رایج
اشتباه ۱: جابهجا کردن SOP و POS
AB + AC یک SOP است، نه POS.
اشتباه ۲: انتخاب ردیفهای اشتباه
Canonical SOP → ردیفهای F=1
Canonical POS → ردیفهای F=0
اشتباه ۳: مکملگذاری اشتباه در POS
در SOP:
0 → مکمل
در POS:
1 → مکمل
اشتباه ۴: یکی دانستن SOP و Canonical SOP
SOP میتواند سادهشده باشد و لازم نیست همه متغیرها در هر Term حضور داشته باشند.
🧠 یک روش سریع برای تشخیص SOP و POS
SOP
داخل Termها AND و بین Termها OR داریم.
POS
داخل پرانتزها OR و بین پرانتزها AND داریم.
📌 خلاصه قوانین مهم
| موضوع | SOP | POS |
|---|---|---|
| نام | Sum of Products | Product of Sums |
| ساختار | OR از ANDها | AND از ORها |
| Canonical | ردیفهای F=1 | ردیفهای F=0 |
| Term | Minterm | Maxterm |
| نماد | Σm | ΠM |
| K-Map | گروهبندی 1ها | گروهبندی 0ها |
🎯 چرا یادگیری SOP و POS مهم است؟
SOP و POS فقط فرمولهایی برای حل تمرین نیستند. این مفاهیم بخشی از زبان طراحی مدارهای دیجیتال هستند.
- Truth Table را به Boolean Function تبدیل میکنیم.
- Boolean Function را میتوان با K-Map ساده کرد.
- تابع سادهشده را میتوان با Logic Gateها پیادهسازی کرد.
- همان منطق را میتوان با Verilog توصیف کرد.
- ابزار synthesis میتواند این توصیف را به سختافزار FPGA نگاشت کند.
📚 این مطلب در مسیر یادگیری کجاست؟
بعد از SOP و POS، قدم طبیعی بعدی یادگیری K-Map و سادهسازی توابع Boolean است؛ سپس میتوان این توابع را به مدارهایی مانند Half Adder، Full Adder، Multiplexer و Comparator تبدیل کرد.
🧠 قبل از رفتن، خودت فکر کن!
سؤال اصلی
یک تابع سهورودی داریم که فقط در حالتهای
001، 011 و 110
خروجی آن 1 است.
بدون نوشتن Truth Table کامل، Canonical SOP را بنویسید.
🔍 مشاهده پاسخ
برای SOP ردیفهای F=1 را انتخاب میکنیم:
سؤال ۲
اگر تابعی 4 ورودی داشته باشد، Truth Table آن چند حالت دارد؟
🔍 مشاهده پاسخ
سؤال ۳
عبارت (A+B)(A'+C) SOP است یا POS؟
🔍 مشاهده پاسخ
POS است؛ چون داخل پرانتزها OR و بین پرانتزها AND داریم.
سؤال ۴
برای Canonical POS باید ردیفهای F=1 را انتخاب کنیم یا F=0؟
🔍 مشاهده پاسخ
ردیفهای F=0.
✅ جمعبندی
- SOP یعنی OR کردن چند Product Term.
- POS یعنی AND کردن چند Sum Term.
- Canonical SOP از ردیفهای F=1 ساخته میشود.
- Canonical POS از ردیفهای F=0 ساخته میشود.
- Canonical SOP بر پایه Mintermهاست.
- Canonical POS بر پایه Maxtermهاست.
- SOP معمولاً ساختار AND-OR دارد.
- POS معمولاً ساختار OR-AND دارد.
- هر دو فرم میتوانند نقطه شروعی برای K-Map و سادهسازی باشند.
SOP → Ones → Minterms → Σm
POS → Zeros → Maxterms → ΠM
📂 دستهبندی
- Digital Logic
- Boolean Algebra
- Computer Architecture