乗算器とカウンタの回路規模比較

このQ&Aのポイント
  • 乗算器とカウンタの回路規模について比較しました。
  • Nビット乗算器とカウンタの回路規模の違いについて考察しました。
  • 乗算器とカウンタの回路規模を比較しています。
回答を見る
  • ベストアンサー

乗算器とカウンタ

乗算器とカウンタのどちらの方が回路規模が小さくなるのでしょうか? Nビット乗算器の,Nはシステムにより異なるため,10ビット以上をとることもあれば,(A*1)のようなものもあります。 現状のシステムで乗算器は (A-B) * X という形で使用しています. (AとBは定数のため,論理合成時に Y*Xとなっていると推測しています。Yが0になることもあります) カウンタ回路は,まだ実装していませんが, if( ck ) if( リセット条件 )     syuturyoku <= 0; else if ( 更新条件 ) syuturyoku <= syuturyoku + 1; end if; のような(一般的な)記述をしようとしています

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

4ビット乗算器と 100億ビットのカウンタ回路なら後者の方が大きい. 64ビット乗算器と 8ビットカウンタ回路なら前者の方が大きい.

tyamoroneu
質問者

お礼

お答えありがとうございます。 カウンタの方がかなり有効みたいですね。

その他の回答 (1)

  • P0O9I
  • ベストアンサー率32% (693/2146)
回答No.2

一般的に同じビット数なら乗算器の方が大きくなります。乗算器はビット数の2乗で規模が大きくなっていくので、特にビット数が増えると差が大きくなります。 所で、なぜ乗算器とカウンタをなぜ比較するのでしょうか。普通用途等は重ならないと思いますが。

tyamoroneu
質問者

お礼

お答えありがとうございます 補足の追加 ( A & B ) - ("11"-"10") * A ( A & B ) - ("111" -"100") * A ( & Aが001 B 010ならば,A&Bは 001010となります) ミスがありましたので、訂正します。 上の例ならば,論理合成後(予想)は,単純な減算回路になります。 実際,多くのシステムの中で,ほとんどが上の計算か,("1"-"1")*Aとなり,省略されるケースで,下のようにBの値が大きくなることはマレです。ただし,Aの値は10ビット以上とるケースもあります。

tyamoroneu
質問者

補足

現在,二つの数値に依存するデータの算術に乗算器を用いていました。 しかし、その数値は単純に1づつ増加するだけだと、分かったため、カウンタでも書き換えが可能だと考えました。 使用していたさらに具体的な乗算器の例は (二つのシステムの例) ( A & B ) * ("11"-"10") * A ( A & B ) * ("111" -"100") * A 上では,Bは 00 01 10 00 01 10 00       Aは 00 00 00 01 01 01 10 というようになっています。 下では,Bは100まで増加します。 システムにより,Bの方のビット数はあまり変わらないですが,Aの方は大きく変わります。

関連するQ&A

  • 乗算回路

    図Bで示した回路を2つといくつかの論理ゲートを用いて、4bit(a=a3 a2 a1 a0) ×3bit(b=b2 b1 b0)の乗算回路(出力7bit c=c6 c5 c4 c3 c2 c1 c0) を設計せよ。 教えて頂きたいです。

  • 乗算回路の問題

    加算回路を2つと、いくつかの論理ゲートを用いて 4bit(a2,a2,a1,a0)*3bit(b2,b1,b0)の乗算回路(出力7bit=c6,c5,c4,c3,c2,c2,c0) を設計せよ という問題です。 正直良く分かりませんが、4bitの加算回路と3bitの加算回路をANDゲートでつなげばいいのですか。 なんか全然あってないような気がします。 分かる方がいらっしゃいましたら、ご教授お願いします!

  • 乗算について

    只今C++を勉強しております. 演算子の多重定義を勉強しているのですが, 乗算についてふと思いました. y = a * bを y = ab の様に簡略化するにはどのように定義したらよいのでしょうか? なるべく分かりやすいように書いて頂けるとありがたいです. お願いいたします.

  • 2進数の乗算と除算

    先日、桁上がりについて質問させていただいた者です。 加算と減算はなんとか完成したのですが、乗算と除算になって混乱してしまいました。 二進数の乗算、除算はビットシフトと関係がありますが、私の作っているものの場合はどのようなソースコードにすればよいでしょうか? (ちなみに、bの値は2のべき乗に限定しています。) int main(void) { int a,b,i; int x[8],y[8]; puts("二つの符号なし整数を入力してください。(ただしa>bとし、bは2のべき乗の値とする)"); printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b);  printf("\n"); /*二進数の形に変換*/ for(i=0;i<=7;i++){ x[i]=a%2; a=a/2; y[i]=b%2; b=b/2; } puts("aとbをそれぞれ二進数で表すと"); printf("a="); for(i=7;i>=0;i--){ printf("%d",x[i]); } puts(""); printf("b="); for(i=7;i>=0;i--){ printf("%d",y[i]); } printf("となります。\n\n");     return(0);  }

  • カウンタ回路

    JK-FFを用いてカウンタの実験を行なったのですが、いくつか質問があります。自分なりに思うことも書いてみます。分かる方アドバイスよろしくお願いします。 (1)非同期式N進カウンタでハザードの発生理由と対策  非同期式カウンタではCKを統一していないためハザードが出来るんですか?ハザードをなくすためにはCKを共通にして同期式にすればいいんでしょうか・・・? (2)同期式16進カウンタをBCDカウンタとして使うには回路をどう変更したらよいか?  実験で使った回路はJK-FFを4段にしたものです・・・。 (3)4ビットシフトレジスタの動作原理とLSIの中に使われている例をあげよ 参考URLなどいいのでよろしくお願いします!!

  • 9進カウンタ作製

    IC7492(12進非同期カウンタ)を1つ IC7400(4回路2入力NANDゲート)を2つ使い9進カウンタ(クリア信号によってリセットされる)を作りたいのですがどうすればいいのでしょうか? 入力はクロック信号CK、クリア信号C 出力は4bitで純2進数にする必要はないです。 よろしくお願いします

  • さまざまな加算器と減算器と乗算器について

    最近、論理回路の実験の授業で加算器・減算器・乗算器に取り組みました。 加算器については、半加算器と全加算器の機能や作り方がわかりますが、 Q1.なぜ二つの半加算器で全加算器が作られるのか、その理由が少し推測をしましたが、やはりはっきりとわかりません。 あと、何bitやら何bitやらの並列全加算器についてもよくわかりません。これは本間にレジュメを読みながらしないと、なかなか回路が作れません。 Q2.bitって何ですか?加算器の個数を示しているのか、それとも出力とか入力とかの個数を示していますか。 それから、減算器も全然原理がわかりません。 Q3.結果が1の補数か2の補数かはどのように決められていますか? 文がちょっと長くて失礼ですが教えていただければ感謝いたします!

  • 論理演算の問題です

    論理演算の問題です if( !( a > 0 && b == 0) ) は、 if( a <= 0 || b != 0 ) になりますか? また、 if( !( x > 0 || y < 0 ) は、 if( x <= 0 && y >= 0 ) になりますか? 遅い脳みそで考えました。 このような、論理演算を分かりやすくまとめられたサイトをご存知でしたら、 どなたか教えてください。 お願いします。

  • 真理値表→論理式

    3桁の2進数X = (x2, x1, x0)を入力し、2倍して1を足し出力する 論理回路があります。 ここで出力をY= (y3, y2, y1, y0)とし、x2,y3を最上位ビット x0, y0を最下位ビットとします。 これは、真理値表は x2 x1 x0  y3 y2 y1 y0 0  0  0   0  0  0  0 0  0  1   0  0  1  1 0  1  0   0  1  0  1 0  1  1   0  1  1  1 1  0  0   1  0  0  1 1  0  1   1  0  1  1 1  1  0   1  1  0  1 1  1  1   1  1  1  1 となると思うんです。ここから、論理式の作り方を教えていただけないでしょうか? 出来れば、最簡形であるとうれしいです。 よろしくお願いします。

  • 間違っているのはどこ?

    a,b,cを正の定数とし、x,yが axy-bx-cy=0,x>0,y>0 を満たしているとき、x+yの最小値を求めよ。 x+y=kとおくと、y=k-xより、x>0,y>0だから 0<x<k。 y=k-xをaxy-bx-cy=0に代入して、ax^2-(ak-b+c)x+ck=0 これが、0<x<kに少なくとも1つの解を持てばよい。 y=ax^2-(ak-b+c)x+ckとおく。x=0のとき、y=ck>0,x=kのとき、y=bk>0 また、判別式=>0となる(計算すると分かる)。よって、0<x<kに解をもつから、 軸の条件から、0<(ak-b+c)/2a<kを解いて、kの範囲が分かり、最小値が分かると 思ったのですが、(b-c)/a<k, (c-b)/a<kが出てきましたが、答えには程遠いように 思います。間違いを教えてください。よろしくお願いします。