Main Content

Intel SoC ワークフロー用のカスタムのボードとリファレンス設計の定義

この例では、HDL Coder™ Intel® SoC ワークフローでカスタムのボードとリファレンス設計を定義して登録する方法を示します。

はじめに

この例を使用して、Intel SoC ワークフローの HDL ワークフロー アドバイザーで、Terasic DE1-SoC Development Kit とカスタム リファレンス設計を登録できます。

この例では Terasic DE-1 SoC を使用していますが、他の Intel SoC デバイス用のカスタム ボードやカスタム リファレンス設計も同様に定義して登録できます。

要件

  1. HDL の言語サポートおよびサポートされるサードパーティ製ツールとハードウェアにリストされている、サポートされているバージョンの Intel Quartus® Prime

  2. Intel SoC Embedded Design Suite

  3. Terasic DE1-SoC Development Kit

  4. HDL Coder Support Package for Intel SoC Devices

  5. Embedded Coder® Support Package for Intel SoC Devices

Intel SoC ハードウェアとツールの設定

1.ボードのリファレンス マニュアルを読んで、Terasic DE1-SoC で利用可能な機能を理解します。

2. 下図に示されているように、Terasic DE1-SoC を設定します。

3. USB COM ポートのデバイス ドライバーがコンピューターに適切にインストールされていることを確認します。

4.Terasic DE1-SoC 上の UART および USB Blaster ポートをコンピューターに接続します。

5. イーサネット ケーブルを使用して Terasic DE1-SoC をコンピューターに接続します。Terasic DE1-SoC の既定の IP アドレスは 192.168.1.101 です。

6. Terasic DE1-SoC Linux イメージ ファイルをダウンロードし、GZ アーカイブを展開して、RAW ディスク イメージ ファイルを microSD カードに書き込みます。microSD カードをコネクタ J11 に挿入します。

7. 次のコマンドを使用して Intel Quartus ツール パスを設定します。

    hdlsetuptoolpath('ToolName', 'Altera Quartus II', 'ToolPath', 'C:\intelFPGA\20.1.1\quartus\bin64\quartus.exe');

コマンドを実行するときに独自の Intel Quartus インストール パスを使用します。

8. 次のコマンドを使用して Terasic DE1-SoC ハードウェア接続を設定します。

h = alterasoc('192.168.1.101','root','cyclonevsoc');

Intel Quartus Prime を使用したリファレンス設計の作成

リファレンス設計は SoC 設計の構造全体を取得したもので、さまざまなコンポーネントやそれらの相互接続を定義します。HDL Coder の SoC ワークフローで生成される IP コアがリファレンス設計と統合され、SoC ボードのプログラミングに使用されます。次の図は、リファレンス設計、HDL IP コア、および SoC ボードの関係を説明しています。

このセクションでは、Intel Quartus および QSys 環境を使用して簡単なリファレンス設計を作成してエクスポートするために必要な基本的な手順の概要を示します。QSys システム統合ツールの詳細については、Altera®/Intel のドキュメンテーションを参照してください。

1.次の図に示されているように、New Project Wizard を使用して、デバイスのパーツ番号を指定して空の Quartus プロジェクトを作成します。

2. 次の図に示されているように、[Tools]、[Qsys] に移動して Quartus で Qsys を初期化します。

3. 作成した Qsys プロジェクトに対して IP カタログから [Cyclone-V Hard Processor System(HPS)][Altera PLL] の IP を選択します。次の図に示されているように、[Enable HPS-to-FPGA user 0 clock] (h2f_user0_clock) のボックスをオンにし、それを Altera PLL の refclk に接続します。

周辺装置のピンの設定やモード設定など、Hard Processor System に必要なその他の設定を完了します。

4. ワークフロー IP 統合のプロセス時に DUT IP に接続するために、h2f_axi_master ポート接続は開いたままにします。次の図に示されているように、Altera PLL IP と HPS IP 間の残りの接続を完了します。

5. Qsys ファイルを保存します。このファイルは、リファレンス設計プラグインの作成時に使用します。

HDL ワークフロー アドバイザーでの DE1-SoC ボードの登録

このセクションでは、HDL ワークフロー アドバイザーで Terasic DE1-SoC Development Kit を登録するために必要な手順の概要を示します。

1.ボード登録ファイルを hdlcoder_board_customization.m という名前で作成し、MATLAB® パスに追加します。

ボード登録ファイルにはボート プラグインのリストが含まれます。ボード プラグインは、ボード定義ファイルと、ボードに関連付けられたすべてのリファレンス設計プラグインを格納する MATLAB パッケージ フォルダーです。

次のコードは、HDL ワークフロー アドバイザーで Terasic DE1-SoC Development Kit を登録するためのボード プラグイン DE1SoCRegistration を含むボード登録ファイルの内容を記述したものです。

function r = hdlcoder_board_customization
% Board plugin registration file
% 1. Any registration file with this name on MATLAB path will be picked up
% 2. Registration file returns a cell array pointing to the location of
%    the board plugin
% 3. Board plugin must be a package folder accessible from MATLAB path,
%    and contains a board definition file
r = { ...
    'DE1SoCRegistration.plugin_board', ...
    };
end

2. ボード定義ファイルを作成します。

ボード定義ファイルには SoC ボードに関する情報が格納されます。

次のコードは、ボード プラグイン DE1SoCRegistration 内にある DE1-SoC ボード定義ファイル plugin_board.m の内容を記述したものです。

FPGA I/O ピンの位置 ('FPGAPin') と規格 ('IOSTANDARD') に関する情報は、Intel Quartus-II の Pin Planner から取得されます。

プロパティ BoardName で、HDL ワークフロー アドバイザーでの DE-1 SoC ボードの名前を Terasic DE1-SoC development Kit と定義しています。

function hB = plugin_board()
% Board definition
% Construct board object
hB = hdlcoder.Board;
hB.BoardName    = 'Terasic DE1-SoC development Kit';
% FPGA device information
hB.FPGAVendor   = 'Altera';
hB.FPGAFamily   = 'Cyclone V';
hB.FPGADevice   = '5CSEMA5F31C6';
hB.FPGAPackage  = '';
hB.FPGASpeed    = '';
% Tool information
hB.SupportedTool = {'Altera QUARTUS II'};
% FPGA JTAG chain position
hB.JTAGChainPosition = 2;
%% Add interfaces
% Standard "External Port" interface
hB.addExternalPortInterface( ...
    'IOPadConstraint', {'IO_STANDARD "2.5V"'});
% Custom board external I/O interface
hB.addExternalIOInterface( ...
  'InterfaceID',    'LEDs General Purpose', ...
  'InterfaceType',  'OUT', ...
  'PortName',       'GPLED', ...
  'PortWidth',      10, ...
  'FPGAPin',        {'V16', 'W16', 'V17', 'V18', 'W17', 'W19', 'Y19', 'W20', 'W21', 'Y21'}, ...
  'IOPadConstraint', {'IO_STANDARD "3.3-V LVTTL"'});
hB.addExternalIOInterface( ...
   'InterfaceID',    'Switches', ...
   'InterfaceType',  'IN', ...
   'PortName',       'SW', ...
   'PortWidth',      10, ...
   'FPGAPin',        {'AB12', 'AC12', 'AF9', 'AF10','AD11', 'AD12', 'AE11', 'AC9', 'AD10', 'AE12'}, ...
   'IOPadConstraint', {'IO_STANDARD "3.3-V LVTTL"'});
hB.addExternalIOInterface( ...
   'InterfaceID',    'Push Buttons', ...
   'InterfaceType',  'IN', ...
   'PortName',       'KEY', ...
   'PortWidth',      4, ...
   'FPGAPin',        {'AA14', 'AA15', 'W15', 'Y16'}, ...
   'IOPadConstraint', {'IO_STANDARD "3.3-V LVTTL"'});

HDL ワークフロー アドバイザーでのカスタム リファレンス設計の登録

このセクションでは、HDL ワークフロー アドバイザーでカスタム リファレンス設計を登録するために必要な手順の概要を示します。

1.SoC ボードに関連付けられたリファレンス設計プラグインのリストを格納するリファレンス設計登録ファイルを hdlcoder_ref_design_customization.m という名前で作成します。

リファレンス設計プラグインは、リファレンス設計定義ファイルと SoC 設計プロジェクトに関連付けられたすべてのファイルを格納する MATLAB パッケージ フォルダーです。リファレンス設計登録ファイルには、関連付けられたボードの名前も含める必要があります。

次のコードは、ボード Terasic DE1-SoC development Kit に関連付けられたリファレンス設計プラグイン DE1SoCRegistration.qsys_base_170 を含む DE1-SoC リファレンス設計登録ファイルの内容を記述したものです。

function [rd, boardName] = hdlcoder_ref_design_customization
% Reference design plugin registration file
% 1. The registration file with this name inside of a board plugin folder
%    will be picked up
% 2. Any registration file with this name on MATLAB path will also be picked up
% 3. The registration file returns a cell array pointing to the location of
%    the reference design plugins
% 4. The registration file also returns its associated board name
% 5. Reference design plugin must be a package folder accessible from
%    MATLAB path, and contains a reference design definition file
rd = {'DE1SoCRegistration.qsys_base_170.plugin_rd', ...
     };
boardName = 'Terasic DE1-SoC development Kit';
end

2. リファレンス設計定義ファイルを作成します。

リファレンス設計定義ファイルは、カスタム リファレンス設計と HDL Coder の SoC ワークフローで生成される HDL IP コアの間のインターフェイスを定義します。

次のコードは、リファレンス設計プラグイン DE1SoCRegistration.qsys_base_170 内にあるボード Terasic DE1-SoC development Kit に関連付けられた DE1-SoC リファレンス設計定義ファイル plugin_rd.m の内容を記述したものです。プロパティ ReferenceDesignName で、HDL ワークフロー アドバイザーでのリファレンス設計の名前を Demo system と定義しています。

function hRD = plugin_rd()
% Reference design definition
% Construct reference design object
hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Altera QUARTUS II');
hRD.ReferenceDesignName = 'Demo system)';
hRD.BoardName = 'Terasic DE1-SoC development Kit';
% Tool information
hRD.SupportedToolVersion = {'17.0','17.1'};
%% Add custom design files
% add custom Qsys design
hRD.addCustomQsysDesign( ...
    'CustomQsysPrjFile', 'system_soc.qsys');
%% Add interfaces
% add clock interface
hRD.addClockInterface( ...
    'ClockConnection',     'pll_0.outclk0', ...
    'ResetConnection',     'hps_0.h2f_reset',...
    'DefaultFrequencyMHz', 50,...
    'MinFrequencyMHz',     5,...
    'MaxFrequencyMHz',     500,...
    'ClockModuleInstance', 'pll_0',...
    'ClockNumber',         0);
% add AXI4 and AXI4-Lite slave interfaces
hRD.addAXI4SlaveInterface( ...
    'InterfaceConnection', 'hps_0.h2f_axi_master', ...
    'BaseAddress',         '0x0000');

DE1-SoC リファレンス設計プラグイン フォルダー DE1SoCRegistration.qsys_base_170 に、前に Intel Quartus Prime プロジェクトで保存した Qsys ファイル system_soc.qsys を含める必要があります。DE1-SoC リファレンス設計定義ファイル plugin_rd.m で、SoC 設計プロジェクト ファイルを次のステートメントで識別します。

hRD.addCustomQsysDesign('CustomQsysPrjFile', 'system_soc.qsys');

SoC 設計プロジェクト ファイルに加え、plugin_rd.m では、次の図のステートメントに示されているように、カスタム リファレンス設計と HDL IP コアの間のインターフェイス接続も定義します。

hRD.addClockInterface( ...
    'ClockConnection',     'pll_0.outclk0', ...
    'ResetConnection',     'hps_0.h2f_reset',...
    'DefaultFrequencyMHz', 50,...
    'MinFrequencyMHz',     5,...
    'MaxFrequencyMHz',     500,...
    'ClockModuleInstance', 'pll_0',...
    'ClockNumber',         0);
hRD.addAXI4SlaveInterface( ...
    'InterfaceConnection', 'hps_0.h2f_axi_master', ...
    'BaseAddress',         '0x0000');

Terasic DE1-SoC の SoC ワークフローの実行

これまでのセクションでは、SoC ワークフローの HDL ワークフロー アドバイザーで、Terasic DE1-SoC とカスタム リファレンス設計を定義して登録する手順について説明しました。このセクションでは、カスタムのボードとリファレンス設計の登録システムを使用して、Terasic DE1-SoC 上の LED を点滅させる HDL IP コアを生成します。

1.Terasic DE1-SoC 登録ファイルを MATLAB パスに追加します。

unzip('DE1SOC.zip')
addpath(genpath('DE1SOC'));

2. 次のコマンドを使用して、LED の点滅を実装する Simulink モデルを開きます。

open_system('hdlcoder_led_blinking');

HDL ワークフロー アドバイザーを使用して HDL IP コアを生成します。

1.HDL ワークフロー アドバイザーの IP コアの生成ワークフローを使用することで、Simulink モデルから共有可能で再利用可能な IP コア モジュールを自動的に生成できます。HDL Coder で、Simulink ブロックから HDL コードが生成され、また IP コアを組み込みプロセッサに接続する AXI インターフェイス ロジック用の HDL コードも生成されます。HDL Coder により、生成されたすべてのファイルが IP コア フォルダーにパッケージ化されます。次に、生成された IP コアを Intel Qsys 環境の大規模な FPGA 組み込み設計と統合できます。

2. IP コアの生成ワークフローを開始します。

2.1. hdlcoder_led_blinking/led_counter サブシステムから led_counter サブシステムを右クリックして [HDL コード][HDL ワークフロー アドバイザー] を選択し、HDL ワークフロー アドバイザーを開きます。

2.2. [ターゲットを設定][ターゲット デバイスおよび合成ツールを設定] タスクの [ターゲット ワークフロー][IP Core Generation] を選択します。

2.3. [ターゲット プラットフォーム][Terasic DE1-SoC development Kit] を選択します。

2.4. [このタスクを実行] をクリックして [ターゲット デバイスおよび合成ツールを設定] タスクを実行します。

3. タスク 1.2 の [ターゲットのリファレンス設計を設定] で、既定のシステムが選択されています。[このタスクを実行] をクリックします。

4.ターゲット インターフェイスを構成します。

DUT 内の各端子を IP コアのターゲット インターフェイスのいずれかにマッピングします。この例では、入力端子 [Blink_frequency] および [Blink_direction][AXI4] にマッピングされています。AXI4-Lite をターゲット プラットフォーム インターフェイスとして選択することもできます。出力端子 [LED] は、Terasic DE1-SoC Development Kit 上の LED ハードウェアに接続する外部インターフェイス [LEDs General Purpose [0:9]] にマッピングされています。

5. Getting Started with Targeting Intel SoC Devicesの例の "Generate an HDL IP core using the HDL Workflow Advisor" のセクションに記載されている手順 3 と手順 4 に従って、IP コアを生成して IP コアの生成レポートを表示します。

6. Getting Started with Targeting Intel SoC Devicesの例の "Integrate the IP core with the Intel Qsys environment" のセクションに記載されている手順 1 に従って、リファレンス設計に IP コアを統合して Qsys プロジェクトを作成します。

7. [組み込みシステムの統合][プロジェクトを作成] タスクを完了した後には、SoC ワークフローで作成された Intel Qsys プロジェクトを確認できます。次の図は、HDL IP コアを強調表示した SoC プロジェクトを示しています。カスタム リファレンス設計と HDL IP コアの関係をさらに詳しく理解するために、このプロジェクトをカスタム リファレンス設計プラグインで使用した前のプロジェクトと比較すると有益です。

8. Getting Started with Targeting Intel SoC Devicesの例の "Integrate the IP core with the Intel Qsys environment" のセクションに記載されている手順 2、3、4 にそれぞれ従って、ソフトウェア インターフェイス モデルを生成し、FPGA ビットストリームを生成し、ターゲット デバイスをプログラムします。

9. ビットストリームの読み込み後、Terasic DE1-SoC 上の LED が点滅を開始します。また、ソフトウェア インターフェイス モデルを実行して LED の点滅頻度および方向を制御できます。生成されたソフトウェア インターフェイス モデルから LED の点滅頻度および方向を制御するには、Getting Started with Targeting Intel SoC Devicesの例の "Generate a software interface model" セクションを参照してください。