3

論理回路の真理値表を計算する小さなプログラムを作成しました。私が選択した表現では(無知のため、このテーマについての教育はありません)、CircuitクラスとConnectorクラスを使用して、「回路」(NOT、ORなどの基本ゲートを含む)と配線を表現します。 。

Factoryクラスは、次のようなステートメントで「ピンとワイヤをはんだ付け」するために使用されます

factory.addCircuit("OR0", CircuitFactory.OR);
factory.addConnector("N0OUT", "NOT0", 0, "AND1", 1);

回路が完成したら

factory.createTruthTable();

回路の真理値表を計算します。OR NOTおよびANDの真理値表を入力すると、コードはXOR、1/2 ADDER、ADDER、および4ビットADDERの作成を連鎖させ、各ステップで前のステップの真理値表を再利用します。

それはすべて午後の仕事にとって非常に素晴らしくてダンディですが、それは明らかにループ(例として、フリップフロップ)で壊れます。ループで論理回路を表現する便利な方法を知っている人はいますか?理想的なのは、テーブル、おそらく以前の状態、新しい状態、および遅延を含むテーブルで表すことができる場合です。

そのような表現を説明する文学を私に指摘することも良いでしょう。1時間のインターネット検索では、博士号の論文しか得られませんでした。私の理解を少し超えました。

どうもありがとう!

4

1 に答える 1

3

すべてのループには、「状態」を持つノードが少なくとも1つ含まれている必要があり、そのフリップフロップ(またはレジスタ)が基本的な構成要素です。効果的なアプローチは、すべてのステートフルノードを2つのノードに分割することです。1つはデータソースとして機能し、もう1つはデータシンクとして機能します。したがって、ループはありません。*

シミュレートするには、すべてのクロックサイクルで、**データ値をフィードフォワード方式でソースからシンクに伝播します。次に、ステートフルソースを(対応するシンクから)更新して、次のサイクルの準備をします。


*この時点でまだループがある場合は、無効な回路グラフがあります。

**同期ロジックをシミュレートすることを想定しています。つまり、クロックがあり、クロックエッジでの更新のみを示します。非同期ロジックをシミュレートする場合は、伝播遅延などのモデリングを開始する必要があるため、状況はさらに複雑になります。

于 2013-01-02T18:50:24.370 に答える