تفریق‌کننده

تفریق‌کننده یک مدار دیجیتال است که عمل تفریق اعداد دودویی را انجام می‌دهد و معمولاً به روشی مشابه طراحی یک جمع‌کننده ساخته می‌شود. در تفریق دودویی چندبیتی، برای محاسبهٔ هر بیت از تفاضل، سه ورودی دخیل هستند: کم‌شونده (Xᵢ)، کم‌کننده (Yᵢ)، و قرض ورودی از بیت کم‌ارزش‌تر (Bᵢ). خروجی‌ها شامل بیت تفاضل (Dᵢ) و قرض خروجی (Bᵢ₊₁) هستند. تفریق‌کننده‌ها با این ایده عمل می‌کنند که بیت‌های Y و B وزن منفی دارند، در حالی که بیت‌های X و D وزن مثبت دارند.

عملیات تفریق Xᵢ − Yᵢ − Bᵢ (که یکی از مقادیر −۲، −۱، ۰ یا ۱ است) به صورت 2Bᵢ₊₁+ Dᵢ- بازنویسی می‌شود.

فرمول بیت تفاضل:

Dᵢ = Xᵢ ⊕ Yᵢ ⊕ Bᵢ

فرمول بیت قرض خروجی:

Bᵢ₊₁ = (Xᵢ < (Yᵢ + Bᵢ))

در بسیاری از پیاده‌سازی‌ها، تفریق‌کننده‌ها درون جمع‌کنندهٔ دودویی با استفاده از نمایش مکمل دو ساخته می‌شوند:

−B = B̅ + ۱-

بنابراین:

A − B = A + (−B) = A + B̅ + ۱

## تفریق‌کنندهٔ نیمه
تفریق‌کنندهٔ نیمه را می‌توان با استفاده از مدارهای ترکیبی منطق بولی (مطابق شکل‌های ۱ و ۲) طراحی کرد. تفریق‌کنندهٔ نیمه یک مدار ترکیبی است که برای انجام تفریق دو بیت به کار می‌رود. این مدار دو ورودی دارد: کم‌شونده X و کم‌کننده Y؛ و دو خروجی تولید می‌کند: بیت تفاضل D و بیت قرض خروجی B_out.

سیگنال قرض خروجی زمانی فعال (۱) می‌شود که مدار برای انجام تفریق، نیاز داشته باشد از رقم باارزش‌تر قرض بگیرد؛ یعنی:

B_out = ۱ زمانی که X < Y

از آنجا که X و Y تنها یک بیت هستند، قرض خروجی دقیقاً در حالتی برابر ۱ است که:

X = ۰ و Y = ۱

نکتهٔ بسیار مهم این است که مدار تفریق‌کنندهٔ نیمه، عمل X − Y را پیاده‌سازی می‌کند و نه Y − X؛ زیرا همان‌گونه که در نمودار مدار نشان داده شده است، رابطهٔ قرض خروجی برابر است با:

B_out = X̅ · Y

این موضوع اهمیت دارد، چون عمل تفریق ذاتاً **جابجایی‌پذیر نیست**. با این حال، بیت تفاضل D با استفاده از گیت XOR محاسبه می‌شود که **یک عملگر جابجایی‌پذیر** است.
بندانگشتی|Half Subtractor Vektor
جدول درستی تفریق‌کنندهٔ نیمه:

بندانگشتی|Half subtractor using NAND
با استفاده از جدول درستی بالا و نقشهٔ کارنو، می‌توان معادلات منطقی زیر را برای خروجی‌های D و B_out به دست آورد:

D = X ⊕ Y

B_out = X̅ · Y

در نتیجه، می‌توان یک مدار تفریق‌کنندهٔ نیمهٔ ساده‌تر طراحی کرد که به‌طور خاص از عبور خطوط (crossed traces) و همچنین از یک گیت وارون‌ساز اضافی جلوگیری می‌کند. مدار ساده‌شده به صورت زیر است:
بندانگشتی|1000x1000پیکسل

در این دیاگرام، خطوطی که در سمت راست قرار دارند خروجی هستند و بقیهٔ خطوط (آنهایی که از بالا، پایین یا سمت چپ وارد می‌شوند) ورودی محسوب می‌شوند.

## تفریق‌کنندهٔ کامل
تفریق‌کنندهٔ کامل یک مدار ترکیبی است که برای انجام تفریق سه ورودی استفاده می‌شود: کم‌شونده X، کم‌کننده Y و قرض ورودی B_in. تفریق‌کنندهٔ کامل دو خروجی تولید می‌کند: بیت تفاضل D و بیت قرض خروجی B_out.

بیت B_in زمانی برابر ۱ می‌شود که در رقم قبلی از X قرض گرفته شده باشد؛ بنابراین، B_in نیز مانند Y از X کم می‌شود. به‌صورت نمادین:

X − Y − B_in

مانند تفریق‌کنندهٔ نیمه، تفریق‌کنندهٔ کامل نیز هنگامی قرض خروجی تولید می‌کند که لازم باشد از رقم بعدی قرض گرفته شود. چون Y و B_in از X کم می‌شوند، تولید قرض خروجی زمانی ضروری است که:

X < Y + B_in

وقتی قرض تولید می‌شود، مقدار ۲ به رقم فعلی افزوده می‌شود (مشابه الگوریتم تفریق ده‌دهی، با این تفاوت که در مبنای ده مقدار ۱۰ اضافه می‌شود). بنابراین رابطهٔ خروجی تفاضل برابر است با:

D = X − Y − B_in + 2B_out
بندانگشتی|500x500پیکسل|Full-sub-Fixed
جدول درستی تفریق‌کنندهٔ کامل:

برای همین معادلات آن:

D = X ⊕ Y ⊕ B_in

B_out = X̅B_in + X̅Y + YB_in

## جستارهای وابسته
* جمع‌کننده

## منابع
* Foundations of Digital Electronics – Elijah Mwangi
* Beltran, A.A. ; Nones, K. ؛ Salanguit, R.L. ; Santos, J.B. ; Santos, J.M. ; Dizon, K.J. (2021). *Low Power NAND Gate–based Half and Full Adder/Subtractor Using CMOS Technique.*https://www.semanticscholar.org/paper/Low-Power-NAND-Gate–based-Half-and-Full-Adder-Using-Beltran-Nones/8aeca4f742da6dbfc19fcccb98dea322bee2a895
* N-bit Binary addition or subtraction using single circuit

رده:مدارهای دیجیتال
رده:جمع‌کننده‌ها (الکترونیک)
رده:تفریق
رده:محاسبه اعداد دودویی