1

Verilog データフロー プログラミングについて読んでいます。

データ フロー モデルの遅延については学習しましたが、現在はそれについていくつかの誤解があります。データフローモデルには、拒否遅延モデルがあることがわかりました。つまり、 の場合assign #2 c= a | b、変更を拒否できます。

私の質問は、入力の変更が拒否されるのはいつですか? 期待値が変化するように変化
した場合はa、2 単位の遅延を再度開始する必要があります。bc

私の質問は、いつaまたはb変更しても遅延を再開する必要cがありますか?

たとえば、a | b「a」が 0 で「b」が 1 の場合、「a」を 1 に変更することがあります。出力に 1 が表示されるように、前の時間を拒否して 2 単位の遅延を再度開始する必要はありますか? (c当社の運用は であるため、予想は変わりませんのでご注意ください|)。

4

1 に答える 1

2

シミュレーターは最初に式の LHS (左側) を評価し、次に RHS (右側) の変数に変更を適用します。拒否 (またはフィルタリング) は、LHS 式の結果によって決定されます。

これを視覚化するには、 の間に中間ステップを追加しa | bます。

assign ab = a | b;
assign #2 c = ab;

シミュレーションを実行して波形を生成します。出力例:

     0    5   10   15   20   25
     |    |    |    |    |    |
         _            _        __
a    ___/ \__________/ \______/
                  __        _____
b    _______/\___/  \______/
         _        __  _     _____
ab   ___/ \_/\___/  \/ \___/
           _        _____     ___
c    xx___/ \______/     \___/

c時間 0 より前のデータがないため、 の最初の 2 つのタイム ステップは不明です。時間 7 と 15 で始まるabパルスは、2 タイム ステップよりも小さいため、フィルター処理されます。abの他のすべての遷移cは、時間で 2 だけシフトしabます。

a中間ステップ ( ab) には遷移がないため、時間 25 でハイになるときの拒否時間はありません。シミュレーターは独自の中間ステップをa | b実行し、 で実行するアクションを決定する前にの変更を評価しcます。

于 2013-01-10T19:06:49.023 に答える