見出し画像

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回路を始めさまざまな機能のプログラムを書いて、音響浮揚のためのプログラムを勉強していきましょう。


この記事が気に入ったらサポートをしてみませんか?