FPGAは、さまざまな電子機器の設計において「開発期間の短縮」や「コストダウン」といった、機器設計者が抱える悩みを解決できるデバイスの1つとして、注目を集めている。本連載では、「これから本格的にFPGAを使いこなしたい」という設計者向けに『これさえ知っていればFPGAの設計ができる』という4つの基本ステップを4回にわたって解説している。これまでステップ1で「デザイン(論理回路)設計」について、ステップ2で「制約設定」について、ステップ3では「コンパイル」について、それぞれ述べてきた。今回は最後のステップとなる『プログラミング』についてわかりやすく解説する。

 前回のステップ3では、設計した論理回路を具体的なゲート回路に変換する「コンパイル」について紹介した。「コンパイル」が完了したら、コンパイルしたデータをデバイスに書き込む前に、TimeQuestを用いてスタティック・タイミング解析を実施する。また、TimeQuestで与えきれていない制約 (非同期回路部分など) があった場合は、タイミング・シミュレーションを実施することで、タイミング・エラーの有無などを確認することが出来る。これらは、回路データを実際のデバイスに書き込んだときに、配置配線などで生じる遅延によって、動作等に問題が発生しないかどうかを事前に確認するための作業となる。

 タイミング・シミュレーションによる検証を実施する場合のツールとしては、メンターグラフィックスの「ModelSim-Altera Starter Edition」(無償)や「ModelSim-Altera Edition」(有償)などがある。これらのソフトウエアは、Quartus IIと一緒にアルテラのウェブサイトからダウンロードすることができる。

 こうしたスタティック・タイミング解析、タイミング・シミュレーションによって、設計者の要求どおりに回路が正しく動作することが分かったら、次のステップでは回路データを実際のデバイスへプログラミング (デバイスへの書き込み) することになる。

「Start」ボタンで書き込み実行

ステップ4 プログラミング

 ステップ1~ステップ3で紹介した「デザイン」、「制約設定」、「コンパイル」と同様、デバイスへの書き込みもGUI で作業することができる。

 実際に回路データをデバイスへ書き込むときには、プログラミング・ハードウエアを使用する。例えば、Quartus II がインストールされたパソコンから、デバイスを実装した基板に回路データをダウンロードする場合に用いる接続ケーブルとして、アルテラではUSB通信タイプの「USB-BlasterTM」やパラレルポート通信タイプの「ByteBlasterTM II」、イーサネット RJ-45 タイプの「EthernetBlaster」などを用意している。これらのケーブルはアルテラの代理店あるいはオンラインショップで購入できる。これらのケーブルをはじめて使用する場合は、事前に各プログラミング・ハードウエア用のドライバをパソコンへインストールしておく必要がある。

 デバイスへのデータ書き込みには、「Quartus II がインストールされたパソコン」、「アルテラ製のダウンロード・ケーブル」および「デバイスが実装された基板」の 3 点がそろっていれば、その場で書き込み作業が行える。ダウンロード・ケーブルは、アルテラ製のデバイスであれば、搭載するデバイスの種類に関係なく使用することができる。このため、デザインやデバイスを変更しても、従来のケーブルを流用することができ、その都度ケーブルを買い替えるなどの新たな費用が発生することはない。

図1:ProgrammerのGUI表示例
図1:ProgrammerのGUI表示例
[画像のクリックで拡大表示]

 ここまでは、使用するツール環境について述べてきた。ここからは実際にこれらのツールを使って、どの様に書き込み作業を行っていくかを簡単に説明する。デバイスへの書き込みは、設計ツールの 「Programmer 」と呼ばれる機能を使用する。Programmer を起動すると画面上には図1のようなGUI が表示される。

 Programmer の画面上から、書き込みに関するさまざまな設定を行うことができる。その中から代表的な設定項目をいくつか紹介する。

プログラミング・モードの選択

 デバイスへの書き込みを実行する場合、FPGAを実装したプリント基板の構成などによってプログラミングの方式が異なるので注意しなければならない。まずはFPGAが実装されたプリント基板の構成に適したモードをプルダウンメニューより選択する必要がある(図2)。Quartus IIでは、オンボードで書き込む方法として3つのモードが用意されている。例えば、JTAGピンを使って直接FPGAに書き込む場合は「JPEGモード」を選ぶ。また、コンフィギュレーション・デバイスとしてEPCを使っている場合は「Passive Serialモード」を、アルテラのコンフィギュレーション ROM であるEPCSを使っている場合には「Active Serial Programming モード」を、それぞれ選択することになる。また、オフボードでの書き込みには「In-Socket Programmingモード」で対応しているが、書き込み時に専用のライター(PL-APU)を用意する必要がある。

図2:プログラミング・モードの選択画面
図2:プログラミング・モードの選択画面
[画像のクリックで拡大表示]

プログラミング・ハードウエアの設定

 プログラミング・モードの選択が完了したら、次は本稿の前半で述べたプログラミング・ハードウエア(ダウンロード・ケーブル)を選ぶ。実際に使用するハードウエアの種類(USB通信タイプ、パラレルポート通信タイプ、イーサネット RJ-45 タイプ)の設定を画面上のGUIで行う。

プログラミング・ファイルの選択

 プログラミング・ハードウエアを設定した後は、デバイスへ書き込むプログラミング・ファイルを選択する。ファイルの形式としては、主に表1に示したような種類がある。ここでは書き込みを行うターゲット・デバイスや、用途にあわせて適切なファイルを選択することになる。

表1:プログラミング・ファイルの形式とその主な用途
表1:プログラミング・ファイルの形式とその主な用途

プログラミング・オプションの選択

図3:プログラミング・オプションのチェックボックス画面の表示例
図3:プログラミング・オプションのチェックボックス画面の表示例
[画像のクリックで拡大表示]

 Programmer では、図3のような通常の書き込み以外の操作を、チェックボックスにチェックマークを付けるだけで実行できる。オプションの種類とその用途については図4に示す。以上でプログラミングに必要な設定が完了する。

図4:プログラミング・オプションの種類とその用途
図4:プログラミング・オプションの種類とその用途

 これからは、実際のデバイスへ回路データを書き込むための作業に入る。書き込みの開始は、Programmer ウィンドウの「 Start 」ボタンを押すだけの簡単操作である(図5)。この画面上にはファイル名やデバイス名が表示され、設定内容などを確認することができる。また、画面右肩には書き込み作業の進捗状況がパーセントで表示される。この数値が100%になれば書き込みが完了したことになる。以上で、プログラミングの作業は終了する。

図5:Programmerウィンドウ画面に表示されるスタートボタン(赤丸の部分)
図5:Programmerウィンドウ画面に表示されるスタートボタン(赤丸の部分)
[画像のクリックで拡大表示]

ロジックアナライザ機能を標準搭載

◆デバック手法

 これまで説明を行ってきた 「デザイン作成~制約設定~プログラミング」の作業 に加えて、プログラミング後に、デバック作業も行うことができる。ここでいうデバッグ作業とは、回路データを実チップに書き込んだ後で、FPGA の動作に不具合があった場合、FPGA の出力ピンの信号や、FPGA 内部の信号を観測し、検証を行う作業のことを指す。

 Quartus II では、いくつかのデバック手法が用意されている。今回はその中から、「SignalTap II 」の機能を紹介する。これは、Quartus II に標準搭載されたロジックアナライザの機能である。この機能により、別途外部に測定器を用意することなく、内部動作の確認を行うことができる(図6)。

図6:Quartus II に標準搭載のSignalTap II機能でタイミングを検証
図6:Quartus II に標準搭載のSignalTap II機能でタイミングを検証
[画像のクリックで拡大表示]

 この機能がないと、FPGAをデバッグするために、モニターピン用の空きピンが別途必要となったり、デザイン(論理回路)を書き直ししたり、基板上にあらかじめデバッグ用の配線を用意したりしておかなければならなかった。このような対応は設計者を悩ませる要因の1つとなっていた。

 これに対してSignalTap II は、プログラミングを実行する前に、用意された専用の画面上から、観測したい FPGA 内部の中間信号を指定するだけで、デバッグを行うための準備は終わる。これだけで、デバッグ用の回路を作ることができ、デザインの記述を変更したりする必要は一切ない。このデバッグ用回路と設計者の回路データを一緒に、FPGA へプログラミングすることになる。

 デバッグが必要な時には、USB-Blaster等のダウンロード・ケーブルを使用する。デバッグが実行されると、Quartus II は観測したい内部信号をモニターし、画面上にその波形を表示させることができる。内部信号のデータ取得はJTAG ピンを利用して行われるため、ユーザー I/O ピンは一切必要がない。つまり、JTAG の配線さえしておけば、デバッグのためにプリント基板の配線を変更したりする必要はなく、チェックしたい内部信号のタイミング検証が手軽に行えるというわけだ。なお、「デバッグ手法」については、本連載の後半で改めてテーマを設け、より詳細に解説する予定である。

 以上でFPGA設計の基本的なフローは完了である。これまで、4回にわたってFPGAの設計開発フローの中で、「これさえ知っていればFPGAの設計ができる」という4つの基本ステップを取り上げ、一歩ずつ解説してきた。これまでFPGAになじみの薄かった方にも思っていたほどには難しくない、と感じていただけただろうか。 次回からはより実践的な「ボードを使った回路設計」についてわかりやすく解説する。

この記事は、アイティメディア社『FPGA Insights』に掲載されていたコンテンツを、アイティメディア/EDN Japanの許可を得て転載しています。

目次