FPGAにプログラムを書き込む
デジタル回路は、AND, OR, NOTの3種類が基本
ANDは2つの入力がともに1の場合のみ、1という値を返します。
またORはどちらか一方のみが1なら、1の値を返します。
下の表に入力と出力の関係をまとめました。
ほかにもNAND, NOR, XORといった回路がありますが、上記3つの回路を組み合わせて作ることができます。そして、これらの回路を複雑に組み合わせることで、パソコンのような高度な処理を行えるようになるのです。
今回はまず、作ったプログラムを書き込む方法を知っておきましょう。
FPGAへの実装
それでは早速、これらの回路をHDLで書いてみて、FPGAに実装してみたいと思います。
プロジェクトの作成
次の画面では以下の情報を入力しましょう。
①:作業フォルダ(書いたプログラムなどの保存場所)
②:プロジェクト名(自分がわかりやすい名前)
③:TopModuleの名前(TopModule以外だとエラーになる可能性がある)
デフォルトのままで次へ。
何も入力せず次へ。
この画面では、使用するFPGAを選択します。
①のとおりに選択すると、合致するFPGAが②に表示されるので、②から使用しているFPGAの型番を選択します。今回は、「10M50DAF484C7G」を選択します。
ちなみに型式はチップで確認できます。
何も入力せず次へ。
最後に設定を確認して完了です。
プログラムを書く
File→Newを選択して、プログラムを記述するファイルを作成します。
言語はverilog HDLを選択してください。
ファイルが作成されますがファイル名を変更しておきたいので、ここで一度名前を付けて保存をします。File→Save As…を選択して、ファイル名を「TopModule」として保存します。
それではプログラムを書き込んでいきましょう。以下のコードを書いてみてください。ここでは、swという値を入力として、ledという値を出力するという回路になっています。
module TopModule(input sw, output led);
assign led = sw;
endmodule
この段階では、swにどんな値が入力されて、ledの出力がどうやってボード上に表示されるのかわからないと思います。なので次にピンの設定をすることで、プログラムの値とFPGAの配線を対応つけていきます。
ピンの設定
ここではピンプランナーという機能を使用して、プログラムの値をFPGAのピンに割り当てていきます。
具体的には、swという値をボード上のプッシュボタンに、ledをボード上のLEDの一つに割り当てます。
まず、作成したモジュールをQuartusPrimeに認識させるための処理をします。下図のStart Analysis & Elaborationを押してください。
下の枠に、「 QuartusPrime Analysis & Elaboration was succesful. 」と表示されていれば完了です。
次にピンプランナーを開きます。
DE10-Liteでは、FPGAのPIN_A8がボード上のLEDにつながっています。なので、ピンのLocationにPIN_A8と入力してください。これで、プログラムに記述したledという値とFPGAのピンが対応付けられました。
同様にswもPIN_C10と入力してください。ちなみにc10と入力すれば自動でPIN_c10と変換されます。
入力が終わったら、File→Closeでピンプランナーを閉じます。
上記は使用するピンの設定でしたが、未使用ピンも設定する必要があります。
Device and Pin Options…を開きます。
まず左のUnused Pinsを選択します。次にReserve all unused pins:の欄で、As input tri-statedを選択します。
これで未使用ピンの設定は終了です。okを押してウインドウを閉じてください。
コンパイル
次にプログラムのコンパイルを実行します。Start Compilationを押してください。下の枠に「 Quartus Prime Full Compilation was successful. 」と表示されていれば完了です。
次にこのデータをFPGAに書き込んでいきます。PCとFPGAボードをUSBケーブルもしくはUSB-Blasterで接続してください。DE10-Liteであれば付属のUSBケーブルで接続できます。
プログラムの書き込み
次にProgrammerを起動します。
Hardware Setup…を押して、、、
Currentlu selected hardware: の欄でUSB-Blasterを選択します。Closeして閉じます。
前の画面に戻るとAuto Detect押せるようになっているので、押してデバイスの選択画面を開きます。
デバイスは10M50DAを選択しました。
この値はデバイス選択したものを参考にしてください。
下の画面に戻ると、デバイスの絵が表示されていると思います。デバイスの中に青矢印が表示されていれば、QuartusPrimeがデバイスを認識できておりプログラムの書き込みが可能です。
もし表示されていなければ、Programmerのウインドウを閉じてもう一度開いてみてください。
Programmerの画面でStartボタンを押すと、プログラムが開始され、DE10-Liteボードにプログラムが書き込まれます。
写真右下のLEDとスイッチを見ると、スイッチがOFFだとLEDも消えていますが、スイッチを入れるとLEDが点灯することがわかります。
以上がプログラムを書き込むまでの一連の流れになります。
コードが書けるようになったら、あとは上記の流れで書き込んでいけばいいので、書き込みの方法に迷ったときはこのページに立ち返って思い出してみてくださいね。
次は、AND回路を始めさまざまな機能のプログラムを書いて、音響浮揚のためのプログラムを勉強していきましょう。