Amazonで売っている、Cyclone ll(EP2C5T144)搭載の格安FPGAボードの使い方を丁寧に解説するシリーズの2回目。
こちらの基板に、実際に回路情報を書き込んで使うまでの手順を紹介します。
開発環境の導入
Quartus II のダウンロード
FPGAの開発環境をIntel(旧アルテラ)のサイトからダウンロードできます。この時、必ず13.0sp1を選択するようにします!
理由は、CycloneIIに対応する最も新しいバージョンが13.0 sp1だからです。より新しいバージョンではCyclone IIがサポートされていないのです。。

「一式ファイル」をインストールします。(本当はCyclone IIに必要なドライバのみを選択してインストールすればよいですが、あれこれ個別にダウンロードする必要がなく楽ちんです)

面倒ですが、ダウンロードのためにIntelのアカウントを作らないといけないです…

Quartus II のインストール
自体はさほど難しい点はありません。ダウンロードしたファイルを実行し、インストラクションに従っていくだけです。インストール先のフォルダーもデフォルトのままでOKです。
USB Blaster のドライバインストール
FPGAへの回路情報書き込みには、”USB Blaster” というツールを使います。
このツールを使うために、ドライバーをインストールする必要があります。
しかしこのドライバ、デジタル署名情報がないためにWindows10にインストールするのに手間がいります。具体的な方法が以下の記事でわかりやすく説明されているので確認してみてください。
https://tom2rd.sakura.ne.jp/wp/2020/05/11/post-11156/
今回はQuartus II 13.0 sp1 をインストールしましたから、例えばインストールフォルダがデフォルト設定の “C:\altera\13.0sp1\”だった場合には、
C:\altera\13.0sp1\quartus\drivers\usb-blaster
にあるドライバをインストールすればよいです。
回路情報の作成
プロジェクトの作成
「File」 – 「New Project Wizard」をクリックします。

プロジェクト名を決めます。この例では「FPGAtest」という名前にしました。

ここは既にHDLファイル(回路情報を記載した、ソースコードに相当するファイル。具体的には拡張子”.v”、”.vhd”など) がある場合には指定します。特になければ次に進んでしまって構いません。

この基板はIC表面の記載からも明らかなように「EP2C5T144C8N」のようなので、これに合致するデバイスを選びます。「Device Family」「Show in ’Available devices’ list」で絞り込んでおけば選びやすいです。

これ以降のPage 4、5はそのまま Next> を押下すれば大丈夫です。
ここまでやると、左側のメニューにツリー構造が表示されます。

HDLを記述
HDLを記述していきましょう。Verilog HDLを使う前提で話を進めます。
「File」 – 「New」をクリックし、”Verilog HDL file” を選択します。

とりあえず、以下のテストコードを書いてみましょう(3ポートの入力信号ext_bck, ext_lrck, ext_data を、そのまま出力するコードです)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
module FPGAtest( ext_bck, ext_lrck, ext_data, bck, lrck, data ); input ext_bck; input ext_lrck; input ext_data; output bck; output lrck; output data; assign bck = ext_bck; assign lrck = ext_lrck; assign data = ext_data; endmodule |
これを、トップレベルモジュール(この例ならFPGAtest)と同じ名前で、保存します。

入出力ピンの設定
次に、HDL内で指定した入出力ピン(ext_bck, ext_lrck, ext_data, bck, lrck, data)と、実際のFPGAのピンとの対応関係を定義しましょう。
「Assignments」 – 「Pin Planner」を実行します。

いかつい画面が登場しました。この画面で、FPGAの全144ピンのうちどのピンを入力ピン、出力ピンとするかが設定できます。

基板上にある表示はピン番号を示しており、この画面における番号と対応しています。例えば今回は、以下のようにしてみます。
- 入力ピン(ext_bck, ext_lrck, ext_data) → 順に 129,125,121 ピン
- 出力ピン(bck, lrck, data) → 順に 119,115,113 ピン
つまり、基板上では以下で示す部分を入力、出力ピンとして使用することになります。

まず、ext_bckを129ピンに割り当てます。
ウィンドウをよく見ると上のほうに129ピンがあるとわかります。
これをクリックすると、網掛けされた状態になります。

さらにダブルクリックすると、右側にプロパティを指定するためのウィンドウが出てきます。ここで、「Node name」に対応させたい入(出)力ピンの名前を記入します。今回は「ext_bck」と入力します。

ウィンドウの下側に、登録されたノード名が追加されました。確かに、ext_bckが129ピン目に割り当てられていることがわかります。

同様の手順を繰り返し、6個の入出力ピンすべてを対応させます。

コンパイル
「Processing」 – 「Start Compilation」によってコンパイルを行います。

成功するとこんな感じで教えてくれます。

回路情報の書き込み
コンパイルが成功すると、プロジェクトを作成したフォルダ内にある「output_files」フォルダに、同プロジェクトと同じ名前の.sofファイルが作成されます。これがFPGAヘ書き込む回路情報になります。
USB Blasterと基板の接続
USB Blasterを、PCにUSB接続します。
次に、USBBlasterから出るフラットケーブルを、FPGA基板のJTAGコネクタに接続します。

5VのACアダプタを基板のコネクタ(P7)につないでおきます。
最終的には、こんな感じで接続すれば書き込み準備OKです。

FPGAへの書き込み
「Tools」 – 「Programmer」を実行します。

このようなウィンドウが立ち上がるので、右上の「Hardware Setup…」をクリックし、「USB Blaster」をダブルクリックして指定します。


左上の「Start」ボタンを押し、FPGAへの書き込みを行います。右上のProgress: が100%となったら、書き込み完了です。

動作確認
書き込みが完了したら、以下のように入力ピンに何らかの信号を入れ(GNDの接続も忘れずに!)

以下のようなロジアナを使って、信号を観測してみましょう。
- 129ピンの入力 → 119ピンに出力
- 125ピンの入力 → 115ピンに出力
- 121ピンの入力 → 113ピンに出力
になっていることがわかると思います。
おわりに
以上、回路情報をこの格安FPGAボードに書き込むまでの手順を説明しました。
手順は多いですが、意外とかんたんだったのではないでしょうか?
しかし、この方法はまだ実用的とは言えません。
なぜなら、電源をOffするとFPGAに書き込まれた回路情報が消えてしまうからです。
次回は電源Off しても書き込んだ回路情報が消えないようにする、「JICプログラミング」という書き込み方法について紹介します。
コメント