اگر با ، مدارهای منطقی و طراحی دیجیتال سروکار دارید، احتمالاً با دو عبارت مهم SOP و POS روبه‌رو شده‌اید. این دو روش، راهی استاندارد برای نمایش یک تابع بولی هستند و در Truth Table، ساده‌سازی با K-Map و طراحی Combinational Circuit کاربرد زیادی دارند.

🔰 SOP و POS چرا مهم هستند؟

فرض کنید یک مدار دیجیتال چند ورودی دارد و خروجی آن بر اساس ترکیب صفر و یک ورودی‌ها تغییر می‌کند. می‌توانیم رفتار چنین مداری را با یک Truth Table نمایش دهیم؛ اما برای تبدیل جدول حقیقت به یک عبارت بولی، به یک روش منظم نیاز داریم.

دو روش بسیار مهم برای این کار، Sum of Products و Product of Sums هستند.

💡 ایده اصلی: SOP و POS دو فرم استاندارد برای نمایش تابع‌های Boolean هستند که بین Truth Table و مدار منطقی ارتباط ایجاد می‌کنند.

🧠 ابتدا سه عملگر اصلی Boolean را بشناسیم

AND

AND زمانی خروجی 1 می‌دهد که تمام ورودی‌های آن 1 باشند.

A · B

OR

OR زمانی خروجی 1 می‌دهد که حداقل یکی از ورودی‌ها 1 باشد.

A + B

NOT

عملگر NOT مقدار یک متغیر را معکوس می‌کند:

A’    یا    Ā

1️⃣ SOP چیست؟

SOP مخفف Sum of Products است.

Sum of Products = OR of AND Terms

در Boolean Algebra، کلمه Sum به OR و کلمه Product به AND اشاره دارد.

بنابراین در SOP چند عبارت AND شده داریم که با OR به یکدیگر متصل شده‌اند.

F = A’B + AC + BC’

در این عبارت سه Product Term داریم:

  • A'B
  • AC
  • BC'

و این Termها با OR ترکیب شده‌اند؛ بنابراین عبارت یک SOP است.

🔹 Product Term چیست؟

هر عبارتی که Literalهای آن با AND به یکدیگر متصل شده باشند، یک Product Term محسوب می‌شود.

A’BC

در این مثال سه Literal یعنی A'، B و C با AND ترکیب شده‌اند.

2️⃣ POS چیست؟

POS مخفف Product of Sums است.

Product of Sums = AND of OR Terms

در POS چند عبارت OR شده داریم که با AND به یکدیگر متصل می‌شوند.

F = (A + B’) (A’ + C) (B + C’)

هر پرانتز یک Sum Term است و خود پرانتزها با AND به یکدیگر متصل شده‌اند.

🔹 Sum Term چیست؟

هر گروهی از Literalها که با OR ترکیب شده باشند، یک Sum Term نام دارد.

(A + B’ + C)

⚖️ تفاوت 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 است.

قانون: برای ساخت Canonical SOP، ردیف‌هایی را انتخاب می‌کنیم که خروجی F = 1 دارند.
A B C F
0000
0011
0100
0111
1000
1010
1101
1110

مرحله 1: ردیف‌های F=1 را پیدا کنیم

ردیف‌های موردنظر:

001     011     110

مرحله 2: هر ردیف را به Minterm تبدیل کنیم

ردیف 001

A = 0 → A’
B = 0 → B’
C = 1 → C

A’B’C

ردیف 011

A = 0 → A’
B = 1 → B
C = 1 → C

A’BC

ردیف 110

A = 1 → A
B = 1 → B
C = 0 → C’

ABC’

مرحله 3: Mintermها را با OR ترکیب کنیم

F = A’B’C + A’BC + ABC’
🎯 قانون طلایی SOP:
F = 1 → ردیف را انتخاب کن → Minterm بساز → با OR ترکیب کن.

🔢 Minterm چیست؟

هر Product Term کامل که تمام متغیرهای تابع را دقیقاً یک‌بار شامل شود، یک Minterm است.

برای مثال:

A’BC

یک Minterm برای تابع سه‌متغیره است.

شماره ردیف Truth Table نیز می‌تواند برای نمایش Minterm استفاده شود. مثلاً:

001 → m₁
011 → m₃
110 → m₆

بنابراین تابع مثال ما به شکل خلاصه نوشته می‌شود:

F(A,B,C) = Σm(1,3,6)

📋 چگونه از Truth Table یک POS بسازیم؟

در POS مسیر را برعکس SOP طی می‌کنیم.

قانون: برای ساخت Canonical POS، ردیف‌هایی را انتخاب می‌کنیم که خروجی F = 0 دارند.

در Truth Table بالا ردیف‌های صفر عبارت‌اند از:

000    010    100    101    111

قانون تبدیل ردیف به Maxterm

  • اگر مقدار متغیر 0 باشد → خود متغیر را می‌نویسیم.
  • اگر مقدار متغیر 1 باشد → مکمل متغیر را می‌نویسیم.

ردیف 000

A = 0 → A
B = 0 → B
C = 0 → C

(A + B + C)

ردیف 010

A = 0 → A
B = 1 → B’
C = 0 → C

(A + B’ + C)

ردیف 100

A = 1 → A’
B = 0 → B
C = 0 → C

(A’ + B + C)

در نهایت تمام Sum Termها را با AND ترکیب می‌کنیم:

F = (A+B+C)(A+B’+C)(A’+B+C)(A’+B+C’)(A’+B’+C’)
🎯 قانون طلایی POS:
F = 0 → ردیف را انتخاب کن → Maxterm بساز → با AND ترکیب کن.

🔢 Maxterm چیست؟

Sum Termهایی که از ردیف‌های صفر Truth Table ساخته می‌شوند، Maxterm نام دارند.

اگر شماره ردیف‌های صفر مثال ما را بنویسیم:

0, 2, 4, 5, 7

فرم خلاصه POS به صورت زیر است:

F(A,B,C) = ΠM(0,2,4,5,7)

🧩 چرا قانون مکمل در SOP و POS متفاوت است؟

این قسمت یکی از مهم‌ترین نکات برای جلوگیری از اشتباه است.

در SOP

می‌خواهیم Minterm در ردیف انتخاب‌شده برابر 1 شود. مثلاً برای ردیف 001:

A’B’C = 1

چون A و B صفر هستند، مکمل آن‌ها برابر 1 می‌شود و C چون خودش 1 است، بدون مکمل نوشته می‌شود.

در POS

می‌خواهیم Maxterm در ردیف انتخاب‌شده برابر 0 شود. برای ردیف 000:

A + B + C = 0

چون تمام متغیرها صفر هستند، OR نیز صفر خواهد شد.

💡 روش حفظ کردن:
SOP → Minterm → فقط در یک حالت 1 می‌شود.
POS → Maxterm → فقط در یک حالت 0 می‌شود.

🔌 SOP و POS در مدار منطقی

SOP و POS مستقیماً با ساختار Logic Gateها ارتباط دارند.

ساختار SOP

در SOP ابتدا Product Termها را با AND می‌سازیم و سپس خروجی آن‌ها را به یک OR Gate می‌دهیم.

A B AND C D AND OR F
AND → AND → AND → OR → F

ساختار POS

در POS ابتدا Sum Termها را با OR می‌سازیم و سپس خروجی آن‌ها را به AND می‌دهیم.

OR → OR → OR → AND → F

🔄 آیا یک تابع می‌تواند هم SOP داشته باشد و هم POS؟

بله. یک تابع Boolean را می‌توان با هر دو فرم نمایش داد. این دو فرم فقط روش‌های متفاوتی برای بیان یک رفتار منطقی هستند.

از Truth Table می‌توان Canonical SOP را از ردیف‌های 1 و Canonical POS را از ردیف‌های 0 استخراج کرد.

Canonical Form

در Canonical SOP، هر Minterm تمام متغیرهای تابع را دارد. در Canonical POS نیز هر Maxterm تمام متغیرها را دارد.

✂️ Canonical SOP با SOP ساده‌شده چه تفاوتی دارد؟

این دو مفهوم را نباید با یکدیگر اشتباه گرفت.

Canonical SOP

A’BC + ABC’ + AB’C

هر Term تمام متغیرها را شامل می‌شود.

Simplified SOP

AB + C

این عبارت همچنان SOP است، اما Canonical SOP نیست؛ چون همه Termها الزاماً تمام متغیرها را ندارند.

نکته: هر Canonical SOP یک SOP است، اما هر SOP الزاماً Canonical SOP نیست. همین موضوع برای POS نیز صدق می‌کند.

🗺️ ارتباط SOP و POS با K-Map

پس از استخراج تابع از Truth Table، معمولاً می‌خواهیم آن را ساده کنیم تا مدار نهایی گیت‌های کمتری داشته باشد.

یکی از روش‌های مهم این کار Karnaugh Map یا K-Map است.

Truth Table Canonical SOP / POS K-Map Simplified Function Logic Circuit

برای ساده‌سازی 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

این کد تابع زیر را توصیف می‌کند:

F = AB + C

از دید سخت‌افزار، ابزار 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

AB + A’C + BC

داخل Termها AND و بین Termها OR داریم.

POS

(A+B)(A’+C)(B+C’)

داخل پرانتزها 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 نگاشت کند.
0 / 1 Truth Table Boolean Function SOP / POS Logic Gates Hardware

📚 این مطلب در مسیر یادگیری کجاست؟

Boolean Logic Boolean Algebra SOP / POS K-Map Combinational Circuits Sequential Circuits Verilog / RTL FPGA

بعد از SOP و POS، قدم طبیعی بعدی یادگیری K-Map و ساده‌سازی توابع Boolean است؛ سپس می‌توان این توابع را به مدارهایی مانند Half Adder، Full Adder، Multiplexer و Comparator تبدیل کرد.

🧠 قبل از رفتن، خودت فکر کن!

سؤال اصلی

یک تابع سه‌ورودی داریم که فقط در حالت‌های 001، 011 و 110 خروجی آن 1 است. بدون نوشتن Truth Table کامل، Canonical SOP را بنویسید.

🔍 مشاهده پاسخ

برای SOP ردیف‌های F=1 را انتخاب می‌کنیم:

F = A’B’C + A’BC + ABC’

سؤال ۲

اگر تابعی 4 ورودی داشته باشد، Truth Table آن چند حالت دارد؟

🔍 مشاهده پاسخ
2⁴ = 16

سؤال ۳

عبارت (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

🏷️ هشتگ‌ها

#DigitalLogic #BooleanAlgebra #SOP #POS #Minterm #Maxterm #TruthTable #KMap #Verilog #FPGA