ベストアンサー
構造データフローモデリングでは、デジタル設計関数はインバーターなどのコンポーネントを使用して定義されます。 、MUX、加算器、デコーダー、基本的なデジタル論理ゲートなど。これは、探している機能を実装するために利用できる回路のさまざまな部分を接続して配置するようなものです。
構造を使用した半加算器の実装データフローモデリング:入力A、B;出力合計、キャリー; xor(.in1(A)、. in2(B)、. out(sum));および(.in1(A)、. in2(B)、. out(carry));
動作データフローモデリングは、デジタル回路の動作を記述するために使用されます。 Designerは、アルゴリズムのようなコードを記述して、設計の機能を記述します。 &(and)、|(or)、〜(invert)、^(xor)、?(conditional)などのさまざまなブール式を使用してデータの流れを説明するために使用されます…このタイプのモデリングの2つのサブカテゴリスキームは、連続データフローと手続き型データフローです。
1。連続データフローこのタイプのデータフローモデリングでは、出力へのデータの割り当ては連続的です。これは、例に示すように、Verilogで「 assign 」ステートメントを使用して実装されます。
input A、B;出力合計、キャリー; ワイヤー合計、キャリー;合計を割り当てる= A ^ B;キャリーの割り当て= A&B;
これは継続的な割り当てであり、制御アクション、つまり感度リストがないため、入力を変更するとすぐに出力に影響します。ここで、出力変数は、RHSで定義されたデジタルロジックによって継続的に駆動されるため、「ワイヤ」タイプとして定義する必要があります。
2。手続き型データフローここでは、データ割り当ては継続的に実行されるのではなく、機密リストで指定された特定のイベントで発生します。このタイプのモデリングスキームは、「常に」や「初期」などの手続き型ブロックを使用して実装されます。 “例に示すように。
入力A、B;出力合計、キャリー; reg 合計、キャリー;常に@(A)開始合計 A + B;キャリー A&B; end
すべての式のRHSは継続的に計算されますが、LHSへの割り当ては、入力Aが変更された場合にのみ発生し、Bは発生しません。この場合、出力変数は「 reg “タイプは、指定された感度リストが変更された後、新しい割り当てが発生するまで以前の値を保持し続けるためです。
願わくば、これで疑問が解消されます。
回答
データフローと行動は相互に排他的ではありません。また、データフローと機能、またはデータフローと構造もありません。古典的に見られる「データフロー」は、データ項目(変数)の値の変更がそれに依存する他のすべてのデータの再計算を自動的にトリガーするアーキテクチャを表します。
多くの誤った(IMHO)は、アーキテクチャを分類します。データのフローは、制御フロー管理ではなく「データフロー」として管理されます。しかし、この用語は、別の定義となるのに十分な規則性を持ってこのように使用されます。
「動作」設計を見ると、モジュールが高レベルの抽象化でモデル化される設計アプローチとして分類できます。設計者はモジュールの望ましい動作を定義し、合成ツールはその動作をRTLまたは構造モデルのいずれかに分解します。動作モデリングでは、関数はアルゴリズムで定義され、タイミングとノードの読み込みはほとんど無視されます。明らかに、従来のデータフローに対応するように動作をモデル化できます。
「RTL」またはレジスタ転送ロジックモデリングはそれほど抽象的ではありません。これは、多くの実務家がデータフローが始まると言うところです。今日の合成ツールのほとんどは、動作コードをRTLに分解します。良い例は、ImpulseC、CynthesizerなどのC(またはC ++)からRTLツールです。
最も抽象的でないのは、「構造」モデリングです。デザインは、レジスターとワイヤーを接続するコンポーネントのインスタンス化としてほぼ独占的に述べられています。
泥のようにクリアですよね?