Verilogで書いたコードで基盤のランプを点滅させる!


最近研究室でVerilogを触り始めたので、メモがてらこちらの記事を書こうと思います。

環境

Windows 10
Quartus Prime Lite 17.0
EPM1270T144C3N
USB Blaster

Quartusは2020年現在19が最新だと思いますが、私は諸事情で17を使っています。

Pin Assignment

AssignmentsからPin Plannerを開きます。

下のほうにNode NameLocationがあるのでこちらを設定していきます。今回は試してみるだけということでノードの名前はすべてexampleで始めることにしました。PIN_143などのピン番号はあらかじめ設計図などを見たもので、143は基板の左端のランプにつながっていることから選択しました。

Verilogのコード

area_project.v
module area_project(
    output example_144, output example_143, output example_142
);

assign example_144 = 1;
assign example_143 = 1;
assign example_142 = 1;

endmodule

上記のファイルではとりあえず1をアウトプットさせて、ランプをオンにするようにしています。ここで0とした場合はランプはオフのままとなります。

ファイル名とモジュール名は同じにしておかなければいけません(今回だとarea_project)。そうしないとコンパイルの際に以下のようなエラーが出ます。

error top level design entity is undefined

コンパイル、そしてダウンロード

コンパイルを行うには以下のスクショの赤い丸で囲んだ青いボタンを押します。

ここでコンパイルが成功すれば、プログラマを押して、コード命令をダウンロードすることになります。

このときにデバイスが検出されていない場合はauto detectボタンを押してデバイスを検出します。(検出できない場合もありますが面倒なのでまた別の記事で書きます。)

ここで以下のようにProgram congifuration, verify, blank-checkの3つにチェックをチェックボックスに入れると、startボタンが押せるようになると思います。

start ボタンを押すとダウンロードが始まります。ダウンロードの進捗は右上のバーからチェックできます。

ダウンロードしている間はUSB blasterも青色に点滅するので、そこからもダウンロードしていることが確認できます。

結果

以下のように二つランプを点灯させることができました!
あれ、なぜ3つじゃないのか、と思ったのですが(自分の誤解で) PIN_143はランプにつながっていないからでした。
撮るのが意外と大変だった、、、