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があります。
pll.vはVerilogのソースコードとして公開されますが、jgagspi.vとjtagmem.vはモジュールの定義部分(拡張子.v)とネットリストライブラリ(jgag_spi.ngc、jtagmem.ngc)として公開されます。

今回のクロックジェネレータで使用するファイルはfpga.v(トップモジュール)、fpga.ucf、pll.v、jtagmem.v、jtagmem.ngcです。
zipをおいておきますので、解凍して中身を先ほど作成された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」を「GCLK」から「JTAG Clock」に変更します。
これによりJTAGによるコンフィグレーションが可能になります。

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

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

論理合成 & FPGA書き込み

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

EZ-FPGAではPC(ホスト)と接続してFPGAのコンフィグレーションを行うことを想定しています。ホスト側のアプリケーションからFPGAをコンフィグレーションしたり、ホストとFPGAが通信するためのライブラリなどを提供しています。

現時点ではまだホスト側のアプリケーションを作成しておりませんので、EZ-USBを使用してSPARTAN2をコンフィグレーションする汎用ツールspcisp.exeを使用することにします。spcisp.exeはT&Aによって作成&公開されています。同じものをここにおいておきますので、ダウンロードしてください。解凍して得られるspcisp.exeとspc_usb2.dllをezfpgaディレクトリにコピーします。

spcisp起動用のスクリプト(ezfpga.cmd)もezfpgaディレクトリにダウンロードしてください。

そしてMINI EZ-USBとEZ-FPGAを接続し、PCと接続します。LD1とLD2のLEDが点燈します。この状態で先ほどのezfpga.cmdをダブルクリックで実行します。SPARTAN2のコンフィグレーションが終了してLD1が消燈するはずです。

ezfpga.cmdはezfpga.bitでSPARTAN2をコンフィグした後、待ち状態になります。そしてezfpga.bitが更新されると自動的にSPARTAN2を再コンフィグします。つまりWebPackで普通にソースファイルを修正して再コンパイルすることで、自動的に結果がEZ-FPGAに反映されます。
標準のパラレルケーブル+iMPACTを使用する開発よりも、高速で使いやすい開発環境となります。
詳しくはspcispに添付してあるドキュメントを参照してください。