CPLDに組み込んだ16ビットタイマのタイムアウト出力で386に対して割込みを
かけられるようにしました。
空きロジック不足で割込みコントローラ8259のようにベクタを送出することができないので
NMIへの割込みになっています。
かけられるようにしました。
空きロジック不足で割込みコントローラ8259のようにベクタを送出することができないので
NMIへの割込みになっています。
最初、カウンタがALL0になるタイムアウト出力をダイレクトにNMIに接続したのですが
そうすると割込み処理内で割込み要因をリセットできないのと、パワーONリセット時に
カウンタ内部状態によっていきなりNMIが発生してデッドロックする可能性があるので
エッジトリガ用のフリップフロップを挿入しました。
そうすると割込み処理内で割込み要因をリセットできないのと、パワーONリセット時に
カウンタ内部状態によっていきなりNMIが発生してデッドロックする可能性があるので
エッジトリガ用のフリップフロップを挿入しました。
ところが、このFF1つの挿入によってCPLDのマクロセルが満杯になりフィッティングできなくなりました。
最適化をSpeedからにDensityに変えてもほとんど変わりません。
しかたなくタイマのプリスケーラをほぐしてマルチプレクサでCPUクロックを分周した信号を選択するようにしました。これでなんとかフィッティング完了。
コンポーネントにしてしまうと論理圧縮が効かないのかも知れません
最適化をSpeedからにDensityに変えてもほとんど変わりません。
しかたなくタイマのプリスケーラをほぐしてマルチプレクサでCPUクロックを分周した信号を選択するようにしました。これでなんとかフィッティング完了。
コンポーネントにしてしまうと論理圧縮が効かないのかも知れません
最終的にマクロセル使用率99%でした