2016年09月03日

MPUコア変更完了、しましたが

MPUコアをtg68からao68000に変更の作業が一段落しました。
動かない原因は、DMA中にもMPUがデータバスを切り離さなかったことと
割り込みとDMAが同時にアクティブになったときにDMA転送のACKが
INTへのACKと認識され、DMA転送のデータがINTベクトルと認識されていた
ということでした。
この部分修正し、Human68kは無事、起動し、SX-WindowもKO Windowも
起動するようになりました。が、予想以上に遅いようです。
tg68を10MHzで動作させたときにはKO WINDOWのEPSの値が800を超えるのですが、
ao68000 20MHzでは400にも満たない数値です。
速度アップも見込んだ変更だったので残念です。

上記、分かった問題のうち、DMA中にMPUがバスを切り離さないのは、
tg68を使ったものでも同じ設計になっていましたので(tg68はASをネゲート後、
一度バスをリードに変えるらしく、そのタイミングでDMA転送に切り替えるため
tg68のクロックイネーブルを切っているのでうまくいっていたと思われる)
気持ちが悪いのでこの部分は修正しようと思います。
posted by プー at 18:23| Comment(0) | X68000 | 更新情報をチェックする

2016年09月02日

MPUコア切換えを行っているのですが

tg68からao68000へのMPUコア切換えを行っているのですが、なかなか何故か
上手くいきません。
バス幅変換も、割り込み関連もそこそこ上手くいっているように見えるのですが、
OSのbootにはまだたどり着けません。
SRAMの設定で内蔵ターミナルが起動する設定にし、bootデバイスを全部
無しにすると、ちゃんと内蔵ターミナルが起動しますが、
HDDやFDDから起動しようとすると毎回違った動作をしています。
違った動作というのは、エラーで止まったり、BOOTセレクタが表示されたり。
BOOTセレクタというのは初めて見ました。
FDD/HDDでエラーが発生し、ROMでは発生しないという事は恐らくDMA関連では
ないかと予想するのですが、DMA関連は特に変更が必要ではなさそうだったので
何も手を加えていませんし、SignalTapIIで見た範囲では、DMAは正常に動作して
いるように見えます。
ただ、FPGAのRAM容量から、そんなに沢山のモニタが出来るわけではないので
軽く見た範囲だけですが。
posted by プー at 15:37| Comment(0) | X68000 | 更新情報をチェックする

2016年08月25日

MPUコアを変えてみようと思います

FPGA版X68k互換機には、MPUコアとしてOpenCoresのtg68を使用していました。
このコアには
・割り込みがオートベクタしかない
・FC出力が無い
・バスエラーが無い
という問題と、
・クロックあたりの処理は早いが、クロック数を上げられない
という特徴が有ります。
この中で、X68kのBIOSではわざとバスエラーを発生させる場所が
有るのですが、この部分が正常動作しない為、現在はSRAMの設定で
この部分を回避しています。
ですが、ソフトによっては同じように処理することが有る可能性が有りますので
他にIPが無いか、探したところ、同じOpenCoresにao68000というIPが有りました。
このIPは
・データバスが32bitで、アドレスバスにA0~A1が無い
という特徴が有ります。それ以外は本物のMC68000と目立った差異が無さそうです。
データバス幅に関しては、ブリッジを作って変換することで16bitバスに変換できそうです。
速度に関しては、同じ処理にtg68よりも2倍くらいのクロック数を要しますが、
クロック数を3倍程度上げられそうですので、1.5倍程度、高速で動かせそうな状況です。
一部割込みでバグが有りましたが(割込み7はNMIの筈だがマスクが掛っている)
tg68よりも使いやすそうでパフォーマンスも高いのでこれに切り替えていこうと
思います。
posted by プー at 21:19| Comment(0) | X68000 | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。