電子工学において、キャリー選択加算器は加算器を実装する特定の方法であり、加算器は、2ビットの合計-ビット数。キャリー選択加算器は単純だがかなり高速で、ゲートレベルの深さは。
キャリー選択加算器は、一般的にリップルキャリー加算器とマルチプレクサで構成されます。キャリー選択加算器で2つのnビット数を加算するには、2つの加算器(つまり2つのリップルキャリー加算器)を使用します。これは、キャリー入力が0であると仮定して1回、キャリー入力が1であると仮定して1回、合計とキャリー出力の2つの計算を行うためです。2つの計算結果が確定したら、正しいキャリー入力が判明した時点で、マルチプレクサによって正しい合計と正しいキャリー出力が選択されます。
各キャリー選択ブロックのビット数は、均一でも可変でも構いません。ブロックのサイズを可変にすると、最適な遅延が発生します[ 1 ]。可変の場合、ブロックサイズは、加算入力AとBからキャリー出力までの遅延が、それに繋がるマルチプレクサチェーンの遅延と等しくなるように設定し、キャリー出力が適切なタイミングで計算されるようにする必要があります。遅延は均一なサイズ設定から導き出され、ブロックあたりの全加算器要素の理想的な数は、加算されるビット数の平方根に等しくなります。これは、MUXの遅延数が等しくなるためです。
![]()
上記は、ブロックサイズが4であるキャリー選択加算器の基本構成要素です。2つの4ビットリップルキャリー加算器が多重化されており、結果として得られるキャリービットと和ビットはキャリー入力によって選択されます。一方のリップルキャリー加算器はキャリー入力が0であると想定し、もう一方はキャリー入力が1であると想定するため、実際のキャリー入力に基づいてどちらの加算器が正しい想定をしていたかを選択することで、目的の結果が得られます。
![]()
ブロックサイズが4の均一な16ビットキャリーセレクト加算器は、これらのブロックを3つと4ビットリップルキャリー加算器を組み合わせることで作成できます。キャリー入力は計算開始時に既知であるため、最初の4ビットにはキャリーセレクトブロックは不要です。この加算器の遅延は、全加算器の遅延4回分と、マルチプレクサの遅延3回分になります。
![]()
可変サイズの 16 ビット キャリー選択加算器も同様に作成できます。ここでは、ブロック サイズが 2-2-3-4-5 の加算器を示します。これは、平方根キャリー選択加算器と呼ばれる、特殊なタイプの可変サイズ キャリー選択加算器です。[ 2 ]この分割は、全加算器の遅延が MUX の遅延と等しい場合に理想的ですが、これは起こりそうにありません。合計遅延は、全加算器の遅延が 2 回、MUX の遅延が 4 回です。2 つのキャリー チェーンを介した遅延と前のステージのキャリーの遅延を等しくするようにします。
条件付き和加算器[ 3 ]は、キャリー選択加算器に基づく再帰構造です。条件付き和加算器では、MUXレベルが、それ自体が条件付き和加算器として構築された2つのn/2ビット入力から選択します。ツリーの最下層は、2ビット加算器のペア(1つの半加算器と3つの全加算器)と2つのシングルビットマルチプレクサで構成されています。
条件付き加算器は、中間桁出力のファンアウトが非常に大きいという問題があります。ファンアウトは最終レベルではn/2にも達することがあり、すべてのマルチプレクサを駆動しますに。
キャリー選択加算器の設計は、キャリー先読み加算器の構造と組み合わせることで、MUX入力を生成することができ、並列プレフィックス加算器としてさらに高い性能を実現すると同時に、面積を削減できる可能性がある。
一例として、Kogge–Stone加算器に関する記事が挙げられています。