HLSで高位合成を行うと、RTLと共にSDK用のAPIが生成されます。APIの利用方法をベアメタルで確認しました。実際のAPIテストプログラム実行結果まとめ確認用のC関数float_topという名前の関数です。aとbに単精度の浮動小数点形式の値を設定すると、cに乗算結果が格納されます。InterfaceはAXI4-Liteです(別ファイルのDirectiveで指定しています)。b;}float_topを高位合成し、そのIPコアを組込んだシステムの詳細はこちらです。通常の手順でVivadoのSDKを起動します。具体的な手順は次のとおりです。Vivado上で次の処理を実行します。SDKを実行SDK起動後、SDK上で次の処理を実行します。Explorerは次のような構成になります。Projectを作成しています。関数float_topは、aとbが入力で、cが出力(演算結果)です。HLSが生成したAPIには次の処理を行う関数が存在するはずです。aに値を設定する関数bに値を設定する関数cの値を読み出す関数また、ハードウェアを制御するために、次の処理を行うAPIが存在するはずです。実際のAPIIPコアのAPIは、次のディレクトリに格納されています(この例の場合)。design_1_wrapper_hw_platform_0->drivers->float_top_v1_0->data->srcディレクトリには、次のファイルが格納されています。xfloat_top_hw.hxfloat_top_linux.cxfloat_top_sinit.cxfloat_top.cxfloat_top.hfloat_topを制御するAPIを定義したファイルがxfloat_top.hです。そのソースコードがxfloat_top.cです。定義されているAPIの意味は、ug902-vivado-high-level-synthesis.pdfに記載されていました。主なAPIの意味は次のとおりです。生成されるAPIは、Directiveの記述などで多少変わるようです。cが有効であることを示す情報テストプログラムこのテストプログラムでは、10回のループで適当なfloatの値a,bを生成し、その乗算結果cを求めています。乗算結果は、IPコアとプログラムの両方で計算し、違いがあるかをチェックしています。floatの値は、32ビットのバイナリに変換してからfloat_topに渡しています。同様に、float_topの演算結果は32ビットのバイナリからfloatに変換する必要があります。XFloat_top_CfgInitializeの設定方法は、SDKのサンプルに付属するGPIOなどと同様です。実行結果IPコアの処理結果と期待値が完全に一致しました。done.まとめAXI4-Liteインターフェースの場合、次の手順でIPコアにアクセスできました。IPコアをDE0-Nano-SoCに移植したところ、描画結果が正しく表示されないという現象が発生しました。LTS(64bit)にインストールした時のメモです。実際にWISHBONEバスが多く使われています。Bitstreamをコマンドラインから実行する場合の手順です。ACPの実験その3前回の実験で、ACPを有効にすることができました。ACPを有効にするために必要とされている設定を個別に解除した場合、本当にACPが無効になるのかを確認しました。A...FPGAZynq-7000のAXI3にAXI4を接続するZynq-7000は3種類のAXI(AXI_GP,AXI_HP,AXI_ACP)をサポートしていますが、いずれもAXIのバージョンはAXI3です。AXI4とAXI3にはいくつかの違いがありますが、大きな違いの1つが最大バースト長です。ディジタル技術資料タイトルとURLをコピーしました。