6/15 課題について 


課題内容

複雑な論理回路を作るのには沢山の論理ゲートと、それらの間の配線が必要となる。今回の演習のような IC によって次のような回路を作る場合、必要な論理ゲートとジャンパワイヤの数を計算せよ。ただし、次に挙げた回路のうち、1つ以上について答えること。 注意(6/21追加)
今回利用したICトレーナーの規模だけを大きくして(ICの種類は増やさない)考えること.

講評


解答例(全加算器, 加減算器)

1. n ビットの全加算器
まず 1 ビット全加算器の回路図は以下のようになる。使用ゲートは、XOR が 2 つ、AND が 2 つ、OR が 1 つである。また、電源部分を除けば、枝分かれしている部分も考えたジャンパワイヤの数は図の通り 12 本 である。
これを n 個つなぐと n ビットの全加算器が完成する。このとき、使用するゲートの数は単純に全加算器の 数に比例して増えるので、
(必要な X OR ゲートの数) = 2n
(必要な AN D ゲートの数) = 2n
(必要な OR ゲートの数) = n
また、電源部分を除いたジャンプワイヤの本数は、12n から、全加算器と全加算器をつなぐ n − 1 本の線が 余分に数えられる分を引くと、
(必要なジャンパワイヤの本数) = 12n − (n − 1) = 11n + 1
となる。
2. n ビットの加減算器
この回路図は同様に以下のようになる。
同様に考えると、
(必要な X OR ゲートの数) = 3n
(必要な AN D ゲートの数) = 2n
(必要な OR ゲートの数) = n
(必要なジャンパワイヤの本数) = 14n − (n − 1) = 13n + 1
となる。

コメント

この問題を選んで解答した人が大部分でした.

解答例(桁上げ先見方式全加算器)

桁上げ先見方式について、まずは述べる。

XiとYiを、XORゲートで結んだ出力をPi、ANDゲートで結んだものをGiとする。以下、この入力で考える。1ビットの場合、C0とP0をANDでむすび、それをORで結べばよい。ゲート2個で、ワイヤ−5本である。

nビットの場合、ゲート数は、2+4+6+・・・・・・=n*n+n、ワイヤーは、5+9+13+17+・・・・・・・=2n*n+3n。GやPを作るのに、ゲートを2n+2、ワイヤーを4n+4使用し、AND,XOR,ORの電源に6本のワイヤーを使う。合計するとゲートをn*n+3n+2個、ワイヤーを2n*n+7n+10本使用する。(ただし、n*nとは、nの2乗のこと)

桁上げ先見方式のみを使用すると、桁数が増えた場合は、二次関数的にゲート数が増える。ほかの高速化方法や、高速化しない方法と組み合わせて使うことが多いようだ。単独では、高速化の意義が薄れるので、16ビットくらいまでのときしか使わないようだ。


コメント

回路を工夫するとゲート数は n2の規模ではなく n log nの規模に押さえるこ とができるのですが,教科書を読んだだけでは理解が難しい桁上げ先見方式をきちんと把握し ていることが分かります.

解答例(桁上げ選択方式全加算器)

桁上げ選択方式によるnビット全加算機について調べたいと思う。

あまりよく分からないのでn/2ビットずつ計算した場合を考えたい。(nは偶数) n/2ビット全加算機では5n/2個の論理ゲートと(11n+1)/2本のワイヤがいる。 n/2ビット全加算機は全部で3つ必要。

次にマルチプレクサを考える。しかしよくわからない。だから違っているかもしれません。 必要な論理ゲートはANDがn個、ORがn/2個、さらにビット反転のためのNANDがn/2個。 ワイヤは出力にさらにn-1本、ビット反転で(n/2)*3本使う。

そしてANDからn本、ORからn/2本のびるので論理ゲートは全体で
(5n/2)*3+n+n/2+n/2=19n/2個
ワイヤは((11n+2)/2)*3+(n-1)+(n/2)*3+n+n/2=41n/2+2本
電源供給の10本を含めて41n/2+12本必要だと思った。


コメント

この問題に答える場合は,この解答のようにn/2ビットの加算器を1ビット全加算器を 並べて作る方法と,n/2ビットの加算器も桁上げ選択方式で作る方法の2種類が考えら れます.後者の方は理論的な遅延が log nに比例するので良いのですが,どちらでも 正解とします.

最上位の桁の繰り上がりも求めようとすると,マルチプレクサはn/2+1 ビット分いるの で,それに気がついてそのように計算している人もいましたが,それも当然正解ですが, 教科書ではそのように書いてないので,n/2ビット分で答えても構いません.

マルチプレクサのNOTは一つにまとめることができるので,それに気がついて減らしている 解答もありました.

cinを0や1に固定した場合は,加算器のゲート数を減らせることに気がつ いている解答もありました.


解答例(nビットレジスタ)

まず,同期式RSFFを(図7.16)のように組み合わせると, 論理ゲートはNANDを4つ,ジャンプワイヤは10本必要である. 10本のうち,3本が入力(s,c,r),2本が出力(q,q~)に使用される.

次に,同期式RSFFを2つ直列に用いてマスタースレーブ式RSFFを(図7.18)のように組み合わせると, 論理ゲートはNANDを8つ,NOTを1つ,ジャンプワイヤは19本必要である.

よって,マスタースレーブ型RSFFを2つ直列に用いてDFFを(図7.19)のように組み合わせると, 論理ゲートはさらにNOTを1つ,ジャンプワイヤを1つ多く使用することがわかる. つまり,論理ゲートはNANDを8つ,NOTを2つ,ジャンプワイヤは20本必要である.

上で考えたDFFをn個用いて,nビットのレジスタを(図7.21)のように組み合わせると, 論理ゲートはNANDを8n個,NOTを2n個必要なのは明らかである. また,ジャンプワイヤは,すべてのDFFに共通してしようする入力cのために1本増えるだけである.

よって,nビットのレジスタで必要となるのは, 論理ゲートが(NAND,NOT)で(8n,2n)本, ジャンプワイヤが20n+1本である.

ここで,今回の演習ではNOTを使えないことに気づいたので,他の論理ゲートでNOTを表す. そのためには,入力信号を2つにわけてNANDに入力すればいい.
0→(0,0)→NAND→1か,1→(1,1)→NAND→0.
よって,論理ゲートはNOTからNANDに,ジャンプワイヤはNOT1個当たり1本増えることになる.

よって,nビットのレジスタで必要となるのは, 論理ゲートが(NAND)で(10n)本, ジャンプワイヤが21n+1本である.


コメント

レジスタがRSFFではなくDFFで構成されていることに気がつけば,難しくない問題だったと思います.