• ベストアンサー

加算器のシミュレーション

4ビット加算器を設計し真理値表通りに動作することを確認しなさいという課題と、 4ビット加算器を4つ使って16ビット加算器を設計し、真理値表通りに動作することを確認しなさいという課題が出ました。 どちらも設計まではできたのですがどのような波形をInputすれば動作確認ができるのかわかりません。 全通りの波形を試すと量が多いので数パターンを試せばよいとのことでした。 ソフトはALTERAのMax+Plus2を使っています。 わかり難い文章ですみません。ぜんぜんわからなくて困っています。ご回答お願いします。

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

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

4ビット加算器 桁上げのあるなし、全ビットで0と1の全ての組み合わせをやるといいでしょう。 4パターンくらいでしょうか。 0000+0000 1111+1111・・・桁上げテスト 0101+1010 1010+0101 桁上げの境界として 1111+0001 0001+1111 を追加すると更にいいでしょう。 16ビットの場合は桁上げを中心にテストすればいいでしょう。

koara1994
質問者

お礼

ありがとうございました! 非常に参考になりました

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

関連するQ&A

  • 論理回路の問題における表現の仕方について

    4bitの全加算器を設計し論理回路図と真理表を示せ。 という問題なのですが,wikiでは http://ja.wikipedia.org/wiki/%E5%8A%A0%E7%AE%97%E5%99%A8 1bitの加算器が省略化されて、省略された図を四つつなげて表現しています。 テストで出題されたときに省略系を用いて答えてもいいのでしょうか? 1bit全加算器回路図、省略図を四つつなげた4bit全加算器回路図、真理値表の三点で答えとなりますか? また同じくキャリアルックアヘッド回路を用いて8bit整数の2入力・1出力の全加算器を設計し、論理回路図を示せ。 という問題なのですが wikiではキャリアルックアヘッド回路の省略形と1bit全加算器の省略形を用いて表現しているのですがこれも同様にテストでこのような表現で答えるのはどうなのでしょうか? 初歩的な質問ですいません。ご回答宜しくお願い致します。

  • Verilog-HDLによる8255の制御。

    開発環境としては、 ・QuartusII(Altera)で回路設計 ・FPGAデバックボード(メディアリンクス)にやいて動作確認 という感じで設計をしています。 今回質問したいことは、タイトルのようにverilogで8255を制御する方法についてです。 8255のPORTBがLEDに接続されており、そのLEDをトグルスイッチで制御したいのですが、コントロールワードなどの設定の仕方がいまいちわかりません。 verilogでコントロールワードを設定する際はどうしたら良いのでしょう?

  • 論理回路 / デコーダー / ALU

    2系統の入力A0、A1と4系統の出力B0~B3を持つ、2ビットのデコーダーを用いて 3系統のデータ入力D0,D1,carry-inと、2系統のデータ出力E,carry-outを持った、1ビットのALU回路を構成したい。 ALU回路の命令はA0とA1の2系統の入力があり、上記で設計したデコーダーを用いて、以下の表1通りに、入力と出力の間の関係を制御したい。このような1ビットALU回路を設計せよ。 表1 A0|A1|E|carry-out 0|0|3ビットの入力(D0,D1,carry-in)からなる全加算器の和ビット|3ビットの入力(D0,D1,carry-in)からなる全加算器の繰り上がりビット 0|1|D0 AND D1|0 1|0|DO OR D1|0 1|1|if(DO==D1) 1else 0|0 という問題です。 表がみにくくて申し訳ありません。 デコーダをマルチプレクサにして、4パターンつくって、それぞれの動作をするようにつなぎあわせればいいのだと思うのですがつなぎ合わせ方がわかりません。 ご教示お願い致します。できればビジュアルがあるとありがたいです。

  • トランジスタの増幅回路について

    Arduinoを用いて多数のLEDを駆動する為に、トランジスタを用いた増幅回路を作成しています。しかし、単に電流を増幅するのではなく、添付画像1の様に強度の異なる階段パルス波で増幅したいと考えています。 実際に回路を作成し、オシロスコープで波形を確認したところ、増幅前の段階では設計通りの波形が出ていました。念の為、測定箇所を示す画像2も添付します。 しかし、増幅後の波形を確認すると増幅前の波形の跡形も見えませんでした。(画像3) なぜこの様な動作をするのか、わかりません。 ご教授頂けると幸いです。よろしくお願いします。

  • クラスを使った電卓のプログラム

    3つのソースが一つになって動く電卓のプログラムみたいですが・・・ 倍精度浮動小数点数で計算結果を表示します また、画像は動作させるときの条件です。 動いてはくれるんですけど、 足し算になった時に3.0+3.0=0.0となってしまいます。 課題1 次のソースコード1-1 と1-2 は、電卓のプログラムCalculator クラスと標準入力用のクラスである。この計算機クラスを動作させるには、Adder(加算器)、Subtracter(減算器)、Multiplier(乗算器)、Divider(除算器)、Factrial(階乗)の5 つのクラスが必要である。これら5 つのクラスのソースコードを示せ。また、過去の課題や講義資料を参考に処理の流れが分かるようコメントを追加せよ。 1-1のCalculatorクラスと標準入力(StandardInputクラス)を書きます。 これから作ろうとしているAdderクラスは元々穴埋めになっていて (他のクラスも同様) 一通り埋めてみましたが、正しい結果が出ません。どこがおかしいのか ヒントだけでもいいので教えてください。 Adderクラスは一番下に書いておきました。 1-1Calculator.java // 電卓 のクラス public class Calculator { // StandardInput.javaで読み込んだ文字を受け取るメソッド public static void main(String[] args){ char operation = ' '; // 入力された文字列を代入する為の変数 while (operation != 'q') { StandardInput stdin = new StandardInput(); System.out.println("演算の種類: (+,-,*,/,!; q で終了)"); operation = stdin.getChar(); // 入力された文字列に応じてそれぞれの処理を実行する switch (operation) { case '+': // 加算 の処理 Adder add = new Adder(); add.show(stdin.getDoubleArray(2)); break; case '-': // 減算 の処理 Subtracter sub = new Subtracter(); sub.show(stdin.getDoubleArray(2)); break; default: // 例外 の処理 System.out.println("演算の種類を判別できません"); break; } } } } ソースコード1-2 StandardInput.java /* 標準入力クラス */ import java.io.*; public class StandardInput { protected BufferedReader buf; public StandardInput() { this.buf = new BufferedReader(new InputStreamReader(System.in)); } public StandardInput(BufferedReader buf) { this.buf = buf; } public char getChar() { try { System.out.print("1 文字入力してください:"); return buf.readLine().charAt(0); } catch (Exception e) { System.out.print(e); return ' '; } } public double getDouble() { try { System.out.print("数を入力してください:"); return Double.parseDouble(buf.readLine()); } catch (Exception e) { System.out.print(e); return -1; } } public int getInt() { try { System.out.print("整数を入力してください:"); return Integer.parseInt(buf.readLine()); } catch (Exception e) { System.out.print(e); return -1; } } public double[] getDoubleArray(int max_input) { double[] input = new double[max_input]; try { for (int i = 0; i < max_input; i++) { System.out.print((i + 1) + "つ目の数字を入力してください:"); input[i] = Double.parseDouble(buf.readLine()); } } catch (Exception e) { System.out.print(e); } return input; } public int[] getIntArray(int max_input) { int[] input = new int[max_input]; try { for (int i = 0; i < max_input; i++) { System.out.print((i + 1) + "つ目の数字を入力してください:"); input[i] = Integer.parseInt(buf.readLine()); } } catch (Exception e) { System.out.print(e); } return input; } } // 加算機のクラス public class Adder { // ??? を行うメソッド public double calc(double[] input) { double solution = 0; for ( int i = 0; solution < i; i++ ) { solution += input[i]; } return solution; } // 計算結果の表示を行うメソッド public void show(double[] input) { System.out.print(input[0]); for (int i = 1; i < input.length; i++) { System.out.print(" + " + input[i]); } System.out.println(" = " + calc(input)); } } ごめんなさい・・・凄く長いですがお願いします。

    • ベストアンサー
    • Java
  • 論理回路問題

    デジタル値で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 どなたか上記の問いについてアドバイス頂けないでしょうか? 宜しければお願いします

  • 順番は?(確認申請、工事請負契約、見積り調整)

    候補建設会社と契約直前です。 アドバイスいただけませんでしょうか。 建設会社は (1)概算見積り&プラン←今ここ (2)設計契約(10万円) (3)工事請負契約(この時点で設備断熱などは確定させる) (4)実施設計&確認申請 (5)窓の位置やニッチなどの細かい部分詳細見積り (6)着工 だと言われました。 ノウハウ本には 【パターンA】 (1)概算見積り&プラン (2)詳細見積り (3)実施設計&確認申請 (4)工事請負契約 (5)着工 だったり 【パターンB】 (1)概算見積り&プラン (2)工事請負契約 (3)実施設計 (4)詳細見積り (5)確認申請 (6)着工 だったりします。 ノウハウ本を見ると、建設会社が言っている(5)は、確認申請もしくは工事請負契約の前に確定していますよね? これを確定しないまま、確認申請後または工事請負契約後に臨むというのは危険ですよね? ニッチ増やしたら、プラス10万!とか・・どんどん増えてしまいますよね・・? 地元密着型で、評判はかなり良い建設会社ですし、設計士さん=社長さんの人柄も良いのですが 契約までの流れがこんなに違っていても、よくあることなのでしょうか? 設計士さんは、(5)に時間をしっかりかけて話しましょうとおっしゃっていました。 契約上で、着工に遅延が生じた場合、賠償金の支払いなどがありますが もし(3)の段階で契約日を設定したら、しっかり時間をかけて話し合うなんて無理ですよね?

  • フリーのverilog-HDLシミュレータ

    Windows上で動作するフリーのverilog-HDLシミュレータを探しています。 Siliosが少し前までフリーでダウンロードできたそうなのですが、今はダウンロードが禁止されています。。 例えば、このような回路を波形を見ながら解析したいと考えています。 //○シミュレーション対象:4ビット加算回路 module adder ( a, b, q ); input [3:0] a,b; output [3:0] q; assign q = a + b; endmodule //○シュミレーション記述 `timescale 1us/1us module adder_test; reg [3:0] a,b; wire [3:0] q; parameter STEP=1000 adder adder ( a, b, q ); initial begin a = 4'h0; b = 4'h0; #STEP a = 4'h5; b = 4'ha; #STEP a = 4'h7; b = 4'ha; #SEEP $finish; end endmodule

  • FreeBSDのPHPでファイルのアップロードができない

    FreeBSD 5.3R:Apache/2.0.52:PHP Version 4.3.4にてPHPでファイルのアップローダを作成しているのですが、うまく動作しません。(/tmpにテンポラリファイルが作成されないようです。)設定は・・・ memory_limit = 40MB post_max_size = 36MB upload_max_filesize = 32MB upload_tmp_dir = /tmp max_execution_time = 260 max_input_time = 300 となっているのですが、phpinfo()で確認すると、何故かmemory_limitの表示がConfiguration PHP Coreにありません。 これに起因するものではないかと思っているのですが、FreeBSDでPHPを使ってらっしゃる方でこのあたりに詳しい方、是非ご教授ください。

    • 締切済み
    • PHP
  • プリント基板の異常動作の推測要因を教えてください。

    自分が設計したプリント基板の動作を確認しているのですが、パターン配線がらみでおかしな挙動がみられます。 基板を組み立て、通電し、数日間は正常に動いていたのですが、ある日突然異常動作がみられはじめました。 そこで、異常動作の原因をさぐろうと疑わしいICのリードをオシロであたっていきましたが、CPUのアドレスバスのピンのひとつにプローブをあてると、異常動作が正常に戻り、プローブを当てるのをやめると異常動作が復活するのが確認されました。 あきらかにこのリードにプローブを当てる、当てないで異常動作が収束、再現となります。 このような事象の場合、どういった原因が考えられますでしょうか? 具体的な回路構成がないと分からないことかもしれませんが、この条件で考えられる不具合要素を教えてもらえますでしょうか? 基板の不良 ・パターン配線のクロストーク ・??? 疑わしいアドレスバスにつながっている部品の異常 ・メモリがラッチアップしている ・C-MOSの異常(?) のような感じに考えられる要素を挙げてもらえますでしょうか? それをもとに、FT図を作成し、どこを疑っていくか検討してみたい次第です。 なお現在の事象としては ・異常動作は突然発生し、きっかけが不明(湿度?瞬停?) ・停電にすると直ることもある。 ・疑わしいアドレスバスはCMOS IC、SRAMがつながっている よろしくお願いします。