WebPackのインストール

FPGA(SPARTAN2)のデザインを開発するためにはXILINXが無償で提供しているデザインツールWebPackを使用します。
WebPackを使用することでVerilogやVHDLといったハードウエア記述言語(DHL)を使用してデザイン設計が出来ます。

WebPackはXILINXのHPからダウンロード可能です。このページから登録を済ませた後ダウンロード&インストールしてください。
WebPackのインストールにはWindows2000あるいはXPが必要です。

プロジェクトの作成

デザインはWebPackのプロジェクトとして管理されます。新しいデザインを作成するときにはまずプロジェクトを作成します。
今回はEZ-FPGAの簡単なアプリケーションとしてPLLとDLLを使用したクロックジェネレータのデザインをVerilogで作成してみます。

まずWebPackのProject Navigatorを起動します。
Windowsの「スタート -> すべてのプログラム -> Xilinx ISE 5 -> Project Navigator」で起動します。

起動しましたらメインメニューの「File -> New Project」で新規のプロジェクト作成を指示します。

「Project Name」はプロジェクトの名前を入れます。今回は「fpga」にします。
「Project Location」はプロジェクトを作るディレクトリを指定します。
「Device Family」は「Spartan2」を選択してください。
「Device」は「xc2s100」を選択してください。
「Package」は「tq144」を選択してください。
「Speed Grade」は「-5」を選択してください。
「Design Flow」は「XST Verilog」を選択します。
全て入力したら「OK」です。

これでfpgaのディレクトリにプロジェクトファイル(fpga.npl)が作成されます。これ以降はこのfpga.nplをダブルクリックすることで自動的にWebPackのProject Navigatorを起動してくれます。

デザインの中身(ソース)は通常Verilogソース(拡張子.v)とピン配置ファイル(拡張子.ucf)です。
ピン配置ファイルは、SPARTAN2のピンの何番を、どのような名前の信号として使用するかを定義したものです。

VerilogなどのHDL言語では特定の機能をまとめたものをモジュールとして扱います。例えばPLLの機能を実現するVerilogのモジュールはpll.vです。このpll.vをトップレベルモジュールから呼び出して使用します。

EZ-FPGA用にオプティマイズから公開されているモジュールはpll.vの他にJTAG関連のアクセスモジュールとしてjtagspi.vとjtagmem.vがあります。

今回のクロックジェネレータで使用するファイルはfpga.v(トップモジュール)、fpga.ucf、pll.v、jtagmem.v、jtagspi.vです。
lzhをおいておきますので、解凍して中身を先ほど作成されたfpgaディレクトリーにコピーしてください。

これらのファイルをプロジェクトに追加します。追加方法はメインメニューから「Project -> Add souce....」です。

この画面でピン配置ファイル(ucf)とVerilogファイル(.v)を全て選択します。

ピン配置ファイル(ucf)をどのVerilogソースと関連付けるかを聞いてきますので、トップレベルモジュールのezfpgaと答えます。


これで必要なソースファイルがプロジェクトに追加され以下の画面になります。

トップレベルモジュールの「ezfpga (ezfpga.v)」を選択して「Generate Programming File」のプロパティーを開きます。
「Configuration optitions」タブの「Configuration Pin Done」を「Pull Up」から「Float」に変更します。
これによりコンフィグ終了後にLD2のチップLEDが消燈するようになります。

さらに「Startup options」タブの「FPGA Start-Up Clock」が「CCLK」であることを確認します。
(Rev1の場合は「JTAG Clock」にしていますが、Rev2ではROMからコンフィグを行うことがありますので、CCLKを選択します。)


「General Options」タブの中は、「Create Bit File」がチェックされていることを確認します。
Bitファイルで直接コンフィグを行ったり、コンフィグROMに書き込んで使用します。
「Create Binary Configuration File」もチェックしておきます。このBinファイルは、デザインが再作成されたときに自動的にFPGAのコンフィグを行うためのスイッチファイル(後述)として使用します。

「OK」でプロパティ画面を終了します。

これで全ての設定が完了です。

論理合成 & FPGA書き込み

それでは実際に論理合成を行ってみましょう。
先ほどのプロパティ画面を表示させるために右クリックした「Generate Programming File」をダブルクリックします。
Synthesize、Implementと処理が進み、最後に「Completed process "Generate Programming File".」と表示されればOKです。ezfpgaディレクトリにezfpga.bitファイルが作成されているはずです。このファイルがSPARTAN2に書き込むファイルです。

EZ-FPGA Rev2ではEZ-FPGAコントローラ(ezfc.exe)ツールを使用して、開発中のデザインをFPGAに書き込んだり、コンフィグROMの消去、書き込みを行ったりします。

ezfc.exeの起動方法は、コマンドプロンプトで"ezfc config .ezf"のようにスクリプトファイルを指定して起動します。スクリプトファイルの中にはBitファイルのロードや、FPGAのコンフィグ、コンフィグROMの消去などのコマンドが記述されています。コマンドプロンプトからの起動の他に、直接スクリプトファイル(config .ezf)をezfc.exeにドラッグ&ドロップすることで起動することも出来ます。
FPGAのコンフィグが完了すると、LD1のLEDが消燈します。
(コンフィグROMが消去された状態で実行してください。)

デザインを修正する度に"ezfc config .ezf"を起動するのは面倒です。そこで登場するのがバッチファイルmon_exe.cmdです。
mon_exe.cmdはezfpga.binファイルが作成されるのを待ちます。ezfpga.binファイルが作成されると、"ezfc config .ezf"を実行して、ezfpga.binファイルを消します。そして再度ezfpga.binファイルが作成されるのを待ちます。このバッチファイルを起動しておけば、WebPackで普通にソースファイルを修正して再コンパイルすることで、自動的に結果をEZ-FPGAに反映させることが可能です。

今回の手順では、コンフィグROMへの書き込みを行っていませんが、コンフィグROMに書き込んでおくことで、PCに接続しなくても、EZ-FPGAをパワーオンするだけでコンフィグを行うことも出来ます。