2012年2月29日水曜日

MIGについてまとめ

Avnet Microboard上のSpartan-6での利用を念頭において、MIG(Memory Interface Generator)についてまとめておく。

MIGはCore Generatorの機能の一部。ISE 13.4に乗っているのはMIG 3.9(Core Generatorには固有のバージョンはないようで13.4)。もとはbatch modeでインターフェースを生成できたようだがMIG 3.5以降、削除されている(Memory Interface Solutions User Guide UG086)。したがって、GUIを使わざるを得ない。

Spartan-6には強力なDDRメモリコントローラーが搭載されていて、その使い方はSpartan-6 FPGA Memory Controller User Guide UG388を参照。MIGで生成したインターフェースを使うことが前提になっていて、MIGの使い方はSpartan-6 FPGA Memory InterfaceSolutions User Guide UG416を参照。

Avnet Microboard用に生成してカスタマイズしたインターフェースをAvnetが用意している(MIG Traffic Generator Design (Verilog and VHDL)) 。ただしこれはMIG 3.61で生成したもので、ISE 13.4では合成できなかった。すくなくとも{icon,ila,vio}_coregen.xcoのISEをFoundation_ISEに書きなおす必要がある。Avnet用のカスタマイズはリセットのピン・電圧およびクロックのピン・電圧・周期。さらに、デバッグで取れる信号の追加。MIG 3.9で生成したインターフェースに同様の変更を加えるのは容易だろう(未確認)。

PDP-11 on FPGAに組み込むのは技術的にはそれほど難しくなさそう。ただ、このメモリインターフェースのコードは再配布できないので、利用しやすい形で公開するにはどうすればいいか、といったところで工夫が必要になるだろう。

追記(2012年3月19日):
LEON3のコードもちょうど似たような発想のことをやっていた。regen.cgc  coregen.cgp  mig.prj  mig.xcoの4つのファイルがあればコマンドラインのみでコードを生成できるようだ。この4つのファイル自体はGUIを使って生成する必要がある。

うるさいことを言うと生成したファイルが再配布可能かどうかも議論の余地があるが、Xilinxのクレジットは入ってないし再配布を禁止する文言もみつからなかったのでいいのだろう。

2 件のコメント: