インテルのみ表示可能 — GUID: ewa1462825764778
Ixiasoft
1.4.2.1. スカラー・パラメーターおよび Avalon Streaming インターフェイス
スカラー引数入力に加えて、コンポーネントは、Avalon-ST インターフェイス仕様に準拠する明示的な入力ストリームおよび出力ストリームを有することができます。各ストリームは、コンポーネント内部に 1 つのリードまたはライトのみを有する場合があります。これらの入力ストリームおよび出力ストリームは、提供されたihc::stream_in<> とihc::stream_out<> テンプレート・クラスをコンポーネントへの関数引数として使用することで、C ソースで表されます。これらのクラスをコンポーネント・シグネチャーの参照パラメーターとして定義する必要があります。これらのクラスは他のクラスの基本クラスとして使用したり、構造体や配列などのその他の形式でカプセル化したりすることはできません。ただし、他のクラス内部の参照として使用することができ、つまり、データメンバーとしてストリームへの参照を持つクラスが構築できるということを意味しています。
ストリーミング・インターフェイスについて詳しくは、Avalon Interface Specificationsを参照してください。
テンプレート引数 | 値 | デフォルト | 説明 |
---|---|---|---|
ihc::type | 任意の有効な C++ 型 | N/A | ストリームにより実行されるデータ型。 |
ihc::buffer | 正の整数値 | 0 | ストリームに関連するデータ上のワード単位での FIFO バッファーの容量。 このパラメーターは入力ストリームでのみ有効です。 |
ihc::readyLatency | 正の整数値 値の範囲は 0 ~ 8 |
0 | ready 信号がディアサートされてから、ストリームシンクが新しい入力を受け入れられなるまでの間のサイクル数。概念的には、このパラメーターはストリームに関連するデータの入力 FIFO バッファーでの almost ready レイテンシーとして確認できます。 |
ihc::bitsPerSymbol | 正の整数値 値はデータ型サイズにより均等に分割される必要があります。 |
データ型のサイズ | データがどのようにデータバスのシンボル内で分割されるかを記述します。データは常にリトル・エンディアンの順序で分割されます。 |
ihc::usesPackets | trueまたはfalse | false | ストリーム・インターフェイスのstartofpacketとendofpacketのサイドバンド信号を抽出します。信号はパケットベースのリード / ライトによりアクセス可能です。 |
ihc::usesReady | trueまたはfalse | true | stream_out<> インターフェイスでのみサポートされます。 ready 信号が存在するかどうかを制御します。true の場合、ダウンストリーム・シンクは valid がアサートされるサイクルごとにデータを受け入れます。 これは、ストリーム書き込みコールをtryWriteに変更し、successが常にtrueであることと同じことです。 falseに設定すると、readyLatencyは0になります。 |
ihc::usesValid | trueまたはfalse | true | stream_in<>インターフェイスでのみサポートされます。 valid 信号がストリーム・インターフェイスに存在しているかどうかを制御します。false の場合、アップストリーム・ソースは ready 信号がアサートされるサイクルごとに有効データを提供します。 これは、ストリーム書き込みコールをtryReadに変更し、success が常に true であることと同じことです。 falseに設定すると、bufferとreadyLatencyは0になります。 |
API | ブロックキング | サイドバンド信号 | コンポーネントのstream_inによる使用 | コンポーネントのstream_outによる使用 | 説明 |
---|---|---|---|---|---|
T read() | 可能 | 不可能 | 可能 | 不可能 | この関数は、ストリームから次の使用可能なデータ項目を読み込みます。コンポーネント内に使用可能なデータがない場合、関数は有効なデータが存在するまでデータパスをストールします。 |
T read(bool& sop, bool& eop) | 可能 | 可能 | 可能 | 不可能 | この関数はusesPacketsがtrueに設定されている場合のみ使用可能です。 この関数は、ストリームから次の使用可能なデータ項目を読み込みます。コンポーネント内に使用可能なデータがない場合、関数は有効なデータが存在するまでデータパスをストールします。 |
T tryRead(bool& success) | 不可能 | 不可能 | 可能 | 不可能 | この関数は、使用可能な場合にストリームから次の使用可能なデータ項目を読み込みます。この関数コールはストールを引き起こしません。bool引数はデータが有効かどうかを表示します。 |
T tryRead(bool& success, bool& sop, bool& eop) | 不可能 | 可能 | 可能 | 不可能 | この関数は、usesPacketsがtrueに設定されている場合のみ使用可能です。 この関数は、次のデータが使用可能な場合にストリームからそのデータを読み込みます。この関数コールはストールを引き起こしません。bool引数はデータが有効かどうかを表示します。 |
void write(T arg) | 可能 | 不可能 | 不可能 | 可能 | この関数はデータをストリームに書き込みます。ストリームが新しいデータを受け入れられない場合 ( 例えば、ストリームの他のエンドからのストールのため )、この関数はストリームにデータを書き込めるまでデータパスをストールします。 |
void write(T data, bool sop, bool eop) | 可能 | 可能 | 不可能 | 可能 | この関数は、usesPacketsがtrueに設定されている場合のみ使用可能です。 この関数はデータをストリームに書き込みます。ストリームが新しいデータを受け入れられない場合、この関数はストリームにデータを書き込めるまでデータパスをストールします。 |
bool tryWrite(T data) | 不可能 | 不可能 | 不可能 | 可能 | この関数は、新しいデータを受け入れられる場合、ストリームにデータを書き込みます。この関数コールはストールを引き起こしません。bool戻り値はライト命令が実行されたかどうかを表示します。 |
bool tryWrite(T data, bool sop, bool eop) | 不可能 | 可能 | 不可能 | 可能 | この関数は、usesPacketsがtrueに設定されている場合のみ使用可能です。 この関数は、新しいデータを受け入れられる場合にストリームにデータを書き込みます。この関数コールはストールを引き起こしません。bool戻り値はライト命令が実行されたかどうかを表示します。 |