ver. 8.1 2009 年 3 月 1. はじめに Nios II 開発ボードに実装されているメモリ用のコンポーネントは SOPC Builder の中にあらかじめ用意されています しかし 実際に基板を作成した場合には Nios II 開発ボードに実装されているメモリと同じ仕様の製品でない限り SOPC Builder であらかじめ用意されたメモリ用のコンポーネントを使用することはできません この場合 新たに使うメモリ用のコンポーネントを作成する必要があります この資料では Nios II システムをはじめとするアバロン MM( メモリ マップド ) インタフェース (SOPC Builder によって生成されるアルテラオリジナルのバス ) のシステムへ FPGA 外部の汎用メモリを接続する方法の一例を示します メモリ用のコンポーネントを作成する際に Component Editor という機能を使用します Component Editor の詳細は アルテラ社の資料 Quartus II Handbook Volume 4 : SOPC Builder の chapter 6 Component Editor をご覧ください 資料 URL : http://www.altera.com/literature/hb/qts/qts_qii54005.pdf この資料は Quartus II 8.1 Nios II 8.1 に対応しています 2. 概要 SOPC Builder に登録されていない新たなコンポーネントを作成する場合 Component Editor というウィザードを使用します この Component Editor を用いることで下記のコンポーネント化が行えます a) 新たに追加したいハードウェアのファイル (VHDL Verilog-HDL) のコンポーネント化 b) 新たに追加したいハードウェアとの接続部分のみのコンポーネント化 この資料では新たにシステムへ追加したいハードウェアを FPGA の外部メモリと想定していますので メモリとの接続部分のハードウェアのみのコンポーネント化を行います アバロン インターコネクト ファブリックは リード用とライト用でデータバスが独立していますが FPGA の外部メモリは 通常 リード用とライト用でデータバスが共通です したがって アバロン MM インタフェースと FPGA の外部メモリのバスを接続するためには トライステートの機能を設け 双方向ポートを用意する必要があります SOPC Builder 内のコンポーネントとして提供されている Avalon Tri-State Bridge ( アバロン トライステート ブリッジ ) を使用することでトライステートの機能を設けます この資料で紹介する例では 外部に接続するメモリを SRAM とし 想定しているポートを以下に示します 表 1 のポート名は アバロン インターコネクト ファブリックとメモリの接続部分のポートに定義した名前です 表 1 ポート仕様ポート名 役割 ビット幅 メモリから見た方向 ext_address アドレス 18 入力 ext_data データ 32 双方向 sram_cs_n チップ セレクト 1 入力 sram_we_n ライト イネーブル 1 入力 sram_oe_n アウトプット イネーブル 1 入力 sram_be_n バイト イネーブル 4 入力 Page 1 of 10 Altima Corporation
3. 操作方法 3-1. コンポーネントの作成 (Component Editor の設定 ) 1. SOPC Builder を開きます (Quartus II の Tools メニュー > SOPC Builder または ボタンをクリック ) 2. SOPC システムの名前をタイプし 生成させる言語を選択します 3. File メニューから New Component もしくは New ボタンをクリックすると Component Editor ウィンドウが表示されま す 4. Signals タブを選択し Add Signal ボタンをクリックします ver. 8.1 2009 年 3 月 Page 2 of 10 Altima Corporation
5. 表 1 で示したポートを順番に設定していきます まず アドレス ポート (ext_address) の設定をします Name 欄にポート名 ext_address をタイプします Interface 欄はプルダウンメニューより new_avalon_memory_mapped_tristate_slave を選択します Interface 欄に avalon_tristate_slave が表示されます Signal Type は プルダウンメニューより address を選択します Width 欄には 18 を入力します Direction は input を選択します Signals タブで用意されている入力項目の説明を 表 2 よりご確認ください 表 2 入力欄の説明入力欄 説明 Name Interface ポート名を入力 このポートと接続されるインタフェースの規格を選択 ( アバロン MM インタフェースの マスタ スレーブ アバロン トライステート ブリッジ もしくはグローバル信号など ) Signal Type Width Direction Interface で選択した規格に定義されている中のどのポートと接続するのかを選択 このポートの幅を定義 追加するメモリやハードウェア側から見たポートの向きを定義 6. 残りのポートも 5 と同じ手順で追加します データ ポート (ext_data) の Direction の設定は bidir になりますのでご注意ください 表 1(1 ページ ) 通りにポートを追加すると 以下のようになります 表 1 の設定ポートに加えて Clock を入力します ver. 8.1 2009 年 3 月 Page 3 of 10 Altima Corporation
7. Interfaces タブを選択し Name 欄は アバロン トライステート スレーブの名前を定義します Type 欄は Avalon _Memory_Mapped_Tristate _Slave を選択します Associate Clock 欄はインタフェースに入力するクロックを選択します 8. Timing で各メモリが要求する Setup Read Wait Write Wait Hold の時間を調節します Unit で設定するタイミングの単位として Cycles ns のどちらかを選択します Units を ns として 1 ns 等細かい単位でタイミングの入力することが可能ですが 実際にシフトできるタイミングの最小単位は 入力された周波数に依存した時間のサイクル数になります 50 MHz のクロックを入力している場合 1 ns と設定していても 実際のシフトは 20 ns となります Show deprecated parameters にチェックを入れ Deprecated の設定を表示させます Deprecated の Memory device にチェックを入れます Signals タブで信号を定義する際に Interface 欄へ 誤って使用しないインタフェースを選択してしまった場合には この Interface タブにその未使用のインタフェースが表示されます Interface タブに未使用のインタフェースが表示されてしまっている場合には Remove Interface with No Signals ボタンをクリックすると 未使用のインタフェースの表示が削除されます ver. 8.1 2009 年 3 月 Page 4 of 10 Altima Corporation
9. Component Wizard タブを選択し Class Name Display Name にコンポーネント名 Component Group にグループ名を入力します ここで登録したグループ名 コンポーネント名で SOPC Builder 上の System Contents タブに追加されます Class Name : System Contents タブの左枠のペリフェラル一覧に表示される名前 Display Name : システムに追加されたとき使用される名前 HDL ファイルへの記述にはこの名前が使用されます ペリフェラル一覧の中の作成したコンポーネントを追加するグループを選択します User_logic のように任意のグループ名を入力すると新しいグループが作成されます 10. Component Wizard の Finish ボタンをクリックすると Save Change のウィンドウが表示されますので Yes, Save をクリックします ver. 8.1 2009 年 3 月 Page 5 of 10 Altima Corporation
11. SOPC Builder の System Contents タブに 9 項で入力した名前のグループ内に 作成したメモリ インタフェースのコンポーネントが登録されます 3-2. コンポーネントを SOPC Builder システムに追加 ( ここでは Nios II のマスタ コンポーネントがあらかじめ用意されていることを想定しています ) 1. 新たに作成したメモリ インタフェースのコンポーネントを SOPC Builder のシステムへ追加します 2. System Contents タブの Bridges and Adapters グループの Memory Mapped カテゴリより Avalon-MM Tristate Bridge を選択し Add ボタンをクリックします ver. 8.1 2009 年 3 月 Page 6 of 10 Altima Corporation
3. Avalon-MM Tristate Bridge ウィンドウで Registered へチェックを入れ Finish ボタンをクリックします 4. Avalon Tri-State Bridge のマスタと 追加したメモリ インタフェースのコンポーネントを接続します 5. Nios II のコンポーネントのウィザードを開くと Reset Vector の項目と Exception Vector の項目があり システムへ追加したメモリ インタフェースのコンポーネントが選択できるようになります 追加したメモリ インタフェースを選択し Finish ボタンをクリックし ウィンドウを閉じます ver. 8.1 2009 年 3 月 Page 7 of 10 Altima Corporation
6. SOPC Builder 上の各コンポーネントのベースアドレスが他のコンポーネントと重なっていれば 重ならないようにアドレスを配置してください 7. システムの設定が完了したら SOPC Builder の Generate ボタンをクリックし システム生成します 3-3. Quartus II でハードウェア デザインを作成 1. SOPC Builder でシステムの生成が終了すると シンボル ( システムのトップ デザイン ファイル ) にメモリ用に定義したポートが生成されているのが確認できます 2. Quartus II でコンパイルを行い メモリとのインタフェースが可能なハードウェア ( コンフィギュレーション データ ) を生成します 生成されたポートとトップデザインのポートを接続します この際 追加した外部メモリ接続用のロジックから出力されるアドレス線が指定したアドレス線の本数より 2 本も多く出力されています これは アドレス線の byteenable として使用する下位 2 ビットのアドレス線が追加されているためです byteenable は別に用意していますので このアドレス線の下位 2 ビットは使用しません 出力ピントとはアドレス線下位 2 ビットを省いた形で接続します ver. 8.1 2009 年 3 月 Page 8 of 10 Altima Corporation
3-4. Nios II IDE の設定 Nios II IDE でアプリケーション プログラムをビルドする際に プログラム メモリとして システムへ追加したメモリ インタフェースのコンポーネントが選択できるようになります Nios II IDE の使用方法の詳細は Nios II Integrated Development Environment (http://www.altera.com/literature/hb/nios2/n2sw_nii52002.pdf) をご確認ください ver. 8.1 2009 年 3 月 Page 9 of 10 Altima Corporation
弊社より資料を入手されましたお客様におかれましては 下記の使用上の注意を一読いただいた上でご使用ください 1. 本資料は非売品です 許可無く転売することや無断複製することを禁じます 2. 本資料は予告なく変更することがあります 3. 本資料の作成には万全を期していますが 万一ご不明な点や誤り 記載漏れなどお気づきの点がありましたら 弊社までご一報いただければ幸いです 4. 本資料で取り扱っている回路 技術 プログラムに関して運用した結果の影響については 責任を負いかねますのであらかじめご了承ください 5. 本資料は製品を利用する際の補助的な資料です 製品をご使用になる場合は 英語版の資料もあわせてご利用ください 横浜本社 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 ver. 8.1 2009 年 3 月 Page 10 of 10 Altima Corporation