AI エンジンによる新しいフィルター設計手法

AI エンジンによるデジタル ダウンコンバージョン チェーンのインプリメンテーション (XAPP1351)

Document ID
XAPP1351
Release Date
2021-02-15
Revision
1.0 日本語

5G NR キャリアと LTE キャリアは同じシステム内に共存しないことが観察されています。5G NR チャネル フィルターと 5c LTE チャネル フィルター間の最大使用率は、AI エンジンの容量の 80% 未満です。(前の図に示すように、AI エンジン #0 の使用率は約 55%、AI エンジン #1 の使用率は約 77%)。これにより、FIR89 および FIR199 フィルター チェーンを 1 つの AI エンジンにパックできるため、(3 つではなく) 2 つの AI エンジンを使用して 1 アンテナ デザインを実装できます。次の図に、提案されるデザイン パーティションを示します。

図 1. DDC システムの分割 (2 つの AI エンジン)

入力ウィンドウの前のヘッダー (ブロックごとに変更可能) は、キャリアの構成を示します。出力ウィンドウのサイズは固定され、1 つの 5G NR 100MHz キャリアまたは 5 つの LTE キャリアのデータを格納できます。次の図に、入出力データ フォーマットを示します。

図 2. DDC インターフェイス フォーマット

次に、最適化されたデザインのインプリメンテーションを手順ごとに説明します。

まず最初に、フィルター オーバーラップを手動で管理することにより、メモリ フットプリントを削減する必要があります。1 つのフィルター カーネルに割り当てられるバッファーを考えます。そのフィルターに固有なのはバッファーのオーバーラップ部分のみであり、データ部分は複数のフィルターが共有できます。特に、短いフィルターの場合、メモリの削減量は大きくなります。次の図に示す新しい手法では、各カーネルがオーバーラップなしでピンポン バッファーのペアに割り当てられ、オーバーラップにのみ個別のメモリが割り当てられます。データとオーバーラップの分離により、タップ数やサンプル レートの異なる複数のフィルターが、1 つのデータ バッファーを共有できます。

図 3. 新しいフィルター カーネルの動作

次の図に、ハーフバンド フィルター (HBF23) がこのようなオーバーラップ バッファー方式でどのように動作するかを示します。従来の手法とは異なり、この方式では入力ウィンドウ内のオーバーラップ バッファーは除去され、オーバーラップの自動コピーは実行されません。最初の 3 サイクルの間に、カーネルは (入力ウィンドウからではなく) オーバーラップ バッファーからデータをロードすることによってレジスタを初期化します。メイン ループは、4 番目のサイクルから N 番目のサイクルまでの間に開始されます。その間に、カーネルは入力ウィンドウからデータを読み出し、そのデータをシャッフルし、MAC 演算を実行します。関数の終了前に、最後の数サイクル (この場合は 3 サイクル) のデータがオーバーラップ バッファーに格納されます。

図 4. 手動で管理されるオーバーラップの概念

オーバーラップ バッファーとデータ バッファーを分離すると、インプリメンテーションの課題が生じます。オーバーラップが十分に短く、再ロードの必要なしにレジスタにロードできる場合 (HBF11 および HBF23 の場合)、前の図に示すように、オーバーラップをレジスタ空間の先頭にロードできるため、オーバーラップを簡単に処理できます。一方、フィルターが長い場合は、メモリ空間を結合するためにメモリ コピーが必要になります。FIR89 および FIR199 の場合がこれにあたります。このアプリケーション ノートでは、フィルタリング用にオーバーラップ メモリ バッファーを使用し、データ コピー プロセスと計算を並列化してスループットを最大化することを提案します。

Versal ACAP AI エンジンは、超長命令語 (VLIW) ベクトル エンジンです。AI エンジンにインプリメントされた VLIW ベースの命令レベル並列性により、1 サイクルで最大 7 つの異なる演算を実行できます。AI エンジンは、2 つのロード、1 つのストア、1 つのベクトル MAC、1 つのスカラー ALU 演算、および 2 つのデータ移動命令を 1 サイクルでサポートできます。このアプリケーション ノートでは、AI エンジン VLIW 命令バンドルを使用してスペア サイクルを発見し、ほかの演算と並行して入力ウィンドウから内部オーバーラップにデータを書き込む手法を提案します。次の図を参照してください。この図では、64 サンプルの入力ウィンドウを使用しています。最初の 2 サイクルを使用して、レジスタ ファイルにデータをロードします (左バッファーと右バッファーにそれぞれ 16 サンプル)。3 番目のサイクルから N 番目のサイクルまでが for ループの本体で、フィルター デザインの主要な部分です。入力ウィンドウから内部バッファーに新しいデータを書き込むためのスペア サイクルを見つけることが重要です。4 番目または 5 番目のサイクルがスペア サイクルになります。6 番目のサイクルからは、新しいデータはほかのロード操作によって上書きされます。この方法で、追加サイクルを使用せずに、コストのかかるオーバーラップ コピーが MAC 演算と完全に結合されます。

図 5. スペア サイクル