はじめに
この記事は以下の記事の続きです。
Verilog HDLのソースファイルを作成しよう
というわけで、次はついにVerilog HDLのソースを書いてゆきます。
File->New
のメニューからVerilog HDL File
を選択します。
すると、Verilog1.vというファイルが開かれた状態になります。
とりあえず、ここに以下のソースを打ち込んでみてください。
できましたか?
VirtualBoxを使っている方は、デバイス->クリップボードの共有->双方向
のチェックを入れると、ホストOSでコピーしたものを貼り付けられるので覚えておいてください。
では、このファイルを保存します。Ctrl-S
もしくはFile->Save
を押してください。
すると、ファイルの保存先を聞かれます。保存先ディレクトリがプロジェクトのルートディレクトリ、ファイル名がled.v
となっていることを確認して、Save
を押してください。
これでソースファイルはできあがりました!
とりあえずコンパイルしてみよう
では、今打ち込んだソースをコンパイルしてみます。
Ctrl-L
もしくはProcessing->Start Compilation
を押してください。
すると、左下のTasksというところの進捗状況が進んで、下のMessagesウィンドウに色々と流れてきます。
全部うまくいくと、こんな感じになります。
次は、ピン割り当てをしましょう。
ピン割り当てをする
先のコンパイルで、FPGA内に論理回路を構成することはできました。しかし、これだけでは使い物になりません。
というのも、FPGAにはたくさんのピンがあるわけですが、どのピンに論理回路のどの入出力を割り当てるのか、Quartusさんは知りません。なので、内部の論理回路は正しくても、FPGAの外の世界と正しくつながっているかは、神のみぞ知る、といった状態です。それでは困りますよね。
今回の場合は、2つのLED(led1, led2)と1つのスイッチ(btn)、そして1つのクロック信号(clk)が必要ですから、その4つの信号を適切なピンに割り当てなければいけません。 そうしないと、意図したLEDが光らなかったり、スイッチだと思ったらLEDだったり、下手をするとショートして回路が壊れてしまったりするわけです。
ちなみに、この指定をしないでコンパイルした場合(さっきのコンパイル)は、Quartusさんが都合のいいように適当にピン配置を決めてくれてしまいます。 では早速、Quartusさんに適切なピン配置を教えてあげましょう。
Assignments->Pin Planner
を開いてください。
すると、このような画面が出てきます。上半分にでている大きな正方形は、FPGAのイメージです。
そして、下の方にある表が、ピン配置の表です。Node Name
が、先ほど打ち込んだソース上での信号名を指しています。そして、今回設定するのはLocation
の列です。
ここで、今回のボードにおける、各ピンとその先につながっているデバイスの表を見てみましょう。
ピン番号 | つながっているもの |
---|---|
23 | クロック(50MHz) |
88 | プッシュスイッチ1 |
87 | LED1 |
86 | LED2 |
なるほど。では早速これをPin Plannerで設定してゆきましょう!
といっても、作業は非常に単純です。変更したいLocation
のセルをダブルクリックして、横に出てくる下矢印を選択すると、選択可能な信号の一覧が出てきます。この中から、適切な信号を選ぶだけです。
すべて設定すると、こんな感じになります。できあがったら、Pin Plannerは閉じてしまってかまいません。
再度コンパイルする
元の画面に戻ってくると、左側のTasks
ウィンドウに?
がたくさん浮かんでいることに気づきます。これは、ピン配置を変更したため、配置配線(Place & Route)からやり直す必要があるためです。
というわけで、もう一回コンパイルしてあげましょう。
うまくいけば、また全て緑のチェックマークになります。
次はついに書き込みです!
FPGAに書き込む!
ここまでの手順で、FPGAに書き込むデータまでは完成しました!もうあとは書き込むだけです。
Tools->Programmer
を開いてください。
この段階で、USB BlasterをPCに接続し、FPGAボードの電源もオンにしておきましょう。
Virtual Boxを使っている方は、デバイス->USB->Altera USB Blaster
にチェックを入れておきましょう。これにより、仮想マシンにUSB Blasterが接続されます。
次に、左上のHardware Setup ...
ボタンを押してください。ここで、どの書き込み器を使用するか選択します。
Available hardware items のところに、USB-Blasterという表示があれば、その名前をダブルクリックしてください。すると、その書き込み器が選択された状態になります。
何も出てこない場合は、接続やVirtualBoxの設定等を確認し、Hardware Setupのウィンドウを再度開いたり、根気よく試してみてください。
どうしてもだめな場合は、書き込み器が壊れている場合があります(私も壊れたUSB-Blasterに当たってしまって困り果てました…)。
さて、うまくいったら、Hardware Setupのウィンドウは閉じてOKです。
次に、左にあるAuto Detect
というボタンを押しましょう。
ここでも、よくコケます。根気よくいきましょう…。
うまくいくと、エラーが出ずにAuto Detectが終了します。
そうしたら、左上のStart
というボタンを押して、書き込みましょう!
うまくいけば、右上のProgressが100%(Successful)
になり、ボード上ではあなたの書いたプログラムが動いています!!!
ちなみに、こんな感じに動けばOKです。
とりあえずのFPGAでLチカ動画。
— hikalium (@hikalium) 2017年5月24日
(押してる間だけチカチカして、離すと止まる。) pic.twitter.com/HUs6wA1Ugk
おつかれさまでした!これでもうなんでも作れますね!(さすがにきつい…。)