インテルのみ表示可能 — GUID: cij1619516656586
Ixiasoft
インテルのみ表示可能 — GUID: cij1619516656586
Ixiasoft
41.3. Warp IPのブロックの説明
ビデオ出力プロセスでは、ワープされた画像データを使用して、RGBまたはYUV形式のインテルFPGAストリーミング・ビデオを生成します。
IPは、トランスフォーム・メッシュに基づいて任意のワープを生成します。Use easy warpをオンにすると、変換メッシュなしで固定セットの変換 (回転とミラーリング) が提供されます。Use easy warpをオフにすると、IPはバッファリングされた入力ビデオをコンフィグレーションされた数のワープエンジンで処理して、必要なワープを適用します。3つの係数テーブルはワープエンジンを制御して、IPが適用するワープを定義します。外部メモリーには、Warp IPのソフトウェアAPI を使用して生成された3つの係数テーブルが格納されます。
IPは、出力ピクセル位置から入力ピクセル位置への後方マッピングを使用して、必要なワープを定義します。これは、8x8領域のマッピングを定義するサブサンプリングされたメッシュとしてワープを表します。8x8位置内の出力ピクセルマッピングの場合、ワープエンジンはバイリニア補間を適用します。
Use single memory bounceをオフにすると、IPは外部メモリーを介した2つのバウンスで動作します。IPは入力ビデオをバッファリングし、結果として生じるワープされた画像を外部メモリーの2つの出力ビデオバッファーの1つに書き戻します。IPは、これらのデュアル出力バッファーに交互に書き込みます。IPは、出力ビデオバッファー内のワープされた画像を読み出し、IPから出力します。
Use single memory bounceをオンにすると、IPは外部メモリーを介した1回のバウンス (入力ビデオのバッファリング) だけで動作します。IPは、結果として生じるワープされた画像を、外部メモリーを経由せずにビデオ出力プロセスに直接転送します。
この図では、Use single memory bounceがオフの場合の、外部メモリーへの接続を備えたWarp IPの高レベルのブロック図を示しています。このコンフィグレーションでは、エンジンは外部メモリーを介してビデオデータを読み書きします。

係数テーブル
Warp IP内の各エンジンは、IPが適用する画像変換を定義および制御する独自の3つの係数テーブルセットへの読み出しアクセス権を持ちます。3つの異なるテーブルは、次のとおりです。
- 出力から入力ピクセルへの変換を定義するメッシュ係数
- エンジン内のキャッシュメモリーへの入力画像の読み込みを制御するフェッチ係数
- IPが補間またはフィルタリングされた出力ピクセルを生成する際にキャッシュメモリーからのマッピングを制御するフィルター係数
メッシュ係数の形式は、ソフトウェアAPIに提供するメッシュデータとは異なります。ソフトウェアAPIは、メッシュ値に32ビットの符号付き整数を使用します。Warp IPでは、16ビットのオフセットバイナリー形式を使用します。
IPにはワープを定義するためのメッシュデータのみが必要です。ソフトウェアAPIは、このメッシュデータを使用して、必要な係数テーブルを生成します。
ワープメッシュ補間
IPは、8x8サブサンプリング・メッシュを使用してワープ変換を定義します。このメッシュは、出力ピクセル位置から対応する入力ピクセル位置へのマッピングを定義します。8x8サブサンプリング・メッシュでは、次の出力ピクセル位置のマッピングのみが定義されている必要があります。
(0,0), (8,0), (16,0) … (W, 0)
(0,8), (8,8), (16,8) … (W, 8) . (0,H), (8, H), (16, H) … (W, H)
ここでは、W=8*ceil (画像の幅/8)、H=8*ceil (画像の高さ/8)
これらの8x8位置の間にある出力ピクセル位置を生成するために、Warp IPはバイリニア補間を使用します。
出力ピクセルの補間とフィルタリング
IPは、IP が適用するワープによって定義された関連する入力ピクセル位置からのピクセルデータを使用して出力ピクセルを生成します。IPでは、関連する入力ピクセル値の4x4カーネルを使用して、双三次補間計算によって出力ピクセル値を生成します。
4x4カーネルの補間の重み付けは、バイキュービック関数と可変ローパス・フィルタリング関数の組み合わせです。ソフトウェアAPIは、ワープの特定の領域で生じるダウンスケーリングの量に基づいて、ローパス・フィルタリングを自動的に適用します。
ブランクスキップ領域
Warp IPをコンフィグレーションして画像の領域を大幅に縮小すると、出力画像の大部分が入力画像の外側のポイントにマッピングされる可能性があります。これらのマッピングされていない領域により、IPは黒を生成します。
効率を高めるために、IPはこれらの領域に関連付けられた処理をスキップします。これは、出力画像内のこれらの領域がWarp IPによる入力画像の処理を必要としないためです。このスキッププロセスは、目的のワープマッピングからIPがスキップする領域を決定するソフトウェアAPIによって自動的にセットアップされます。この動作は、Use single memory bounceがオフの場合にのみ発生します。
Easy Warp
Use easy warpをオンにすると、以下を実行できます。
- IPでは0°、90°、180°、270°の回転をサポートし、選択した回転の前に水平ミラー動作を適用できます。
- IPではエンジンをコンフィグレーションしません。
- IPでは外部メモリーからデータを読み出すときに、ビデオ出力ブロックによって必要な回転変換またはミラー変換を適用します。
- IPには処理エンジンが不要であるため、リソースとメモリー帯域幅が節約されます。
0または180°のeasy warpの回転では、最大入力幅寸法が最大出力幅を超えないようにする必要があります。最大幅は、Maximum output video widthパラメーターで設定します。90°または270°のeasy warpの回転では、垂直方向と水平方向の寸法を入れ替える必要があるため、入力解像度に制限が発生します。
最大出力ビデオ幅 | 入力高さの制限 |
---|---|
2048 | 1088 |
3840 | 2176 |
この図は、Use Easy warpと外部メモリーへの接続を備えたWarp IPの高レベルのブロック図を示しています。

シングル・メモリー・バウンス
一般に、Use single memory bounceをオンにすると、オフの場合に比べてメモリー帯域幅が減少します。ただし、単一のメモリーバウンスには、より大きな内部RAMが必要になる場合があります。RAMの使用量は、特定のワープ変換によって異なります。一部の変換では、IPに大量のキャッシュが必要になります。キャッシュ要件が増加すると、内部ブロックRAMの使用量も増加します。
Use single memory bounceをオンにすると、エンジンごとに256、512、および1024キャッシュブロックの3つのキャッシュ・サイズ・オプションが使用可能になります。Use single memory bounceがオフの場合、IPのキャッシュサイズはエンジンごとに256キャッシュブロックに固定されます。
Use single memory bounceをオンにするかどうかは、IPが実行する実際の変換によって決まります。インテルは、目的の変換を処理するためにIPが必要とするキャッシュの量を決定するソフトウェア・ツールを提供しています。入力および出力の解像度、必要な変換、使用するエンジンの数などの情報をツールに提供します。また、このツールは、変換を処理するために使用するキャッシュの量に関するガイダンスを提供します。
Warpブロック・キャッシュ・ツールの詳細については、ブロック・キャッシュ・ツールを参照してください。シングル・メモリー・バウンスで実行する場合のメモリー帯域幅への影響については、Warp IPの外部メモリーを参照してください。
シングル・メモリー・バウンスのキャッシュの例
キャッシュ使用例は、インテルArria 10デバイス上における60 fpsでのUHD入力および出力解像度での45度回転に基づいて示されています。このスループットには、IPが2つのエンジンを使用する必要があります。
Use single memory bounceをオフにすると、IPによるブロックRAMの使用量は365 M20Kになります。
Use single memory bounceをオンにすると、45度の回転の制約により、IPにはエンジンごとに512のキャッシュブロックが必要になります。このキャッシュブロック要件は、407 M20KのブロックRAM使用量に相当します。
シングル・メモリー・バウンスの使用 | エンジンごとのキャッシュブロック | ブロックRAMの合計使用量 |
---|---|---|
オン | 512 | 407 |
オフ | 256 (固定) | 365 |