完全減算器とは:論理ゲートを使用した構築

問題を排除するために楽器を試してください





一般的に、完全減算器は最も使用されているものの1つであり、 必須の組み合わせ論理回路 。これは、2つの2進数の減算を実行するために使用される基本的な電子デバイスです。以前の記事では、すでにの基本的な理論を与えました 半加算器と全加算器 これは、計算に2進数を使用します。同様に、完全減算器は、減算に0,1のような2進数を使用します。この回路は、OR、Ex-OR、NANDゲートなどの論理ゲートで構築できます。この減算器の入力はA、B、Binで、出力はD、Boutです。

この記事では、減算器とは何か、論理ゲートを使用した設計、真理値表などの前提を含む完全減算器理論のアイデアを示します。この記事は、HDL実用ラボでこれらのトピックを学習できる工学部の学生に役立ちます。




サブトラクターとは何ですか?

2進数の減算は、減算回路を使用して実行できます。これは、0と1のような2つの2進数の減算を実行するために使用される一種の組み合わせ論理回路です。 2桁を0から0または0から1に減算しても結果は変わりません。1から1を減算すると、結果は0になりますが、1から0を減算するには借用が必要です。

たとえば、2ビット減算回路にはAとBのような2つの入力が含まれていますが、出力は差分と借用です。この回路は、FAの初期フェーズのボロー(ビン)入力だけでなく、すべてのデータ入力の間に配置されたインバーターとともに加算器を使用して構築できます。



減算器は、ハーフ減算器とフル減算器の2つのタイプに分類されます。ここでは、完全な減算器について説明します。

フルサブトラクタとは何ですか?

それは電子機器または 論理回路 2桁の2進数の減算を実行します。これは、デジタル電子機器で使用される組み合わせ論理回路です。多くの組み合わせ回路が利用可能です 集積回路技術 つまり、加算器、エンコーダー、デコーダー、およびマルチプレクサーです。この記事では、半減算器と真理値表などの用語を使用したその構築について説明します。


完全減算器

完全減算器

これの設計は、被減数、減数、借用などの3つの入力を含む、2つの半減算器によって行うことができます。入力間の借用ビットは、2つの2進数の減算から取得され、次の上位ペアから減算されます。ビット、差として出力し、借用します。

ザ・ 完全減算ブロック図 以下に示します。ハーフ減算器の最大の欠点は、この減算器で借入ビットを作成できないことです。一方、その設計では、実際には回路に借入ビットを作成し、残りの2つのi / psで減算することができます。ここで、Aは被減数、Bは減数、Binは借用です。出力はDifference(Diff)とBout(借用)です。完全な減算回路は、追加のORゲートを備えた2つのハーフ減算器を使用して取得できます。

完全な減算器のブロック図

論理ゲートを備えた完全な減算器回路図

ザ・ 基本ゲートを使用したフルサブトラクタの回路図 sを次のブロック図に示します。この回路は、2つの半減算回路で実行できます。

最初のhalf-Subtractor回路では、バイナリ入力はAとBです。前のhalf-Subtractorの記事で説明したように、2つの出力、つまり差分(Diff)とBorrowが生成されます。

論理ゲートを使用した完全減算器

論理ゲートを使用した完全減算器

左減算器の差o / pは、左半減算器回路に与えられます。右半分の減算回路の入力には、さらに差分出力が提供されます。次の他のi / p全体で少しずつ借り入れを提供しました ハーフサブトラクタ回路 。もう一度、Diffを出し、Borrowを少し出します。この減算器の最終出力はDiff-outputです。

一方、両方のハーフ減算回路からの借用は、OR論理ゲートに接続されています。減算器の2つの出力ビットにORロジックを与える後、減算器から最終的な借入を取得します。 MSB(最上位ビット)を示すための最後の借用。

この内部回路を観察すると、NANDゲートを備えた2つのハーフ減算器と追加のORゲートを備えたXORゲートを見ることができます。

完全な減算器の真理値表

この 減算回路 3つの入力(A、B、およびBin)と2つの出力(DおよびBout)を持つ2つのビット間の減算を実行します。ここで、入力は被減数、減数、および前の借用を示し、2つの出力は借用o / pおよび差として示されます。次の画像は、完全減算器の真理値表を示しています。

入力

出力

被減数(A)

減数(B) 借りる(ビン) 違い(D)

借りる(試合)

0

000

0

0

0111
0101

1

0110

1

1

0010
1010

0

1

1000

1

111

1

Kマップ

の簡略化 完全減算器Kマップ 上記の違いと借用については、以下に示されています。

K-違いの地図

差とビンの式を以下に示します。

K-試合の地図

違いの表現は、

D = A’B’Bin + AB’Bin ’+ A’BBin’ + ABBin

Borrowの表現は、

試合= A’Bin + A’B + BBin

完全減算回路のカスケード

以前、このような構造の概要、論理ゲートを備えた回路図について説明しました。しかし、2つ以上の1ビット数を減算する場合、この減算回路は、単一ビット数をカスケードし、3つ以上の2進数を減算するのに非常に役立ちます。このような場合、NOT論理ゲートを使用して全加算器カスケード回路が使用されます。全加算器から全減算器への回路の変換は、2の補数手法を使用して実行できます。

一般に、NOTゲートを使用して全加算器の減数入力を反転します。それ以外の場合はインバーターを使用します。この被減数(非反転入力)と減数(反転入力)を加算すると、FA回路のLSB(キャリー入力)は1になります。これは、ロジックハイを意味します。それ以外の場合は、2の補数手法を使用して2桁の2進数を減算します。 FAの出力はDiffビットであり、実行を反転するとMSBを取得でき、それ以外の場合はBorrowビットを取得できます。実際には、出力が観測できるように回路を設計することができます。

Verilogコード

コーディング部分については、まず、論理回路図のモデリングの構造的な方法を確認する必要があります。この論理図は、ANDゲート、半減算回路、およびAND、OR、NOT、XORゲートなどの論理ゲートの組み合わせを使用して作成できます。構造モデリングと同様に、基本的な要素配置ごとにさまざまなモジュールについて説明します。次のコードでは、ゲートごとに異なるモジュールを定義できます。

このモジュールはORゲート用です。

入力:a0、b0

出力:c0

最後に、これらのゲート精度モジュールを1つのモジュールに統合します。そのために、ここではモジュールのインスタンス化を利用します。これで、さまざまな入力セットに対して正確なモジュールまたは関数を複製する必要がある場合に、このインスタンス化を使用できます。まず、ハーフサブトラクタを設計し、次にこのモジュールを使用してフルサブトラクタを実装します。これを実装するために、ORゲートを使用してBoutの変数のo / psを結合します。ザ・ フルサブトラクタのVerilogコード 以下に示します

モジュールor_gate(a0、b0、c0)

入力a0、b0

出力c0

c0 = a0を割り当てます| b0

エンドモジュール

モジュールxor_gate(a1、b1、c1)

入力a1、b1

出力c1

c1 = a1 ^ b1を割り当てます

エンドモジュール

モジュールand_gate(a2、b2、c2)

入力a2、b2

出力c2

c2 = a2&b2を割り当てます

エンドモジュール

モジュールnot_gate(a3、b3)

入力a3

出力b3

b3 = 〜a3を割り当てます

エンドモジュール

モジュールhalf_subtractor(a4、b4、c4、d4)

入力a4、b4

出力c4、d4

ワイヤーx

xor_gate u1(a4、b4、c4)

and_gate u2(x、b4、d4)

not_gate u3(a4、x)

エンドモジュール

モジュールfull_subtractor(A、B、Bin、D、Bout)

入力A、B、ビン

出力D、試合

ワイヤーp、q、r

half_subtractor u4(A、B、p、q)

half_subtractor u5(p、Bin、D、r)

or_gate u6(q、r、Bout)

エンドモジュール

4X1マルチプレクサを使用した完全減算器

減算の実行は、2の補数法を使用して実行できます。したがって、1ビットを反転してキャリービットに含めるために使用される1-XORゲートを利用する必要があります。 DIFFERENCEの出力は、全加算器回路の出力SUMに似ていますが、BARROW o / pは全加算器のキャリー出力とは似ていませんが、A – B = A +(-B)のように反転および補完されます。 = A + Bの2の補数。

4X1マルチプレクサを使用したこの設計を次の論理図に示します。この設計は、次の手順を使用して実行できます。

4X1マルチプレクサ

4X1マルチプレクサ

  • ステップ1には、SubとBorrowのような2つの出力があります。したがって、2つのマルチプレクサを選択する必要があります。
  • ステップ2では、Kマップとともに真理値表を実装できます。
  • 手順3では、2つの変数を選択行として選択できます。たとえば、この場合はBとCです。

真理値表

ザ・ 完全減算器の真理値表 4X1マルチプレクサを使用する回路には次のものが含まれます

B C サブ

借りて

0

0000
0011

1

0101

1

0

1101
1001

0

1

0100
1100

0

1

111

1

デコーダーを使用した完全減算器

3〜8個のデコーダーを使用した完全減算器の設計は、アクティブロー出力を使用して行うことができます。次の論理図を使用して、デコーダーが機能していると仮定しましょう。デコーダーには、3〜8個のデコーダーに3つの入力が含まれています。真理値表に基づいて、差と借用の出力の最小項を書くことができます。

上記の真理値表から、

真理値表のさまざまな関数の場合、mintermsは1,2,4,7と書くことができ、同様に、借用の場合、mintermsは1,2,3,7と書くことができます。 3〜8個のデコーダーには、3つの入力と8つの出力lik0〜7の数値が含まれています。

3対8デコーダー

3対8デコーダー

減算器の入力が000の場合、出力「0」がアクティブになり、入力が001の場合、出力「1」がアクティブになります。

これで、減算器の出力を1、2、4、7から取得して、NANDゲートに接続すると、出力が差になります。これらの出力は、出力がボローに変わる他のNAND論理ゲートに接続できます。

たとえば、入力が001の場合、出力は1になり、アクティブであることを意味します。したがって、出力はアクティブローであり、出力はハイのような差分関数と呼ばれるNANDゲートから取得でき、ボロー関数もハイに変化します。したがって、優先出力が得られます。したがって、最後に、デコーダーは完全な減算器のように機能します。

長所と短所

ザ・ 減算器の利点 以下のものが含まれます。

  • 減算器の設計は非常に簡単で、実装も簡単です
  • DSP内の電力控除(デジタル信号処理)
  • 計算タスクは高速で実行できます。

ザ・ 減算器の欠点 以下のものが含まれます。

  • ハーフ減算器では、前のフェーズからの借入のような入力を受け入れる条件はありません。
  • 減算器の速度は、回路の遅延によって部分的になる可能性があります。

アプリケーション

いくつかの フル減算器のアプリケーション 以下のものが含まれます

  • これらは一般に、コンピュータのALU(算術論理演算装置)に使用され、回路の難易度を下げるためにグラフィックスのアプリケーションのCPUおよびGPUとして減算されます。
  • 減算器は主に、電子計算機やデジタルデバイスで、減算などの算術関数を実行するために使用されます。
  • これらは さまざまなマイクロコントローラー 算術減算、タイマー、およびプログラムカウンター(PC)用
  • 減算器は、テーブルやアドレスなどを計算するためにプロセッサで使用されます。
  • また、DSPおよびネットワークベースのシステムにも役立ちます。
  • これらは主に、回路の複雑さを軽減するためにグラフィックアプリケーションのCPUやGPUのように減算するために、コンピューター内のALUに使用されます。
  • これらは主に、デジタルデバイスや電卓などで減算などの算術関数を実行するために使用されます。
  • これらの減算器は、タイマー、PC(プログラムカウンター)、算術減算用のさまざまなマイクロコントローラーにも適しています。
  • これらは、プロセッサがアドレスやテーブルなどを計算するために使用されます。
  • NANDとNORのような論理ゲートを使用したこれの実装は、NORとNANDの両方のゲートがユニバーサルゲートと呼ばれるため、任意の完全減算論理回路で実行できます。

上記の情報から、加算器、2つの半減算回路を使用した全減算器、およびその表形式を評価することにより、全減算器のDoutが全加算器のSoutと正確に類似していることがわかります。唯一のバリエーションは、A(入力変数)が完全減算器で補完されることです。したがって、与えられる前にi / p Aを補完するだけで、全加算器回路を全減算器に変更することができます。 論理ゲート 最後のボロービット出力(Bout)を生成します。

NANDゲートとNORゲートの両方がユニバーサルゲートとして扱われるため、任意のフルサブトラクタ論理回路を使用することにより、NANDゲートを使用するフルサブトラクタとNORゲートを使用するフルサブトラクタを実装できます。ここにあなたへの質問があります、半分の減算器と完全な減算器の違いは何ですか?