FC2カウンター FPGAの部屋 2006年01月10日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

PCIモジュール3

今度はPCIマスタモジュールだ。
PCIマスタのアクセスはPCIモジュール2で大体説明してあるが、PCIマスタ書き込みの場合、マスタ(パソコンのCPU)が/REQをアサートする。アービタが/GNTをアサートするとマスタはバスを使えるので、/FRAMEと/IRDYが両方デアサートされるのを待って(バスが空くのを待って)、/FRAMEをアサートしながらアドレスを出力する。マスタは/FRAMEをアサートした後にデータの準備が出来たら/IRDYをアサートする。ターゲット(PCIボード)は/FRAMEがアサートされるときのアドレスを確認して、自分のアドレスだったら/DEVSELをアサートする。その後データを受け取る準備が出来たら/TRDYをアサートする。
/IRDYと/TRDYの両方がアサートされたときがデータが書き込まれたタイミングである。
私のPCIマスタはバーストアクセスができるので、PCIマスタのFIFOにデータがある限り最後のデータ転送の1つ前まで/FRAMEをアサートし続ける。当然/IRDYはアサートし続ける。/IRDYを制御しないほうがロジックが少なくなるし、他のPCIアクセスを阻害しなくなるので、転送効率的に有利になる。
バーストアクセスを続けて行える条件は/GNTがずっとアサートされているか、もしくはレイテンシタイマがタイムアウトするまでだ。パソコンの起動時にBIOSがこちらのコンフィギュレーションスペースのレジスタの値を元にレイテンシタイマの値をセットする。PCIマスタモジュールは最初にPCIデータアクセスを始める時にレイテンシタイマの値をカウンタにコピーする。PCIマスタモジュールは1データ転送するごとにレイテンシタイマのコピーを-1する。そして0になったらタイムアウトする。タイムアウトした状態で/GNTがデアサートされているとPCIマスタはPCIデータ転送を止めなければならない。
PCIマスタアクセスのメインステートマシンはPCI2.2仕様書のステートマシンに大体同じなので書かないことにする。興味のある方はPCI Local Bus Specification Revision 2.2の245ページを見てほしい。
PCIのデータの出力はクロックからの出力時間が厳しいこともあり、なるべくならばIOB内のフリップフロップから出力したい。ので、データ出力用FIFOの後にIOBのFF、その後パッドに出力する。だがそうするとPCIターゲットがデータ転送なしに/STOPをアサートして終了(データ転送なしのディスコネクトでした)した時などにIOBのFFにデータが残ってしまう。その後に他のPCIマスタアクセスがあると最初のアドレスが狂ってしまう。そのためデータ出力用FIFOにはリワインドを設けてある。
IOB付近のデータパスを下に示す。
PCI_module_block_060110.png

今見ても、結構複雑だ。
ちなみにこれは最初のブロック図ですのでバグがあるかもしれません。ご了承ください。基本的なコンセプトは一緒ですが。。。
  1. 2006年01月10日 21:20 |
  2. PCI
  3. | トラックバック:0
  4. | コメント:5

Virtex2Proの電源

RocketIOのユーザーズマニュアルを見ると、RocketIOの電源はロジックの電源とは別に電圧レギュレータをつけないとだめなそうである。
しかもRocketIOの受信側をACカップリングにすると、VTRXの電圧を1.6~1.8Vにしないといけないようだ。もう1つ電圧レギュレータが必要のようだ。
さらにRocketIOの電源にはフェライトビーズを入れなければいけないようである。いろいろRocketIOを使うのも大変そうだ。
それにVirtex2ProのJTAG端子のTDOはオープンドレインになっているそうだ。Virtex2は通常の出力だったのだが、複数のVirtex2Proをつなぐ場合にカスケードにつながないで、並列につなぐようになっているのだろうか?
  1. 2006年01月10日 20:45 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:3