インテルのみ表示可能 — GUID: jic1640259520003
Ixiasoft
インテルのみ表示可能 — GUID: jic1640259520003
Ixiasoft
36.3. Video Frame Buffer IPの機能の説明
受信したフレームは、Avalonメモリーマップド・エージェントが最後の行の最後のビートを受け入れると出力に使用できるようになります。
OUTPUT_CONTROL ビットを設定すると、IPは出力フレームの生成を開始します。IPは、バッファー動作パラメーターに基づいて、出力するフレームを選択します。空きバッファーがない場合にIPが受信フレームをドロップしたり、読み出す新しいフレームがない場合に出力フレームを繰り返したりするように、バッファー動作を設定できます。
レジスターの動作
INPUT_STATUS レジスターのビット [0] は、IPが最初のフレームの書き込みを開始するとHighになります。IPが最後の予想される入力行の処理を完了した後、もしくは短いフレームの最後の行を受信した後にLowになります。IPが次のフレームの書き込みを開始すると、Highに戻ります。
OUTPUT_STATUS レジスターのビット [0] は、IPが最初のフレームの読み出しを開始するとHighになります。出力フレーム間ではLowになり、出力する有効なフレームがない場合はLowのままになります。
IPがフレームを受信または作成したタイミングを知る必要があるアプリケーションは、これらのステータスレジスターをポーリングできます。
トリプルバッファリングの動作
GUIでEnable dropping of input framesとEnable repeating of output framesの両方をオンにして、トリプルバッファリングを選択します。
トリプルバッファリングの場合、フレームバッファーは3つのフレームバッファーを使用し、ベースアドレスは選択したベースアドレスとバッファー間ストライドから計算されます。ストライドはメモリー内のフレーム間の間隔であり、IPが受信するフレームのサイズに関係なく、常にパラメーター化された値に固定されます。同様に、IPが受信する行のサイズに関係なく、メモリー内の行の間隔は常に行間ストライドに従って配置されます。IPには、トリプル バッファリング用の3つのバッファーがあります。
壊れたフレームの動作
フルバリアント (ライトモードがオフ) の場合、IPは、正常なフレームと同じ方法で壊れたフレーム (寸法が正しくないフレーム、または関連する画像情報パケットセットに壊れたビットがあるフレーム) を処理および作成します。または、Enable the dropping of broken framesをオンにすると、壊れたフレームが破棄されます。
フルバリアントの場合 (ライトモードがオフ)、IPは受信したフレームの寸法を予想される寸法と比較することで壊れたフレームを検出します。IPが壊れたビットが設定されていない壊れたフレームを受信して測定した場合、IPは出力で壊れたビットを生成すると、そのフレームの壊れたビットを設定します。
フルバリアント (ライトモードがオフ) の場合、フレームが壊れると、IPが指定された画像情報パケットよりも小さいまたは大きいサイズのフレームを作成し、部分的なフレームが表示される可能性があります。
IPは、GUIで指定した最大値より大きい高さまたは幅のフレームをその値にクリップします。
ダブルバッファリングの動作
GUIでEnable dropping of input framesとEnable repeating of output framesの両方をオフにして、ダブルバッファリングを選択します。
ダブルバッファリングでは、2つのフレームバッファーのみが使用されます。ベースアドレスは、指定したベースアドレスとバッファー間ストライドから計算されます。
空きバッファーがなく、入力でビデオの新しいフレームがペンディング中の場合、フレームの書き込みは停止します。IPは、空きバッファーが使用可能になるまで、TREADY 出力をデアサートして入力を保留します。
IPが1つのバッファーからの出力の作成を終了し、もう1つのバッファーに完全な新しいフレームが保持されていない場合、IPは TVALID を下げて出力を停止します。
補助制御パケットのサポート
GUIでローカルストレージを選択して、補助パケットをオンにします。ローカルストレージのスロットには、最大256個の4ビート補助制御パケット (64ビットのデータ) を割り当てることができます。
ローカルストレージを割り当てない場合、IPは受信した補助制御パケットをすべて破棄します。
ローカルストレージを割り当てると、受信したすべてのフレームは64ビット・ストレージのスロットの少なくとも1つを消費します。フレームに関連付けられた補助制御パケットがない場合、IPはスロットを空としてマークします。
IPは、Intel FPGA Streaming Video Protocol仕様の次のルールに従って、IPが受信する補助制御パケットを親フレームが所有するものとして分類します。これらのルールは、ここで再現されています。
画像情報とフィールド終了制御パケットのペアが、ビデオの1フィールドを囲みます。IPは、現在のフィールドのフィールド終了制御パケットの前にある補助制御パケットをそのフィールドに関連付けます。さらにIPは、前のフィールドのフィールド終了制御パケットの後に発生する補助制御パケットを現在のフィールドに関連付けます。
この図は、aux1とaux2がフィールド1に、aux3がフィールド2にそれぞれ関連付けられていることを示しています。
IDrop/repeat auxiliary metapackets with their associated frameをオンにすると、IPはフレームを補助制御パケットに関連付けます。フレーム繰り返しがオンの場合、IPは補助パケットを親フレームとともに繰り返します。フレームドロップがオンの場合、IPはドロップされたフレームに関連付けられた補助パケットをすべてドロップします。
Drop/repeat auxiliary control metapackets with their associated frameをオフにすると、IPは親フレームをドロップするか繰り返すかに関係なく、受信した順序ですべての補助パケットを1回生成します。
ローカルストレージがフルになると、IPは OUTPUT_STATUS レジスター (ビット1) の補助FIFOオーバーフロー・スティッキー・ビットを上げて内容をフラッシュし、バッファリングを再開します。アプリケーションに十分なストレージがあることを確認してください。
フレーム統計
0x0144~0x0158 までのレジスターには、IPが受信、ドロップ、生成、および繰り返すフレームの数に関する統計が含まれています。NUM_INVALID_FIELDS レジスターには、IPが壊れたビットによって無効であると示すフレームと、サイズが予想されるサイズと一致しないためにIPが無効であると測定するフレームが含まれます。
レイテンシー
フレームバッファーのレイテンシーは外部メモリー・インターフェイスの可用性に依存し、av_mm_mem_read_host_waitrequest 信号と av_mm_mem_write_host_waitrequest 信号を介してIPの読み出しおよび書き込みホスト・インターフェイスにバックプレッシャーがかかる可能性があります。
ストリーミング・ビデオ出力は、axi4s_vid_out_tready 入力を介してバックプレッシャーを受けます。ワーストケースのレイテンシー数値は、フレームバッファーがバックプレッシャーを受けていない場合です。バックプレッシャーが発生すると、これらのレイテンシーは同じサイクル数だけ増加します。
ワーストケースのレイテンシーは起動時です。そのため、これらの数値は、フレームバッファーがリセット後に最初のフレームを書き込み、読み出す場所を示しています。レイテンシーの数値は、ホスト・インターフェイスに個別のクロックがなく、すべてのインターフェイスが同じクロックで動作している場合のものです。定常ステートでのレイテンシーは、これらの数値以下になります。
レイテンシーの数値は、新しいフレームの最初のデータパケットの開始から測定された、IPのフルバリアントとライトバリアントの両方で同じです。数値は、IPが画像情報パケットを生成していることを示しています。IPのライトバリアントでは、このパケットは生成されませんが、タイミングはそれ以外は同じです。
開始イベント | 結果イベント | イベント間の遅延 (クロックサイクルで測定) |
フレームの開始を示す axi4s_vid_in_tuser[0] ストローブ | フレーム書き込みの最初の av_mm_mem_write_host_write ストローブ | 44 |
フレーム書き込みの最後の av_mm_mem_write_host_write ストローブ | ストリーミング出力上の送信画像情報パケットの最初の有効なサイクル。フルバリアントのみ | 43 |
フレーム書き込みの最後の av_mm_mem_write_host_write ストローブ | フレーム読み出しの最初の av_mm_mem_read_host_read ストローブ | 74 |
Av_mm_mem_read_host_readdatavalid ストローブがHighになると、最初のフレームデータが返されます。 | axi4s_vid_out_tuser[0] ストローブは、ストリーミング出力のフレームの開始を示します。 | 20 |