スクラッチ&スクラップ

簡単なプログラミングや電子工作など。しょうもない工作の記録。

Quartus Prime で FPGA/PLD に書き込むまでの流れ

久しぶりに FPGA を動かそうと思ったら、Quartus Prime(開発環境)の使い方をすっかり忘れていました。ということで、ひととおりの流れをメモしておきます。とりあえず LED点滅させてみます。

0. 使ったもの

開発環境は無料版の Quartus Prime ライト エディション ver 17.0
インテル® FPGA およびプログラマブル・デバイス - インテル® FPGA

ハードは MAXⅡの小型開発ボード

書き込み用の USBブラスター(互換品)

ALTERA USB Blaster互換JTagケーブル [並行輸入品]

ALTERA USB Blaster互換JTagケーブル [並行輸入品]

1. Quartus Prime 起動

f:id:macrochelys99:20180202200345p:plain

2. プロジェクト作成

File -> New Project Wizard...
ファイルを保存する場所とプロジェクト名を設定。プロジェクトは1つのフォルダに1個しか作れない。入力したら Finish ボタンで閉じる。
f:id:macrochelys99:20180202201406p:plain

3. デバイスの選択

Assignments -> Device
使用するデバイスを一覧から選ぶ。
f:id:macrochelys99:20180202201754p:plain

4. ブロック図/回路図の作成

File -> New... -> Design Files -> Block Diagram/Schematic File
f:id:macrochelys99:20180202202212p:plain

File -> Save As...
空欄のままですが、プロジェクト名と同名で保存。
f:id:macrochelys99:20180202202308p:plain

5. Verilogを記述

File -> New -> Design Files -> Verilog HDL File
f:id:macrochelys99:20180202203119p:plain

ここにコードを書く。
書き終わったら File -> Save As... で保存。
f:id:macrochelys99:20180202203221p:plain

今回はクロックの立ち上がりを5千万カウントするごとに出力を反転させる。クロックは 50MHz なので LED は1秒点灯1秒消灯を繰り返す。

module div_50meg(ck, res, out);
input           ck, res;
output          out;
reg     [25:0]  c;
reg             out;

always @(posedge ck or posedge res) begin
    if (res == 1'b1) begin
        c <= 1'b0;
        out <= 1'b0;
    end else if(c == 26'd49999999) begin
        c <= 1'b0;
        out <= ~out;
    end else begin
        c <= c + 1'b1;
    end
end

endmodule

6. シンボル化

File -> Create / Update -> Create Symbol Files for Current File
処理が終わるのを待つ。Message欄にエラーが出ていないことを確認。
f:id:macrochelys99:20180202203451p:plain

7. ブロック図/回路図にシンボルを配置

タブを切り替えて、さっき作成した空欄のブロック図/回路図を開く。
ORゲートのマークのボタンを押して Symbolウィンドウ を開く。
f:id:macrochelys99:20180202203615p:plain

Librariesツリーの Project の下にさっき書いたVerilogがシンボル化されたものがあるのでそれを選んで [OK]f:id:macrochelys99:20180202204342p:plain

シンボルを配置して入出力を配線。
f:id:macrochelys99:20180202204601p:plain

Procesing -> Start -> Start Analysis & Elaboration
Message欄にエラーが表示されていないことを確認。

8. ピン割り当て

Assignments -> Pin Planner
Node Name を ピン番号の上までドラッグし、割り当て。
f:id:macrochelys99:20180202204849p:plain

9. タイミング制約

File -> New -> Sysnpsys Design Constraints File
タイミング制約はここに書く。
File -> Save As...
最上位デザインファイルと同じ名前で sdcファイルを保存。
今回は使わないのでスルー。

10. コンパイル

Processing -> Start Compilation
Message欄にエラーが表示されていないことを確認。
f:id:macrochelys99:20180202210151p:plain

11. 書き込み

USBブラスターで PC とボードを接続。
Tools -> Programmer
f:id:macrochelys99:20180202210230p:plain

[Hardware Setup] ボタン
プルダウンから USB-Blaster を選択。
f:id:macrochelys99:20180202210506p:plain

Auto Detect ボタンでコンパイルしたファイルをセット。うまくいかない場合は [Add File...] ボタンから選択。
Program/Configure Verify Blank-Check のチェックを入れたら [Start] ボタンで書き込み開始!
f:id:macrochelys99:20180202210558p:plain

ProgressSuccessful が表示されたら完成です。


予定通りに動きました。
f:id:macrochelys99:20180202210817g:plain