外部基板その4

いままでは KiCAD の評価も兼ねてたので、CPU のデータシートを見直していまの配線でいいか確認したらミスがぽろぽろでてくるんでやんの。

まずアドレスバスと SRAM の接続が間違っていた。 A0 は ALE でラッチをした後に、SRAM の A0 ではなく databus 7:0 の bytemask に渡す必要がある。そうするとアドレスバスがずれるので、A20 を渡す必要がでてきた (pin +1)。

次に reset. これは H レベルで有効なので他の信号と共有できない (pin +1)。
さらに考えると上位アドレスバスは CPU からのアドレスをそのまま渡すと、歯抜けの状態になるし、ミラー状態を作ることが出来ない。できれば A14 から変更したいが、ピンが足りないので A16 から A19 までは操作したい。

ALE はそのまま渡すつもりで 74573 を選んでいたが、バス要求を出すと HiZ ではなく L レベル固定で使えない。再加工なのでピンを出す。よって 573 である必要はないので、余ってる 574 にする。

というわけでピンを整理。CPU からの RD はそのまま渡して良いし、HiZ にもなるので SRAM OE を削除。UBE も同様で、 databus 15:8 の bytemask に渡す(pin -2)。


そこまで整理するとこうなった。減らせる pin は下記。

  • V30 RESET (○反転ゲートを追加すれば減る)
  • HID 系 (△SRAM ADQ 系に乗せると CPU を止めないと読めない, LCD DB 系に乗せれば、 VBlank ならとれるかもしれない)
  • Xtal Enable (○ジャンパにすれば減るがはんだ付けがめんどい)
  • V30 Poll (×いらない気がするがよくわからん)
  • その他制御線 (×small mode 固定なら自由度は上がるんだが、よくわからないので large mode の可能性は残してあげたい)

そしてアドレスバス A19:14 は、考え中。

  • CPU の直後に 74245 を渡してラッチするアドレスを無理矢理操作する方法を考えたが、74245 の direction をうまくとれない気がするし、 ASTB のラッチ期間を ready でとめることができないので却下。
  • UNROM でやっている上位アドレスに OR ゲートをかけると、アドレスバスを固定できる。A20:19, A18, A17:14 でミラーをかけたい場合は 3本追加すればよい。
  • OR じゃなくて NAND あたりにしとけば余ったゲートで reset の反転ができる。
  • 各ビットでミラー固定をするなら、バスをとめて ADQ 経由でラッチさせれば自由度は上がるかもしれない。論理的にどれくらいいけるかシミュレートした方がよさそう。この方法ならpin1本増やすだけでよい。
  • しかし、アドレスをアクセスするたびにバスを止めることはちょっと無理だわな...
  • やはり無理なので A15:14 ぐらいのミラー再現は諦める。 A19:16 を操作すれば割とマシじゃないの。

2M の SRAM を2個つけたら CPU のアドレスバスの4倍の容量があるなんて素敵ね。