論理回路を作成して結果を確認するためのアプリケーションを作成する必要があります。これは主にAレベル(英国、一般的に16〜18歳)のコンピューティングコースで使用するためのものです。
私はこのようなアプリケーションを作成したことがないので、回路を保存して結果を評価するための最適な設計がわかりません(1.6Ghzシングルコアコンピューターで100Hzなどの再利用可能な速度で)。
基本的なゲート(and、or、nandなど)から回路を構築するのではなく、これらのゲートを使用して「チップ」を作成し、他の回路内で使用できるようにします(たとえば、8ビットを作成する場合があります)。レジスタチップ、または16ビット加算器)。
問題は、このような回路ではゲートの数が大幅に増えるため、個々のゲートでシミュレーションを実行すると、シミュレーションするゲートが数千になるため、回路に配置できるこれらのコンポーネントを単純化して、次のことができるようにする必要があります。すばやくシミュレートできます。
コンポーネントごとに真理値表を生成することを考えました。シミュレーションでは、ルックアップテーブルを使用して、特定の入力の出力を見つけることができます。そのようなテーブルのサイズが入力とともに大幅に増加するという問題が私に起こりました。チップに32の入力がある場合、真理値表には2^32行が必要です。これは、多くの場合、使用するよりも大量のメモリを使用するため、重要なコンポーネントには実用的ではありません。また、単純なものとして表すことができないため、状態を格納できるチップ(レジスタなど)でも機能しません。入力と出力の表。
レジスターチップのようなものをハードコーディングすることもできますが、これは教育目的であるため、ユーザーが独自のコンポーネントを作成したり、標準の実装を表示および編集したりできるようにしたいと考えています。このようなコンポーネントをコード(dllやスクリプト言語など)を使用して作成および編集できるようにすることを検討しました。これにより、たとえば加算器を「output = inputA + inputB」として表すことができますが、学生が十分なプログラミングを行っていることを前提としています。そのようなプラグインを理解して記述し、回路の結果を模倣できるようにするための言語が与えられていますが、そうではない可能性があります...
シミュレーションでコンポーネントの出力をすばやく決定できるように、ブール論理回路を自動的に単純化する他の方法はありますか?
コンポーネントの格納に関しては、入力にリンクするすべてのコンポーネントが評価された後に各コンポーネントが評価されるように、ある種のツリー構造を格納することを考えていました。
例:AB + Cシミュレータは、最初にANDゲートを評価し、次にANDゲートとCの出力を使用してORゲートを評価します。
しかし、出力が入力に戻ってリンクしている場合、入力がすべて評価されることはないため、デッドロックが発生することに気づきました...プログラムは1つのゲートで1つのゲートしか評価できないため、これを克服するにはどうすればよいですか?時間?