Nios II で Hello World

Qsysを使用してDE0にNios IIを実装してPCに Hello World! を表示させました.
実際には自分でソースコードを書いたりだとかはほとんどしておらず,どちらかと言えばQuartusとQsysの使い方がメインです.


1.使用した環境
Windows7
・Quartus II Ver.13.1 Web Edition
・DE0ボード

 

2.方法

 (1)Quartus II を起動して新規プロジェクトを作成
プロジェクト名を「HelloNios」として適当なディレクトリに新規プロジェクトを作成した.

f:id:taltalp:20150702045630p:plain

 「Family & Device Settings」はDE0ボードに載っている「EP3C16F484C6」を選択

それ以外は規定値でFinishを押してプロジェクトを作成した.

 

(2)Nios II の作成

 Tools→Qsys でQsysを起動
Qsysが開いたらLibraryタブの検索欄に「Nios」と入れると「Nios II Processor」が出てくるので選択してAddをクリック
そうするとNios II の設定ウィンドウが開くので「Nios II Core」の「Nios II / e」を選択してとりあえずFinishを押す.

※Nios II /s と Nios II / f は無料版では使えない.

※この時点ではエラーが表示されるがここではそのままでよい

 

(3)その他コンポーネントを追加

先ほどと同様に検索をかけて「On-Chip Memory (RAM or ROM)」を追加
Size の Total memory size を 16384 bytes に設定した. (メモリーのサイズなのでもっと大きくしてもいい)

 

さらに「JTAG UART」を追加

これは何も設定を変えずにFinishを押した.

 

(3)コンポーネントの接続

f:id:taltalp:20150702051325p:plain

 System ContentsタブのConnectionsにある白丸をクリックするとコンポーネントを接続することができる. 写真のように線をつなぐ.

 

さらに、それぞれのコンポーネントのアドレスを設定するために、System→Assign Base Addresses をクリック
これで各コンポーネントのアドレスを自動で決められる.

※手動で設定したい場合はSystem ContentsタブのBaseから変える.

 

(4)リセットベクタ・エクセプションベクタの設定
System Contentsタブの「nios2_qsys_0」をダブルクリックするとNios2の設定画面がでるので,Reset Vector memory と Exception vector memory を「onchip_memory2_0.s1」に設定

f:id:taltalp:20150702052240p:plain

Nios2の設定は最終的に画像のようになる.

(5)論理合成

ここまで設定が完了したらGenerate→Generate…をクリック.
今回の設定を保存するか聞かれるので「Nios2e.qsys」という名前でプロジェクトディレクトリ直下に保存した.その後GenerationウィンドウのGenerateボタンを押して論理合成をした.

 

(6)トップモジュールの作成

Quartusに戻ってFile→Newより「Verilog HDL File」を選択.


module HelloNios(
    CLK, RST_N
);

    input CLK, RST_N;

    Nios2e u0 (
        .clk_clk       (CLK),       //   clk.clk
        .reset_reset_n (RST_N)  // reset.reset_n
    );
endmodule

 上記のコードを書いて「HelloNios.v」という名前で保存.

 

(7)プロジェクトにQsysで作成したNiosを追加

 

f:id:taltalp:20150702161117p:plain

 Qsysで作成された設定ファイルをプロジェクトに追加する.

プロジェクトの設定画面を開いてFilesを開き,Qsysの設定ファイルを追加する.

f:id:taltalp:20150702161357p:plain

 写真のように設定ファイルを選択して,Addを押せばよい.
追加したらOKを押す.

 

(8)コンパイル

ピンアサイン前に一度コンパイルする.

f:id:taltalp:20150702165256p:plain

写真の▶マーク

 

(9)ピンアサイン

CLK・・・PIN_G21 (50Hzクロック入力)
RST_N・・・PIN_H2 (プッシュスイッチ)
設定.

 

(10)もう一度コンパイル

ピンアサインを変更したのでもう一度コンパイルする.

 

(11)書き込み

Programmerを開いてプログラムをDE0に書き込む.
※書き込みが終了したらProgrammerは必ず閉じてください.(後でPCとDE0で通信するときにエラーが起きるため)

 

(12)Nios II Software Build Tools for Eclipse の起動

Quartus で Tools → Nios II Software Build Tools for Eclipse を押してEclipse を起動する.

これ以降の作業はこのEclipse上で行う.

 

(13)プロジェクトの作成

File → New → Nios II Application and BSP from Template を選択

・SOPC Information File name はQuartus ii で作成したプロジェクトのフォルダ内にある 「Nios2e.sopcinfo」 を選択

・Project name を 「HelloWorld」

・Templates は 「Hello World Small」を選択.

※Templates の 「Hello World」 は容量が大きすぎるためOn-chip memory に入らない

Finishを押して新規プロジェクトを作成する.

f:id:taltalp:20150702170510p:plain

 

(14)プロジェクトのビルド

新規作成したプロジェクト「HelloWorld」を右クリックしてBuild Project をクリック.

(15)DE0に書き込む

「HelloWorld」を右クリックしてRun As→Nios II Hardware
うまく行けば下の写真のように「Hello from Nios II !」と表示される.

f:id:taltalp:20150702171058p:plain

 

うまく行かなかった場合はRun As → Run Configuration のTarget Connection タブで System ID checks の中のチェックボックス2つにチェックを入れ、Refresh Connections を押す.
接続がうまくいくとTarget Connection のアイコンからXマークが消える.その後下のRunを押して実行する.

f:id:taltalp:20150702171521p:plain

 

参考文献

 

FPGA ボードで学ぶ組込みシステム開発入門 ?Altera編?

FPGA ボードで学ぶ組込みシステム開発入門 ?Altera編?