• ベストアンサー

2進数の加算回路について

こんばんわ。 2進数の加算回路を行う回路は、1ビット目(LSB)の加算に半加算器を使って、2ビット目以降の加算に全加算回路を用いることで実現できますよね?でもこの方法の場合、下位の桁から毛か上げが順次確定していくことによってビット数が大きくなればなるほど結果が算出されるまでの応答速度が遅くなってしまいます。それを克服するために、何か別の方法はないでしょうか?別の方法で回路を作ることは可能でしょうか。 ご指導お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

一瞬で加算する回路は実現可能です。 順に桁上げしていく方式は非同期式といいます。 加算がいつ終わるか、最大時間値しかわかりません。 桁上げが、さざなみのように伝わっていくのでリップル(さざなみ)方式とも いいます。 それに対して同期式(ノンリップル方式)では1クロックで何桁でも加算が終了 します。今の自分の桁よりも下の状態を全て掴んでおき次の結果を事前に知って おくのです。クロックと同時にその答えを出力するのです。 回路は当然相当複雑になります。

ayuayu17
質問者

お礼

なるほどー、非同期式と同期式があったんですね(..) 勉強になりました。ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 8ビット加算回路について,リプルキャリ加算器として構成した場合と,キャ

    8ビット加算回路について,リプルキャリ加算器として構成した場合と,キャリルックアヘッド加算器として構成した場合の,それぞれの素子数とクリティカルパスの段数を求めたいのですが,よくわかりません. 素子数はAND,ORゲートの数で,1つのゲートは1とするのが原則です. わかるかた,どなたか教えてください.

  • 加算器

    8ビット加算器の容量を求める方法を教えてください。 また、入力ビット数と出力ビット数と容量を教えてください! ヨロシクお願いします!

  • 直列加算器について

    高校の情報通信の授業で直列加算器についての問題が出たのですが、いまいちよくわからなかったので質問させていただきました<m(__)m> 問題は 1、直列加算器には何故、遅延回路が用いられるのか? 2、直列加算器の動作例を簡潔に述べよ。 といったものです。 1の遅延回路はビット数が大きくなることで起きる遅延をなくすため? というのが自分の考えなのですが。このところも踏まえてご教授願えればうれしいです。

  • 加算回路をMIL記号を用い図示せよとの問題について

    「4ビット同士の加算回路をMIL記号を用いて図示せよ」という問題はどういう考え方をすればよいのでしょうか? IT基礎論という科目での問題で、答えは一応あるのですが(下の画像です)何故そういう答えになるのかが分からず困っています。回路にはORゲート、ANDゲート、NOTゲート、XORゲート以外は使用するなとのことです。 また、この後の問題で作図した回路をトレースして2進数「1101と1110の和」を求めよという問いもありますが、これもやり方がわかりません。 どちらか片方だけでも構いませんので、お時間のある方どうかよろしくお願いいたします。

  • 論理回路の構成に関して。

    添付している画像の問題の1問目のANDと桁上げ先見加算器のみで4ビット×1ビットの回路を作る方法が分かりません。 可能な限り分かり易く教えていただきたいです。

  • Dフリップフロップを用いて・・・

    大学で電気電子工学分野を専攻している者です。 2進数の2の補数を1ビットずつ直列に求めるMealy型同期式順序回路をDフリップフロップを用いて設計する(2進数はLSBより1ビットずつこの回路に入力され、2の補数の該当桁が1ビットずつ出力される、例えば0011が入力されると0010が出力される)という問題で、まず状態遷移図を書きたいのですが、入力、出力はいいとして、何を「状態」とすればいいのかがわかりません。 乱文ですがよろしくお願いします。

  • CPUの回路について教えてほしいです!

    ・5ビットCPU:CPUが5ビットずつ読み出し専用メモリからデータを取り込む。 ・レジスタ:2ビットを記憶できるレジスタを1つ持っている。 ・アドレス空間:CPUは2ビットの異なるアドレスを参照できる。 ・メモリ:読み出し専用メモリと書き込み専用メモリを持っている。読み出し専用は5ビット、4ワード。書き込み専用は2ビット、1ワード ・機械語:5ビット中、上位3ビットがOPコード、下位2ビットがオペランドとなる。 ・命令:CPUの命令は以下の5種類。 ・加算命令:レジスタの値とオペランドの値を加算し、その値をレジスタにセット。 ・減算命令:レジスタの値からオペランドの値を減算し、その値をレジスタにセット。 ・ロード命令:オペランドの値をレジスタにセット。 ・ストア命令:書き込み専用メモリにレジスタの数値を書き込む。下位2ビットは無視される。 ・ジャンプ命令:オペランドの値が示す読み出し専用メモリのアドレスに書かれた命令を次に実行する命令とする。 このような仕様にに基づくUPUの回路図を教えてください。 また減算命令、ジャンプ命令、メモリへの書き込みをするような回路について文章でよいので説明していただけるとありがたいです。

  • カウンターを使い回路を作成する問題です

    5->6->2->1と表示して5に戻る回路を作成する.ただし,2入力NANDとDフリップフロップのみを使用することとし,Dフリップフロップは正負両方の出力を使用して良い この回路を,2ビットのカウンタとカウンタ値から出力を生成する組み合わせ回路とで実現する.カウンタはいま何桁目を表示しているのかだけを記憶しており,カウンタ値が00,01,10,11のときはそれぞれ一,十,百,千の桁を表すとする.組み合わせ回路はカウンタ値{C1,C0}を入力とし,それが示している桁の値を4ビットの符号なし二進数{O3,O2,O1,O0}で出力する.例えば1234場合は,カウンタが00の時は一の桁の4を,01の時は十の桁の3を,という風に組み合わせ回路が出力する. 以下の問に答えよ. 問1 この組み合わせ回路の論理式を示せ. 問2 このカウンタを設計し,図示せよ. 問3 問2で設計したカウンタの値を問1の組み合わせ回路に入力し,組み合わせ回路の出力をDフリップフロップで保持することにして,全体を完成させて図示せよ. 問4 この回路の最大動作周波数を計算せよ.ただし,Dフリップフロップの遅延時間,セットアップ時間,ホールド時間はそれぞれ10.5ns,3.0ns,1.0nsで,NANDのH→LとL→Hの伝搬遅延時間はそれぞれ6.5ns,5.5nsとする. この問題がわかりません。 よろしくお願いします。

  • 論理回路問題

    デジタル値で8ビットの擬似正弦波を発する論理回路の設計をしたい。 1、Dフリップフロップを用い、nを入力し4n(8≦n≦64)をカウントする時に値を0にリセットする8ビット同期式のカウンタの回路図を書きたい 8ビットのインクリメント回路を使ってよい。 2、1の正しく動作する為の最大動作周波数を求めたい 3、8ビットのtと6ビットのnを入力してsinπt/2n(8≦n≦64)の近似値を出力する論理回路の回路図を書きたい。sin関数の近似にはtayler展開を使用する 8ビット加算回路、減算回路及び8ビット入力16出力の乗算回路を使ってよい 4、3の回路の入力tが変化したときの伝播遅延時間は? 5、1と3より目的の回路を書く。 6、5での回路が正しく動作する最大動作周波数は? NOT,NAND、NOR 各ゲートの伝播遅延時間 2ns XOR,XNOR  各ゲートの伝播遅延時間 3ns Dフリップフロップからのクロック入力の有効エッジからの伝播遅延時間 3ns Dフリップフロップのセットアップ時間 5ns Dフリップフロップのホールド時間 1ns インクリメント加算、減算回路の伝播遅延時間 5ns 乗算回路の最大伝播遅延時間 30ns どなたか上記の問いについてアドバイス頂けないでしょうか? 宜しければお願いします

  • 2進数&10進数&16進数の変換

     ◆ コンピュータで使用される2進数  人が日常使用している数値は10進数ですが、コンピュータは内部で数値を表現する場合、2進数を使用  しています。しかし、「0」と「1」だけの2進数では人が分かりにくいため、人間が見えるところでは  コンピュータは2進数を10進数や16進数が変換して表現しています。ここではその変換方法を学びます。  ◆ 2進数  2進数とは、「0」と「1」の2種類の数字を用いて全ての数を表現します。10進数では0から数えて「9」の  次は位があがることになりますが、2進数では「 1 」の次に位があります。位があがれば、その新しい桁は   「 1 」 となり、それ以下の桁は全て 「 0 」 となります。それでは、2進数の数の増え方を見てみましょう。      ところで、2進数を表現する時は一般的に8桁単位で表現するため、8桁未満の場合は頭に0をつけます。  つまり、上の2進数の値は順番に 00000000 → 00000001 → 00000010 → 00000011 → 00000100 →  00000101 → 00000110 → 00000111 → 00001000 と表します。以下は2進数と10進数の対応表です。 2進数と10進数の対応表 10進数 0 1 2 3 4 5 6 7 8 9 10 ・・・ 2進数 0 1 10 11 100 101 110 111 1000 1001 1010 ・・・  ◆ 2進数から10進数への変換方法  10進数と2進数の対応表は以下の通りです。2進数の桁が上がる時の10進数の値が以下となります。 2進数と10進数の対応表2 10進数 1 2 4 8 16 32 64 128 2進数 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000  従って、2進数で「1」となっている桁に対応する上記の10進数の基準値を合計することにより、2進数から  10進数の値を求めることができます。例えば、2進数の「 00101010 」を10進数に変換する場合、基準値が  32、8、2の所でビットが1なので下図の通り、2進数の「 00101010 」は10進数では「42」だと分かります。            ◆ 10進数から2進数への変換方法  10進数の数値を「 0 」になるまで「 2 」で割り算していき、その結果の「余りの数 」を並べることで  ある10進数の値を2進数の値へ変換することができます。それでは、具体的に変換して見て行きましょう。           例えば、10進数の「160」を2で割り算していくと上図の結果となります。後は、余りの数を下から順番に  並べれば 「 10100000 」 の値が算出されます。次に、「22」を2で割り算していき余りの数を下から順に  並べれば 「 10110 」 の値が算出されます。ネットワークにおいては、2進数を一般的に8桁で表示する  ことから、8桁になるよう上位に「 0 」を追加して「 00010110 」とします。当然「 10110 」と同じ値。 因みにここ参照ですがhttp://www.infraexpert.com/study/ip1.html なぜこれが10進数なんでょうか? 10進数というのは、0から9までの数字が1増えて10になるんですよね? なのに2進数と10進数の対応表2を見ると 倍数になっているのですが、、 これはいったいどういう違いなんでしょうか? 回答お願いいたします。 ほかにも解らなそうな点は、教えて頂けると幸いです。