FC2カウンター FPGAの部屋 Vivado HLS 2014.4でラプラシアン・フィルタ関数をaxi masterモジュールにする1
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado HLS 2014.4でラプラシアン・フィルタ関数をaxi masterモジュールにする1

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする1”で使用しているラプラシアンフィルタのCソースを使ってIP化してみた。

ZYBOのZynqをターゲットにして、プロジェクトを作製した。

C Synthesis ボタンをクリックして、高位合成を行うと、ワーニングが出ている。

@W [HLS-41] Resource core 'AXI4LiteS' on port 'cam_addr' is deprecated. Please use the interface directive to specify the AXI interface.
@W [HLS-41] Resource core 'AXI4LiteS' on port 'lap_addr' is deprecated. Please use the interface directive to specify the AXI interface.
@W [HLS-41] Resource core 'AXI4LiteS' on port 'return' is deprecated. Please use the interface directive to specify the AXI interface.
@W [HLS-41] Resource core 'AXI4M' on port 'cam_fb' is deprecated. Please use the interface directive to specify the AXI interface.
@W [HLS-41] Resource core 'AXI4M' on port 'lap_fb' is deprecated. Please use the interface directive to specify the AXI interface.


Vivado_HLS_lap_filter_1_150129.jpg

今までのAXI バス用のディレクティブはこのように指定していた。

#pragma HLS INTERFACE ap_hs port=cam_addr
#pragma HLS INTERFACE ap_vld port=lap_addr
#pragma HLS RESOURCE variable=cam_addr core=AXI4LiteS metadata="-bus_bundle LiteS"
#pragma HLS RESOURCE variable=lap_addr core=AXI4LiteS metadata="-bus_bundle LiteS"
#pragma HLS RESOURCE variable=return core=AXI4LiteS metadata="-bus_bundle LiteS"

#pragma HLS INTERFACE ap_bus port=cam_fb depth=480000
#pragma HLS INTERFACE ap_bus port=lap_fb depth=480000
#pragma HLS RESOURCE variable=cam_fb core=AXI4M
#pragma HLS RESOURCE variable=lap_fb core=AXI4M


Vivado_HLS_lap_filter_2_150129.jpg

Vivado HLS 2014.1 から 2014.4 までの間に AXIバス用のディレクティブが変更されたようだ。
Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2014.3) 2014 年 10 月 1 日”を参照することにした。

146ページの”AXI4‐Lite インターフェイス”を見ると、下のように書くようだ。引用する。

void example(char *a, char *b, char *c)
{
#pragma HLS INTERFACE s_axilite port=return bundle=BUS_A
#pragma HLS INTERFACE s_axilite port=a bundle=BUS_A
#pragma HLS INTERFACE s_axilite port=b bundle=BUS_A
#pragma HLS INTERFACE s_axilite port=c bundle=BUS_A offset=0x0400
#pragma HLS INTERFACE ap_vld port=b
*c += *a + *b;
}


これを参考にラプラシアンフィルタのAXI4 Lite Slave ディレクティブを書き直した。

#pragma HLS INTERFACE s_axilite port=cam_addr bundle=BUS_AXI4LS
#pragma HLS INTERFACE s_axilite port=lap_addr bundle=BUS_AXI4LS
#pragma HLS INTERFACE s_axilite port=return bundle=BUS_AXI4LS
#pragma HLS INTERFACE ap_hs port=cam_addr
#pragma HLS INTERFACE ap_vld port=lap_addr


次に、154ページからの”AXI4 Master イ ン ターフ ェ イスの使用”を参照して、ラプラシアンフィルタのAXI4 Master インターフェースを書き直した。

#pragma HLS INTERFACE m_axi port=cam_fb depth=480000
#pragma HLS INTERFACE m_axi port=lap_fb depth=480000


これで、もう一度、C Synthesis ボタンをクリックして、高位合成を行った。今度は成功した。
合成後のレポートをここに置いておく。

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする1”を見ると、合成後の Interface Summary はap_ctrl_hs と ap_bus なのだが、Vivado HLS 2014.4 では、AXI4 Master バスと AXI4 Slave バスになっている。

生成された Verilog HDL ファイルも大きく違っている。下に、Vivado HLS 2013.4とVivado HLS 2014.1の生成されたIPを構成するVerilog HDLファイルの比較図を示す。
Vivado_HLS_2014_1_7_140419.png

今回、高位合成した Vivado HLS 2014.4 の Verilog HDL ファイルの構成を下に示す。
Vivado_HLS_lap_filter_3_150130.jpg

Vivado HLS 2014.1 と Vivado HLS 2014.4 の間で大きく変更されたようだ。
  1. 2015年01月29日 05:58 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/3059-6338b7ff
この記事にトラックバックする(FC2ブログユーザー)