Main Content

ターゲット FPGA ボードまたは SoC デバイスのプログラム

接続されたターゲット SoC デバイスまたは FPGA ボードを構成またはプログラムするには、HDL ワークフロー アドバイザーの IP Core Generation ワークフローを使用します。

ターゲット デバイスをプログラムする方法

ワークフロー アドバイザーの UI の使用

  1. HDL ワークフロー アドバイザーを開きます。ターゲット FPGA に実装するアルゴリズムを含む DUT サブシステムを右クリックし、[HDL コード][HDL ワークフロー アドバイザー] を選択します。

  2. [ターゲット デバイスおよび合成ツールを設定] タスクで、[ターゲット ワークフロー]IP Core Generation を指定し、[ターゲット プラットフォーム] として Generic Xilinx Platform または Generic Altera Platform 以外を指定します。

  3. [ターゲット デバイスをプログラム] タスクを右クリックし、[選択したタスクまで実行] を選択します。

  4. [ターゲット デバイスをプログラム] タスクで、[プログラミング メソッド] を指定し、このタスクを実行します。

HDL ワークフロー アドバイザーの詳細については、HDL ワークフロー アドバイザーのご利用の前にを参照してください。

ワークフロー アドバイザー スクリプトの使用

コマンド ラインでターゲット デバイスをプログラムするには、[ターゲット デバイスおよび合成ツールを設定] タスクでターゲット ワークフローとターゲット プラットフォームを指定した後、HDL ワークフロー アドバイザー設定をスクリプトにエクスポートします。[HDL ワークフロー アドバイザー] ウィンドウで、[ファイル][スクリプトへのエクスポート] を選択します。スクリプトは、hWC で表される hdlcoder.WorkflowConfig オブジェクトを作成し、構成します。

スクリプトを実行する前に、WorkflowConfig オブジェクトの ProgrammingMethod プロパティを使用することで、ターゲット ハードウェアをプログラムする方法を指定できます。このコードの抜粋は、既定の Download [プログラミング メソッド] を使用するとき、HDL ワークフロー アドバイザーからエクスポートしたスクリプト例を表示します。[ターゲット デバイスをプログラム] タスクを実行するには、WorkflowConfig オブジェクトの RunTaskProgramTargetDevice 属性を true に設定して、このスクリプトをカスタマイズします。

% This script was generated using the following parameter values:

% ...

% Set properties related to 'RunTaskProgramTargetDevice' Task
hWC.RunTaskProgramTargetDevice = true;
hWC.ProgrammingMethod = hdlcoder.ProgrammingMethod.Download;

% Validate the Workflow Configuration Object
hWC.validate;

%% Run the workflow
hdlcoder.runWorkflow('hdlcoder_led_blinking/led_counter', hWC);

[FPGA ビットストリームのビルド] タスクを実行した後、ワークフロー アドバイザーは、以前のタスクをワークフロー アドバイザーで再実行することなくターゲット デバイスをプログラムするワークフロー スクリプトを生成するリンクを提供します。

リンクをクリックして、スクリプトを MATLAB® エディターで開きます。このコードの抜粋は、HDL ワークフロー アドバイザーによって生成されたスクリプト例を表示します。HDL ワークフロー アドバイザーを閉じると、スクリプトを実行し、他のワークフロー タスクを実行することなくターゲット ハードウェアをプログラムできます。

% Load the Model

% ...

% Set Workflow tasks to run
hWC.RunTaskGenerateRTLCodeAndIPCore = false;
hWC.RunTaskCreateProject = false;
hWC.RunTaskGenerateSoftwareInterface = false;
hWC.RunTaskBuildFPGABitstream = false;
hWC.RunTaskProgramTargetDevice = true;

% Set properties related to 'RunTaskProgramTargetDevice' Task
hWC.ProgrammingMethod = hdlcoder.ProgrammingMethod.Download;

% Validate the Workflow Configuration Object
hWC.validate;
スクリプトベースのワークフローの詳細については、スクリプトを使用した HDL ワークフローの実行を参照してください。

プログラミング メソッド

ダウンロード

Zynq® と Intel® SoC ハードウェア プラットフォーム向けのリファレンス設計を使用している場合、コード ジェネレーターは既定の [プログラミング メソッド] として Download を使用します。

[プログラミング メソッド] として Download を使用して [ターゲット デバイスをプログラム] タスクを実行すると、HDL Coder™ は、生成された FPGA ビットストリーム、Linux デバイスツリー、システム初期化スクリプトをターゲット ボード上の SD カードにコピーし、SD カード上のビットストリームを持続的に保持します。このプログラミング メソッドの使用には、Embedded Coder® ライセンスは必要ありません。[IP アドレス][SSH ユーザー名]、および [SSH パスワード] を指定して、SSH オブジェクトを作成できます。HDL Coder は、SSH オブジェクトを使用して、ビットストリームを SD カードにコピーし、ボードのプログラムを変更します。

Download メソッドを使用することを推奨します。このメソッドは FPGA ビットストリームをプログラムし、Linux システムを起動する前に、対応する Linux デバイスツリーを読み込むためです。そのため、Download メソッドの方が堅牢で、起動時のカーネル パニックやカーネル ハングが起こりません。Linux の再起動中に、FPGA ビットストリームは SD カードから自動的に再プログラムされます。ワークフロー アドバイザー スクリプトを使用してワークフローを実行するときに Download[プログラミング メソッド] として指定するには、WorkflowConfig オブジェクトの ProgrammingMethod プロパティ hWCDownload に設定されていることを確認してください。

hWC.ProgrammingMethod = hdlcoder.ProgrammingMethod.Download;

JTAG

JTAG[プログラミング メソッド] として指定して [ターゲット デバイスをプログラム] タスクを実行するとき、HDL Coder は JTAG ケーブルを使用してターゲット SoC デバイスをプログラムします。このメソッドを使用して Intel、Xilinx® SoC デバイスおよびスタンドアロン FPGA ボードをプログラムします。

SoC デバイスのプログラミングでは、Download メソッドを使用することを推奨します。JTAG モードでは ARM プロセッサは関係せず、オンボード FPGA が直接プログラムされます。このモードでは Linux デバイス ツリーは更新されず、ビットストリームがデバイス ツリーと一致しない場合には Linux システムのクラッシュやカーネル パニックに至ることがあります。この状況を回避するには、Download メソッドを使用して SoC デバイスをプログラムします。

スタンドアロン Intel および Xilinx FPGA ボードには組み込みの ARM プロセッサがなく、JTAG が FPGA ボードをプログラムする既定のメソッドです。

ワークフロー アドバイザー スクリプトを使用してワークフローを実行するときに JTAG[プログラミング メソッド] として指定するには、スクリプトを実行する前に、WorkflowConfig オブジェクトの ProgrammingMethod プロパティ hWCJTAG に設定します。

hWC.ProgrammingMethod = hdlcoder.ProgrammingMethod.JTAG;

カスタム

ターゲット デバイスをプログラムする際、独自のカスタム リファレンス設計を作成するときにカスタム プログラミング メソッドを指定できます。hdlcoder.ReferenceDesign クラスの CallbackCustomProgrammingMethod を使用して、[ターゲット デバイスをプログラム] タスクを実行するときに実行されるコールバック関数の関数ハンドルを登録します。コールバック関数を定義するには、MATLAB 関数を定義するファイルを作成し、そのファイルを MATLAB パスに追加します。

この例のコードの抜粋では、カスタム プログラミング メソッドを使用するリファレンス設計定義ファイルを示します。詳細は、CallbackCustomProgrammingMethod を参照してください。

unction hRD = plugin_rd()
% Reference design definition

% ...

% Construct reference design object
hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado');

hRD.ReferenceDesignName = 'Parameter Callback Custom';
hRD.BoardName = 'ZedBoard';

% Tool information
hRD.SupportedToolVersion = {'2020.2'};

% ...

hRD.CallbackCustomProgrammingMethod = 
            @my_reference_design.callback_CustomProgrammingMethod;

関連する例

詳細