FPGA初心者の筆者が評価ボードを購入して実際に動かすまでを記事にしました。
Amazonでも買える手頃なFPGA評価ボードを選びましたので誰でも同様に始めることができます。
Intel(旧Altera)製のCycloneⅡのFPGA評価ボード
今回筆者が購入したFPGA評価ボードはIntel(旧Altera)製のCyclone2が搭載されています。
「最新がCyclone10に今更Cyclone2かよ!」と突っ込まれそうですが、FPGAを勉強するという目的では十分な機能があるとは考えています。
※ちなみにCycloneシリーズは「1⇒2⇒3⇒4⇒5⇒10」の順でリリースされているそうです
安く簡単に手に入り、入門用としては一番コストパフォーマンスが優れているFPGA評価ボードでおすすめです。
「FPGAを動かすソフトのダウンロード」から「評価ボードでLEDを光らす」までの一連の流れを記事にしたいと思います。
※今回は本当に初心者向けの「簡単にFPGAを動かす」内容ですので、本来のFPGA開発プロセスを大分省略していますのでご了承ください。
XilinxのFPGAの評価ボードもテストしました
別記事となりますが、別メーカのXilinxのFPGAが搭載されている評価ボードも動かしてみました。
下記記事で紹介しています。是非一緒にご覧ください。(リンク先はこちら)
Alteraの低価格のFPGA評価ボードの選んだ理由(選び方)
「FPGAに関しては全くの初心者」の筆者が今回のFPGA評価ボードを選んだ理由(選び方)は主に2つありました
①今回使うIntel(旧Altera)のFPGAは世界中で何処にでも使われており、かつソフトウェアが豊富であったこと。FPGA自体がCyclone2と古くても基礎的な内容は応用が効くと思いました。
②非常に安く簡単に手に入ること。約2000円ぐらいでFPGA評価ボードをAmazonで購入できました。(※最新の評価ボードだと専門のサイトに登録する・輸送料など面倒だったため)
筆者は仕事でFPGAを使ったことが無く、全く何も知らない状況でしたがプライベートで一から初めたの内容を記事にしていきます。
USB Blaster(USBブラスター)の購入も忘れずに
FPGAの評価ボードを購入するにあたって、USB Blasterも忘れずに購入しましょう。簡単に言うと「FPGA評価ボードにプログラムを書き込むためのツール」です。
※正規品を買うか,ノーブランド品を購入するかは読者の皆様にお任せします。(とりあえず筆者の怪しいノーブランド品でも動きました)
FPGA評価ボードにプログラムを書き込ときはコネクタを差し込むだけで可能です。
電源は5V出力のACアダプタでOKです
FPGA評価ボードの電源は一般的なACアダプタ(DCプラグ内径2.1mm)を使ってもらえればOKです
家庭で転がっている5VでDCプラグ出力のACアダプタを探して挿せるか確認してもらえれば大丈夫かと思います。筆者のBUFFALO製の何かの製品に使われていた奴です。
容量は使い方次第ですがデバッグレベルならば0.5Aでも1Aでも十分だと思います。もし手頃のがなければ下記のような5V出力の汎用電源アダプタを購入すればいいかと。
FPGAの開発ソフトウェア(Quartus)をダウンロードします
IntelのホームページからQuartusをダウンロードします。Quartusはインテル(アルテラ)のFPGA開発ソフトウェアで必ず必要になります。
インテル(アルテラ)のFPGAプログラムへの登録をする
Quartusをダウンロードするため、まずは個人用アカウントの登録する必要があります。
こちらからインテルFPGAプログラムの登録をします。新規登録の「今すぐ一般アカウントに登録する」をクリックします。
まずは「Personal information」の項目を入力します。「名前」「姓名」「アドレス」「ユーザネーム」「パスワード」「パスワード(確認用)」を入力します。
※パスワードは文字・数字・特殊文字を入れて8~15字にする必要があります
その下にある「国」「職種」「国コード」「電話番号」も入力・選択します。入力完了したら「次へのステップ」をクリックお願いします。
そのあとは「Enrollment Questions_勤務先情報」を聞かれますので記入していきます。今回の個人の場合はある程度ざっくりの記入でも特に問題無しでした。
あくまで筆者の例ですが「プロジェクト期間…>24Months」「業種…industrial」「希望の商社…japan-Macnica」「会社名…Personal」「従業員数…1-9」「国,地域,市,郵便番号…筆者自身の住所」を記入すれば問題有りませんでした
最後にインテルからのアップデート情報のemailを受け取るかについて聞かれますので、個人の必要に応じてチェックをつけてもらえれば大丈夫です。
これが終われば、最初に登録したメールアドレスにメールが来ますので本登録のリンク先をクリックすればOKです。これで無事登録が終了です。
Quartus(13.0sp1)をダウンロードします
今回使うFPGAがCyclone2のため、古めのQuartus(13.0sp1以下)をダウンロードします。(筆者は13.0sp1)を選択しました。ダウンロードのリンク先はこちらです。
ダウンロードの内容が確認されますが、迷ったらすべてチェックしてダウンロードしておけば問題ありません。
「Quartus II Web Edition (Free)」の項目は2つともチェックを入れておいた方が後々のために良いです。
「Device」の項目は今回のデバイスである「CycloneⅡ」は必ず入れるようにしてください
「Additional Software」に関しては特に必要ないかもしれませんが、筆者は「SignalTap」と「ヘルプ」は入れておきました。チェックを入れ終えたら「ダウンロード」をクリックすればOKです。
Quartus(13.0sp1)をインストールします
先ほどダウンロードしたファイルを開きます。何個かexeファイルができていますが「QuartusSetupWeb-***.exe」を選択すればQuartusをインストールできます。
特に迷うことなく「Next>」を選択していけばOKです。
「Select Compnents」の箇所でインストールするデバイスを聞かれますので、もし今回使う「CycloneⅡ」以外は不要な方はチェックを外してもらえれば良いと思います
Quartus本体以外の「Modelsim」,「ヘルプ」等もまとめて順番にインストールされますのでしばらく待ちます。
下記の画面が出れば無事Quartusインストール終了です。
USB Blasterのソフト・ドライバをインストールする
「USB Blaster」のドライバをインストールします。「…ドライバー ソフトウェアは正しくインストールされませんでした」と出ます。
先ほどインストールしたQuartusのフォルダ内にドライバが入っています。デバイスマネージャからインストールさせます。
筆者の場合は「C:\altera\13.0sp1\qprogrammer\drivers\usb-blaster」でした。
デバイスマネージャからドライバの更新をすると無事「USB Blaster」のインストールが終了します
QuartusでVHDLを書いてFPGAを動かす準備をする
FPGAを動かすための手順としては何通りかあるのですが、今回はVHDLを使って書いていきます。
「VHDL何それ?」と思う方は「FPGA等のためのプログラミング言語」と考えていただければ概要としては良いかと思います。
Quartusのソフトを起動する
インストールしたQuartusのソフトを起動します。最初に有料版のQuartusの「Subscription Edition」を購入するか聞かれますので、真ん中の「(無料版)のQuartusで動かす」を選択します。
また最初はスタートガイドがポップアップされてきますので、「×」を押して消します。※ここからプロジェクトを作ったりもできます。
TalkBackを有効にしておく
VHDLを書いていく前に「Talkback」を有効にしておきます。
※今回のようなFPGAでLED点灯させるレベルでは要らないですが、一応有効化しておきます
「Talkback」とはSignal Tapを無料で使わせてもらう代わりに、コンパイル結果の一部(使っているIOピン数・リソースの使用率)をアルテラに情報共有する機能です。
「Signal Tapとは?」と疑問が出てくるかもしれませんが、また別記事で記載したいと思います。まずはデバッグする際に非常に便利になるツールと考えてもらえれば大丈夫です。
Talkbackを有効にするためにはタブ「Tool」⇒「Option」を選択します。
そして「Intenet Connectivity」⇒「TalkBack Options」をクリック⇒「Enable…」の箇所にチェックをしてOKを選択します
QuartusでVHDLを書いてみる
今回は入力_SWを押したら出力_LEDが光る簡単なプログラムをVHDLで作ります。
タブの「File」⇒「New」を選択して「VHDL File」を開いていきます
そうすると真っ白のページが出てきますのでVHDLを書ける準備が整いました
今回筆者が使ったプログラムは下記に張り付けておきます。VHDLの書き方等については既にWeb上で多くの記事がありますので細かい中身・詳細については省略します。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity Vhdl1 is
port ( sw1 : in std_logic;
led : out std_logic);
end Vhdl1;
architecture logic of Vhdl1 is
begin
led <= sw1;
end;
本当に概要だけ記載すると下記流れです。
書き終えましたら、「File」⇒「Save as」で名前を付けて保存します。後ほど色々なファイルができますので何処でも構いませんのでフォルダを作って保存した方がいいです
保存すると、このファイルで新しいプロジェクトを起こすか聞かれますので「Yes」を選択してあげます。次からはプロジェクトを作っていきます
Quartusでプロジェクトを作っていく
最初に「Introduction」と出てきますのでここは「Next>」で進めて下さい。
次に「プロジェクトの場所」、「プロジェクトの名前」、「トップレベルのエンティティの名前」が聞かれますが、既に入っているので「Next>」を押せばOKです
他に追加したいファイルがあるか聞かれますが、今回は特に無いので「Next>」を選択します
そして使うデバイスを聞かれますので今回はFamilyを「CycloneⅡ」を選び、デバイスを「EP2C5T144C8」を選択します。読者様自身でFPGAの型番を確認お願いします。
※もし使うFPGA・評価ボードが異なっても、この箇所を変更すれば同様に動かせれます
EDAtool(開発ツール)を何使うか聞かれますが、今回はLEDを光らせるだけなので特に何も使いません。そのまま「Next>」を選択してもらえればOKです
最後にSummaryが出てきますので「Finish」を選択してください。これでプロジェクトの作成は完了です
Quartusでピンアサイン(ピン割り当て)をする
この後はピンアサイン(FPGAのどのピンを入力・出力にするかの設定)をしますが、その前に作ったVHDLが問題ないことを確認します。タブの「Processing」から「Start」⇒「Start Analysis & Elaboration」を選択します
特に問題なければ「…successful」と出てきます。
その次にタブ「Assignment」から「Pin Planner」を選択します。
直ぐに「Pin Planner」が立ち上がりますので、FPGAのどのピンを使うのかを設定できます。
筆者はLocationからをクリックしてもらえれば入出力でどのピンを使うかを選択できます。LED出力の箇所を「PIN_143」、SW入力の箇所を「PIN_142」とします。
これでピン設定は終了です。
Quartusでコンパイルする
本来のFPGAの開発フローでは「タイミング検証などコンパイル前に行う工程」があるのですが、今回はLEDを光らすプログラムだけですので省略します
FPGAを実際に動かすファイルを作るためにコンパイルします。タブの「Processing」から「Start Compilation」を選択します
エラーがなければ「…successful」と出てきます。今回は1入力SW・1出力LEDの設定をしましたので合計で2ピン設定しましたが、「Total pins」も2ピンになっているのでOKです
FPGAでLチカ(LEDを点灯)させてみる
Quartus上での準備は一通り終わりましたので、デバッグ用の配線・接続して最後のFPGAでLEDを点灯させるところまで実施します
SWとLEDをブレッドボードに用意する
今回デバッグ用のSWとLEDはブレッドボード上で接続します
回路図としては下記です。「SW・LED」に加えて「SWのプルダウン10kΩ」と「LED電流制限用の抵抗510Ω」を接続している簡単な回路です
ブレッドボード,LED,抵抗,ジャンパーなどは各個人で都合のつくもので構いません。初めての方は下記のようなラズベリーパイ等の電子工作セットを購入して貰えば良いかと思います
USB Blasterと電源も接続しておく
この時点で「USB Blaster」と「電源」も接続しておきましょう。
「USB Blaster」に関しては今回のFPGA評価ボードでは2か所口があるのですが、今回は「JTAG」のシルクがある内側コネクタに接続します。
また電源を入れると評価ボードのLEDが点滅しますが特に気にしないでください。正常です。
FPGAにプログラムを書き込む
FPGAに作ったプログラムを書き込むには何種類かあるのですが、今回はJTAG(USB Blaster)から直接動かします。(※この方法ですと一度評価ボードの電源を消すと書き込んだプログラムは消えます)
タブ「Tools」⇒「Programmer」を選択しますと「Programmer」の画面が出てきます。
「Hardware Setup」で接続したUSB Blasterを選択します。
あとは「Start」を押すだけでプログラムがFPGAに書き込まれます。正常に書き込まれましたら右上のProgressに「100%(Successful)」と表示されます
基板上でも点滅していたLEDが点灯して、プログラムが正常に書き込まれ動作しているはずです。
実際のFPGAの動き
実際の動きとしては下記流れです
「入力のSW1(142ピン)」を押していないとブレッドボード上の「出力LED(143ピン)」が消灯しています。
「入力のSW1(142ピン)」を押すとブレッドボード上の「出力LED(143ピン)」が点灯します。
無事FPGAでLチカを行うことができました。実際にFPGAにプログラムを書き込む所からデバッグ動作までの動画は下記となっています
まとめ・感想
初心者の筆者でも手軽にかつ簡単にFPGAを動作させることができました。
「市販のFPGA評価ボードは値段が高い…」と思われている方も多数だと思いますが、今回の評価ボードならば書き込みツール(USB Blaster)含めて約3000円程度で始めることができます。
FPGAの型は古いかもしれませんが、勉強・デバッグ用には十分なFPGA評価ボードだと思いますので、ぜひ皆様もFPGAにトライしてみてください。
コメント
環境のスタートアップにとても参考になりました。
開発ボードの回路図を見たところJTAG側からの給電でもいいような気がするのですが、やはり5v給電は必要ですか。
USB BlasterはURL先の物をとりあえず買ってみたのですが、画像の物とはデザインの違うものが来まして、まあ許容範囲内と書き込んでみました。
書き込み後に100%(Successful)と出ながら、LEDが点灯状態にならず、書き込みができていないという悲しみがあり、買うにも純正は高いので…
コメントありがとうございます。
管理人のミソジです。
>>開発ボードの回路図を見たところJTAG側からの給電でもいいような気がするのですが、やはり5v給電は必要ですか。
⇒必ず必要かと言われると少し難しいですが、5V給電しといた方が無難かと思います。
(一応JTAGコネクタの4ピンと基板の3.3Vが繋がっているようですが)
今回のJtag Blasterの中身がよく分かりませんし、
回路図を見ると5VからLDOで3.3Vに落としてFPGA・発振器・Flashの電源にしているようです。
>「Signal Tapとは?」と疑問が出てくるかもしれませんが、また別記事
>で記載したいと思います。
ここの記事は、説明が親切で非常に参考になりました。
Signal Tap の説明も期待しております。
既に掲載されておりましたら、どこにあるか教えてください。
管理人とミソジと申します。
コメントありがとうございました。
まだSignal Tapの記事は書いておりませんので、また作成しましたらご連絡させていただきます。
どうかよろしくお願いします
丁寧な解説でとても参考になりました。ありがとうございました。
MAX10を試すのに参考にさせていただきました。
CQ出版のFPGA電子工作スーパーキットを買って、まずはLEDを光らせようと思ったら、本のサンプルがVerilog(使ったことがない)だったので、VHDLを書いてこのサイトを参考にやってみました。
Quartus Prime 21.1と、本に付いてきたJTAG代わりのボードを使ったのですが、ほぼこちらの記事の通りに進めていって無事動作しました。
「WINGONEER ALTERA FPGA Cyslonell EP2C5T144最小システム学習ボード」の購入を機にこのページを参考にさせてもらいました。
適度な内容でわかりやすかったです。 このようなページあることは、本当に助かります。
ところで、せっかくオンボードでついているので、プッシュスイッチはPin144、LEDはPin3, 7. 9のいずれかを使えば、もっと入門に敷居を下げられるかと思います。 3個もLEDが使えるので、すぐにNOTで反転出力の応用もできます。
あえてピンヘッダから配線をすることが意図なのかもしれませんし、あるいはJTAG書き込み後の状態を確認するには、オンボードパーツは使わない方が親切なのかもしれません。
ただ、初めてでなるべく早く結果が欲しい場合(今回の私の場合)もあるので、一言でも注釈があると、より便利でした。