مقایسهگر دیجیتال چیست؟ آموزش Comparator و مدار مقایسهگر
مقایسه گر دیجیتال یکی از مدارهای ترکیبی مهم در الکترونیک دیجیتال
است که دو مقدار باینری را با یکدیگر مقایسه میکند و نتیجه را در قالب سیگنالهای
منطقی در اختیار مدار قرار میدهد. این نتیجه میتواند نشان دهد که یک عدد از
عدد دیگر بزرگتر، کوچکتر یا با آن برابر است.
شاید این کار در نگاه اول ساده به نظر برسد، اما Comparator یکی از بلوکهای مهم
در مدارهای منطقی، سیستمهای کنترل، پردازندهها و طراحی دیجیتال محسوب میشود.
در این مقاله از مفهوم پایه شروع میکنیم و سپس به Identity Comparator،
Magnitude Comparator، مدارهای 1 بیتی، 2 بیتی و ساختار n بیتی میرسیم.
⚡ Comparator در یک نگاه
Combinational
دو مقدار باینری
برابری / بزرگتر / کوچکتر
Identity / Magnitude
XNOR / AND / OR
Comparator دقیقاً چه چیزی را مقایسه میکند؟
فرض کنید دو ورودی باینری با نامهای P و Q داریم. مدار مقایسهگر باید بتواند
رابطه میان آنها را مشخص کند. در سادهترین حالت، سؤال این است که آیا P و Q
برابر هستند یا نه. در حالت کاملتر، مدار هر سه وضعیت را گزارش میکند:
`P > Q`، `P = Q` و `P < Q`.
به همین دلیل Comparator را میتوان یک مدار تصمیمگیرنده دانست؛ مدار ابتدا
ورودیها را بررسی میکند و سپس فقط خروجی منطقی متناسب با نتیجه را فعال میکند.
در Magnitude Comparator معمولاً یکی از سه خروجی رابطهای High میشود.
💡 یک مثال ساده
اگر P = 101 و Q = 011 باشد، مقدار دهدهی آنها بهترتیب 5 و 3 است.
بنابراین Comparator باید خروجی P > Q را فعال کند.
اگر هر دو عدد برابر باشند، خروجی برابری فعال خواهد شد.
دو خانواده اصلی؛ Identity و Magnitude
مقایسهگرهای دیجیتال را میتوان به دو گروه مهم تقسیم کرد. Identity Comparator
فقط برابری دو ورودی را بررسی میکند، در حالی که Magnitude Comparator
رابطه کامل بین دو مقدار را مشخص میکند.
| نوع | نتیجه | کاربرد |
|---|---|---|
| Identity | P = Q یا P ≠ Q | بررسی برابری |
| Magnitude | P > Q / P = Q / P < Q | مقایسه کامل |
Identity Comparator؛ فقط یک سؤال: برابرند یا نه؟
Identity Comparator سادهترین نوع مقایسهگر است. این مدار فقط بررسی میکند
که آیا دو ورودی دقیقاً مقدار یکسانی دارند یا خیر. در صورت برابری، خروجی
High میشود و در غیر این صورت خروجی Low خواهد بود.
برای مقایسه دو بیت، یک گیت XNOR میتواند نقش یک Equality Comparator ساده
را بازی کند؛ چون خروجی XNOR زمانی 1 است که دو ورودی با هم برابر باشند.
🔎 قانون ساده Equality
P = Q → خروجی 1
P ≠ Q → خروجی 0
Magnitude Comparator چه فرقی دارد؟
Magnitude Comparator یک مرحله فراتر میرود و فقط به برابری اکتفا نمیکند.
این مدار مشخص میکند کدام عدد بزرگتر است یا اینکه دو ورودی برابر هستند.
به همین دلیل سه خروجی اصلی دارد: `P > Q`، `P = Q` و `P < Q`.
در هر لحظه، برای دو مقدار مشخص، تنها یکی از این سه رابطه درست است.
بنابراین مدار نیز خروجی متناظر با همان رابطه را فعال میکند.
یک بیت کافی است تا مفهوم Comparator را بفهمیم
برای اینکه ساختار مدار کاملاً روشن شود، ابتدا سراغ Comparator یکبیتی میرویم.
هر ورودی فقط یک بیت دارد؛ بنابراین چهار ترکیب ممکن خواهیم داشت.
| P | Q | P > Q | P = Q | P < Q |
|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 | 0 |
| 1 | 1 | 0 | 1 | 0 |
از جدول درستی به مدار منطقی میرسیم
جدول بالا سه خروجی مستقل دارد. هر خروجی را میتوان با ترکیبی از گیتهای
منطقی پیادهسازی کرد. برای مثال، خروجی برابری در Comparator یکبیتی
از XNOR به دست میآید.
📐 روابط Comparator یکبیتی
P > Q = P · Q’
P = Q = P·Q + P’·Q’
P < Q = P’ · Q
وقتی ورودیها 2 بیتی میشوند چه اتفاقی میافتد؟
حالا فرض کنید هر ورودی بهجای یک بیت، دو بیت داشته باشد:
`P = P1P0` و `Q = Q1Q0`. در این حالت 4 بیت ورودی مستقل داریم و در مجموع
16 ترکیب ممکن ایجاد میشود. منطق مقایسه همان است، اما مدار باید بیتهای
بیشتری را بررسی کند.
در مقایسه اعداد چندبیتی، بیت با ارزش بیشتر یا همان MSB نقش تعیینکنندهتری
دارد. ابتدا بزرگترین بیتها مقایسه میشوند؛ اگر برابر باشند، مدار به سراغ
بیت بعدی میرود.
🎯 قانون مقایسه چندبیتی
MSB اولویت دارد. اگر MSBهای دو عدد متفاوت باشند،
همان اختلاف نتیجه را مشخص میکند؛ فقط وقتی برابر باشند سراغ بیت بعدی میرویم.
مثلاً 10 با 9 چرا بزرگتر است؟
عدد 10 در باینری برابر `1010` و عدد 9 برابر `1001` است. در سه بیت اول
تفاوتی وجود ندارد؛ اما در آخرین بیت، یکی 0 و دیگری 1 دارد. در این مثال،
چون `1010` مقدار عددی بیشتری دارد، Comparator خروجی بزرگتر را فعال میکند.
این مثال نشان میدهد چرا Comparatorهای چندبیتی را نمیتوان صرفاً با
مقایسه مستقل تمام بیتها تحلیل کرد؛ ترتیب اهمیت بیتها باید در طراحی لحاظ شود.
برای n بیت چند حالت ممکن داریم؟
اگر P و Q هر دو n بیتی باشند، مجموع بیتهای ورودی برابر 2n خواهد بود.
بنابراین تعداد کل ترکیبهای ممکن برابر است با:
تعداد کل حالتها = 22n
مثلاً برای n = 3، تعداد حالتها برابر 64 است.
از این میان، دقیقاً `2^n` حالت مربوط به زمانی است که P و Q برابر هستند؛
چون هر مقدار n بیتی در حالت دوم نیز میتواند دقیقاً همان مقدار را داشته باشد.
🧮 یک فرمول کاربردی
P = Q → 2n حالت
P ≠ Q → 22n − 2n حالت
P > Q = P < Q =
(22n − 2n) / 2
یک مثال 3 بیتی همهچیز را روشن میکند
برای دو ورودی 3 بیتی، 64 ترکیب ممکن داریم. از این تعداد، 8 حالت مربوط
به برابری هستند و 56 حالت باقیمانده نابرابری را تشکیل میدهند.
چون مقایسه بین دو عدد متقارن است، 28 حالت برای P > Q و 28 حالت برای
P < Q باقی میماند.
🔢 خلاصه مثال 3 بیتی
کل حالتها: 64
حالتهای برابری: 8
حالتهای نابرابری: 56
P > Q: 28 حالت | P < Q: 28 حالت
Comparator با گیتهای منطقی چطور ساخته میشود؟
یک Comparator را میتوان با ترکیبی از گیتهای منطقی طراحی کرد. در بخش
برابری، XNOR نقش مهمی دارد و برای ساخت روابط بزرگتر و کوچکتر از
AND، OR و NOT نیز استفاده میشود.
در طراحی چندبیتی معمولاً مدار باید نتیجه مقایسه بیتهای بالاتر را با
وضعیت بیتهای پایینتر ترکیب کند؛ بنابراین ساختار نسبت به Comparator
یکبیتی پیچیدهتر میشود.
🧩 گیتهای مهم در Comparator
XNOR: تشخیص برابری دو بیت
AND: ترکیب شرایط منطقی
OR: جمع چند شرط
NOT: ایجاد مکمل منطقی
Comparator در دنیای واقعی کجا استفاده میشود؟
مقایسهگر فقط یک موضوع کتاب درسی نیست. پردازندهها و مدارهای دیجیتال
دائماً نیاز دارند مقادیر را با هم مقایسه کنند؛ برای مثال تشخیص برابری،
بررسی بزرگتر بودن یک مقدار یا تصمیمگیری بر اساس وضعیت یک رجیستر.
Comparatorها به همین دلیل در طراحی سیستمهای دیجیتال و پردازندهها
کاربرد دارند.
- CPU و واحدهای محاسباتی
- مدارهای کنترلی
- سیستمهای تصمیمگیری دیجیتال
- مقایسه رجیسترها
- طراحی FPGA و PLD
- مدارهای شمارنده و کنترل
- سیستمهای پردازش داده
🚀 یک کاربرد خیلی ساده
تصور کنید یک سیستم باید بررسی کند آیا مقدار شمارنده به عدد 100 رسیده است
یا خیر. Comparator میتواند مقدار شمارنده را با 100 مقایسه کند و در صورت
برابری، یک سیگنال منطقی برای فعال کردن مرحله بعدی ایجاد کند.
مقایسهگر سختافزاری یا مقایسه در نرمافزار؟
یک میکروکنترلر نیز میتواند با یک دستور ساده دو عدد را مقایسه کند؛
اما Comparator سختافزاری منطق مقایسه را مستقیماً در مدار دیجیتال اجرا میکند.
این تفاوت در سیستمهایی که سرعت، زمانبندی سختافزاری یا تأخیر پایین اهمیت
دارد، مهم میشود.
در FPGA و مدارهای منطقی نیز طراح میتواند Comparator را مستقیماً در ساختار
سختافزاری پیادهسازی کند و خروجی آن را به سایر بلوکهای منطقی متصل سازد.
ابزارهایی مانند Multisim نیز برای طراحی و شبیهسازی مدارهای مقایسه دیجیتال
استفاده میشوند.
اگر بخواهیم Comparator بزرگتری بسازیم چه میشود؟
ساختار یک Comparator چندبیتی را میتوان از بلوکهای کوچکتر تشکیل داد.
این روش به طراح اجازه میدهد یک مقایسهگر 4 بیتی یا حتی بزرگتر را از
بخشهای استانداردتر بسازد.
در طراحیهای واقعی، مدارهای آماده Magnitude Comparator نیز وجود دارند
و برخی ICها برای مقایسه چند بیت طراحی شدهاند. این موضوع توسعه مدار را
سادهتر از ساخت تمام گیتها از صفر میکند.
چه چیزی را نباید هنگام طراحی Comparator فراموش کنیم؟
⚠️ چهار نکته کلیدی
✔ تعداد بیتهای ورودی را مشخص کنید.
✔ ترتیب MSB و LSB را درست در نظر بگیرید.
✔ مشخص کنید مقایسه برای اعداد Unsigned است یا Signed.
✔ Active High یا Active Low بودن خروجی را از ابتدا مشخص کنید.
برای ساخت و شبیهسازی مدار Comparator چه چیزهایی نیاز داریم؟
برای یک آزمایش آموزشی میتوانید از گیتهای منطقی، بردبورد، LED،
مقاومت و منبع تغذیه استفاده کنید. در پروژههای بزرگتر نیز FPGA،
PLD یا ICهای Comparator میتوانند گزینههای مناسبی باشند.
🛒 قطعات الکترونیک دیجیتال را از پژوهشگران تهیه کنید
برای ساخت مدارهای منطقی میتوانید گیتهای منطقی، IC، مقاومت،
بردبورد، LED، سیم و سایر قطعات موردنیاز پروژه را در فروشگاه
پژوهشگران بررسی کنید.
مقالات بیشتر برای یادگیری الکترونیک دیجیتال
📚 مقالات بیشتر پژوهشگران
برای یادگیری بیشتر درباره گیتهای منطقی، فلیپفلاپها، شمارندهها،
مالتیپلکسرها، مدارهای ترکیبی و سایر مباحث الکترونیک دیجیتال،
مجموعه مقالات پژوهشگران را ببینید.
برای طراحی مدار دیجیتال مشاوره فنی بگیرید
🛠️ برای طراحی Comparator یا مدار منطقی سؤال دارید؟
اگر برای انتخاب IC، طراحی مدار Comparator، استفاده از گیتهای منطقی،
FPGA یا شبیهسازی مدار دیجیتال سؤال دارید، قبل از خرید میتوانید
برای مشاوره فنی با مجموعه پژوهشگران در ارتباط باشید.
بررسی دقیق تعداد بیت، منطق خروجی و کاربرد مدار از همان ابتدای طراحی،
بسیاری از خطاهای بعدی را کاهش میدهد.
جمعبندی؛ Comparator را چطور به خاطر بسپاریم؟
مقایسه گر دیجیتال یک مدار منطقی ترکیبی است که دو مقدار
باینری را با هم مقایسه میکند. Identity Comparator فقط برابری را تشخیص
میدهد، اما Magnitude Comparator میتواند سه رابطه بزرگتر، برابر و
کوچکتر را مشخص کند.
برای یادگیری عمیقتر، بهترین مسیر این است که ابتدا Comparator یکبیتی را
با جدول درستی بررسی کنید، سپس روابط منطقی آن را از روی جدول بهدست آورید
و بعد همان ایده را برای 2 بیت و n بیت توسعه دهید.
⚡ چکلیست سریع Comparator
✔ دو مقدار باینری را مشخص کنید.
✔ تعداد بیتها را تعیین کنید.
✔ برابری را بررسی کنید.
✔ در صورت نیاز P>Q و P<Q را هم بسازید.
✔ برای یک بیت از جدول درستی شروع کنید.
✔ سپس مدار را به بیتهای بیشتر توسعه دهید.
✔ در طراحی چندبیتی، اهمیت MSB را فراموش نکنید.
💬 تجربه شما از مدارهای Comparator چیست؟
اگر قبلاً با Comparator، گیتهای منطقی یا مدارهای دیجیتال
کار کردهاید، تجربه خود را درباره طراحی مقایسهگر 1 بیتی، 2 بیتی،
FPGA یا شبیهسازی مدار با ما و دیگر کاربران به اشتراک بگذارید.
اگر مدار Comparator جالبی ساختهاید یا تجربهای دارید که به یادگیری
دیگران کمک میکند، در بخش نظرات همین پایین برای ما بنویسید.
سوالات متداول درباره مقایسه گر دیجیتال
مقایسه گر دیجیتال چیست؟
یک مدار منطقی ترکیبی است که دو مقدار باینری را مقایسه میکند و نتیجه
مقایسه را به شکل سیگنالهای منطقی در خروجی نشان میدهد.
تفاوت Identity و Magnitude Comparator چیست؟
Identity Comparator فقط برابری دو ورودی را بررسی میکند؛ Magnitude
Comparator رابطه بزرگتر، برابر یا کوچکتر را نیز مشخص میکند.
Comparator یک بیتی چند حالت دارد؟
چون دو ورودی یکبیتی داریم، چهار ترکیب ممکن ایجاد میشود.
جدول درستی این چهار حالت را مشخص میکند.
برای Comparator n بیتی چند حالت وجود دارد؟
اگر هر ورودی n بیت داشته باشد، در مجموع
22n ترکیب ممکن خواهیم داشت.



