HOME

EZ−USB FX2LPのSlaveFIFO

サイプレスのサイトからSlaveFIFOに関するアプリケーションノートを見つけました。

本ページではこの資料を元に実験をしていきたいと思います。

参考資料(サイプレスのサイトからAN6077の資料をダウンロード)

Application Note   AN6077

 Implementing an 8-Bit Asynchronous Interface with FX2LP

アプリケーションノートに以下のブロック図が載っていました。FX2LP同士で通信するものです。

一方をMasterFIFO(GPIF)とし、もう一方をSlaveFIFOとします。IFCLKクロックが無いので非同期通信のようです。データは8ビットのみです。

 アプリケーションノートにあるブロック図は、アプリケーションノートの他の文章やGPIFの記述と照らし合わせるとRDYとCTLの矢印の向きが逆のようです。正確には以下の図のようになります。またEP2とEP6のHost(PC)からみた使い方の概略はその下の図のようになります。

ブロック図(上)とHostから見たEP2,EP6の使い方図(下)

 

img1.gif

GPIF Designer図

 左:MasterFIFO側のFX2LP 、 右:SlaveFIFO側のFX2LP

ソフト考察

 アプリケーションノートを読むと、Slaveは単にIFCONFIGレジスタでSlaveFIFOに設定するするだけで、なにも動作内容をプログラムされていませんでした。これはSlaveのAUTOOUT/AUTOIN機能がONになっていて、Host(PC)とSlaveのEndPointとMaster間通信が自動でおこなわれることを意味します。

 Master側もAUTOOUTやAUTOIN機能がONなので、Host(PC)とMasterのEndPointとGPIF間通信が自動でおこなわれますが、MasterはGPIFによってSlaveと接続する必要があります。GPIFとは相手と接続するためのバス(信号線の集合)そのもののことで、ハード的な信号タイミングチャートは、GPIF Desigerというソフトで簡単に作ることができます。今回はアプリケーションノートどおりに作ります。

 FX2LPにはSlaveFIFOモードがあるのに対し、MasterFIFOモードがないので、MasterのファームはHost(PC)からのデータを監視したり、SlaveからのFLAGを監視しながら、GPIFを操作する必要があります。以下のその手順を示します。

 

 Master OUTの手順(Host(PC)→Master(EP2)→GPIF , TD_Pollにておこなう処理)

 1)GPIFがIDELなら次へ、IDELでなければLOOPENDへ

 2)EP2にパケットがあれば次へ、パケットがなければLOOPENDへ

 3)SlaveがFULLでないなら次へ、FULLならLOOPENDへ

 4)EP2からGPIFへデータをWRITEし、GPIFがIDELになるのを待つ(転送終了待ち)

 5)GPIF転送したデータが512バイト未満ならPKTENDをSlaveへ出力する

 LOOPEND)手順1へ戻る

 

 Master INの手順(Host(PC)←Master(EP6)←GPIF , TD_Pollにておこなう処理)

 1)GPIFがIDELなら次へ、IDELでなければLOOPENDへ

 2)SlaveがEMPTYでないなら次へ、EMPTYならLOOPENDへ

 3)EP6がFULLでないなら次へ、FULLならLOOPENDへ

 4)GPIFからデータをREADしてEP6へ転送、GPIFがIDELになるのを待つ(転送終了待ち)

 5)GPIF転送されたデータが512バイト未満ならINPKTENDをHostへ出力する

 LOOPEND)手順1へ戻る

 

以下、作成中。。。 しばらくおまちください。

 

inserted by FC2 system