6

私は現在、夏のプロジェクトのために MyHDL を学んでいます。その中のyieldステートメントの機能を把握するのに問題があります。MyHDL が Python に基づいていることは事実ですが、yield ステートメントを特殊な方法で使用しています。同じリンクは次のとおりです。 http://www.myhdl.org/doc/current/manual/reference.html#myhdl.always

MyHDL ジェネレーターは、特殊な yield ステートメントを備えた標準の Python ジェネレーターです。ハードウェア記述言語では、同等のステートメントはセンシティビティ リストと呼ばれます。MyHDL ジェネレーターの yield ステートメントの一般的な形式は次のとおりです。 yield 節 [, 節 ...] ジェネレーターが yield ステートメントを実行すると、その時点で実行が中断されます。同時に、各句は、ジェネレーターを再開する条件を定義するトリガー オブジェクトです。ただし、yield ステートメントの呼び出しごとに、句の数に関係なく、ジェネレーターは 1 回だけ再開します。これは、発生する最初のトリガーで発生します。

私はそれを理解することができません。誰か簡単な言葉で説明してくれませんか? またはおそらく私を別のソースにリダイレクトしますか?

お役に立てれば幸いです。ありがとう!

よろしく

4

3 に答える 3

3

何よりもまず、MyHDL の実装は厳密に純粋な Python であることを覚えておいてください。その意味では、MyHDL と Python の yield ステートメントの間に「違い」はありません。

MyHDL は、実際には Python を HDL として使用する方法です。これは、myhdl と呼ばれる純粋な Python パッケージにいくつかのハードウェア設計固有のオブジェクトを実装することによって部分的に行われます。たとえば、ハードウェア シミュレーションに適した方法でジェネレーターを実行する myhdl.Simulation オブジェクトがあります。

もう 1 つの部分は、特定の Python 機能をハードウェア固有の方法で単純に解釈することです。たとえば、ハードウェア モジュールは、ジェネレーターを返す Python 関数としてモデル化されます。もう 1 つの例は、「yield」ステートメントが「wait」機能として解釈されることです。

于 2011-05-19T19:19:41.763 に答える
2

ジェネレーターを作成するには、yield ステートメントを使用します。次に、これらのジェネレーターは、MyHDL 内の Simulation(...) オブジェクトまたはコンバーター関数で使用できます。つまり、ジェネレーターは、ハードウェアの動作を記述するすべてのジェネレーターをシミュレーターに渡すことによって、MyHDL で使用されます。Simulation.run() 関数は「next()」を使用します。

MyHDL マニュアルの RTL モデリング セクション ( http://www.myhdl.org/doc/current/manual/modeling.html#example ) には、MyHDL ジェネレーターを作成してシミュレーションで使用する方法の良い例がいくつかあります。

于 2011-05-19T17:08:56.583 に答える