ターゲット FPGA ボードまたは SoC デバイスのプログラム
接続されたターゲット SoC デバイスまたは FPGA ボードを構成またはプログラムするには、HDL ワークフロー アドバイザーの IP Core Generation
ワークフローを使用します。
ターゲット デバイスをプログラムする方法
ワークフロー アドバイザーの UI の使用
HDL ワークフロー アドバイザーを開きます。ターゲット FPGA に実装するアルゴリズムを含む DUT サブシステムを右クリックし、[HDL コード] 、 [HDL ワークフロー アドバイザー] を選択します。
[ターゲット デバイスおよび合成ツールを設定] タスクで、[ターゲット ワークフロー] に
IP Core Generation
を指定し、[ターゲット プラットフォーム] としてGeneric Xilinx Platform
またはGeneric Altera Platform
以外を指定します。[ターゲット デバイスをプログラム] タスクを右クリックし、[選択したタスクまで実行] を選択します。
[ターゲット デバイスをプログラム] タスクで、[プログラミング メソッド] を指定し、このタスクを実行します。
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;
プログラミング メソッド
ダウンロード
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
プロパティ hWC
が Download
に設定されていることを確認してください。
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
プロパティ hWC
を JTAG
に設定します。
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;