CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

割込み制御回路追加

CPLDに組み込んだ16ビットタイマのタイムアウト出力で386に対して割込みを
かけられるようにしました。
空きロジック不足で割込みコントローラ8259のようにベクタを送出することができないので
NMIへの割込みになっています。

最初、カウンタがALL0になるタイムアウト出力をダイレクトにNMIに接続したのですが
そうすると割込み処理内で割込み要因をリセットできないのと、パワーONリセット時に
カウンタ内部状態によっていきなりNMIが発生してデッドロックする可能性があるので
エッジトリガ用のフリップフロップを挿入しました。

イメージ 1


ところが、このFF1つの挿入によってCPLDのマクロセルが満杯になりフィッティングできなくなりました。
最適化をSpeedからにDensityに変えてもほとんど変わりません。
しかたなくタイマのプリスケーラをほぐしてマルチプレクサでCPUクロックを分周した信号を選択するようにしました。これでなんとかフィッティング完了。
コンポーネントにしてしまうと論理圧縮が効かないのかも知れません

最終的にマクロセル使用率99%でした

イメージ 2