InterLink InterLink

CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
Impulse Accelerated Technologies 社 CoDeveloper
Altera Nios Ⅱプラットフォームサポートパッケージ(
プラットフォームサポートパッケージ(Platform Support Package)
Package)の
操作手順チュートリアル
操作手順
チュートリアル
チュートリアル1
チュートリアル1:NiosII プラットフォームで
プラットフォームで HelloWorld アプリケーションを
アプリケーションを実行する
実行する
InterLink
(有)インターリンク
〒231-0023 横浜市中区山下町 252 グランベル横浜ビル 9 階
TEL:045-663-5940 / FAX:045-663-5945
E-mail: [email protected]
URL: http://www.ilink.co.jp
1 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
概要
このチュートリアルでは、Altera 社のソフトウェア QuartusⅡ、SPOC Builder、NiosⅡIDE ツールで使用する為
の「RTL フォームでのハードウェアの生成」と「関連するソフトウェアインタフェースファイル」を CoDeveloper
で生成する為の操作方法を解説します。
サンプルプロジェクトとしてよくある簡単な"Hello World"アプリケーションを使用します。このデザインを評
価ボードへインプリメントします。このサンプルプロジェクト"Hello World"には、ソフトウェアプロセス(Nios
Ⅱプロセッサ上で動作)と、Avalon バスを介して通信するハードウェアプロセス(FPGA ロジック部で動作)と
が含まれます。
このチュートリアルでは、
「ハードウェアとソフトウェア・インタフェースの生成方法」や、
「必要なファイルを
Altera 環境へインポートする為の操作手順の全体像」を示すことを目的とします。また「Altera ツールを使っ
たプラットフォームの生成方法」や「FPGA ビットマップファイルの生成方法」の手順についても解説します。
2 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ステップ1
ステップ1:HelloWorld アプリケーションを
アプリケーションをロードする
ロードする
CoDeveloper Application Manager を起動します。Windows の[スタート]ボタン→[すべてのプログラム]→
[Impulse Accelerated Technologies]→[CoDeveloper]グループから選択します。
Altera NiosⅡ用の Hello World サンプルプロジェクトを開きます。メニュー[File]→[Open Project…]を選択
します。するとダイヤログが開くので、
<CoDeveloper インストールディレクトリ¥Examples¥Altera¥NiosII¥HelloWorld>
までナビゲートし、プロジェクトファイル HelloWorld.icProj を開きます。
(必要があれば、
チュートリアルを始める前に Example ディレクトリのファイルを他のディレクトリにコピーし
ておいてください)
プロジェクトファイルが開かれると、下図のように表示されます:
HelloWorld プロジェクトには下記のファイルが含まれています:
Source Files:HelloWorld_sw.c
Files HelloWorld_sw.c、HelloWorld_hw.c
HelloWorld_sw.c HelloWorld_hw.c−これらソースファイルは完全なアプリケーション、すな
HelloWorld_hw.c
わち main()ファンクション、ソフトウェアプロセス、ハードウェアプロセス、を記述しています。
main()
Quartus サブフォルダ−Quartus
サブフォルダには、後工程のハードウェアプラットフォーム生成時に使用する
サブフォルダ
ファイルが含まれています。
3 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ステップ2
テップ2:シミュレーションの
シミュレーションの為にアプリケーションを
アプリケーションをコンパイルする
コンパイルする
HelloWorld アプリケーションをターゲットとなる NiosⅡプラットフォームにコンパイルする前に、基本的なオ
ペレーションとソースファイルの基本的な中身について見てみます。
ハードウェアへコンパイルしようとしているプロセスは、HelloWorld_hw.c に下記のように記述されています:
void say_hello(co_stream hello_out)
このハードウェアプロセスは単純に出力ストリーム(hello_out
hello_out)へデータを送り出します。
hello_out
一方、HelloWorld_sw.c にはプロセス hear_hello(HelloWorld_hw.c
の最初の方で extern 宣言されている)が
hear_hello
記述されています。このプロセスは、コンパイルされると NiosⅡプロセッサにロードされ、自動生成されたハ
ードウェア/ソフトウェア・インタフェース経由で、FPGA ハードウェア部とコミュニケーションを行います。
今回のチュートリアルの場合、ソフトウェアプロセスは、ハードウェアプロセスに関連するストリームからのデ
ータを、シンプルに読み込みます。
(典型的な Impulse C アプリケーションでは、関連するハードウェアプロセ
スからの複数の入力/出力ストリームがあります。
)
また、HelloWorld_sw.c にはアプリケーションの main()関数も含まれています。この
main 関数は、ローレベル
main()
の configuration ファンクション config_hello()を、Impulse
C 関数 co_initialize()を通じてリフェレンスし
config_hello()
co_initialize()
ています。co_initialize()
co_initialize()は
co_initialize() HelloWorld_hw.c の中で extern function として宣言されています。
4 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
Hello World アプリケーションの
アプリケーションのシミュレーション
機能検証の為に、アプリケーションのコンパイルとシミュレーションを行います:
1. メニュー[Project]→[Build Simulation Executable]を選択し、HelloWorld.exe 実行ファイルをビルドしま
す。コマンドウィンドウが開き、コンパイルとリンクのメッセージが下記のように表示されます:
2. Windows 実行ファイルの HelloWorld アプリケーションがデスクトップ(コンソール)ソフトウェアアプリケ
ーションとして作成されました。このアプリケーションを実行するには、メニュー[Project]→[Launch
Simulation Executable]を選択します。コマンドウィンドウが開き、下図のようにアプリケーションが実行され
ます:
シミュレーションは下記のように出力している事を確認します:
CPU listing for hello…
FPGA hardware says: 0 1 2 3 4 5 6 7 8 9
アプリケーションでは FPGA ハードウェアが上記値を生成したとのメッセージを表示していますが、実際は、シ
ミュレーションの為にハードウェアプロセスがソフトウェアプロセスとしてホスト開発システム(Windows)上
でコンパイルされています。
5 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ステップ3
ステップ3:Platform Support Package の定義
コンパイルや HDL 生成、関連するファイルの出力に先だって、ターゲットとなるプラットフォームの選択を行い
ます。ターゲットとなるプラットフォームを定義するには、メニュー[Project]→[Option]で Options ダイヤロ
グを開き、[Generate]タブを選択します:
Platform Support Package プルダウンメニューから、Altera NIOSⅡ(VHDL)を選択します。また、Hardware Build
Directory として「hw」、Software Build Directory として「sw」を定義します。また、Hardware Export Directory
と Software Export Directory を「Quartus」とします。設定が済んだら、[Apply]→[OK]ボタンを押しダイヤロ
グを閉じます。
6 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ハードウェアプロセスとなる
ハードウェアプロセスとなる HDL を生成する
生成する
HDL フォームでのハードウェア、関連するソフトウェアインタフェースやライブラリファイルを生成するには、
メニュー[Project]→[Generate HDL]を選択します。すると、下図のように一連のプロセスが実行されます:
プロセスが完了すると、プロジェクトディレクトリ下の「hw」と「sw」ディレクトリの中に、いくつかのファイ
ルが生成されます。ファイルの生成までは、マシンのパフォーマンスに依りますが、数分かかります。各ディレ
クトリには以下が含まれます:
ハードウェアディレクトリ(
ハードウェアディレクトリ(hw)
hw)
•
ハードウェアプロセスとハードウェアストリームインタフェースを記述している VHDL ソースファイル
(HelloWorld_comp.vhd、HelloWorld_top.vhd、および subsystem.vhd)が生成されています。
•
lib サブディレクトリがあり、ディレクトリの中に VHDL ライブラリ要素が含まれます。
•
class サブディレクトリがあり、ディレクトリの中には Altera SOPC Builder ツールに必要なファイルが生
成されています。
ソフトウェアディレクトリ(
ソフトウェアディレクトリ(sw)
sw)
•
プロジェクトから抽出された、組み込みプロセッサへのコンパイルに必要な C ソースファイル(今回は
HelloWorld_sw.c)
。
•
ハードウェアイニシャライズファンクションが記述されている C ファイル(co_int.c)が作成されていま
す。このファイルも組み込みプロセッサ(NiosⅡ)上で動作します。
•
class サブディレクトリがあり、ディレクトリの中には組み込みソフトウェアアプリケーションの一部とし
てコンパイルされるソフトウェアライブラリが含まれます。これらのライブラリはハードウェア/ソフト
ウェアインタフェースのソフトウェア側にインプリメントされます。
7 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
Altera SOPC Builder の操作に馴れている場合には、以上のファイルを Altera プロジェクトへマニュアルでコ
ピーすることもできます。しかしながら、次のステップでは、CoDeveloper の「ハードウェアとソフトウェアエ
クスポート機能」を使用してこれらのファイルを Altera プロジェクトへ半自動的に移します。
ステップ4
ステップ4:CoDeveloper からファイル
からファイルを
ファイルをエクスポート
先のステップのとおり、
ターゲットプラットフォーム上で動作する完全なハードウェア/ソフトウェアアプリケ
ーションの作成に必要な、
いくつかのハードウェアとソフトウェアに関連するファイルを CoDeveloper は生成し
ます(ターゲットプラットフォーム:NiosⅡプロセッサを組み込んだ Altera FPGA)
。これらのファイルをマニ
ュアルで移動し既にある Altera プロジェクトへインテグレートする事も可能ですが、ここでは CoDeveloper の
エクスポート機能を使用してこれらのファイルを Altera ツールへインテグレートします。
Note:以降のステップでは、Altera QuartusⅡと SOPC Builder ソフトウェアが必要です。
先のステップ3にて、ターゲットのハードウェアとソフトウェアのエクスポートディレクトリとして「Quartus」
と設定した事を再度確認します:
8 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ここで設定される"Export Directory"は、次に行うように、"Export Generated Hardware"と"Export Generated
Software"機能を使用して、CoDeveloper で生成したハードウェアとソフトウェアファイルのコピー先ディレク
トリとして定義されています。すなわち、ここで定義されたディレクトリ(ここでは Quartus)が、先に生成さ
れた Platform Support Package アーキテクチャライブラリファイルの格納ディレクトリとして定義されること
となります。よって、エクスポート作業を行う前に、"Platform Support Package(ここでは Altera NiosⅡ)"
や"Export Directory"が正しく選択されていることを必ず確認してください。
ビルドディレクトリ(ここでは"hw"と"sw")からエクスポートディレクトリ(ここでは"Quartus"ディレクトリ)
へファイルをエクスポートするには、メニューの[Project]→[Export Generated Hardware(HDL)]と[Project]
→[Export Generated Software]をそれぞれ実行します。
Note:次のステップへ進む前に、必ずソフトウェアとハードウェアのエクスポートを実行してください。
これまでの操作により、
必要な全てのファイルが CoDeveloper から Quartus ツール環境へエクスポートされまし
た。
9 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ステップ5
ステップ5:Quartus のプロジェクトを
プロジェクトを作成
ここからは Altera ツールの環境へ移ります。以降では操作内容をステップバイステップで示しますが、より詳
しい情報に関しましては Altera 社の該当マニュアルをご参照ください。
Altera QuartusⅡを起動し、新規プロジェクトを作成します。メニュー[File]→[New Project Wizard]を選択し
ます。下記のように新規プロジェクトの作業ディレクトリを設定するダイヤログが表示されますので、先のステ
ップで設定したディレクトリ"Quartus"を設定します:
ディレクトリ"Quartus"を選択し、[開く]ボタンを押します。
続いて下のように「New Project Wizard」ダイヤログが開くので、project 名欄と top-level design entity 欄
に"HelloWorld"と入力します:
10 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
[Next]ボタンをクリックします。
次の「Add Files」ページ(2ページ目)では、CoDeveloper により生成された VHDL ファイルを Quartus へイン
ポートします。[…]ボタンを押し、以下の順番でファイルを追加していきます:
1. ブロックダイヤグラムファイル:HelloWorld.bdf
2. バスインタフェースファイル:
user_logic_HelloWorld_arch_module¥sybsystem.vhd と impulse_lib¥avalon_if.vhd
3. user_logic_HelloWorld_arch_module ディレクトリの中にあるコアロジックファイル:
HelloWorld_comp.vhd と HelloWorld_top.vhd
4. impulse_lib ディレクトリの中にある、avalon_if.vhd 以外の全てのファイル
※QuartusⅡのブロックダイヤグラムファイル HelloWorld.bdf は CoDeveloper で作成されたものではありません。
チュートリアル操作を簡便にする為に、Impulse 社の方で作成・用意した QuartusⅡのファイルです。
これらファイルは追加された逆順にリストされます(例えば、impulse_lib
impulse_lib ディレクトリの中にあるファイルは
上部にリストされます)
。
[Next]ボタンを押します。
「EDA Tool Settings」ページ(3ページ目)はスキップするので[Next]ボタンを押します。
11 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
「Device Family」ページ(4ページ目)では、下図のようにターゲットとなるデバイスを選択します。
ボード上に搭載されているデバイスを選択し、[Next]ボタンを押します。
すると「Select a Target Device」ページ(5ページ目)が開くので、ターゲットとなるデバイスを選択します。
(このチュートリアルでは、Stratix の EP1S10F780C6ES を使用しています)
デバイスを選択したら[Next]ボタンを押します。
12 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
すると「Summary」
(6ページ目)が開きます。サマリの内容を確認し、[Finish]ボタンを押します。
次のステップでは、NiosⅡプロセッサの作成とコンフィグレーション、またサンプルアプリケーション必要な
I/O インタフェースの作成方法について示します。
ステップ6
ステップ6:新規プラットフォーム
新規プラットフォームの
プラットフォームの作成
前のステップまでの操作により、ウィザードを使用した基本的な Quartus プロジェクトを作り終えました。次の
ステップとして、作成しているソフトウェア/ハードウェアアプリケーションに必要な、いくつかの追加情報を
定義します。このステップには、NiosⅡプロセッサの作成や必要とされる I/O エレメントの作成が含まれます。
ここでは NiosⅡや必要な周辺、
また CoDeveloper で作成したハードウェアからなるシステムを作成する為に SOPC
Builder を使用します。Quartus のメニュー[Tools]→[SOPC Builder]を選択し、SOPC Builder を起動します:
13 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
「Create New System」ダイヤログが開きますので、System Name に「HelloWorldSystem」と入力します。また、
HDL Language では[x]VHDL を選択します:
[OK]ボタンを押した後、SOPC Builder ウィンドウが開きます。
Note:System Name として使用する名称には VHDL で使用可能な文字列にする必要があります:最初の文字が数
字ではいけません。またスペースを含むことやアンダースコア以外の特殊文字の使用も禁止されています。
14 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ステップ7
ステップ7:新規プラットフォーム
新規プラットフォームの
プラットフォームのコンフィグレーション
続いて、SOPC Builder を使った NiosⅡベースのプラットフォームの設定を行います。
まず始めに、SOPC Builder ダイヤログの Target プルダウンメニューで使用するボードを選択します:
続いて、NiosⅡプロセッサを追加します。SOPC Builder ウィンドウの左側にある[System Contents]タブから、
Avalon Module の下にある"Nios
NiosⅡ
[Add]ボタンを押します。すると、
NiosⅡProcessorProcessor-Altera Corporation"を選択し、
Corporation
下記のような「Altera NiosⅡ-cpu_0」コンフィグレーションウィザードが開きますので、NiosⅡ/s を選択しま
す:
[Finish]ボタンを押し、NiosⅡCPU をシステムへ追加し、SOPC Builder に戻ります。
15 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ここで NiosⅡモジュール名をリネームします。Module Name 欄の cpu_0 の上でマウス右クリックし、[Rename]
を選択します。Module Name 欄が変更できるようになるので cpu と入力します:
次に、必要なペリフェラルを NiosⅡシステムへ追加します。
Note:SOPC Builder に関して、詳しくは Altera 社のドキュメントをご参照ください。例えば下記場所には Nios
Hardware Development Tutorial があります。
C:¥altera¥kits¥nios2¥tutorials¥Nios2_HW_Tutorial¥tt_nios2_hardware_tutorial.pdf
以下ではこのチュートリアルで必要な周辺を追加していきます。
操作についてのより詳しい情報につきましては、
Altera 社ドキュメントをご参照ください。
16 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
タイマーを
タイマーを追加
以下の手順にて、タイマーsystem
system_timer
system_timer を追加します。
Other 下の Interval timer を選択し、[Add]ボタンを押します。すると「Avalon Timer-timer_0」ウィザードダ
イヤログが開きます。以下のように設定します:
Initial Period under Timeout Period:1msec
Preset Configurations:Full-featured
[Finish]ボタンをクリックします。SOPC Builder に戻ります。
Module Name 欄の timer_0 の上でマウス右クリックし、[Rename]を選択します。Module Name 欄が変更できるよ
うになるので system_timer と入力します。
17 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
フラッシュメモリを
フラッシュメモリを追加
以下の手順にて、外部フラッシュ ext_flash を追加します。
Memory の下にある Flash Memory(Common Flash Interface)を選択し、[Add]ボタンを押します。
すると「Flash Memory(Common Flash Interface)」ウィザードダイヤログが開きます。
Presets:プルダウンメニューで"AMD29LV065D120R"が選択されている事を確認します。
他の設定はデフォルトのままにしておきます:
[Finish] ボタンをクリックします。SOPC Builder に戻ります。
Module Name 欄の cfi_flash の上でマウス右クリックし、[Rename]を選択します。Module Name 欄が変更できる
ようになるので ext_flash と入力します。
18 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
External RAM インタフェースを
インタフェースを追加
以下の手順にて、外部 RAM、ext_ram
ext_ram を追加します。
Memory の下にある IDT71V416 SRAM を選択し、[Add]ボタンを押します。
すると「SRAM(two IDT71V016 chips)-sram_0」ウィザードダイヤログが開きます。
[Attributes]タブで、Memory Size として 1024kb が設定されている事を確認します:
[Finish] ボタンをクリックします。SOPC Builder に戻ります。
Module Name 欄の sram_0 の上でマウス右クリックし、[Rename]を選択します。
Module Name 欄が変更できるようになるので ext_ram と入力します。
19 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
JTAG UART を追加
以下の手順にて、jtag_uart
jtag_uart を追加します。
NiosⅡ上で動作するソフトウェアデバック時など、ボードとホストマシン間の通信に使用します。
Communication の下の JTAG UART を選択し、[Add]ボタンを押します。
すると「JTAG
JTAG UARTUART-jtag_uart_0」ウィザードダイヤログが開きます。
jtag_uart_0
設定の全てをデフォルトのままにしておきます:
[Finish]ボタンをクリックします。SOPC Builder に戻ります。
Module Name 欄の jtag_uart_0 の上でマウス右クリックし、[Rename]を選択します。
Module Name 欄が変更できるようになるので jtag_uart と入力します。
20 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
External RAM Bus(
Bus(Avalon TriTri-State Bridge)
Bridge)を追加
NiosⅡがボード上の外部メモリと通信できるようにするため、外部メモリに繋がるバスと Avalon バスとの間に
ブリッジを追加します。
以下の手順にて、Avalon tri-state ブリッジ、ext_ram_bus
ext_ram_bus を追加します。
Bridges の下の Avalon TriTri-State Bridge を選択し、[Add]ボタンを押します。
すると「Avalon
Avalon TriTri-State BridgeBridge-tri_state_bridge_0」ウィザードダイヤログが開きます。
tri_state_bridge_0
設定の全てをデフォルトのままにしておきます:
[Finish] ボタンをクリックします。SOPC Builder に戻ります。
Module Name 欄の tri_state_bridge_0 の上でマウス右クリックし、[Rename]を選択します。
Module Name 欄が変更できるようになるので ext_ram_bus と入力します。
21 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ハードウェアプロセスモジュール"hello"
ハードウェアプロセスモジュール"hello"を
"hello"を追加
HelloWorld ハードウェアプロセスがインプリメントされている、モジュール HelloWorld_arch を追加します。
[System Contents]タブの中の Avalon Modules 下にある User Logic をダブルクリックします。すると、
HelloWorld_arch module が表示されますので、これを選択し[Add]ボタンを押します:
HelloWorld_arch module に user_logic_HelloWorld_arch_module_0 という名前がアサインされます。
22 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
これまでの操作により、必要なペリフェラルを追加することができました。追加されたモジュールが下図のよう
に表示されていることを確認してください:
続いて、[More "cpu" Settings]タブをクリックして、下記のように、
Processor Function 欄の Reset Address の Memory Module を ext_flash へ変更します:
以上で NiosⅡプラットフォーム生成の準備が整いました。
23 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ステップ8
ステップ8:システムを
システムを生成する
生成する
ここまでのステップにより、CoDeveloper が生成したハードウェアを含む NiosⅡプラットフォームの各種設定が
完了しました。このステップでは、SOPC Builder によりシステム生成プロセスの実行を行います。
SOPC Builder の[System Generation]タブをクリックします。
この中で[x]HDL のチェックボックスにチェックが入っていることを確認します。
[Generate]ボタンを押すとシステム生成が開始されます。お使いのマシンのスペックによりますが、完了までは
数分を要します。
システム生成が完了したら[Exit]ボタンを押し SOPC Builder を終了させ、Quartus に戻ります。
24 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
次に、ブロックダイヤグラムエディタを使います。ここでは、SOPC Builder により生成されたシステム
(HelloWorld ハードウェア、NiosⅡプロセッサ、ペリフェラル)に FPGA のピンを繋げます。
Quartus のプロジェクトエクスプローラウィンドウで[Files]タブをクリックし、Device Design Files フォルダ
の中にある HelloWorld.bdf をダブルクリックしてブロックダイヤグラムを開きます:
25 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ブロックダヤグラムエディタの描画領域のどこかをダブルクリックします。すると、
「Symbol」ダイヤログが開
か れ ま す 。 下 図 の よ う に 、「 Symbol 」 ダ イ ヤ ロ グ の Libraries : 欄 に あ る Project フ ォ ル ダ を 開 い て
HelloWorldSystem を選択し[OK]ボタンを押します:
するとマウスカーソルにシンボルが付着しますので、
既に配置してあるピンに上手く繋がる場所でマウスをクリ
ックして、HelloWorldSystem シンボルを配置します:
26 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ピンアサイン
次に、ダイヤグラムに対しピンアサインを行います。QuartusⅡではピンアサインを GUI より 1 ピンづつ設定す
る方法もありますが、ここでは Tcl スクリプトを使用してピンアサインを行います。
※Tcl スクリプト.tcl ファイルは、チュートリアル操作を簡便にする為に、Impulse 社の方で作成・用意したフ
ァイルです。
※Tcl スクリプトの内容は使用ボードにより異なりますが、既にあるファイルを編集することで使い回す事が可
能です。お使いのボードのピン配置情報は、お使いのボードを使用した Altera ツール内のサンプルデザインの
中にある.pin ファイルの中身をご参照することでも得られます。
メニュー[Tools]→[Tcl Scripts…]を選択すると、下記ダイヤログが表示されます:
このチュートリアルでは、stratix の 1s10 ボードを使用しているので、stratix-1s10-pins を選択して[Run]を
押します。
次のステップでは、ビットマップファイルの生成とダウンロードを行います。
27 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ステップ9
ステップ9:[Device & Pin Options…
Options…]の設定
ここではピンに関するコンパイラのいくつかの設定を行います。
Quartus のメニュー[Assignments]→[Device]を選択します。すると下図のように Device 設定ダイヤログが表示
されます。[Device & Pin Options…]ボタンを押し、
「Device & Pin Options」ダイヤログを開きます:
28 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
[Unused Pins]タブを選択します。
"Reserve all unused pins"で[x]As inputs, tri-stated を選択します:
29 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
続いて、[Dual-Purpose Pins]タブを選択します。
全てのピンの設定を"Use as regular IO"にします:
[OK]を2回押し、開いたダイヤログを閉じます。
30 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ステップ10
ステップ10:
10:ビットマップファイルを
ビットマップファイルを生成する
生成する
ここまでに、以下のステップを行ってきました:
•
CoDeveloper からハードウェアとソフトウェアのファイルを生成
•
CoDeveloper で生成したファイルを Quartus と SOPC Builder の環境へ移す
•
Altera Quartus プロジェクトを作成し、SOPC Builder を使って Nios ベースのプラットフォームを作成
•
ブロックダイヤグラムを作成して、ピン配置を行う。
ここでは、ビットマップを生成しアプリケーションをターゲットプラットフォームにダウンロードします。ここ
での操作は容易ですが、ファイル生成に時間がかかります。
Quartus のメニュー[Processing]→[Start Compilation]を選択します:
この工程において Quartus では、VHDL ソースファイルのアナライズや論理合成、FPGA への配置配線などが行わ
れます。終了するとビットマップファイルが生成されます。
31 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ビットマップファイルが生成されたら、メニュー[Tools]→[Programmer]を選択します。.cdf のダイヤログが開
きますので、メニュー[File]→[Save As]を選択し.cdf ファイルを HelloWorld.cdf のファイル名で保存します
("Add file to current project option が選択されている事を確認してください")
。
下図のように Program/Configure にチェックを入れます。
またプログラミングハードウェアが正しく選択されて
いる事を確認してください(例:ByteBlasterMV ケーブル)。
[Start]ボタンをクリックすると、ターゲットデバイスへ HelloWorld.sof がダウンロードされます。
32 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
ステップ11
ステップ11:
11:アプリケーションを
アプリケーションをプラットフォーム上
プラットフォーム上で動作させる
動作させる
これまでのステップにより、Quartus や SOPC Builder を使って、FPGA デバイスはプログラムされました。
ここでは Altera NiosⅡIDE を使用して、プロジェクトのソフトウェア部をコンパイルし、アプリケーションを
ボード上で動作させます。
NiosⅡIDE を起動します([スタート]→[Altera]→[NiosⅡDevelopment Kit 1.0])。
HelloWorld ソフトウェアファイルを管理する為に、新規プロジェクトを生成します。
[File]→[New]→[Project]を選択し、下記ウィザードを開きます:
Altera NiosⅡ
NiosⅡと C/C++ Application を選択し、[Next>]ボタンをクリックします。
33 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
続くページにて、プロジェクトのパス、ターゲットハードウェア、プロジェクトテンプレートを、[Browse…]
ボタンを押して以下のように選択します。
Name:HelloWorld
Name
Use Default Location:
Location (選択しない)
Path:C:¥Impulse¥CoDeveloper¥Examples¥Altera¥NiosII¥HelloWorld¥Quartus¥software¥HelloWorld_arch
Path
(ステップ4で行った、CoDeveloper から Export されたファイルの格納場所になります)
SOPC Builder System:
System
C:¥Impulse¥CoDeveloper¥Examples¥Altera¥NiosII¥HelloWorld¥Quartus¥HelloWorldSystem.ptf
(ステップ8の SOPC Builder で生成された.ptf ファイルになります)
CPU:cpu
CPU
Select Project Template:Blank
Project
Template
34 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
[Finish]ボタンを押し、新規プロジェクトを生成します。
下図のように、2つの新規プロジェクト(HelloWorld と HelloWorld_syslib)が、NiosⅡIDE の C/C++プロジェ
クトウィンドウ内に表示されます。ステップ4で Export されたソフトウェアファイル( co_init.c と
HelloWorld_sw.c)が表示されている事を確認します:
HelloWorld プロジェクトの上でマウス右クリックをし、表示されるコンテキストメニューから[Build Project]
を選択します。IDE により、CoDeveloper で生成された Impulse C ハードウェアモジュールの為のドライバを含
む、HelloWorld_syslib システムライブラリがビルドされます。また、HelloWorld プロジェクトのアプリケーシ
ョンソフトウェアもビルドされます。
ビルドが終了すると、ハードウェアプラットフォーム上でのアプリケーションを動作させる準備が整います。
35 - 36
CoDeveloper_Altera_NiosⅡ_HelloWorld_jp.doc
HelloWorld プロジェクトの上でマウス右クリックをし、表示されるコンテキストメニューから
[Run As]→[NiosⅡ Hardware]を選択します。
コンソールウィンドウ内に、次のようなメッセージが表示されます。ステップ2で行ったデスクトップシミュレ
ーションと同じメッセージが表示されています。
:
このように、HDL コードを記述する事なく、ターゲット FPGA デバイス上でハードウェア/ソフトウェア・アプ
リケーションを動作させる事ができました。
今回の設計例は非常に小さなものでしたが、複雑な設計の場合でも基本的な操作内容は同じです。
以上で、Altera NiosⅡプラットフォームサポートパッケージ(Platform Support Package)の操作手順チュー
トリアルは終了です。
36 - 36