インテルのみ表示可能 — GUID: jno1639665389563
Ixiasoft
インテルのみ表示可能 — GUID: jno1639665389563
Ixiasoft
30.3.1.1. Scaler IPのランタイム係数の更新
係数メモリーの実装コストを最小限に抑えるため、レジスターマップへの単一の読み出しまたは書き込みでは各係数の値に直接アクセスできません。特定のフェーズ (垂直または水平) の係数の値をレジスターマップ内の一連のアドレスに書き込む必要があります。次に、IPが係数を書き込むフェーズとバンクを個別のアドレスで宣言します。
- 1つの位相の係数の値をRT_COEFF_LOAD_TAP_Xレジスター (0 <= X < 64, addresses 0x020C to 0x0308) に書き込みます。IPには64個のアドレスがあり、そこに新しい係数を書き込むことができます。更新する係数フェーズにN タップ (N < 64) の係数しかない場合、この範囲の最初のNアドレスに値を書き込むだけで済みます。
- IPが係数のこのフェーズを書き込むバンクのインデックスをRT_COEFF_LOAD_BANK_SELECTレジスター (アドレス 0x0200) に書き込みます。
- IPが係数を書き込む位相のインデックスをRT_COEFF_LOAD_PHASE_SELECTレジスター (アドレス0x0204) に書き込みます。
- RT_COEFF_LOAD_COMMITレジスター (アドレス0x208) に書き込み、指定されたバンクの指定されたフェーズに新しい係数をコミットします。水平スケーリング・フィルター係数位相の場合はこのレジスターに1を書き込み、垂直スケーリング・フィルター係数位相の場合は0をこのレジスターに書き込みます。
更新するすべてのバンクのすべてのフェーズで、このプロセスを繰り返す必要があります。設定レジスター (出力フィールド幅など) の更新とは異なり、係数の更新は即座に有効になります。IPはフレーム境界まで係数を保持しません。フレームの途中でIPが係数を更新しないようにするには、インテルでは、少なくとも2つの係数バンクの使用をお勧めしています。こうすることで、システムを制御するソフトウェアが1つのバンクの係数を更新し、スケーラーが他のバンクから処理用の係数を読み出すことができます。係数の更新が完了すると、ソフトウェアはレジスターマップのH_BANKまたはV_BANKアドレスの値を更新することで、係数読み出しバンクを新しく更新されたバンクにスワップできます。これらのレジスターは標準の設定レジスターであるため、係数読み出しバンクの更新はフレーム境界でのみ有効になります。