Altifigence Academy

13 / 36 · 概念

半加算器と全加算器

和と桁上がりを別々に計算してつなぎます。

学習目標

  • 和と桁上がりを別々に計算してつなぎます。

和と桁上がり

半加算器はsum=a^b、carry=a&bです。1+1=10なのでsum=0、carry=1です。全加算器はcinも加え、sum=a^b^cin、cout=(a&b) OR (a&cin) OR (b&cin)です。3入力中2個以上が1なら桁上がりが1になります。

RTLコード抜粋
assign sum = a ^ b ^ cin;
assign cout = (a & b) | (a & cin) | (b & cin);

入力を変えて確認

次の桁につなぐ

ビット0のcoutをビット1のcinにつなぎます。Nビット入力二つの最上位桁上がりまで保存するにはN+1ビット必要です。{1'b0,a}+{1'b0,b}のように先に拡張します。リップルキャリーには実遅延があり、数式だけでは速度検証になりません。

自分で考えてみましょう

a=1、b=0、cin=1のsumとcoutは?

解説を見る

合計2は二進数10なのでsum=0、cout=1です。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。