ver. 7.1 2007 年 8 月
1. はじめに
この資料は、Nios II の一般的な開発フローをご紹介しています。 今回は、リファレンス・デザインを使用し、FPGA 上に非常にシンプルな Nios II システムを構築し、プログラムを実行します。 作業環境は Quaruts II 7.1、Nios II 7.1 です。 こちらの資料は Nios II 開発ボード Cyclone II エディションで動作させたときのフローを紹介しております。 ソフトウェアはソフトウェア・リファレンス・デザインの count_binary を使用します。2. 事前準備
2-1. リファレンス・デザイン
リファレンス・デザインは、アルテラ社のホームページからダウンロードできます。 http://www.altera.com/literature/lit-nio2.jsp2-2. ライセンス
Nios II のライセンスは、Quartus II のライセンスと同じようにライセンスファイル内に “FEATURE” 行で与えられます。 Nios II の IP、または Nios II 開発キットを購入後、アルテラ社へユーザ登録した段階でライセンスファイルの取得が可能 になり、新たに取得したライセンスには Nios II 用の “FEATURE” 行が追加されています。
Nios II のライセンスがない場合は、FPGA にダウンロードしてから一定時間経過するとハードウェアの動作が停止する 「*_timelimited.sof」 ファイルが生成され、Nios II のライセンスがない場合でも一定時間、Nios II コアの検証が可能です。
2-3. ハードウェアの準備
Nios II 開発ボード、またはアルテラ社の FPGA が実装されている基板を用意し、ホスト PC とダウンロード・ケーブルを接 続後、基板に電源を供給します。
尚、推奨のダウンロード・ケーブルは USB-Blaster(Rev B 以降) です。 例) Nios II 開発ボード StratixII RoHS 対応エディションの場合
・ ホスト PC と接続した USB-Blaster を J24 のコネクタに接続 ・ J26 の電源コネクタより電源を供給
Nios II 開発ボードの詳細は、 アルテラ社の 「Nios Development Board Reference Manual」 で確認してください。 http://www.altera.com/literature/lit-nio2.jsp
このチュートリアルを進めるためには、カスタム・ボードの場合、実装されている FPGA、又は、FPGA のロジックサイズに関 して、下記の制約があります。
・ Stratix III か Stratix II ファミリ ・ Stratix ファミリは EP1S10 以上 ・ Cyclone III か Cyclone II ファミリ ・ Cyclone ファミリは EP1C12 以上
3. Quartus II でチュートリアル・デザインを開く
以下の手順でチュートリアル・デザインを Quartus II で開きます。① アルテラ社 Web よりダウンロードしたプロジェクトをローカルフォルダへ保存します。 ② Quartus II を起動します。
③ File メニュー > Open Project をクリックします。
④ アルテラ社 Web よりダウンロードした、Nios II 開発ボード用のチュートリアル・デザインを選択します。 Quartus II のプロジェクト・ファイルである 「nios2_quartus2_project.qpf」 ファイルを選択します。
⑤ プロジェクト・ファイルを開くと、.bdf ファイル(回路図エディタ)が表示されます。
.bdf ファイルが表示されない場合は、File メニュー > Open より 「nios2_quartus2_project.bdf」ファイルを開きます。 回路図にピンのシンボルが見られます。この図面中央のあいている領域に、これから作成する非常にシンプルな Nios II システムのシンボルを張り付けます。
4. SOPC Builder で Nios II エンベデッド・プロセッサのシステム・モジュールを生成
SOPC Builder で Nios II プロセッサ・コアとペリフェラルを接続し、Nios II システムの HDL ファイルを生成します。 SOPC Builder は、Nios II システムを簡単にかつ自動で生成することができます。作業フローは以下になります。 STEP1 SOPC Builder の起動 STEP2 ハードウェア設定
STEP3 CPU とペリフェラルの追加
STEP4 システム・モジュールの生成 ( SOPC Builder の generate ) STEP5 .bdf (回路図ファイル)へ Nios II シンボルを追加
4-1. SOPC Builder の起動
① Tools メニュー > SOPC Builder をクリックします。
※ Quartus II でプロジェクトを開いていない場合、SOPC Builder を起動することができませんのでご注意ください。
② System Name にシステム名を入力します。 (例:first_nios2_system)
4-2. ハードウェア設定
まず、システム全体の設定を行います。 ① 左枠の System Contents タブを選択します。 ② 使用するデバイスファミリを選択します。Nios II 開発ボードを使用するときも、カスタム・ボードを使用するときもボード に実装されているデバイスファミリを選択し、クロックを定義します。(Nios II 開発ボード Cyclone II エディションの場 合は 50MHz)4-3. CPU とペリフェラルの追加
CPU である Nios II や各ペリフェラルを順番に追加していきます。 このチュートリアルでつなげていくコンポーネントは以下になります。 ・ オンチップ・メモリ ・ Nios II CPU スタンダード・コア ・ JTAG UART 用インタフェース4-3-1. オンチップ・メモリ
システムには、メモリが最低 1 つは必要となり、今回は、20 KByte のオンチップ・メモリを、データ用、インストラクション用で 1 つだけ用意します。
① Memories and Memory Controllers カテゴリ内の On-Chip セクションから On-Chip Memory(RAM or ROM) を選択し Add ボタンをクリックします。
② On-Chip Memory のウィンドウが表示されます。
Total Memory Size を 20 Kbytes に設定し、Stratix,、Stratix II、Stratix III をターゲットデバイスとしている場合は、 Block Type: を M4K に設定します。その他の設定はデフォルトのままにします。Finish ボタンをクリックします。
ターゲットデバイスが Stratix、 Stratix II、Stratix III の場合
4-3-2. Nios II CPU スタンダード・コア
① 左枠より Nios II Processor を選択し Add ボタンをクリックします。
② Nios II ウィンドウが表示されますので、ここで Nios II/s を選択します。
Hardware Multiply を None にし、Hardware Divide のチェックをはずし、 Reset Vector 、Exception Vector 欄に onchip_mem を設定後、Offset にそれぞれ 0x0 、0x20 をセットします。
④ Instruction Cache に 2 Kbytes をセットし、Include Tightly Coupled Instruction Master Port(s) のチェックをはずします。
⑤ Advanced Features タブ、JTAG Debug Module タブ、Custom Instruction タブについては、今回は、設定しません。 Finish ボタンをクリックします。
SOPC Builder は、自動的に Nios II のインストラクションマスタ、データマスタとオンチップ・メモリのスレーブポートを接続し ます。
4-3-3. JTAG UART 用インタフェース
このコンポーネントを接続することで ホスト PC と Nios II システム間でデータ転送が可能になり、JTAG UART コアのレジ スタに対して、ソフトウェアからアクセスが可能です。
尚、ホスト PC は、USB-Blaster 経由で接続します。
① Intertace Protocols グループ内の Serial セクションから JTAG UART を選択し Add ボタンをクリックします。
② JTAG UART ウィンドウが表示されますので、デフォルト設定のまま finish ボタンをクリックします。
4-3-4. タイマ
HAL のシステム・ライブラリで提供されているいくつかのデバイス・ドライバにおいては、必ずタイマを必要とします。 例として JTAG_UART のドライバがあげられます。
① Peripherals グループ内の Microcontroller Peripherals セクションから Interval Timer を選択し、 Add ボタンをクリック します。
② Avalon Timer ウィンドウが表示されますので、デフォルト設定のまま Finish ボタンをクリックします。
③ このタイマ・コンポーネントの名前を変更します。
SOPC Builder 上でタイマのコンポーネント 「timer」 を選択し、右クリック > Rename をクリックします。
4-3-5. システム ID ペリフェラル
これは、システムに ID を持たせるためのペリフェラルで、ホスト PC から ターゲットデバイスにどのシステムのハードウェ アが実装されているかを認識できるようになり、他のシステム用のソフトウェアを誤ってダウンロードされることを未然に防ぐこと ができます。
① Peripherals グループ内の Debug and Performance セクションから System ID Peripheral を選択し、 Add ボタンをクリ ックします。
② Sustem ID Peripheral のウィザードが表示後、 Finish ボタンをクリックします。
4-3-6. LED 用 I/O(PIO)
Nios II 開発ボードに実装されている 8 つの LED 用に PIO コンポーネントを用意します。 ① Other セクションから PIO (Parallel I/O) を選択し、Add ボタンをクリックします。
② Avalon PIO ウィンドウが表示されますので、width に 8 を入力し、output ports only にチェックを入れます。 Finish ボタンをクリックします。
③ この PIO コンポーネントの名前を変更します。
SOPC Builder 上で PIO コンポーネント 「pio」 を選択し、右クリック > Rename をクリックします。
「led_pio」 とタイプします。
以上で、すべてのコンポーネントの追加は終了です。
4-4. システム・モジュールの生成 (SOPC Builder の generate)
4-4-1. ベースアドレスの設定SOPC Builder は、自動的に Nios II システム・モジュールの各コンポーネントに対してアドレスを割り当てます。 このベースアドレスは自由に変更が可能です。
① コンポーネントをどれか 1 つ選択し、右クリック > Auto-Assign Base Addresses をクリックすることで、自動的にベース アドレスが割り振られます。
② jtag_uart_0 のコンポーネントの IRQ に 16 をタイプします。
4-4-2. システム・モジュールを生成 (generate)
Nios II システム・モジュールの HDL を生成します。
① System Generation タブを選択します。(または、Next ボタンをクリック) Simulation. Create project simulator files. のチェックボックスを外します。 ② Generate ボタンをクリックします。
③ Generate が終了すると “SYSTEM GENERATION COMPLETED” と表示されます。 その後、Exit ボタンをクリックします。
4-5. BDF (回路図ファイル)へ Nios II のシンボルを追加
SOPC Builder によって生成された、「first_nios2_system」 のシンボルを .bdf ファイルに貼り付けます。 ① Quartus II の .bdf ファイル上でダブルクリックします。 Symbol ウィンドウが表示されます。 ② Libraries 内の Project ディレクトリから 「first_nios2_system」 を選択します。
Symbol ウィンドウの右側に生成されたシンボルが確認できます。
③ OK ボタンをクリックします。
⑤ ピンと Nios II シンボルを接続し、回路図(.bdf ファイル)を完成させます。 ⑥ File メニュー > Save をクリックし、.bdf ファイルを保存します。
5. Quartus II でハードウェアを作成
5-1. デバイスの指定とピン・アサイン
カスタム・ボードの場合は、使用するデバイスの指定とピン・アサインを行う必要がありますが、Nios II 開発ボードを使用す る場合は、すでにデバイスの指定とピン・アサインが行われていますので、5‐2 項へ進んでください。 5-1-1. デバイスの指定 ① Assignments メニュー > Device をクリックします。② Family 欄でデバイスファミリを選択します。 Device family selection has changed. Do you want to remove all location assignments ? というウィンドウが表示された場合は、「はい(Y)」 をクリックしてください。
④ Available devices 欄から使用するデバイスを指定してください。
⑤ 以下のメッセージが表示された場合には、「いいえ(N)」をクリックしてください。
⑥ Setting ウィンドウで OK をクリックします。
5-1-2. ピン・アサイン
① Assignments メニュー > Assignment Editor を選択します。
② Assignment Editor の Category を Pin にします。
③ To 欄の PLD_CLOCKINPUT[1] の Location 欄をダブルクリックして、適切なピンを指定してください。
さい。
5-2. Quartus II でコンパイル
Quartus II でコンパイルを実行し、FPGA に書き込むためのファイル(.sof)を生成します。
① Quartus II の Processing メニュー > Start Compilation または ボタンをクリックします。 ② コンパイルが終了すると、コンパイル結果を Compilation Report にて確認することができます。
6. ダウンロード
コンパイル後に生成された、.sof ファイルを FPGA へ書き込みハードウェアを実現します。
① USB-Blaster を Nios II 開発ボードに接続していない場合は、JTAG の 10 ピンヘッダに接続します。 このとき、コネクタの向きに注意してください。
② Quartus II の Tools メニュー > Programmer または ボタンをクリックします。「nios2_quartus2_project.sof」 フ ァイルが確認できます。
③ プログラマ・ウィンドウの Mode 欄に JTAG が選択されていることを確認します。 ④ Hardware Setup ボタンをクリックします。
⑥ Programmer ウィンドウの Program/Configure にチェックを入れ、Start ボタンをクリックします。 Progress が、100%になれば、ダウンロード完了です。
※ 「*_time_limited.sof」 ファイルを書き込んだ場合は、以下のウィンドウが表示されます。
Cancel ボタンをクリックすると、ダウンロードした FPGA の動作は停止しますのでご注意ください。
Nios II のモジュール(first_nios2_system) を含むハードウェア・デザイン(nios2_quartus2_project)が、正常にターゲットデバ イスにダウンロードできました。
ハードウェアを実現するまでのフローは以上となります。
7. Nios II システムでソフトを実行
7-1. Nios II IDE でプロジェクトを作成
Nios II のソフトウェア開発ツールである統合開発環境 Nios II IDE を用いて、ソフトウェアをコンパイルし、生成された Nios II のコードをシステムへダウンロードします。
① Nios II IDE を起動します。
② Workspace をローカルのフォルダに設定します。
Nios II IDE の File メニューの Switch Workspace… をクリックします。
④ 表示される Welcome to the Altera Nios II IDE ページを右上の Workbench をクリックし閉じます。
⑤ 新規プロジェクトを作成するために File メニュー > New > Nios II C/C++ Application を選択します。
⑥ Select Target Hardware 内の SOPC Builder System PTF File に、Browse ボタンより 「first_nios2_system.ptf」 を選 択することで、 Select Target Hardware 内の CPU 欄には、自動的に cpu が表示されます。
⑦ Select Project Template より Count Binary を選択します。 Name 欄は、自動的に count_binary_0 となります。
⑧ Finish ボタンをクリックします。
Nios II IDE に作成したプロジェクトが追加されます。
⑨ Nios II IDE 上で、プロジェクト(count_binary_0 フォルダ)を選択し右クリック > System Library Properties を選択し、 Properties for count_binary_0_syslib ウィンドウを表示します。
⑩ ソフトウェア実行コードのサイズを小さくするために、 Clean exit (flush buffers) のチェックを外し、 Small C library にチェックを入れ、OK ボタンをクリックします。
⑪ プロジェクトをビルドする為にプロジェクト(count_binary_0 フォルダ)を選択し右クリック > Builde Project を選択しま す。
ビルドを実行することで、ソースコードからオブジェクトコードである .elf ファイルが生成します。
7-2. プログラムの実行
ボード上で Count Binary のプログラムを走らせます。
① プロジェクト(count_binary_0 フォルダ)を選択し右クリック > Run As > Nios II Hardware を選択します。 Nios II IDE はソフトウェアを FPGA へダウンロードして実行します。
② Terminate ( ) ボタンをクリックしてください。
Nios II は動作し続けますが、Nios II IDE との通信が切断されます。
(基板上の LED は点灯しますが、Nios II IDE 上の Console ウィンドウに表示されているカウント値は止まります。)
横浜本社 〒222-8563 横浜市港区新横浜 1-5-5 マクニカ第二ビル TEL 045-476-2155 FAX 045-476-2156 大阪営業所 〒532-0011 大阪市淀川区西中島 6-1-3 アストロ新大阪第二ビル 7 階 TEL 06-6307-7670 FAX 06-6307-7671 名古屋営業所 〒460-0003 名古屋市中区錦 1-6-5 名古屋第一生命ビル 7 階 TEL 052-202-1024 FAX 052-202-1025 宇都宮営業所 〒321-0953 宇都宮市東宿郷 4-2-24 センターズビル 7 階 TEL 028-637-4488 FAX 028-637-4489 弊社より資料を入手されましたお客様におかれましては、下記の使用上の注意を一読いただいた上でご使用ください。 6. 本資料は非売品です。許可無く転売することや無断複製することを禁じます。 7. 本資料は予告なく変更することがあります。 8. 本資料の作成には万全を期していますが、万一ご不明な点や誤り、記載漏れなどお気づきの点がありましたら、弊社までご一報いただければ幸いです。 9. 本資料で取り扱っている回路、技術、プログラムに関して運用した結果の影響については、責任を負いかねますのであらかじめご了承ください。 10. 本資料は製品を利用する際の補助的な資料です。製品をご使用になる場合は、英語版の資料もあわせてご利用ください。 横浜本社 〒222-8563 横浜市港区新横浜 1-5-5 マクニカ第二ビル TEL 045-476-2155 FAX 045-476-2156 大阪営業所 〒532-0011 大阪市淀川区西中島 6-1-3 アストロ新大阪第二ビル 7 階 TEL 06-6307-7670 FAX 06-6307-7671 名古屋営業所 〒460-0003 名古屋市中区錦 1-6-5 名古屋第一生命ビル 7 階 TEL 052-202-1024 FAX 052-202-1025 宇都宮営業所 〒321-0953 宇都宮市東宿郷 4-2-24 センターズビル 7 階 TEL 028-637-4488 FAX 028-637-4489 弊社より資料を入手されましたお客様におかれましては、下記の使用上の注意を一読いただいた上でご使用ください。 1. 本資料は非売品です。許可無く転売することや無断複製することを禁じます。 2. 本資料は予告なく変更することがあります。 3. 本資料の作成には万全を期していますが、万一ご不明な点や誤り、記載漏れなどお気づきの点がありましたら、弊社までご一報いただければ幸いです。 4. 本資料で取り扱っている回路、技術、プログラムに関して運用した結果の影響については、責任を負いかねますのであらかじめご了承ください。 5. 本資料は製品を利用する際の補助的な資料です。製品をご使用になる場合は、英語版の資料もあわせてご利用ください。