AI エンジン デザインのデータフローは、グラフ デザインと呼ばれる C++ クラスによって定義されます。ビームフォーミング リファレンス デザインでは、1 つのカスケード接続チェーンがサブグラフ bfCascadingChain
で定義されています。テンプレート パラメーターの xoff
と yoff
は一番左の AI エンジンの座標を定義し、len
はカスケード接続チェーンの長さを AI エンジンの数で指定します。各 AI エンジンにはデータ用と係数用に 2 つの入力が必要なため、チェーン全体で len
入力は 2 つあり、出力は 1 つのみです。
template <int xoff, int yoff, int len>
class bfCascadeChain: public graph {
private:
kernel core[len];
public:
port<input> din[len];
port<input> cin[len];
port<output> out;
bfCascadeChain() {
...
} ;
}; // end of class bfCascadeChain
このサブグラフを使用すると、特定の長さのカスケード接続チェーンをいくつかインスタンシエートしてビームフォーミング デザインを構築できます。64 アンテナ 32 レイヤーの 5G NR 100MHz システムの場合、ダウンリンク ビームフォーミングは長さ 4 のカスケード接続チェーン 8 本として記述でき、アップリンク ビームフォーミングは長さ 8 のカスケード接続チェーン 4 本として記述できます。次の表に、サンプル グラフの C++ コードを示します。
ダウンリンク
|
アップリンク
|
ザイリンクス ツールはグラフ デザインをコンパイルし、コンパイル結果を表すブロック図を自動で生成します。次の 2 つの図に、64 アンテナ 32 レイヤーの 100MHz ビームフォーミング リファレンス デザインを使用した 1 つの例を示します。色の付いた楕円はそれぞれ 1 個の AI エンジンを表しており、グレーの長方形はデザインが使用する DMA およびメモリを表しています。DMA、AXI スイッチ、および PL-AI エンジン インターフェイスは、グラフ デザインに従ってザイリンクス ツールによって自動で設定されます。