インテルのみ表示可能 — GUID: mfr1620896278673
Ixiasoft
インテルのみ表示可能 — GUID: mfr1620896278673
Ixiasoft
7.3. Protocol Converter IPの機能の説明
プロトコル・コンバーター - Avalonストリーミング・ビデオからインテルFPGAストリーミング・ビデオ・ライトへの変換
IPは、次の手順でプロトコルを変換します。
-
Avalon Streaming Readyレイテンシーを1から0に変更します。
Avalon Streaming Videoでは、Readyレイテンシーが1に指定されています。IPは、AXI4-Streamに指定されているReady-Validハンドシェイク・メカニズムに一致するように、Readyレイテンシーを0に変換します。
-
ストリームからビデオパケット以外のすべてのパケットを削除します。
Avalon Streaming Videoは、ストリーム内の各パケットにタイプ識別子 (0から15までの数値) を割り当てるメカニズムを指定します。タイプ0パケットはピクセルデータのフレームであり、他のすべてのパケットタイプは非ビデオデータを示します。タイプ15のパケット (通称、メタパケット) には、後続のタイプ0ビデオパケットの幅、高さ、インターレース・プロパティーを指定するメタデータが含まれています。Intel FPGA Streaming Videoのライトでは、ストリーム内にメタパケットを含めることはできません。IPは、0より大きいタイプのパケットをすべて破棄します。IPは、ビデオのプロパティーを指定するタイプ15メタパケットを伝播しません。ただし、破棄プロセス中にそれらを解析して、後続のビデオフレームの予想される幅を抽出します。IPは、変換の次のステップでこの情報を使用します。
-
フレームパケットをラインパケットに分割します。
Avalon Streaming Videoは、各ビデオパケットに1サイクルのヘッダーデータと、その後にビデオのインターレース・フレームまたはプログレッシブ・フレームに必要なすべてのピクセルが含まれることを指定します。ヘッダーデータはパケットの種類を指定します。Intel FPGA Streaming Videoでは、各パケットが1行のビデオデータ (ヘッダー情報なし) であることが必要です。IPは、受信したAvalon Streaming Videoフレームパケットを取り除き、それらを複数のパケットに分割します。各パケットには1つのビデオラインが含まれます。IPは、フレームに先行する破棄されたメタパケットからビデオフレームの予想される幅を抽出します。IPはこの値を使用して、各出力回線パケットを作成するために受信フレームパケットを分割する位置を決定します。IPは、Avalon Streaming startofpacket 信号と endofpacket 信号をAXI4-Stream tlast 信号に置き換え、tuser 信号を作成します。IPは受信Avalon Streaming data を再フォーマットして、バイトアライメントされたAXI4-Stream tdata を作成します。
Avalonストリーミング・ビデオからインテルFPGAストリーミング・ビデオ・フルへの変換
Avalonストリーミング・ビデオのインテルFPGAストリーミング・ビデオ・フルへの変換は、インテルFPGAストリーミング・ビデオ・ライトへの変換と似ています。手順1と手順3は同じですが、インテルFPGAストリーミング・ビデオは非ビデオパケットを完全にサポートしているため、手順2は異なります。Avalonストリーミング・ビデオ入力内の非ビデオデータは保持できるため、破棄する必要はありません。
インテルFPGAストリーミング・ビデオ・フルの非ビデオパケットは、パケットの最初のサイクルで tuser フィールドのビット1をアサートすることで示されます。Avalonストリーミング・ビデオと同様、インテルFPGAストリーミング・ビデオ・フルの各非ビデオパケットには、関連付けられたパケットタイプがあり、データの最初のビートの5 LSBで示されます。
インテルFPGAストリーミング・ビデオ・フルには、各ビデオフィールドのパケットの前に画像情報パケット (タイプ0) が必要で、その後にフィールド終了パケット (タイプ1) が続きます。IPはこれらを受信ストリームに追加します。画像情報パケットは、Avalonストリーミング・ビデオ入力の制御パケットに似ています。これには、次のフィールドの幅、高さ、およびインターレース形式に関する情報が含まれており、Avalonストリーミング・ビデオの制御パケットから直接取得できます。入力カラースペース、クロマ・サンプリング、および位置に関する詳細情報は、受信制御パケットには含まれていませんが、IPのコンフィグレーション方法に応じて、レジスターマップまたはパラメーターから取得されます。
IPがAvalonストリーミング・ビデオ入力のユーザーパケット (タイプ1から14) を処理する方法を、How Avalon-ST Video user packets are handledパラメーターを介して選択できます。これらのタイプのパケットが存在しないことを選択でき、その場合、IPでパケットを処理するためのプロビジョニングは行われません (パケットを受信した場合、IPがロックアップする可能性があります)。IPがこれらのパケットを破棄するように選択でき、その場合、インテルFPGAストリーミング・ビデオ・ライトへの変換の場合と同様に、IPはパケットを検出して破棄するための追加ロジックを追加します。
インテルFPGAストリーミング・ビデオ・ライトへの変換時には使用できず、インテルFPGAストリーミング・ビデオ・フルへの変換時には使用できる最後のオプションは、受信ユーザーパケットを伝播することです。ただし、インテルFPGAストリーミング・ビデオ・フルは、非ビデオパケットがデータ信号の16ビットのみを使用し、最大長が4データビートに制限されているため、ユーザーパケットをメイン・ビデオ・ストリームに直接挿入できません。
より大きな非ビデオパケットを処理するために、インテルFPGAストリーミング・ビデオには、メイン・ビデオ・インターフェイスと同じプロトコルに従う別個の補助インターフェイスのオプションが含まれています。ビデオ・インターフェイス上のビデオパケット (tuserビット1が0に設定されているパケット) にはビデオラインが含まれています。補助インターフェイス上のデータパケットには、必要な非ビデオデータが含まれる場合があります。Avalon streaming video user packet handlingでPass all user packets through to the outputを選択すると、Avalonストリーミング・ビデオのユーザーパケットのヘッダービート (パケットタイプを含む) がパケットからクリップされ、残りのデータが補助出力インターフェイスに配線されます。補助インターフェイス上のパケットがメイン・ビデオ・インターフェイスと同期できるようにするために、元のAvalonストリーミング・ビデオ入力にユーザーパケットが存在していた時点で、シングルビートの非ビデオパケットがメインストリームに組み込まれます。インテルFPGAストリーミング・ビデオ・フルは、システムが自由に使用できるように、16から31の範囲の非ビデオ・パケット・タイプを確保します。IPは、元のAvalonストリーミング・ビデオのパケットタイプ (1から14の範囲) に16を追加して、インテル・ストリーミング・ビデオ・フルで許可される範囲内に移動し、作成されたパケットはこのタイプを使用します。新しく作成されたパケットは、ビット5にフラグを設定して、補助インターフェイス上のパケットがこの非ビデオパケットに関連付けられていることを示します。ビデオストリームのこの時点で読み出す必要があります。
プロトコル・コンバーター - インテルFPGAストリーミング・ビデオ・ライトからAvalonストリーミング・ビデオへの変換
IPは、3つの手順でプロトコルを変換します。
-
ラインパケットを単一のフレームパケットに結合します。
Intel FPGA Streaming Videoは、パケットごとに1つのビデオラインでビデオデータを送信することを指定します。Avalon Streaming Videoでは、フレーム内のすべてのピクセルを単一のパケットで送信する必要があります。受信ラインパケットは結合して1つのフレームパケットを形成する必要があります。クロックサイクルごとに1つのピクセルを送信する場合、受信 tuser 信号のビット0が各フレームの最初のピクセルをマークします。IPは、tuser のビット0がアサートされるまでパケットを連結します。ラインあたりのピクセル数がクロックあたりのピクセルの倍数ではない場合、データの最終クロックサイクル内の余分なピクセルは事実上空であるため、無視する必要があります。レジスターマップを介して受信ビデオフレームの幅を指定する必要があります。IPはこの幅情報を使用して、パケットを連結するときに各行の終わりでどのピクセル (存在する場合) を無視する必要があるかを決定します。
-
フレーム・パケット・ヘッダーと制御パケットを追加します。
Avalon Streaming Videoでは、各フレームパケットがパケットタイプ0を指定する1サイクルヘッダーで始まる必要があります。IPは、このヘッダーを以前に作成されたフレームパケットに追加します。Avalon Streaming Videoでは、各フレームパケットの前に、次のフレームの幅、高さ、インターレース方式を指定する制御パケット (タイプ15) を置くことも推奨しています。インターレース指定子の初期値として、レジスターマップを介して幅と高さを指定します。IPはこれらの値を使用して、ストリームに追加するAvalon Streaming制御パケットを制御します。プログレッシブ・ビデオのインターレース指定子を選択すると、IPはすべての制御パケットにこの値を使用します。インターレース指定子がインターレース方式を識別する場合、IPは送信制御パケット内のf0/f1ビットを自動的に切り替えます。
-
Avalon Streaming Readyレイテンシーを0から1に変換します。
このIPは、AXI4-Stream tlast 信号をAvalon Streaming startofpacket 信号と endofpacket 信号に置き換えます。IPは empty 信号を作成します (クロックサイクルあたりのピクセル数が1より大きい場合)。 IPは、AXI4-Streamのバイトアライメントされた tdata を、バイトアライメントされていないAvalon Streaming data に再フォーマットします。インターフェイスはAvalon Streamingプロトコル準拠になりましたが、Readyレイテンシーは0です。Avalon Streaming Videoでは、Readyレイテンシーが1である必要があるため、IPはReadyレイテンシーを0から1に変換します。
インテルFPGAストリーミング・ビデオ・フルからAvalonストリーミング・ビデオへの変換
インテルFPGAストリーミング・ビデオ・フルからAvalonストリーミング・ビデオへの変換は、インテルFPGAストリーミング・ビデオ・ライトからの変換と似ています。手順1と手順3は同じですが、インテルFPGAストリーミング・ビデオは非ビデオパケットを完全にサポートしているため、手順2は異なります。
Avalonストリーミング・ビデオの制御パケットを設定するために必要な情報を、インテルFPGAストリーミング・ビデオ・ストリームの画像情報パケットから抽出できます。Avalonメモリーマップド制御エージェント・インターフェイスは必要ありません。
タイプが0から15の範囲のすべてのインテルFPGAストリーミング・ビデオの非ビデオパケットには、指定済みの機能または予約済みの機能があり、Avalonストリーミング・ビデオに変換できません。IPは、How Intel FPGA Streaming Video aux packets are handled パラメーターに選択した値に関係なく、これらのパケットをストリームから削除します。Discard all user packets receivedを選択すると、IPはIntel FPGA Streamingビデオ入力から受信したユーザー定義の補助制御パケットをすべて破棄します。Discard all user packets receivedを選択すると、オプションの補助ストリーミング入力インターフェイスがオンになります。このインターフェイスは補助制御パケットに関連するペイロードを伝送できるため、IPはこのインターフェイスから受信したパケットをすべて破棄します。
補助パケットをパススルーするオプションを選択した場合、Avalonストリーミング・ビデオに変換されないため、IPはタイプ0から15のインバンドパケットを破棄する必要があります。Avalonストリーミング・ビデオの予約済みタイプにマッピングされるため、IPはタイプ16、28、および31を破棄する必要があります。残りのパケットタイプについては、IPは最初のデータビートのビット5のフラグの値を調べ、補助インターフェイス上のパケットがパケットに付随するかどうかを示します。フラグが設定されていない場合、IPは、パケットタイプから16を引いたヘッダービートのみを含む出力パケットを作成します。フラグが設定されている場合、IPは、単一のビートヘッダーが追加されたパケットを補助インターフェイスから出力に伝播します。このプロセスは、Avalonストリーミング・ビデオからインテルFPGAストリーミング・ビデオ・フルに変換する際のユーザーパケットの伝播の逆です。
補助インターフェイス上にパケットが存在することを示すインバンドパケットには、1から4ビートのデータが含まれる場合があります。ただし、IPは変換プロセスで他のすべてのデータを無視するため、最初のビートのデータのみを読み出します。補助インターフェイスはインテルFPGAストリーミング・ビデオ・プロトコルに準拠しており、すべてのパケットタイプを伝送できます。IPは、すべての画像情報、フィールドの終わり、およびすべての補助制御パケットを破棄します。他のすべてのパケットは、メインのインテルFPGAストリーミング・ビデオ入力で受信された補助制御パケットのデータパケットであるため、IPはこれらのパケットを転送します。
インテルFPGAストリーミング・ビデオ・フルでは、補助制御パケットがフィールドデータの前 (ラインパケット)、および最終ラインパケットとフレームパケットの終わりの間 (フィールドの前後両方) の両方でストリームに到着することができます。Avalonストリーミング・ビデオでは、フィールドパケットの前にユーザーパケットのみが許可されます。IPは、このフィールドの後のパケットを次のフィールドの一部とみなします。IPがインテルFPGAストリーミング・ビデオ・フルのフィールドの後に補助制御パケットに遭遇した場合でも、それらはAvalonストリーミング・ビデオに変換されますが、後続のフレームの一部であると見なされます。この動作が許容できない場合は、フィールドの後のタイプ17から31の補助制御パケットの使用を避ける必要があります。
インテルFPGAストリーミング・ビデオ・ライトからインテルFPGAストリーミング・ビデオ・フルへの変換
インテルFPGAストリーミング・ビデオのライトバリアントからフルバリアントへの変換は、軽量のプロセスとなります。これは、両方のバリアントが同じデータ形式とパケット化を使用してビデオラインを送信するためです。各フィールドの最初の行の前に画像情報パケットを追加し、最終行の後にフィールド終了パケットを追加する必要があります。IPは、画像情報パケットを設定するために必要な情報をレジスターマップから取得します。ブロークン・フィールド・フラグは、フィールド終了パケットに必要な唯一の情報です。指定されたフレームで受信したライン数がレジスターマップに設定されたフィールドの高さとフィールド数と一致しない場合、壊れたフラグが設定されます。フィールドカウントは、レジスターマップを介していつでもゼロにリセットできるカウンターから設定され、各フィールドの終わりに増加します。
インテルFPGAストリーミング・ビデオ・フルからインテルFPGAストリーミング・ビデオ・ライトへの変換
インテルFPGAストリーミング・ビデオのフルバリアントからライトバリアントに変換する場合、両方のバリアントは同じデータ形式とパケット化を使用してビデオラインを送信します。変換を行うために、IPは入力ストリームから画像情報、フィールドの終わり、補助制御パケット (パケットの最初のビートで tuser のビット1をアサートすることでマークされる) を削除します。
ピクセルデータ形式
Avalon Streaming VideoとIntel FPGA Streaming Videoのピクセルデータ形式はほぼ同じです。Intel FPGA Streaming Videoでは、各ピクセルの幅を次の整数バイトに切り上げる必要があります。必要な追加ビットは、0、1、または任意のランダムデータで埋めることができます。Avalon Streaming Videoにはそのような要件はなく、各ピクセルに必要なビットのみを使用します。Protocol Converterは、Avalon Streaming VideoからIntel FPGA Streaming Videoに変換するときに必要な追加ビットを追加します。Intel FPGA Streaming VideoからAvalon Streaming Videoに変換するときに、これらは削除されます。
Avalon Streaming VideoとIntel FPGA Streaming Videoはどちらも、RGBおよびYCbCr形式のデータに対して各ピクセルのカラープレーンの配置方法を指定します。YCbCrデータの場合、プロトコルは4:4:4、4:2:2、および4:2:0クロマ・サンプリングのカラープレーンの順序を指定します。YCbCr 4:4:4の場合のYプレーンとCrプレーンのスワップを除けば、カラープレーンの順序は2つのプロトコル間でほぼ同じです。Protocol Converter IPはスワップを実装できますが、各フレームのカラースペースとクロマ・サンプリングを指定する必要があります。パラメーターを介して指定することも、Avalonメモリーマップド・エージェント・インターフェイスを通してアクセスされるレジスターマップを介して指定することもできます。
パラメーターを使用して、Avalonメモリーマップド・エージェント・インターフェイスをオンまたはオフにすることができます。Avalonメモリーマップド・エージェント・インターフェイスがオンになっている場合は、ランタイム時にレジスターマップを介してカラースペースとクロマ・サンプリングを指定します。Avalonメモリーマップド・エージェント・インターフェイスがオンになっていない場合は、Video color spaceパラメーターでカラースペースを、Video chroma samplingパラメーターでクロマ・サンプリングをそれぞれ指定します。
Protocol Convert IPがIntel FPGA Streaming VideoからAvalon Streaming Videoに変換を行う場合、Avalonメモリーマップド・エージェント・インターフェイスをオンにし、パラメーターは使用しないでください。Protocol Convert IPがAvalon Streaming VideoからIntel FPGA Streaming Videoに変換を行う場合は、Avalonメモリーマップド・エージェント・インターフェイスはオプションです。カラースペースとクロマ・サンプリングがシステムに固定されていることがわかっている場合は、エージェント・インターフェイスをオフにして、パラメーターを介してカラースペースとクロマ・サンプリングを指定することを選択できます。カラースペースとクロマ・サンプリングがランタイム時に変化する可能性がある場合は、エージェント・インターフェイスをオンにして、レジスターマップに値を指定します。
双方向の変換の場合、IPはYCbCr 444 color swapパラメーターによってYCbCr 4:4:4形式用のデータのカラープレーンのスワップをゲーティングします。カラープレーンのスワップを適用するには、IPに対してこのオプションをオンにする必要があります。
4:2:0クロマ・サンプル・ビデオ
Avalonストリーミング・ビデオでは、ピクセルごとに固定数のカラープレーンを宣言する必要があります。4:2:0カラープレーンのパッキングは、ピクセルのこの定義と完全には一致しません。CbサンプルとCrサンプルのペアごとに4つの輝度サンプルが存在するため、ピクセルあたりのカラープレーンの有効数は 1.5 (1つの輝度サンプルと1/2のクロマサンプル) になります。Avalonストリーミング・ビデオをピクセルあたり1.5色になるように構成することはできないため、IPは各クロマで2つの輝度サンプルをパッキングして、Avalonストリーミング・ビデオ・インターフェイス上でトランスポートのアトムを作成します。Avalonストリーミング・ビデオ・プロトコルでは、この3つのカラープレーンのグループが2つの輝度サンプルを含み、実質的には2ピクセルであるにもかかわらず、このグループを1つのピクセルとみなします。制御パケットで報告される幅の値は、インターフェイスがピクセルとして扱う3つのカラープレーンのグループの数をカウントするため、報告される幅の値は常に4:2:0サンプルデータの実際のフィールド幅の半分になります。
インテルFPGAストリーミング・ビデオ・プロトコルのどちらのバージョンも、4:4:4または4:2:2サンプリングのピクセルとみなされるトランスポートのアトムに2つの輝度サンプルをパッキングします。このプロトコルでは、クロマ・サンプリングも同様に定義されています。画像情報パケット (インテルFPGA ストリーミング・ビデオのフルバリアント使用時) とレジスターマップで指定されたフィールド幅は、常に実際のフィールド幅です。
プロトコル・コンバーターIPでは、クロマ・サンプリングを指定する必要があり、必要に応じて報告された幅を自動的に2倍または半分にします。
インテルFPGAストリーミング・ビデオ・ライトのフィールド終了検出
Avalon Streaming Videoの場合、endofpacket 信号はビデオ・データ・パケットの最後のピクセルでアサートされる各ビデオフレームの終わりをマークします。
Avalon Streaming Videoでは、各フレームの最後のピクセルは、それが最後のピクセルであると確信するまで送信できません。そうしないと、endofpacket 信号が誤って駆動される危険があります。
Intel FPGA Streaming Videoの場合、各フレームの終了は、プロトコルで明示的に示されている次のフレームのフレーム開始マーカーを受信することによって推測されます。Intel FPGA Streaming VideoからAvalon Streaming Videoに変換するときに、潜在的なレイテンシーの問題が発生する可能性があります。IPは、入力で次のフレームの最初のピクセルを受信するまで、各フレームの最後のピクセルを出力で送信できません。インテルFPGAストリーミング・ビデオ・フルに変換する場合、IPは次のフレームの最初のピクセルを認識するまで、特定のフレームのEOFパケットを送信できません。
ビデオ・アプリケーションで、あるフレームの最後のピクセルと次のフレームの最初のピクセルの間に重大なブランキング (遅延) がない場合、IPは各フレームの最後のピクセル (Avalonストリーミング・ビデオ) またはフレームの終わりのパケット (インテルFPGAストリーミング・ビデオ・フル) の送信にほとんど遅延を与えません。アプリケーションに大幅なブランキングがある場合、最後のピクセルまたはフレームの終わりを送信するまでの遅延が長すぎる可能性があります。Protocol Converter IPには、この遅延を除去するオプションが含まれています。
Low latency modeをオンにすると、Protocol Converter IPは、レジスターマップで指定したように、各フレームで予想されるライン数に従って、Avalon Streaming Videoフレームの endofpacket またはインテルFPGAストリーミング・ビデオのフルEOFパケットを送信します。Intel FPGA Streaming Videoプロトコルは、ビデオデータの各ラインをパケットとして送信するため、IPは指定されたライン数の入力パケットの終わりで出力フレームを終端します。IPが追加の回線を受信した場合、IPはそれらを破棄し、出力で送信しません。