[PR]子育てママさんへ:3年毎に15万円うけとれる医療保険?
回路について
今回の回路図です。(かなり大きい絵です。)
かなり我流な書き方で、回路図とブロック図の間という感じですが、
1枚で全体を見渡せるのが便利だと思い、多少無理して詰め込んであります。
大きい字でAS・BR・DLYと書いてあるのが、
PLD(16V8)で作った部分で、
これらは各PLDに便宜的に付けた名前です。
この名前は、これらが元々/AS(AS)や/BERR(BR)を作る事を担当していた
ことに由来しますが、現在は内容が違って来ているので
変えた方が良かったかも知れません。
ともかくPLDのソースファイルを見る時、
この名前で区別して下さい。
この回路でやっている事は主に下の5点です。
1.68030にはない/UDS,/LDSを作る。
2.アクセス制御信号(/UDS,/LDS,/AS,R/W)を68000-10MHzの形に加工。
3.68030の/WAITの生成。
4.バス調停制御信号を本体側に合うように同期化する。
5.アドレス及びファンクションコード信号を同期化する。
●
1は論理については/DS,A0,SIZ0,SIZ1から作れます。
これを2でタイミング加工して本体側に渡します。
●
2〜3は本体側のメモリコントローラとうまく同調させる為です。
2の加工の仕方は、68030の出力を本体側のクロックでラッチすることで同期化し、
さらに必要なだけ遅らせることで、どのタイミングでアサートされるかを制御します。
ネゲートのタイミングは68030側に合せます。
(これは68030の/ASをタイミング用ラッチのリセットに接続することで実現しています。)
ただし次に述べるようにこのタイミングも結果的には本体側のクロックに同期します。
●
3も同様にして作ります。
元の状態の時に最初に/DTACKをサンプルするタイミングまで無条件に68030を待たせ、
本体の/DTACKが真だった1クロック後に、
68030の/DTACKをアサートするようにしてあります。
これを受けた68030は本体側に比べ十分高周波なクロックで動いていますから
/ASや/DSといったコントロール信号がネゲートされるタイミングも
本来のポイントの近傍となります。
●
4は本体側のバス調停回路のための処置です。
68030の/BGと本体側の/BGACKを1クロック延長して、
お互いの相手側へ渡します。
この処置を怠ると調停回路が誤動作してしまい、
例えばフロッピーディスクにアクセスしようとした直後にハングアップする
という問題が起こります。
●
5の処理は無くても起動はします。しかしそれだと画面が乱れてしまいます。
正確にはテキスト・グラフィック面に問題が出るのです。
(スプライトを含む他のI/Oに対するアクセスには全く問題が出ませんでした。)
さらにこれはそれらVRAMに対するアクセスをしないでも発生しました。
アドレスがシステムクロックと非同期に変化すると
画像周りの回路が誤動作するようです。
FC2〜0、A23〜A1全てにこの処理を行なっていますが、
その後の調査でA23〜A17の7bitのみ同期化してやれば良いことが分りました。
VRAMは$C00000〜$E7FFFFの範囲にマップされていますが、
ここにアクセスしようとしているかどうかを
その7bitでチェックしているのだと思います。
あとデータバスにバッファが入っていますが、
これはバスの弱い別のハードで実験していた時の名残です。
ちゃんと本体側にバッファがあるX68000で必要かどうかは不明です。
前へ
次へ
目次へ戻る