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のクレジットは入ってないし再配布を禁止する文言もみつからなかったのでいいのだろう。
2012年2月29日水曜日
2012年2月28日火曜日
PDP-11 on FPGA勉強会構想
PDP-11 on FPGA勉強会(仮)の構想をゆるゆると固めている。今のところはこんなイメージ。
目標
初回メニュー
発表パートその1:
2次会はほどほどに。
目標
- FPGA上で動くPDP-11の動作を理解する。
- FPGAを実際に動かしながらOpenCoresによるPDP-11のうちCPU部分のソースコード(およそ9,500行)を読んで概要を把握する。
- PDP-11とVHDLの基礎(身につけながらの参加も歓迎)。
- PDP-11のハンドブックなどドキュメントを理解できる程度の英語力。
- 2012年夏から月1程度、1年間くらい?
- 基本は東京都内。温泉合宿もやりたい。たまには地方巡業も?
- 内容は濃厚。参加者にある程度負荷あり。
- LinuxのXilinx開発環境とghdl(必須)
- FPGAボード(強く推奨。あると勉強会を256倍楽しめる)。AvnetのMicroboardが標準環境。DigilentのS3board, Nexys2, Nexys3等でもOK
- 発表パートと実技パートを設ける。
- 発表者を毎回決めて持ち回り。自己紹介を兼ねて全員LT。
- 実技パートでは、発表パートの内容をエミュレーターやFPGA上で動かして確かめる、など。
初回メニュー
発表パートその1:
- PDP-11のシステム概観とFPGAでの実現
- CPU部分の構成
- pdp11_lunit.vhd解説
- 2プロセス法について
- Xilinxツール概観
- pdp11_lunitの動作検証
- pdp11_lunitの波形を見る
- 全員LT
2次会はほどほどに。
LinuxでXilinx ISE
2012年2月25日土曜日
w11aをAvnet Microboardに移植
Avnet Microboard(秋月電子などで安価に入手できるXilinxのSpartan-6搭載のFPGA開発ボード)でOpenCoresのPDP-11が動いた。差分は最新のw11a_V0.55に対するパッチにまとめてある。具体的な動かし方などはOpenCoresのサイトや、アーカイブ中のドキュメントを参照。@magoroku15さんによる解説は非常に参考になる。
動作はUbuntu 10.04上のXilinx ISE 13.4で確認した。(私が買った時点でMicroboardに付属していた)13.2や13.3でも問題なく動作するはず。
MicroboardのオンボードのLEDやスイッチ、ボタンが貧弱であまり役に立たない。とりあえずDIPスイッチを(左から右へ)下上下下と設定しておくのを忘れなければ動くはず。
メインメモリはFPGA内蔵のblock RAMのみ使用しているので、64kbyteしかない。UNIX Version 5はちゃんと動くが、2.11BSDはboot中に例外が発生して停止してしまう。
MicroboardにはLPDDR SDRAMがたっぷり乗っているのでこちらをメインメモリにすれば2.11BSDも動くはず。そのためにはSpartan-6内蔵のメモリコントローラを利用するなど多少手間がかかるので、そのあたりは今後のお楽しみ。
動作はUbuntu 10.04上のXilinx ISE 13.4で確認した。(私が買った時点でMicroboardに付属していた)13.2や13.3でも問題なく動作するはず。
MicroboardのオンボードのLEDやスイッチ、ボタンが貧弱であまり役に立たない。とりあえずDIPスイッチを(左から右へ)下上下下と設定しておくのを忘れなければ動くはず。
メインメモリはFPGA内蔵のblock RAMのみ使用しているので、64kbyteしかない。UNIX Version 5はちゃんと動くが、2.11BSDはboot中に例外が発生して停止してしまう。
MicroboardにはLPDDR SDRAMがたっぷり乗っているのでこちらをメインメモリにすれば2.11BSDも動くはず。そのためにはSpartan-6内蔵のメモリコントローラを利用するなど多少手間がかかるので、そのあたりは今後のお楽しみ。
2012年2月5日日曜日
ChipScope Pro Inserter をコマンドラインで使う(2)
ChipScope Pro Inserterを使うと、解析用のロジアナ等の回路を既存のngcに組み込むことができる。command lineからの使い方にはちょっと癖があってドキュメントだけではわかりにくいのでメモ。
まず、inserter -createで記述ファイルの雛形 *.cdcをつくる。この段階では何の情報も入力しない。したがって出力は実質、空。
つぎに、inserter -editで記述ファイルの中身を埋める。ここはGUIが起動する。引数にパーツ番号 -p xc6slx9-csg324-2 等を忘れず指定する必要がある(GUIの編集画面は何故か使えない)。ngdを生成するが、この段階のngdの必要性は謎。
最後に、inserter -insertで実際に回路をngcに追加する。この段階はcommand lineのみで処理できる。
ChipScope等のライセンスが必要となるのはngdbuildをかけるとき(きちんと確認してない)。したがって、inserterはwebpackでも実行可能。
まず、inserter -createで記述ファイルの雛形 *.cdcをつくる。この段階では何の情報も入力しない。したがって出力は実質、空。
つぎに、inserter -editで記述ファイルの中身を埋める。ここはGUIが起動する。引数にパーツ番号 -p xc6slx9-csg324-2 等を忘れず指定する必要がある(GUIの編集画面は何故か使えない)。ngdを生成するが、この段階のngdの必要性は謎。
最後に、inserter -insertで実際に回路をngcに追加する。この段階はcommand lineのみで処理できる。
ChipScope等のライセンスが必要となるのはngdbuildをかけるとき(きちんと確認してない)。したがって、inserterはwebpackでも実行可能。
登録:
投稿 (Atom)