Cyclone V GT FPGA Development KitでLチカする
ボードを手に入れたらとりあえずLチカしたい.適当にググってその通りにすれば30分で終わるでしょ,と思っていたら全然情報がなくて普通に時間かかったのでメモ. 基本的に頼りになるのは公式のユーザーガイドとリファレンスマニュアル.
環境
- 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が光る.これだけでも動くとうれしい.