メインコンテンツ

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

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

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

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

  1. アプリ ギャラリーで [HDL Coder] をクリックします。[HDL コード] タブの [アシスタンス] セクションで、[ワークフロー アドバイザー] をクリックして HDL ワークフロー アドバイザーを開きます。

  2. [ターゲット デバイスおよび合成ツールを設定] タスクで、[ターゲット ワークフロー][IP コアの生成] に設定し、[ターゲット プラットフォーム] として 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 ビットストリームのビルド] タスクを実行した後、ワークフロー アドバイザーは、以前のタスクをワークフロー アドバイザーで再実行することなくターゲット デバイスをプログラムするワークフロー スクリプトを生成するリンクを提供します。

HDL Workflow Advisor Log Window displaying the Synthesis Tool Log after the 'Build FPGA Bitstream' Task is run.

リンクをクリックして、スクリプトを 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;

参考

トピック