ここでは、基本論理回路を組み合わせて加算を行う回路を作ってみましょう。
この内容は、基本情報技術者の試験の範囲にもなっています。
加算が出来ると、減算も可能で、そうすると乗算も除算も基本的な制御の組み合わせでできるようになります。
そういう意味でも加算を行う回路は最も基本的で重要な回路といえます。
半加算器は加算するための回路、全加算器(full adder)の構成要素となる回路です。
二つの入力x, yに対して2つの出力s,cがあります。sはsumの頭文字でcはcarryつまり桁上がりの頭文字です。
一桁の2進数2つがxとyで表されその答えがsとcです。cは桁が繰り上がった場合に1になります。桁が繰り上がるのはxとyのいずれも1のときだけです。
x, y, s, cのとりうる値の組み合わせを以下の表に示します。
x | y | s | c |
0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 |
上の表はcとsを入れ替えると回路の出力の意味がわかりやすくなります。
x | y | c | s |
0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 0 |
更にcとsの組み合わせを2桁の2進数と考えると・・・
c | s | 10進数 |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 2 |
半加算器を源内CADで実現し、全ての入力の組み合わせに対する出力を波形エディタで確認してください。
ヒント:
x, y, sの入出力の対応表はどの論理演算の対応表と同じですか?
x, y, cの入出力の対応表はどの論理演算の対応表と同じですか?
以下の図は入力と出力の図の例です。横幅は適当に設定してください。
(また、図中のhaは保存したファイル名なので皆さんがどのようなファイルで保存するかで変わります。)
ここで教員のチェックを受けましょう!
半加算器では、一つの桁しか計算できませんがこれを並べれば複数桁の計算が出来そうです。しかし、半加算器では並べたときの下位の桁の繰り上がりが入力として考慮されていません。
桁上がりを考慮したものが全加算器です。
上の図のようになります。モザイクの部分には2つの半加算器が隠れています。 ここまで、ヒントが得られると2つの半加算器とOR回路をどのように繋げるかという問題になります。
重要
上の全加算器の入出力に関する表の空欄を埋めて完成させてください。
x | y | c0 | c | s |
0 | 0 | 0 | ||
0 | 0 | 1 | ||
0 | 1 | 0 | ||
1 | 0 | 0 | ||
1 | 1 | 0 | ||
1 | 0 | 1 | ||
0 | 1 | 1 | ||
1 | 1 | 1 |
2つの半加算器と一つのOR回路を使って全加算器を完成させてください。また、波形エディタでx,y,c0に全ての通りの信号を与えてその出力cとsを確認してください。
ヒント:
ヒント:
入出力は上の波形の図のようになります。ただし、どの端子の入出力なのか図からはわかりません(一番上はc0です)。
更にヒント:
上の全加算器の図を見ると入力はx,y,c0なので3つです。すると下の2つは出力となり、sかcです。
2進数の性質から1と1を足すと必ず桁上がりするので、上の3つの出力の2つ以上が1のときcも1になるはずです。
それを踏まえて図をみるとxとcはどれなのか分かります。上の入力は足し算なのでx,y,c0の区別をする必用はありません。
ここで教員のチェックを受けましょう!
全加算器が出来たら複数桁の加算器を作る準備が出来ました。
2つの4bitの2進数をx4,x3,x2,x1とy4,y3,y2,y1で表しこの二つの2進数の和をs4,s3,s2,s1で表すとします。このとき4bitの加算回路を作成してください。
ヒント:
全加算器を4つ繋ぎます(又は、半加算器1個と全加算器3個)。あとは、どこが入力でどこが出力か考えて入力端子と出力端子を繋ぎ適切な名前をつければ完成です。
全加算器を4つ繋いだ場合は、一桁目のc0があまります。それは、c0が一つ下の位の桁上がりを受け取るためのものだからです。あまったc0には常に0を設定します。
出力として最後の桁上がりにs1,s2,s3,s4のほかにcを作る必要があります。回路としては5bitの2進数として計算結果が出力されます。
ヒント2:
10進数の3+2をこの回路で実現するには、各入力を以下の表のように設定します。
x4 | x3 | x2 | x1 | y4 | y3 | y2 | y1 |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
practice4で作成したファイルと波形のファイルをコースサイトに提出してください。
波形には10進数で4-6の計算結果が表示されるように入力を設定し、鳥のマークのボタンをクリックして出力の波形が生成された状態にしてください。
足し算で引き算を実現するためには2の補数の使い方を理解する必要があります。
各自検索で調べてください。
回路のファイル(拡張子がgdr)と鳥のマークのボタンをクリックして回路を実行した後の波形パターンのファイル(拡張子がgpt)のファイルに
自分の学籍番号をつけて提出してください。
波形パターンファイル名の括弧は消さないでつけたまま提出してください。
例:
s049999.gdr
s049999[0].gpt
提出する前に教員に正しく出来ているか確認してもらってください。