- ベストアンサー
計算機の問題です
4ビット桁上げ先見加算機の理論設計をNANDを用いて行い、 さらにそれを用いて64ビット2段桁上げ先見加算機を構成する方法を説明せよ。 というレポートが出されました。すべて教えろとは言いませんので(そうだと助かりますが)ヒントだけでも頂けたら嬉しいです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
前提知識 1.すべての組合せ論理回路はNANDだけで構成できる (1入力NANDはNOTに等しい。NANDのNOTはANDに等しい。NOTのNANDはORに等しい。その他すべての組合せ論理はAND、OR、NOTの論理式で表せる) 2.2つの2進数(AとBとしましょう)の加算結果(Cとしましょう)を考える。Cのiビット目(Ci)は入力A,Bのiビット目(Ai、Bi)および、i+1ビット目(すなわち下位)からの桁上がり(Carry)で決まる。 回答(おもなヒントだけですけどね) 3.1ビットずつ桁上がりを順番に行うと任意のnビットの加算機は確かに実現できるが、論理回路の段数がn段になってしまう。複数ビットをまとめて処理すると全体の段数を減らすことが出来て、回路の処理速度を向上できる。 --> 普通は4ビット単位に計算する。 4.4ビット加算機の入力は、Aの4ビット、Bの4ビット、下位からの桁上がり1ビット。 出力は、加算結果4ビット、上位への桁上がり1ビット です。 --> 各出力ビットを入力9ビットの論理式で表して、NANDの組合せで実現すればよい。 5.ここで、どんなNANDが使えるかが問題になります。入力のビット数に普通は制限があります。3入力NANDとか4入力NANDなどです。上記4ビット加算機なら入力が9ビットなんで、9入力NANDが使えればそれに越したことは無いのですがそれだと未使用入力が多くなって、LSIの利用効率が低くなるので、普通は3~4ですね。また、出力にプラスマイナス両方の極性の出力が出る場合が多いです。すなわちNANDといいながらANDの出力も同時に出すわけです。 -->でも、レポートならNAND出力しかないと想定して、NOTには1入力NANDを1段使用するのが良いでしょう。 6.以上の手順で、4ビット加算機なら3-4段でできるでしょう。(仮に4段としましょう) 7.4ビット加算機を4個シリアルに接続すると16ビット加算機が出来ます。でも、それだと全体の段数が4x4で16段になってしまう。 --> そこで4ビットの中で行った「桁上げ先見」と同じような先見を「4ビットx4」で行います。 --> 上記4で示した5ビットの出力以外に「下位からの桁上がりの有無に関係なくA,B計8ビットだけによる桁上がり」という出力を出します。 8.4個の「4ビット加算機」の外側に、「桁上がり先見回路」を設けます。これは入力が5ビットなんですが、上記7で新設した出力ビット(全部で4つある)と最下位からの桁上がり(1ビット)、計5ビットの入力です。 この「桁上がり先見回路」の出力は、全体(すなわち2進16桁)の桁上がりおよび、「4ビット加算機の入力桁上がりビット」です。 -->普通、桁上がり先見回路の段数は加算機(4段)よりすくなく(仮に2だんとしましょう)、これを用いれば16ビットの加算を2+4=6段で実現できます。上記7で言った16段と比べると10段も削減できて、処理スピードが格段に向上します。 9.さて、64ビットの加算機では、同様にして16ビットの加算機を4個シリアルに接続すると、6x4=24段で実現できます。 --> 上記8と同様に、桁上がり先見回路を外付けすることによって段数を減らせます。 --> 「桁上がり先見回路」は2段積みになりますが、 2段x2段積み+4段=8段 で実現できます 補足 N02さんが、ラッチについて述べられてますが、先見加算機そのものを設計する際は必要ないでしょう。集積度の小さいICでは、加算機に「記憶回路としてのラッチ(フリップフロップ、レジスターなどという言い方もある)が内蔵されている場合もありますが、集積度の高いLSIでは、ラッチなしの組合せ回路としての先見加算機だけで独立した論理回路になります。64ビット加算機のような大規模回路はLSIの世界の話だと思います。 なるべく分かりやすく書きましたが、やっぱり分かりにくいでしょう。特に項番8のあたりが。実際は参考書などで答えを見てからでも、じっくり読み取れば別にインチキとは言えないでしょう。結構数時間~1日仕事になるはずです。ノーバグで設計できたら超優秀なハード設計者です。 以上
その他の回答 (2)
- gukky
- ベストアンサー率28% (17/60)
>4ビット桁上げ先見加算機 って、look ahead carryと呼ばれるものですよね。 日本語というのは初めて聞きました。 この考え方は、Dラッチを4個用意し、その入力と出力間の心理値表を組合せ回路で実現すればよいのです。 例えば1ビット目を考えたとき、1ビット目の出力が1のときの次が0に、0のときの次が1になりますよね。 だから、1ビット目のDラッチの入力は1ビット目のDラッチの出力を反転させたものを入力させればよいのです。 2ビット目について考えると、1ビット目の出力と2ビット目の出力のどちらか一方のみが1のときの次は1となりますよね。だから、1ビット目の出力と2ビット目の出力のEXORをとったものを2ビット目のDラッチの入力とさせればよいのです。 後は同じように考えればわかると思います。 尚、反転やEXORをNANDで作る方法はわかりますよね。 DラッチまでNANDで構成するとなると、ちょっと難しいですね。参考書に回路が書かれていたのを見たことはありますが、通常は74HC74などを使うため、NANDで構成する方法は覚えていません。
- GTAC
- ベストアンサー率69% (316/454)
35年前の本ですが、渡辺茂著【初歩・電子計算機】 新書サイズ 256ページ 昭和44年12月10日発行 光文社 は非常に判りやすかったです。 初心者でも2日で理解できる内容で、基本ロジック(ゲート)を使って加減算する回路の原理が詳しく説明されています。 最近の大学講座や情報通信関係の参考書ではここら辺(基礎の基礎)が省略されてしまっているので、この本は役立ちました。 図書館にあるかもしれませんが、古本がオークションに出ていました http://page5.auctions.yahoo.co.jp/jp/auction/e28642054
お礼
ありがとうございました。ポイントを差し上げられませんで申しわけありません。早速図書館に行ってみます。