昨日、2007年度の技術報告書が一応書きあがった。今年は、私の自作したPCIバスのインターフェース回路について書いた。64bit, 66MHzのPCIモジュールだ。
ターゲット機能としてはシングル転送だけをサポートしている。ホストPCからのコマンドを受け取るだけといったところだ。バースト要求が来てもディスコネクトする。つまりバースト転送するときは、ホストPCのDMAコントローラは使用しないということだ。
マスタ機能は、バースト転送が出来るようになっている。FPGA内部バス(64ビット幅)からのデータを64ビット、66MHzでホストPCのメモリにバースト転送する。(当然逆もできる)FIFOにデータをためてから、FIFOに入っている分だけ、PCIマスタで転送するようになっていて、最大のバースト長は256ロングワード(64ビット幅)だ。DMAチャンネルは2チャンネル。
ブロック図はここ。(ブロック図が間違っているところがあるが、ご愛嬌)
PCIマスタ機能は、PCIの仕様によると、相手が32ビット幅のトランザクションにしか対応していないときは、32ビット・アクセスに切り替えなければならないが、私のPCIモジュールはそんなことはしない。そうだと、どうせ性能が出ないので、ホストPCの方を64ビット、66MHz対応に変更する。
PCIマスタはリードとライト機能が同時に使えて、(つまりFPGA内部バスから同時に対応FIFOに読み書きが出来る。FPGA内の内部バスは2本ある。)PCIモジュールでアービトレーションを行い、出来るほうから処理を行う。実はもう1本PCIモジュールを使うパスがあるので、合計3つのFPGA内部デバイスから同時に使うことが出来る。
いまさらPCIということだが、PCI-Xはまだ出来かけなのでしょうがない。
問題は、同じようなことをやっている人がいないので、発表は技術報告書の内容で発表しても、誰もわからないということだ。したがって、もっと一般的な内容にしようと思っている。
パソコンのBIOSがどうやってPCIボードを認識して立ち上がるか?どうやって、プラグ&プレイしているか?といったような一般的な内容にしようと思っている。一部推測が入ってしまうが。。。
なかなか、ほかの分野の人も聞いて、わかったような気になってもらう内容にするのが難しい。
DDR2-SDRAMの方は、Spartan3E Starter Kit用のDDR-SDRAMコントローラをVirtex4に載せ換えて、性能を見ているが、今のところクリティカルパスが6ns程度になっている。
ということは166MHz動作なので、DDR332しか動作しないということだ。チューニングをしながら、DDR2の勉強をしてDDR2用に変えていこうと思っている。2007/12/07 追記:クリティカルパスはPicoBlazeの部分でした。DDR-SDRAMコントローラ本体は問題ありませんでした。
なにかDDR2-SDRAMコントローラが出来たときに、つなげるIPはないかな?PowerPCがEDKなしでつかると良いんだけど。どうやればよいか調べてみよう。
- 2007年12月06日 05:35 |
- PCI
-
| トラックバック:0
-
| コメント:4
こんばんは
>クリティカルパスが6ns
Spartan3E、Virtex4、どちらの話でしょうか。
2pro-7で、DDR400までは可能でした。Virtex4なら、533はいけると思っていますし、デモボードも東エレで実現されていたと思います。
私の場合、クリティカルパスは、dataでなく、CMDかADRでした(どちらかは忘れました)。
また、無理に並列で作成して+1CLKすることでもう少しいけると思っています。
クリティカルパスはどこらへんでしょうか。
- 2007/12/06(木) 22:57:22 |
- URL |
- NSX #-
- [ 編集 ]
NSXさん、おはようございます。
記事を書き直したとおり、DDR-SDRAMコントローラ自体は問題ないようでした。
DDR2-SDRAMを使って何か出来るようなシステムを考えとかないといけませんね。
- 2007/12/07(金) 05:23:50 |
- URL |
- marsee #-
- [ 編集 ]
PicoBlazeのことでしたか、了解です。
自由度の高いコントローラーだとセレクタが多めに入り、クリティカルパスが大きくなるのでそういう話かなと思ったので質問させていただきました。
- 2007/12/07(金) 14:55:02 |
- URL |
- NSX #-
- [ 編集 ]
まだ、良く検証していないで、載せてしまってすみませんでした。
このブログのコンセプトは、”思ったことを書く、間違っていれば訂正する”ですので、よろしくお願いします。
- 2007/12/07(金) 19:27:15 |
- URL |
- marsee #-
- [ 編集 ]