FPGAに興味があったもののなかなか手を付ける機会がなくて。。。学習キットをいくつか買っていたのですが触る機会もなく放置してきました。
そろそろだな。。。と。手元にあったDE0 nanoを動かしてみました。
参考にさせていただいたのは以下の2つのエントリーでした。ありがとうございました。マニュアルが付属しているのでそれを読めばわかることも多いのですが。。。とにかく助かりました。
FPGA未経験者がDE0-Nanoを初めて動かす際にハマりそうなポイント - Qiita
とにかく初めてですので、右も左もわかりません。。。
上記のエントリーを参考にしつつ、困ったところを以下に示したいと思います。たぶん、2,3週間もすると忘れてしまうので作業ログになります。
まず、設計用のソフトウェア(Quartus Prime ライト・エディション 18.1 windows版)を以下からダウンロードします。DE0 nanoにDVDがついていますが(時代の古さを感じます)、これは使いません。
ちなみに、一式ファイルでダウンロードすると6GBくらいあって。。。しかもMac上のVirtualBoxで動作しているので、できればディスクイメージを大きくしたくないな。。。と個別ファイルのインストールを選択しました。
ダウンロードしたのは以下の2つのファイル。
- Quartus Prime (includes Nios II EDS) 2GB
- Cyclone IV device support 466MB
ダウンロードにしばし時間がかかりましたが、とりあえずVirtualBoxのWin10にこの2つのファイルを持っていって2つともデスクトップに置いてQuartus Prime (includes Nios II EDS) の方をダブクリします。このインストールのときにCyclone IV device supportもインストールされるようです。この辺って当たり前過ぎて書いていないんですね。一式をダウンロードしてインストールするとこんな配慮はいりませんからね。
さて、Quartus Primeをインストールし終えたら、Quartus Primeを起動します。
手順は、上記の「DE0-Nanoの覚え書き」に従えばいいのですが、この記事も途中が省略されているので、いくつか迷うところがありました。
まず、以下の画面が出てきますが上記のエントリーでは出てきません。Project templateを選択します。
次に、以下の画面が出ていますが、中段のAvailable design templateの欄が空になっています。
困ったなぁ。。。と。画面に書かれている通りにDesign Storeというリンクをクリックします。するとブラウザが立ち上がり以下の画面になりますので、Familyのところを「Cyclone IV」に、Categoryを「Design Example」を選択すると絞り込まれますので、その中から「DE0-Nano Baseline Pinout」を選択すると。。。名前は忘れましたがファイルがダウンロードできます。
そのダウンロードしたファイルを、上記(2つ上の画像)の画面のInstall the design templateというリンクを押して出てきた画面にしたがって読み込むことでインストールされて、上記(2つ上の画像)の画面になります。その状態でFinishボタンを押せば終了です。こういう操作もやってみないとわからないですね。。。
プロジェクトができたら、あとは、「DE0-Nanoの覚え書き」にしたがって進めます。
ただ、その前に。「FPGA未経験者がDE0-Nanoを初めて動かす際にハマりそうなポイント」の「USB Blasterを認識しない」に書かれている通り、デバイスドライバーの状態を確認した方がいいです。たぶん黄色△がついています。つまりデバイスが認識されていないためあとでメンドウなことになります。私はこれで20分くらい彷徨いました。ドライバ更新を押して、Quartus Primeのフォルダにあるドライバディレクトリを選択すればいいので(←細かい操作は記録してませんが、ちょっと迷うところがあるかもしれません、どこを選択すればいいんだよ。。って)、これをまずしっかりやることです。
その後、Quartus Prime上で新規ファイル作成して、VHDLのコードを追加することもスムーズにできると思います。
次に困るのが「ピンアサインの設定」のところです。やりたいことはわかります。でも、書かれている内容から何をすればいいのかわかりません。。。経験のなさです。分かる人にはわかるのでしょう。わかりません。セーブするようなことでもないようです。
実際には何もすることはありません。1つ1つ設定しなければならないような書き方なのですが()ピンアサインはデフォルトで読み込まれるようなので、SystemBuilderを使えばいいとも書かれていますが(私はやりましたが)、それもやらなくてもいいようではあります。あれこれやったので、もしかすると必要なのかもしれませんが。まずい点があればあとで修正が効きますので先に進みましょう。
以下のように書かれていますので、ここは素直に従います。ただ、[Compile Design]はボタンではなくただのテキストです。これもやってみればわかるのですけどね。。。文章だけ読むと想像と違ってきます。難しいですね。。。[Compile Design]と書かれたテキストをダブクリするだけでコンパイル等が自動的に開始されて進んでいきます。
ピンアサインの設定ができたら、左下メニューの[Compile Design]をダブルクリックして、プログラムファイルを作成します。
次に、「FPGAにプログラムを書き込む」に進みます。ここでも以下のように書かれているのですが。。。空欄でしばし困ったことがありました。その原因は、上記の通り、ドライバの更新をしていなくて、USBでDE0 nanoを接続して一見動いているように見えていたのですが、実はPCとDE0 nanoが正しく通信できていなかった。。。という問題でした。ちゃんとドライバが更新できていれば、[Start]を押すだけの状態になれます。この操作を行うことによって、プログラムコードをDE0 nanoに書き込むことができるようです。ここでLEDが光らなければ。。。ミスがあります。
左メニューの[Start]をクリックすれば、簡単にFPGAに書き込むことができます。
一番の原因は「FPGA未経験者がDE0-Nanoを初めて動かす際にハマりそうなポイント」の「解決方法 1. プロジェクトの設定を変える」に書かれているところでした。これが違うと上記の操作を何度繰り返しても所望のコードがハードに転送されません。ここは、最初、DE0 Nanoとなっていたのですが、VHDLコードのtestに書き換えました。
動作するにはあと1点あります。
VHDLコードにはCLKがあるのですが、自動認識?したピンアサインにはCLOCK50?というラベルになっています。これではクロック信号をVHDLのコードで読み込めません(←なんか表現が違うような気がするけど。。。)。
Pin Planner に移動して、CLOCK50をCLKに書き換えます。
いずれも「FPGA未経験者がDE0-Nanoを初めて動かす際にハマりそうなポイント」に書かれていたことでした。ありがたやありがたや。
コードも手順も借り物競走ですが。。。動いたらなんか感動しますね。。。少しずつ広げていきたいですねぇ。