全加算回路ってのは、平たく言えば足し算回路です。
1桁の足し算回路を組み合わせれば何桁の足し算回路でも作れるので、ふつーは1桁の足し算を行う回路です。
「どんな回路になるか」ってな結論を急ぐ前に、「足し算って何?」ってとこから話を始めましょうかねぇ。
|
さぁ、足し算って、どんなんでしょう? 1桁+1桁の足し算だと、1+1=2、 1+2=3、 ・・・おいおい、それは十進数。
論理回路の世界は二進数なんだから、0+0=0、 0+1=1+0=1、 1+1=10。
1+1の結果が2桁になってるのは、ケタ上がりがあるってコト。
ケタ上がりを考えて答えを2桁で示すと、0+0=00、 0+1=1+0=01、 1+1=10。
加算する数(入力)をAとB、加算結果(出力)の1桁目をS、ケタ上がりをTとして真理値表を書くと、こうなる。
入力 |
出力 |
A |
B |
T |
S |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1桁+1桁の足し算だったら、これでOK。
だけど、2桁以上の加算は、これダケじゃぁできない。なぜって、下の桁からのケタ上がりを処理せにゃならんから。
2桁の二進数AとBの加算について、Aの1桁目の値をA1、Aの2桁目の値をA2・・・という風に表して真理値表を書くと、こうなる。なお、1桁目のT1出力は、そのまま2桁目の入力になってます。
1桁目の加算 |
2桁目の加算 |
入力 |
出力 |
A1 |
B1 |
T1 |
S1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
|
入力 |
出力 |
A2 |
B2 |
T1 |
T2 |
S2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
|
つまり、2桁目の足し算は、1桁目の加算結果からケタ上がりしてくるT1を含めて、A2+B2+T1を計算せにゃぁなりませぬ。
筆算風に書くと、こうなる。
+ |
A2 |
A1 |
|
|
B2 |
B1 |
|
|
|
|
|
T1 |
S1 |
|
←まずA1+B1を計算し、T1とS1を算出 |
|
|
T2 |
S2 |
|
|
←A2+B2+T1を計算し、T2とS2を算出 |
|
|
T2 |
S2 |
S1 |
|
←これが最終結果 |
3桁以上の数の足し算の場合は、上記2桁目と同じことを繰り返せばOK。
つまり足し算回路ってのは、
1桁目は、2入力2出力の加算回路(A1+B1 ⇒ T1、S1)っていう演算になって、
2桁目よか上は、3入力2出力の加算回路(A2+B2+T1⇒T2、S2)となります。
2入力2出力の加算回路と、3入力2出力の加算回路を組みあわせれば、何桁の加算回路でも構成できます。
カシコいアナタは、もうお気づきかと思いますが、
@ ふつー2入力の加算回路を半加算器、3入力の加算回路を全加算器って言います。
これ、英語でもHalf AdderとFull Adderって言うんだよね。英語の直訳なのかな?
A 1桁目だけ特別に半加算器を持って来なくても、全加算器を使って下からのケタ上がりを0にしときゃ、それはそれで動きます。全加算器の真理値表から、T入力=0の行だけ抜き出すと、半加算器の真理値表と一致しますので。
|
じゃあ、半加算器および全加算器は、実際にはどんな回路になるかって?
あのねー、真理値表が出来たら、とりあえず回路は作れるんよ。
見た目のキレイさとか、回路規模の小ささとかを気にしなきゃ、そのマンマ作れば良いダケじゃんか。
例えば、半加算回器の場合。
入力 |
出力 |
出力Tが1になるのは、A=B=1の時。つまり、AとBのANDを取った結果が、T出力になる。つまり、 T={
A AND B }
出力Sが1になるのは、AまたはBが1の時。ただし、A=B=1の時は0になる。
A=B=1の時ってT出力が1の時だから、AとBとのORを取った後にTの反転とAND取るってコトになる。
つまり、 S={ ( A OR B ) AND NOT(T) } ってコトになる。 |
A |
B |
T |
S |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
ま、S出力の作り方には、別な方法もあるけどね。
たとえば、AとBとのXORを取れば、それえがそのままS出力になっちゃう。
ただ、XORってトランジスタを多く使うんで、ANDとORで作るほうが僕の好み。
たとえば、「S出力は、A=B=0のとき、またはA=B=1のときに、0になる」って考えれば、
S=NOT{ NOT(A) AND NOT(B) } OR { A AND B }
としても出来るハズ。
ほいじゃ全加算回路はっちゅーと、
入力 |
出力 |
上の真理値表と、ちと入出力の記号を変えてあるけど。。
出力Tが1になるのは、A=B=1またはA=C=1またはA=B=1の時って読める。
だから、2入力のANDゲートを3ヶと3入力のORゲートを1ヶ使って組めばいい。
T={ ( A AND B ) OR ( A AND C ) OR ( B AND C ) }
出力Sは、ちと条件がヤヤこしいけど、半加算回路でやったよーにTを使ってSを作ると考えると簡単になって、T=0かつABCが000ではない時、またはABCが111の時。ってコトになる。
つまり、S={ NOT(T) AND ( A OR B OR C ) } OR ( A AND B AND C) となる。
|
A |
B |
C |
T |
S |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
注:以上の記述は、シミュレーション等で確認してないんで、もしバグってたらゴメンね(^^;
|
TTLの時代はねぇ、論理回路って言えば74シリーズだった。それしか無かった(笑)
74シリーズってのは、論理回路でよく使うゲート(ANDとかORとか)を、14ピンとか16ピンのICにしたもので、そういう小さなICを組み合わせて、大きな論理回路を組み立てていた。例えば、ボーリングのスコアを自動で付けてくれる機械(スコアラー)ね、初期のスコアラーは、74シリーズのICをゴッチャリ使って作られていた。
で、74シリーズのロジックICって200種類ほどあって、その中には、半加算器、全加算器、カウンタ、シフトレジスタなんかもあってねぇ、親切なメーカーさんは、そのICの中の論理回路をカタログに載せてくれていた。 だから、それを見れば、フムフム全加算回路はこーゆー論理回路になるのかぁって勉強できた。特にCQ出版社の「TTL規格表」なんてのは、ボロボロになるほど使った(笑)
74シリーズって、もともとは米国のテキサスインスツルメンツ社が作り始めたんだと記憶している。で、当時半導体を作ってた会社は、すべてそのコピーを発売してた(半導体に著作権なんて無い時代だったらしい(^^;)
日本のメーカーで比較的ガンバってたのが、東芝さん。今でも東芝さんのWebページにはロジックICのデータが残っているみたいだから、参考にしてくださいまし。(要あくろばっと・りぃだぁ)
@ 東芝セミコンダクタのトップページへ行く。
A 左側の製品一覧の欄から、「汎用ロジックIC」をクリック!
B 「データシート」をクリック!
C 「CMOSロジックIC」をクリック!
D 「74HC」をクリック!
E 74HCシリーズロジックICの一覧が表示されるので、機能欄の記述から見たいデータを探して、データシート欄のアイコンをクリック!
F pdfのデータシートが開くので、その中に内部の論理回路とか、等価回路とかが載ってないかを探す。
ま、このデータシートって現実の製品のデータシートですから、そう単純ではないっす。
回路も、真理値表通り組まれているワケじゃぁなく、トランジスタ数が少ないとか、遅延が少ないとか、そういう視点からチューニングされてます。
それに、ICとしての電気的特性とか、絶対最大定格とか、ワケの判んないコトが多く書かれてると思うけど・・・論理回路シミュレータの世界から外に出て、実際に動作する回路を作るコトになったら、またお目にかかれるでしょう、きっと(^^;
|