入力の最初の次元で IFFT (Inverse Fast Fourier Transform) を計算します。IFFT インプリメンテーションには Radix-2 バーストまたはパイプラインフローを使用します。IFFT 長は 2 のべき乗にする必要があります。
ライブラリ
Digital Signal Processing
説明
N ポイント フォワード DFT (N は 2 のべき乗にする必要あり) を計算します。入力が固定小数点の場合、入力データ は実数および虚数の 2 の補数として記述される N 複素数値のベクターです。入力長によって、IFFT の変換長 (N) が決 まります。
このブロックは、逆 DFT を計算する DIF (Decimation in Frequency) 方法を使用した Radix-2 分解を使用します。
Radix-2 分解を使用した N ポイント IFFT には log2 (N) 段あり、各段に N/2 Radix-2 バタフライが含まれます。ビット 増加のない N 要素の出力ベクターは、実数および虚数の 2 の補数のコンポーネント数で示されます。入力データが自 然な順序の場合、出力データは自然な順序 (Natural Order) またはビット/桁が逆順 (Bit/Digit Reversed Order) のいず
アルゴリズム
IFFT は、正の整数の 2 のべき乗であるサンプル サイズの逆 DFT (Discrete Fourier Transform) を計算する計算効率に 優れたアルゴリズムです。
逆 DFT (Discrete Fourier Transform) は次の計算式で定義されます。
k は 0 ~ N - 1 の範囲の整数です。
Radix-2 IFFT アルゴリズムでは、逆 DFT がそれぞれの長さが N/2 の 2 つの逆 DFT に分割され、次のように繰り返さ れます。
データ型サポート
• 次元: 入力は 1 次元行列またはベクターである必要があります。
• データ型: 入力では、符号付き固定小数点型の信号がサポートされます。その他のデータ型はサポートされませ ん。
• 複素数のサポート: あり
出力は入力と同じ次元とデータ型で、[2 * Divide by IFFT length] オプションに基づいて、ビット増加ありおよびなし になります。
パラメーター
• 出力データは、[Bit/Digit Reversed Order] または [Natural Order] のいずれかになります。[Natural Order] を選択す ると、ブロックで使用されるメモリが増加します。
• [Pipeline] コンフィギュレーションを選択すると、パフォーマンスが向上しますが、パイプラインなしのオプショ ンに比べると、より多くのリソースが使用されます。
• [2* (Divide by IFFT length)] オプションを選択すると、出力ビット幅が入力ビット幅と同じになるほか、データ オ ーバーフローを処理するために保守的なスケーリングに設定されます。
Integral Image
入力の積分画像を計算します。各出力ピクセルは、入力画像の対応するピクセルとその上および左にあるピクセルの 合計になります。
ライブラリ Computer Vision
説明
Integral Image ブロックは、入力強度画像の積分画像 (unit8 型グレースケールの M x N 行列) を計算します。画像の部 分領域の合計を、領域のサイズにかかわらず、一定の時間で高速に計算できます。積分画像の各ピクセルは、入力画 像の対応するピクセルとその上および左にあるピクセルの合計になります。積分画像の使用例は、積分画像を顔認識 アプリケーション用の高速四角形計算機能に使用した『Robust Real-Time Face Detection』 (Paul Viola および Micheal J. Jones 著) という文献を参照してください。
上の図のデザインで入力の中央ピクセル 5 をテスト ピクセルとすると、その左と上のピクセルは 3、8、および 1 で す。Integral Image ブロックは、入力のピクセル 5 を出力で 17 (5、3、8、1 の合計) に置き換えます。
データ型サポート
入力は、unit8 型の実数値および 2 次元データにする必要があります。出力のデータ型は unit21 で、次元は入力と同 じになります。
パラメーター
設定するパラメーターはありません。
Interface Spec
サブシステムの RTL インターフェイスを指定します。
ライブラリ Tools
説明
Interface Spec ブロックをサブシステムにインスタンシエートすると、そのサブシステムのポートに合成する RTL イ ンターフェイスを指定できます。これは、Model Composer で生成された C++ モデルを Vivado HLS で RTL モデル (IP) に合成する際のコード生成と合成にのみ影響します。デザインの Simulink シミュレーションには影響しません。
デザインに Interface Spec ブロックがない場合は、Model Composer のデフォルトのインターフェイスが使用されま す。インターフェイスの合成は、C++ コードを生成するサブシステムでのみサポートされます。そのため、C++ コー ドを生成するサブシステム内に組み込まれているサブシステムに Interface Spec ブロックがインスタンシエートされ ている場合、その Interface Spec ブロックは無視されます。
Interface Spec ブロックは、次のように使用します。
1. Interface Spec ブロックは、C++ コードを生成するサブシステムにインスタンシエートします。[Input ports] タブ
に、親サブシステムの各入力ポートがそれぞれの行に表示されます。同様に、[Output ports] タブにも親サブシ ステムの各出力ポートがそれぞれの行に表示されます。
2. [Function Protocol]、[Input ports]、および [Output ports] タブに値を入力します。
Interface Spec ブロックでは、次の情報が含まれます。
• ブロック レベルのインターフェイス プロトコル。データ処理を開始するタイミングを IP に伝えるために使用し ます。IP では、新しいデータを受信するのか、演算を終了したのか、アイドル状態なのかを示すためにも使用さ れます。
• 親サブシステムの入力ポートごとのポート レベルのインターフェイス プロトコル。
• 親サブシステムの出力ポートごとのポート レベルのインターフェイス プロトコル。
ポート レベルのインターフェイス プロトコルを選択する場合は、次に注意してください。
• 大型配列または行列のポートでは、AXI4-Stream、FIFO、または AXI4-Stream (ビデオ) などのストリーミング プ ロトコルを使用する必要があります。
• スカラー ポートは、[Default]、[AXI4-Lite Slave]、[Constant]、[Valid Port]、[No protocol] のいずれかのプロトコ ルを使用してインプリメントできます。
• ビデオ信号は、AXI4-Stream (ビデオ) インターフェイスを使用して転送できます。この場合、ビデオ フォーマッ トを YUV 4:2:2、YUV 4:4:4、RGB、または Mono に指定する必要もあります。ビデオ フォーマットの色成分が複 数ある場合は、どのポートでどの色成分を転送するかを指定し、これらの 3 つのポートの [Bundle] 属性に同じ名 前を割り当てる必要があります。ビデオ信号を構成するすべてのポート (3 または 1) は、開始フレームと行末側帯 波信号を含む 1 つの AXI4-Stream インターフェイスでインプリメントされます。『AXI4-Stream Video IP およびシ ステム デザイン ガイド』 (UG934) に説明されている仕様に従ってください。
• AXI4-Lite Slave インタースレーブフェイスでは 、1 つまたは複数のポートをインプリメントできます。
• 詳細は、『Vivado Design Suite ユーザー ガイド: 高位合成』 (UG902) の「インターフェイス合成」を参照してくだ さい。
Interface Spec ブロックでは、現在のところ、最大 8 つの入力ポートと 8 つの出力ポートを含むサブシステムがサポ ートされています。
データ型サポート
Interface Spec ブロックでは、データ型は関係ありません。
パラメーター
[Function Protocol] タブのパラメーターは、次のとおりです。
[Mode]
[Mode] パラメーターは、ブロックレベルの I/O プロトコルを指定します。
[Mode] パラメーターの設定は、次のとおりです。
設定 説明
AXI4-Lite Slave AXI4-Lite Slave をブロック レベルの I/O プロトコルとして指定します。
Handshake ハンドシェイク プロトコルをブロック レベルの I/O プロトコルとして
指定します。
No block-level I/O Protocol ブロック レベルの I/O プロトコルなしと指定します。
Bundle
[Bundle] パラメーターは AXI4-Lite Slave インタースレーブフェイスの 場合に使用し、複数のポートを同じインターフ ェイスにまとめます。[Bundle] には、C 言語で有効な識別子を入力します (スペースおよび特殊文字は使用不可)。
[Offset]
[Offset] パラメーターは、AXI4-Lite Slave インタースレーブフェイスの 場合に、AXI4-Lite スレーブアドレス マップの
関数プロトコルに関連付けるアドレスオフセットを指定します。
[Offset] には、負以外の整数を入力します。
[Input ports] および [Output ports] タブのパラメーターは、次のとおりです。
[Name]
サブシステム ポートの名前を示します。
[Mode]
[Mode] パラメーターの設定は、次のとおりです。
設定 説明
Default ポートがスカラーの場合は Lite Slave]、スカラー以外の場合は
[AXI4-Stream] が使用されます。
AXI4-Stream [AXI4-Stream] プロトコルが使用されます。
AXI4-Stream (video) [AXI4-Stream (video)] プロトコルが使用されます。指定できるパラメータ
ーは、[Bundle]、[Video Format]、および [Video Component] です。
AXI4-Lite Slave [AXI4-Lite Slave] プロトコルが使用されます。指定できるパラメーターは、
[Bundle] および [Offset] です。
FIFO 要素が順次アクセスされる配列のプロトコルが使用されます。
Valid port Valid ポートのみを持つハンドシェイク プロトコルが使用されます。
Constant ポートに I/O プロトコルは追加されません。これは、デバイスがリセット
モードのときにのみ変化するコンフィギュレーション入力用のモードです。
このモードは、[Input ports] にのみ適用されます。
No protocol ポートに I/O プロトコルは追加されません。
Block RAM [Block RAM] インターフェイス プロトコルが使用されます。
Bundle
[Bundle] パラメーターは入力ポートまたは出力ポートに適用され、色成分が複数ある [AXI4-Stream (video)] インター フェイスを選択した場合に設定できます。色成分ごとに 1 つのポートがあるので、これらのポートの [Bundle] 属性に 同じ名前を指定して、同じ [AXI4-Stream (video)] インターフェイスにまとめられるようにします。
このパラメーターは、[AXI4-Lite Slave] インターフェイスを指定した場合にも使用され、[Bundle] 属性に同じ名前を指 定したポートが同じ AXI4-Lite Slave インターフェイスにまとめられます。
[Bundle] には、C 言語で有効な識別子を入力します (スペースおよび特殊文字は使用不可)。
[Offset]
[Offset] パラメーターは入力ポートまたは出力ポートに適用され、[AXI4-Lite Slave] インターフェイスを指定した場合
に使用されます。[AXI4-Lite Slave] アドレス マップ内のポートのアドレス オフセットを指定します。
[Video Format]
[Video Format] パラメーターは入力ポートまたは出力ポートに適用され、ビデオ信号の色フォーマットを指定します。
[AXI4-Stream (video)] インターフェイスの場合にのみ設定できます。オプションは、[Mono]、[YUV 4:2:2]、[YUV 4:4:4]、および [RGB] です。
[Video Component]
[VideoComponent] パラメーターは、入力ポートまたは出力ポートに適用され、ビデオ信号の色成分を指定します。
色成分が複数ある [Video Format] を使用する [AXI4-Stream (video)] インターフェイスにのみ適用されます。オプショ ンは、[Mono]、[YUV 4:2:2]、[YUV 4:4:4]、および [RGB] です。
[Video Format] の設定によって [Video Component] は次のようになります。
[Video Format] ビデオの色成分オプション
Mono なし
YUV 4:2:2 Y、U、V
[Video Format] ビデオの色成分オプション
YUV 4:4:4 Y、U、V
RGB R、G、B
Lesser
1 つ目の入力値が 2 つ目の入力値より小さいかどうかを要素ごとに判断します。上の入力が 1 つ目のオペランドに なります。
ライブラリ
Relational Operations
説明
このブロックには、2 つの入力信号 1 つの出力信号があります。2 つの入力を比較して、要素ごとに小なり比較演算 を実行します。1 つ目の入力は上の入力ポート、2 つ目の入力は下の入力ポートになります。出力信号の次元は入力 信号と同じになります。出力信号の要素は、1 つ目の入力信号の対応する要素が 2 つ目の信号の対応する要素よりも 小さい場合は true になり、それ以外の場合は false になります。
データ型サポート
サポートされるデータ型は、次のとおりです。
• 入力信号のデータ型には、整数、固定小数点、ブール型、浮動小数点が使用できます。
• 入力信号は、スカラー、ベクター、または行列にできます。入力が両方ともスカラーでない場合は、どちらも同 じ次元にする必要があります。
• 入力信号は実数である必要があります。
• 出力信号はブール型です。
• 両方の入力がスカラーの場合、出力信号の次元はスカラーになります。それ以外の場合、スカラーではない方の 入力の次元と同じになります。
パラメーター
設定するパラメーターはありません。
Lesser Equals
1 つ目の入力値が 2 つ目の入力値以下であるかどうかを要素ごとに判断します。上の入力が 1 つ目のオペランドに なります。
ライブラリ
説明
1 つ目の入力値が 2 つ目の入力値以下であるかどうかを要素ごとに判断します。1 つ目の入力が 2 つ目の入力以下の 場合は true (1)、それ以外の場合は false (0) が返されます。
データ型サポート
入力では、MATLAB® のネイティブ データ型と Vivado® HLS でサポートされる Ap_Fixed データ型がサポートされま す。出力型は常にブール型です。複素数データ型はサポートされません。スカラー、ベクターおよび行列次元の入力 がサポートされます。入力が両方ともスカラー以外の次元の場合は、同じ次元にする必要があります。
パラメーター
設定するパラメーターはありません。
Library Function
ユーザーの作成した C 関数をブロックとしてインポートします。
ライブラリ
ライブラリは、Library Function ブロックを作成した後に指定できます。
説明
Library Function ブロックを使用すると、ユーザーの C または C++ モデルを Model Composer にインポートして、ブ ロック シミュレーションおよびコード生成を実行できます。ブロックの I/O インターフェイスは、ツールにより関数 宣言から自動的に認識されます。Library Function ブロックは、xmcImportFunction スクリプトを実行してライブ ラリ関数のソース ファイルとヘッダー検索パスを指定すると作成されます。
Library Function ブロックの Model Composer での使用方法については、第 3 章: C/C++ コードのカスタム ブロック としてのインポートを参照してください。
データ型サポート
スカラー、ベクター、または行列を含む関数は、関数パラメーターとしてインポートできます。固定小数点も含め、
すべてのデータ型がサポートされます。複素値、実数成分および虚数成分、位相角はサポートされません。
パラメーター
次の図に Library Function ブロックの [Block Parameters] ダイアログ ボックスを示します。