Cyclone V GT FPGA Development KitでLチカする

ボードを手に入れたらとりあえずLチカしたい.適当にググってその通りにすれば30分で終わるでしょ,と思っていたら全然情報がなくて普通に時間かかったのでメモ. 基本的に頼りになるのは公式のユーザーガイドとリファレンスマニュアル.

https://www.intel.co.jp/content/dam/altera-www/global/ja_JP/pdfs/literature/ug/ug_cvgt_fpga_dev_kit.pdf

https://www.intel.co.jp/content/dam/altera-www/global/ja_JP/pdfs/literature/manual/rm_cvgt_fpga_dev_board.pdf

環境

  • Windows 10 1903
  • Quartus Prime 18.1 Standard Eiditon

プロジェクトファイル一式:https://github.com/SenriYoshikawa/CycloneVGTFPGADevelopmentKit/tree/master/PushButtonLED

Verilogを書く

PB(Push Button)1とPB2の状態をラッチするレジスタを用意し,これをLEDへの出力とする.あまり意味はないが,PB0をリセット信号として使い,レジスタを初期化するようにした.PB1を押すとLED0が,PB2を押すとLED1が点灯する.

module PushSwitchLED(
    input clk,
    input rstn,
    input [1:0] button,
    output reg [1:0] led
);

// led
always @(posedge clk_50M) begin
    if(~rstn) begin
        led <= 2'b11;
    end else begin
        led <= button;
    end
end

PushSwitchLED.vとしてプロジェクトフォルダ直下に保存しておく.

プロジェクトを作る

File -> New Project Wizard

Next

プロジェクトフォルダの場所とプロジェクト名を入力してNext

Next

Add Allで先に保存したPushSwitchLED.vがリストに入る -> Next

Board -> Cyclone V GT FPGA Development Kit -> Next

Simulationは好きなのを選べばいいともう.Finish

ピンアサイ

先にAnalysis & Synthesis をしておく.

Pin Plannerを起動.

Assignment -> Pin Planner

何をどこにつなげばいいのかはリファレンスマニュアルを見ればわかる. clkは何でもよいが50MHzのPIN_V28を繋いだ.リファレンスマニュアルP2-20を参照. プッシュボタンとLEDはリファレンスマニュアルP2-23とP2-24を参照.

Pin Plannerを閉じる.

書き込み

先にStart Compilationしておく.

その間にFPGAボードにACアダプタとUSBケーブルを接続する.ディップスイッチがデフォルトになっていることを確認(詳細はユーザーズガイドを参照)し,電源を入れる.

Programmerを起動する. Tools -> Programmer

Hardware Setup

USB-BlasterIIを選択してClose.

ここで意気揚々とStartを押すと失敗する.このボードにはCyclone Vの他にMax Vが載っていて,書き込む対象がCyclone Vだけでも両方のFPGAを含むJTAGチェーンを構成しないと書き込めないらしい.そんなの言われなきゃ分からないって・・・.

Auto Detect

一番近いものを選びOK.

これが正常なフローなのか自信を無くしながらYes.

Cyclone VのFileにoutput_files/PushButtonLED.sofが入り,Program/Configureにチェックが入っていればOK.こうなっていなければ,左側のChange Fileから手動でファイルを差し替えてこの状態にする.Startで書き込みを開始する.

動作確認

Programmer右上の進捗バーが100%になれば書き込みは終わっているはず.

ボード上のプッシュボタンを押すとLEDが光る.これだけでも動くとうれしい.