ZPUを Spartan-3E Starter Kitで動くようにしました。
Zpuinoなどの先例があるのである意味車輪の再発明なのですが、最終目標はLX9 MicroBoardおよびSmartFusion Evaluation Kitへの移植をすることなので、理解するために自分で何とかしてみようとしています。
HDLソースは http://sourceforge.jp/projects/noodlybox/svn/view/trunk/zpu/?root=noodlybox にあります。
2011.11.04、ZPUのソースに付属していたhelloworld.vhdというROMイメージを使って、UARTに「hello world」が出力できています。
2011.11.05(rev210)、trunk/zpu/sw/hello.cを書き換えることでソフトを変更できるようになりました。ただし使用可能なI/OはUART出力のみです。
2011.11.06現在(rev214)、Dhrystoneが動くようになりました。ただし、時刻の測定結果が変で、性能は測定できていません。
ZPUはPicoBlazeと違って、Cコンパイラが使用可能で、かつ、Xilinxに依存しない(LatticeとかActelとかのFPGAに移植できる)ので、いろいろと応用が利くと思います。
Xilinx EDKのような統合開発環境は無いので、そのぶん根気が必要ですが...
| PicoBlaze | ZPU | |
| ビット数 | 8 | 32 |
| 開発言語 | 基本的にアセンブラのみ | C言語(gcc3.4.2) |
| 対応FPGA | Xilinxのみ | FPGAメーカーに依存しない |
| 規模(Spartan-3E) | 96 slices | 350 slicesぐらい? |
| 必要BRAM数(Spartan-3E) | 1個 | 8個以上 |
ちなみに、PicoBlaze向けに作られたペリフェラルは、改変することなくZPUにも接続できそうな感じです。