ぽき です。

以前ぽきが作成した "Nios II に LED を点滅させる機能(いわゆる L チカ)だけを持たせた Qsys デザイン" に、JTAG_UART を追加することにしました。

JTAG_UART を加えると、JTAG 経由で FPGA からパソコンに文字や数字を出力することができます。

JTAG_UART を追加したデザイン

Qsys を再度 Generate HDL して、ハードウェア・デザインを変更しました。

その後プログラムに新しく JTAG_UART で文字を出力させる alt_putsr を追加で記述します。

 

alt_putstr("Start!!\n");

 

 

しかし、上記のプログラムを Build すると、エラーが出力されてしまいました。

Build 時のエラー

私は、エラーの原因に気づきました。

「Qsys を再 Generate したから sopcinfo ファイルがアップデートされているのだった!」

SBT では sopcinfo ファイルを基に BSP (Board Support Package) を作成するため、

sopcinfo ファイルがアップデートされると BSP とプログラムの整合性が取れなくなってしまいます。

※ sopcinfo ファイルは Qsys のシステム構成をソフトウェア開発環境の Nios II Software Build Tools for Eclipse ( SBT ) に渡す役割をします。

 

「整合性が取れなくなってしまうということは、更新した sopcinfo ファイルを使って、

もう一度ソフトウェア・プロジェクトを作り直さなくてはいけないのか。

BSP の設定など再度行う必要があるので、少し手間だな。」 

 

ただ!その必要はありませんでした!

 

作ってあるソフトウェア・プロジェクトを利用するやり方がありました!

どうすればよいのか?

sopcinfo がアップデートされた際には既存の BSP を更新することで、Qsys デザインの変更を反映し、

既存のソフトウェア・プロジェクトを使用することができます!

更新方法は BSP フォルダを右クリックして、Nios II → Generate BSP をクリックするだけです。

Generate BSP

Generate BSP をクリックすることで、sopcinfo ファイルの変更を反映して BSP を再生成することができるのです。

変更が正しく反映されたのかどうかを system.h ファイルで確認してみましょう。

BSP フォルダの system.h というヘッダ・ファイルは

sopcinfo ファイルを基に生成されたペリフェラルのアドレス値などのマクロ定義ファイルです。

この中身を見ると先ほどまではなかった jtag_uart が追加されていることが確認できます。

system.h の JTAG_UART 部分

また今回のように Qsys でペリフェラルを追加し処理を新しく記述するなど、プログラムの変更を伴う場合、

オンチップ RAM に持たせるデータも変更になります。

後は前回紹介したように mem_init_generate の後にフルコンパイルします。

(こちらのコンテンツを参考にしてください。)

 

コンパイルすると、オンチップ RAM の初期値がアップデートされた sof ファイルができます。

この sof ファイルを書き込み、 Nios II Command Shell 上から nios2-terminal でコンソールを立ち上げて、見てみると…

JTAG_UART の出力

先ほど記述したプログラム部分により Start! が出力されているのが分かります。

これでQsys を変更したときも、ソフトウェア・プロジェクトを作り直すことなく

1 回のコンフィグレーションでソフトウェアを起動することができます!

 

最後に

今回の作業で使用した MAX 10 Evaluation Kit についてです。

 

MAX 10 Evaluation Kit の大きさ(約 7.5 cm)

MAX シリーズは今まで RAM ブロックを搭載していなかったため、 Nios II を搭載することができませんでした。

しかし、MAX 10 では RAM ブロックが搭載され Nios II が搭載可能になり、しかも Flash Memory 内蔵のため、

外付けの Configuration ROM いらず!

 

さらに ADC 機能も付いているのです!

この MAX 10 は Flash Memory 内蔵の FPGA としてラインナップされております。

 

また Enpirion という高効率でかつ実装面積が小さいインダクタ内蔵の電源も載っています!

なんとこれも Altera 社の製品なのです!

 

先ほど大きさを図っていたルーラーサンプルで確認できるように、とても小さいですよね。

FPGA の推奨電源として Enpirion の小ささは、基板面積縮小にもってこいのソリューションです!

MAX 10 Evaluation Kit に実装されている Enpirion

この MAX 10 Evaluation Kit で Nios II を試してみるも良いのではないでしょうか?

私もこのボードを存分に使い倒したいと思います!