2005.4.12 新規

fz80 IP

 いわずとしれた、ザイログZ80のIPでPC8001をFPGAに乗せるためにhwhrさんがVerilogHDLで書き下ろされたIPです。
 10万ゲート規模のSpartanIIでZ80パソコンを動かすという前代未聞?の荒技をさらりと実現されています。
 同プロジェクトでは、専用マイコンを使ったUSBキーボード専用ホストや、コンパクトフラッシュからのZ80ブートなど、FPGA Socに関する興味深い取り組みもされています。

 各命令はシングルバスサイクルで実行するので、KL5C80シリーズに構造が近く、低クロックで高速に実行できます。
 なんといっても驚くのはその回路規模の大きさで、他のZ80よりはるかに小さく実装できる点です。
 後発ですが、偽X1でも採用してマイナーなバグをいくつか直した(本家で更新済)ので、それなりにバグは潰れています。

 私はfz80c.vをアーケードクローンで使うため、古い回路をそのまま移行する為にバスサイクルと制御信号がZ80を同じにするためのラッパを書きました。
 しかし、昔の74シリーズTTL時代とはゲート間ディレイの桁が違いすぎて、多くのグリッジが発生し、またゲーテッドクロックなどFPGA特有の制限などもあるため、結局は同期回路で置き換えていく作業が必要のようです。
 また、オリジナルのZ80バスタイミングは、両エッジで変化するためFPGAにはミスマッチです。

 また、Altera QuatusII 〜4.2では、データバス上位が何故かfz80内部でマスクされてしまい、動作しないようです。
 Xilinxデバイスと、Ircarus Verilogシミュレーションでは正常な結果を得ているので、論理合成ツールのバグか、文法解釈のあや(これも厳密にはバグ)だと思われます。

Link

fz80コア最新版

Download

fz80c.vfz80用Z80バスコンパチラッパ


Tips

 fz80.v v1.03のバスリクエストステートの扱いにバグがあります。
 fz80c.v v0.52aのバスリクエストステートにもバグがあり、修正掛けてます(未公開)。