JTAG通信

EZ-FPGAはPC(ホスト)と接続して使用することを念頭に考えて設計されているため、コンフィグレーション用のROMを持っていません。
(もちろんPC以外にも組み込み系の用途でも使用できるような柔軟性も兼ね備えていますので、外部にコンフィグレーションROMを接続することも可能です。)

このためアプリケーションに求められる機能として、第1にコンフィグレーション機能が挙げられます。

折角PCと接続するわけですから、EZ-FPGAとPCでそれぞれ別物では面白くありません。超高速な処理(MAX 263MHz)はFPGAで、複雑で大量のデータを扱う処理や、ユーザインターフェイスを伴う処理はPCで行わせるのが得策です。これを実現させるためにはFPGAとPCが通信を行う必要があります。

つまりアプリケーションにめられる次の機能はPC(ホスト)とFPGAを通信させることです。

EZ-FPGAに採用されている144ピンパッケージ(XC2S100-5TQ144C)はコストパフォーマンスは高いですが、I/Oピンが不足しがちです。そこでEZ-FPGAではFPGAの接続にJTAGインターフェイスを採用しました。JTAGインターフェイスはTCK、TDI、TMS、TDOの4本でコンフィグレーションからPCとの通信までを行うことが出来ます。しかもこれらのピンはI/Oとは独立してSPARTAN2に実装されているためI/Oピンを全て別の用途に使用することが出来ます。

EZ-USBはCPUとI/Oが非力なため、EZ-USBでJTAG通信を行うと1Mbps程度の速度しか出ませんが、JTAGインターフェイス自体は33MHzまでの高速通信が可能です。今後より高速なUSB-JTAGインターフェイスを開発することで、ソフトウエアの設計を変更することなく、高速化することが可能です。

EZ-FPGAライブラリ

FPGAのコンフィグレーションとFPGA、PC間の通信を提供するのがEZ-FPGAライブラリの目的です。EZ-FPGAライブラリを使用すれば、開発者はUSBの知識が全く無くてもアプリケーションの開発を行うことが可能になります。実際に全く同一のアプリケーションインターフェイスでPC、FPGA間の通信をUSBでは無く、パラレルポートを使用することも出来ます。
EZ-FPGAライブラリはDLL形式とスタティックリンク形式(LIB or A)形式で提供されます。

EZ-FPGAライブラリはパラレルケーブルでも使用できます。パラレルポートで使用するためにはOSにgiveio.sysを組み込むか、同一ディレクトリにgiveio.sysをおいておく必要があります。更に実行にはアドミニ権限が必要です。
EZ-FPGAボード側



PC側


ダウンロード
EZ-FPGAライブラリ+ツール(030806)
│ histry.txt --- 更新履歴

├─FPGA
│ ├─lib
│ │ jtagmem.ngc : JTAGメモリアクセスライブラリ、ネットリスト
│ │ jtagmem.v : JTAGメモリアクセスライブラリ、Verilogヘッダ
│ │ jtag_spi.ngc : JTAG-SPIアクセスライブラリ、ネットリスト
│ │ jtagspi.v : JTAG-SPIアクセスライブラリ、Verilogヘッダ
│ │
│ ├─src
│ │ pll.v : VCO用PLL Verilogソース
│ │
│ └─ucf
│ ezfpga.ucf : EZ-FPGA ピン配置ファイル
│ ezfpga_d.ucf : EZ-FPGA ピン配置ファイル(PullDown)
│ ezfpga_pb.ucf : EZ-FPGA+PB-SRAM基板用ピン配置(PullUp)
│ ezfpga_u.ucf : EZ-FPGA ピン配置ファイル(PullUp)

├─TOOL
│ │ ezftest.exe : EZ-FPGA動作確認プログラム
│ │ ezfpga.exe : 旧動作チェック用 LED点滅プログラム
│ │ vcocalc.exe : VCO用PLL分周比計算ツール
│ │ xbit2c.exe :*.bitファイルからCソースへの変換ツール
│ │
│ └─src
│ ├─vcocalc
│ │ vcocalc.c : vcocalc.exeのソース
│ │
│ └─xbit2c : xbit2c.exeのソースリスト
│ devlist.c
│ devlist.h
│ makefile
│ xbit2c.c
│ xilinxbit.c
│ xilinxbit.h

└─WIN
├─lib
│ ezfpga.a : GCC-MinGW32用スタティックライブラリ
│ ezfpga.dll : ダイナミックリンクライブラリ
│ ezfpga.lib : MSVC 6.0用スタティックライブラリ

└─src
ezfpga.bas : VisualBasic用 EZ-FPGA DLL関数定義ソース
ezfpga.c : C言語用 EZ-FPGAハンドリングソース
ezfpga.h : ezfpga.c用ヘッダファイル

vcocalc.exeの実行例です。
表示の順番は、ループ周波数の高いのが上、エラーレートが低いのが下になります。

Base clock (MHz)?24.000 <−− ベースクロックの周波数
VCO clock (MHz)?57.27272 <−− VCOの周波数
Minimun Loop Cycle (KHz)?50 <−−最小ループ期間
Maximum Error rate (%)?1  <−−最大許容差
BASE Clock = 24000000.000000000MHz
VCO  Clock = 57272720.000000000MHz
Min  Loop  = 50000.000000Hz
Max  Error = 1.000000%
BASE div=   5:VCO div=  12,F=57.600000000MHz,Loop=4772.727KHz,err=-0.56819%
BASE div=   8:VCO div=  19,F=57.000000000MHz,Loop=3014.354KHz,err=0.47846%
BASE div=  13:VCO div=  31,F=57.230769231MHz,Loop=1847.507KHz,err=0.07330%
BASE div=  31:VCO div=  74,F=57.290322581MHz,Loop=773.956KHz,err=-0.03073%
BASE div=  44:VCO div= 105,F=57.272727273MHz,Loop=545.454KHz,err=-0.00001%
HIT ANY KEY