FC2カウンター FPGAの部屋 Vivado HLSで作ったラプラシアン・フィルタAXI4 Master IPを使う1
FC2ブログ

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

FPGAの部屋

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

Vivado HLSで作ったラプラシアン・フィルタAXI4 Master IPを使う1

Vivado HLSでラプラシアン・フィルタ関数をaxi masterモジュールにする2”で作ったAXI4 Lite Slave と AXI4 Master の 2種類のAXIバスを実装するラプラシアン・フィルタ IPをXPSのカスタムIPとして使って見ようと思う。

Verilog HDLソースコードをちらっと見たが、ap_start をイネーブルにすると、AXI4 Master アクセスが動作する仕様のような気がする。そうでないと、フレーム・バッファのアドレスを書く前にAXI4 Master アクセスであらぬアドレスにラプラシアン・フィルタの出力データを書かれると非常にまずい。下に、AXI4 Lite Slave バスのアドレスマップを示す。

//------------------------Address Info-------------------
// 0x00 : Control signals
// bit 0 - ap_start (Read/Write/COH)
// bit 1 - ap_done (Read/COR)
// bit 2 - ap_idle (Read)
// bit 3 - ap_ready (Read)
// bit 7 - auto_restart (Read/Write)
// others - reserved
// 0x04 : Global Interrupt Enable Register
// bit 0 - Global Interrupt Enable (Read/Write)
// others - reserved
// 0x08 : IP Interrupt Enable Register (Read/Write)
// bit 0 - Channel 0 (ap_done)
// bit 1 - Channel 1 (ap_ready)
// others - reserved
// 0x0c : IP Interrupt Status Register (Read/TOW)
// bit 0 - Channel 0 (ap_done)
// bit 1 - Channel 1 (ap_ready)
// others - reserved
// 0x10 : Control signal of cam_addr
// bit 0 - cam_addr_ap_vld (Read/Write/COH)
// bit 1 - cam_addr_ap_ack (Read)
// others - reserved
// 0x14 : Data signal of cam_addr
// bit 31~0 - cam_addr[31:0] (Read/Write)
// 0x18 : Control signal of lap_addr
// bit 0 - lap_addr_ap_vld (Read/Write/SC)
// others - reserved
// 0x1c : Data signal of lap_addr
// bit 31~0 - lap_addr[31:0] (Read/Write)
// 0x20 : Data signal of ap_return
// bit 31~0 - ap_return[31:0] (Read)
// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake)


・最初に、D:\HDL\FndtnISEWork\Zynq-7000\ZedBoard\Zed_OOB_Design2_HLS\hw\xps_proj\pcores にVivdo HLSで生成した lap_filter_axim_top_v1_00_a をコピーした。
HLS_lap_fil_axim_8_131014.png

・XPSで、Project メニューからRescan User Repositories を実行しなくても、lap_filter_axim_top IP がすでに、XPSのProject Local PCoresの中に入っていた。
HLS_lap_fil_axim_9_131014.png

・lap_filter_axim_top IP をクリックして、Add IPを選択した。
HLS_lap_fil_axim_10_131014.png

・ダイアログが出たので、Yes ボタンをクリックした。
HLS_lap_fil_axim_11_131014.png

・XPS Core Config ダイアログが出た。C_M_AXI_CAM_FB_CACHE_VALUE と C_M_AXI_LAP_FB_CACHE_VALUE が 0b0011 だ。以前、AXI4 Master モジュールを作った時に0011の Normal Non-cacheable Bufferable だと、BRESPが10でSLVERRになってバス転送が失敗してしまったのだが、大丈夫なのだろうか?とりあえずは、他の設定が違うとこれでも良いかもしれないので、デフォルトのままとした。
HLS_lap_fil_axim_12_131014.png

・XPSプロジェクトに lap_filter_axim_top_0 が入った。
HLS_lap_fil_axim_14_131014.png

・PSのA_AXI_HP3ポートが余っているので、これを生かそう。ZynqタブでHigh Parformance AXI 32b64b Slave Prots をクリックした。
HLS_lap_fil_axim_15_131014.png

・Enable S_AXI_HP3 interface にチェックを入れた。後はデフォルトのまま、OKボタンをクリックした。
HLS_lap_fil_axim_16_131014.png

・AXI Interconnect を追加しよう。Bus and Bridge から選んでAdd IPした。
HLS_lap_fil_axim_17_131014.png

・いつものダイアログ
HLS_lap_fil_axim_18_131014.png

・XPS Core Config の画面。デフォルトのまま、OKボタンをクリックした。
HLS_lap_fil_axim_19_131014.png

・axi_interconnetc_4 が生成された。S_AXI_HP3も生きたのがわかる。
HLS_lap_fil_axim_20_131014.png

・lpa_filter_axim_top_0 のM_AXI_CAM_FB とM_AXI_LAP_FB をaxi_interconnetc_4 に接続した。
HLS_lap_fil_axim_21_131014.png

・PSのS_AXI_HP3もaxi_interconnetc_4 に接続し、lpa_filter_axim_top_0 のM_AXI_CAM_FB とM_AXI_LAP_FB と接続した。
HLS_lap_fil_axim_22_131014.png

・axi_interconnetc_4 のINTERCONNECT_ACLK とINTERCONNECT_ARESETN が接続されていなかったので、以下の図のように接続した。
HLS_lap_fil_axim_23_131014.png

・Address タブで、lap_filter_axim_top_0 のアドレスを 0x49000000 にマップした。
HLS_lap_fil_axim_24_131014.png

・chipscope_axi_monitor を lap_filter_axim_top_0 の 3つのAXIバスに接続した。
HLS_lap_fil_axim_25_131014.png

・Project メニューから Design Rule Check を実行したら、エラーがでた。

・エラー内容は、S_AXI_HP3_ACLKがつながっていないというエラーだった。早速、接続した。
HLS_lap_fil_axim_26_131014.png

・これで Design Rule Check もOKになった。

・Project メニューからClean All Gnerated Files を選んで、すべての生成ファイルを削除した。
HLS_lap_fil_axim_27_131014.png

これでXPSでの作業は終了だ。
  1. 2013年10月14日 10:05 |
  2. Co-design
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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