FC2カウンター FPGAの部屋 2019年10月05日
FC2ブログ

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

FPGAの部屋

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

SDx のUltra96-V2 用プラットフォームを作る2(Platform Hardware Interfacesの宣言)

SDx のUltra96-V2 用プラットフォームを作る2(ブロックデザインの作成)”の続き。

前回は、ハードウェア・プラットフォーム用のブロックデザインを作成した。今回は、Platform Hardware Interfacesとして宣言するために、Vivado で Platform Interfaces を設定する。

今回は、2018.3 SDSoC™ Development Environment Tutorials の Lab1: Creating the DSA for a Zynq UltraScale+ MPSoC Processor Design の Step 3: Declaring the Platform Hardware Interfaces を参考にする。

Step 3: Declaring the Platform Hardware Interfaces にはいろいろと書いてあったが、結局 SDSoC でアクセラレーションする時にどのポートやクロック、割り込みリソースを使うかを指定しているのだと思う。
それではやっていこう。

Vivado 2018.3 の Window メニューからPlatform Interfaces を選択する。
platform interfaces が開く。
SDx_platform_28_191005.png

Enable platform interfaces をクリックした。
すると、SDSoC で使用できるインターフェースの一覧が表示される。
SDx_platform_29_191005.png

これはハイドされているので、まだ選択されていないようだ。
Platform を選択すると、Platform Properties ウインドウでPlatform の情報を設定できる。
SDx_platform_31_191005.png

board を Ultra96V2 に変更した。
SDx_platform_38_191005.png

ダブルクリックか、項目を選択してEnable を選択することで有効化できる。
clk_wiz_0 の clk_out1 〜 clk_out7 までを有効化した。
SDx_platform_32_191005.png

clk_out2 をクリックして、Platform Interface Properties ウインドウで Option タブをクリックして、 is_default のチェックボックスにチェックを入れる。
SDx_platform_33_191005.png

次に zynq_ultra_ps_e_0 のインターフェースの内で、 pl_clk0, S_AXI_ACP_FPD, and S_AXI_LPD を除くインターフェースを有効にする。
SDx_platform_34_191005.png

xlconcat_0 の In0 〜 In7 を有効にする。
SDx_platform_35_191005.png

xlconcat_1 の In0 〜 In7 を有効にする。
SDx_platform_36_191005.png

xlconcat_0 をクリックして、Block Properties ウインドウのProperties タブをクリックする。
PFM を展開すると、IRQ のどこが有効になっているか?の PFM プロバティが見える。
SDx_platform_37_191005.png

これで Platform Hardware Interfaces の設定は終了だが、 Step 3: Declaring the Platform Hardware Interfaces に記載されているTCL での設定を引用する。

1. PFM NAME
    set_property PFM_NAME “vendor:lib:zcu102_board:1.0”\  
    [get_files [get_property FILE_NAME [get_bd_designs]]]
2. PFM CLOCK
    set_property PFM.CLOCK {\  
    clk_out1 {id “1” is_default “false”\  
    proc_sys_reset “proc_sys_reset_0”}\  
    clk_out2 {id “2” is_default “true”\
    proc_sys_reset “proc_sys_reset_1”}\  
    clk_out3 {id “3” is_default “false”\  
    proc_sys_reset “proc_sys_reset_2”}\  
    clk_out4 {id “4” is_default “false”\  
    proc_sys_reset “proc_sys_reset_3”}\  
    clk_out5 {id “5” is_default “false”\  
    proc_sys_reset “proc_sys_reset_4”}\  
    clk_out6 {id “6” is_default “false”\  
    proc_sys_reset “proc_sys_reset_5”}\  
    clk_out7 {id “7” is_default “false”\  
    proc_sys_reset “proc_sys_reset_6”}\  
    } [get_bd_cells /clk_wiz_0]
3. PFM AXI Ports
    set_property PFM.AXI_PORT {\  
    M_AXI_HPM0_FPD {memport “M_AXI_GP” sptag “” memory “”}\  
    M_AXI_HPM1_FPD {memport “M_AXI_GP” sptag “” memory “”}\  
    M_AXI_HPM0_LPD {memport “M_AXI_GP” sptag “” memory “”}\  
    S_AXI_HPC0_FPD {memport “S_AXI_HPC” sptag “” memory “”}\  
    S_AXI_HPC1_FPD {memport “S_AXI_HPC” sptag “” memory “”}\  
    S_AXI_HP0_FPD {memport “S_AXI_HP” sptag “” memory “”}\  
    S_AXI_HP1_FPD {memport “S_AXI_HP” sptag “” memory “”}\  
    S_AXI_HP2_FPD {memport “S_AXI_HP” sptag “” memory “”}\  
    S_AXI_HP3_FPD {memport “S_AXI_HP” sptag “” memory “”}\  
    } [get_bd_cells /zynq_ultra_ps_e_0]
4. PFM Interrupts
    set_property PFM.IRQ {\  
    In0 {} In1 {} In2 {} In3 {} In4 {} In5 {} In6 {} In7 {}\
    } [get_bd_cells {/xlconcat_0 /xclconcat_1}]

  1. 2019年10月05日 04:52 |
  2. SDSoC
  3. | トラックバック:0
  4. | コメント:0