AN 813: PCI Express* リファレンス・デザインを使用した Arria® 10デバイスの階層的なパーシャル・リコンフィグレーション

ID 683730
日付 9/24/2018
Public
ドキュメント目次

1.6. カスタムのペルソナを使用したリファレンス・デザインの拡張

このリファレンス・デザインは PCIe* を介したPRに向けて独自のペルソナを作成するテンプレート例を提供します。独自のペルソナを使用してリファレンス・デザインを拡張するには次を実行します。
  1. a10_pcie_devkit_cvp_hprフォルダーに移動します。
    cd a10_pcie_devkit_cvp_hpr
  2. pr_logic_impl_template.qsf.template実装リビジョンファイルのコピーを作成します。
    cp pr_logic_impl_template.qsf.template <persona_impl_revision_name>.qsf
  3. フォルダーを作成し、そのフォルダーにペルソナ固有のRTLをコピーします。
    mkdir <persona_name>
    cp <custom_persona>.sv <persona_name>/
  4. カスタムのトップレベル・エンティティーは、source/templates/pr_logic_template.svファイルで定義されるcustom_personaモジュールのポートに一致しなければいけません。次の例は、PCIeレジスターファイルを介して制御されるAvalon-MMインターフェイスを備えたデザインとのインターフェイス接続を示しています。
    module custom_persona #(
    parameter REG_FILE_IO_SIZE = 8
    )(
    //clock
    input wire clk,
    
    //active low reset, defined by hardware
    input wire rst_n, 
    //Persona identification register, used by host in host program
    output wire [31:0] persona_id, 
    //Host control register, used for control signals.
    input wire [31:0] host_cntrl_register, 
    // 8 registers for host -> PR logic communication
    input wire [31:0] host_pr [0:REG_FILE_IO_SIZE-1], 
    // 8 Registers for PR logic -> host communication
    output wire [31:0] pr_host [0:REG_FILE_IO_SIZE-1]
    );

    カスタマイズに向けて任意のパラレルI/Oポート (PIO) レジスターを使用します。host_prレジスターはペルソナからのデータをホストマシーンに送信します。pr_hostレジスターはホストマシーンからのデータをペルソナに送信します。

  5. トップレベル・エンティティー・ファイル内で、ペルソナIDを任意の32ビットの値に指定します。
    assign persona_id  = 32'h0000_aeed;
    注: テンプレート例では、8ビットだけを使用していますが、32ビットまでであれば任意の値を指定できます。
  6. pr_hostレジスターの未使用出力ポートを0に設定します。
    generate
    genvar i;
    //Tying unused output ports to zero.
    for (i = 2; i < REG_FILE_IO_SIZE; i = i + 1) begin
     assign pr_host [i] = 32'b0;
    end
    endgenerate
  7. 次の割り当てを含めるようpersona_impl_revision_name.qsfを変更します。
    set_global_assignment -name TOP_LEVEL_ENTITY a10_pcie_ref_design
    set_global_assignment -name SYSTEMVERILOG_FILE \
          <persona_name>/<custom_persona>.sv
    set_global_assignment -name QSYS_FILE <persona_specific_qsys_file>
    set_global_assignment -name IP_FILE <persona_specific_ip_file>
    set_instance_assignment -name QDB_FILE_PARTITION \
          a10_pcie_devkit_cvp_static.qdb -to | \
     
    set_instance_assignment -name ENTITY_REBINDING \
          <custom_persona_top_level_entity> -to u_top|design_core|pr_region_wrapper|pr_persona_wrapper|u_pr_logic
    
  8. 新しいPR実装を定義するために、パーシャル・リコンフィグレーション・フローのスクリプトを更新します。
  9. 実装リビジョンを含めるよう a10_pcie_devkit_cvp.qpfプロジェクトファイルを更新します。
    PROJECT_REVISION = "<persona_impl_revision_name>"
  10. リビジョンをコンパイルします。

    PRデザインにカスタムのペルソナを追加する場合の詳細については、アプリケーション・ノートPartially Reconfiguring a Design on Arria® 10 GX FPGA Development BoardAdding a New Persona to the Designの項を参照してください。