またしても忘却曲線の彼方になりつつなるVerilogの勉強を再開した。
今回はこちらの本を片手に格闘中だ。
FPGA ボードで学ぶ組込みシステム開発入門 ?Altera編?
- 作者: 小林優
- 出版社/メーカー: 技術評論社
- 発売日: 2011/09/22
- メディア: 大型本
- 購入: 3人 クリック: 31回
- この商品を含むブログ (19件) を見る
一方で、読んで実際にVerilogを書いていくうちに、"初めてのVerilog"のような本には書かれていないVerilogの基礎が身につくようになっている。
良書だ。
さて、この本の第5章でNios IIの組み込みがでてくる。
Quartus IIには使いごたえのある各種IPが含まれている。
その一つがNios IIというSoft IPのマイクロコントローラ、つまりマイコンだ。
Nios IIも含めたIPを組み合わせてモジュールを作るSOPC Builderというツールも含まれている。
この本ではSOPC Builderを使ってNois IIを組み込むことにだいぶページが割かれているのだが、筆者の使っているQuartus II 13.1(Cyclone IIIをサポートする最新のIDE)では、SOPC BuilderがQsysに完全に置き換えられているのだ。
この本の巻末にもQsysの使い方は簡単に触れてある。
これを元にこの本の第5章の内容をQsysyでやってみた。
例によって忘却曲線の彼方とならないように、ここに詳細を書いておく。
Quartus IIでプロジェクトを作成する
これは本の指定通り、プロジェクト名を"nios2pio"とする。
プロジェクトの作成方法はこちら。
Qsysを開く
Quatrus IIのメニューから、"Tools" -> "Qsys"で開く。
QsysでIPを組み込む
"Library"ペインからIPを選択し、"Add"ボタンを押すことでモジュールに組み込むことができる。
今回使用するIPは下記の通り。
追加の際にでるダイアログで、"Nios II/e"を指定する。
- "Memories and Memory Controllers" -> "On-chip" -> "On-chip Memory (RAM or ROM)"
追加の際にでるダイアログで、"Size" -> "Total memory size"を"8192(byes)にする。
- "Peripherals" -> "Microcontroller Peripherals" -> "PIO (Parallel I/O)"
これは2つ組み込む。
一つは追加の際にでるダイアログで、"Width"を"8"bit、"Direction"を"Output"(それぞれデフォルトのまま)とする。
もう一つは、"Width"を"4"bit、"Direction"を"Input"とする。
- "Interface Protocols" -> "Serial" -> "JTAG UART"
- "Peripherals" -> "Debug and Performance" -> "System ID Peripheral"
それぞれデフォルトのままで追加する。
命令バスを接続する
上の図で、緑丸のついているところをクリックし、Nios IIの命令(instruction)バスとメモリーを接続する。
PIOの入出力をモジュールの宣言にexportする
オレンジ色の部分をダブルクリックし、各PIOの入力、出力をモジュールの宣言にexportする。
ダブルクリックした際に、ポート名が入力きるようになるが、デフォルトでよい。
JTAGの割り込みを接続する
上の図で、黄色丸のついているところをクリックし、JTAGの割り込みをNios IIに接続する。
これをするとWarningが消えるが、実用上はWarningがあっても今のところは問題がないようだ。
Reset VectorとException Vectorを指定する
Nios IIのIPをダブルクリックして設定を開く。
下図のように、Reset VectorとException Vectorのvector memoryを"(上記のメモリーモジュール名).s1"に指定する。
これはプルダウンメニューから選ぶだけでよい
"Generate" -> "Generate"でモジュールを生成する
これでQuartus IIから組み込み可能なモジュールのqsysファイルと、モジュールの宣言をしたVerilogが生成される。