半加算器

「LSI回路設計」という授業の中で、「半加算器を設計する」という課題がありました。
まずはトランジスタレベルで設計をし、SPICEで素子のサイズにあたりをつけ、最後はレイアウトまでするという課題でした。
そして、半加算器の遅延時間が最も短い人が優勝というもの。

半加算器というのは、実はかなり単純なものでして。
そんなに考える余地は無いような気がしました。
でも、これが初めてみると、意外と奥深かったんです。

その時学んだことは、他で使える内容も多いので、ここに書いていこうと思います。

まず半加算器とは何か。
コンピュータは、”0″と”1″だけで処理をしているなんて言います。
もっといえば、”0″と”1″の足し算だけです。
コンピュータがやっている計算は、ざーっくり言えばこれだけ。

0 + 0 = 00
0 + 1 = 01
1 + 0 = 01
1 + 1 = 10

これを実現するのが半加算器というやつです。
2つの値の足し算だから、「2入力」です。
答えは桁上がりで2桁になりうるので、「2出力」です。
半加算器は、「2入力2出力」。

「2入力2出力」というのは、「2入力1出力のゲートが2つ」と言い換えることもできます。
結局、半加算器は論理ゲート2つだけってことです。

では、その2つの論理ゲートって何でしょう。
ANDなのか、NANDなのか、ORなのか、NORなのか、はたまたXORか、XNORか。
(コピペ)

上の計算から、1桁目だけを取り出します。
0 + 0 = x0
0 + 1 = x1
1 + 0 = x1
1 + 1 = x0
これは、XORゲートです。

次に2桁目だけを取り出します。
0 + 0 = 0x
0 + 1 = 0x
1 + 0 = 0x
1 + 1 = 1x
これは、ANDゲートです。

つまり、「半加算器はXORゲートとANDゲートである」ということ。

この二つを比較するとXORゲートの方が複雑であるため、遅延は主にXORによって引き起こされます。
だから、XORについて散々調べて考えたんです。
だから、無駄に思い入れがあったりするんです。

もうANDはどうでも良いとして。
次に、XORをCMOSで構成するには・・・というのを考えます。

コメント

タイトルとURLをコピーしました