Posts Tagged with "Z80"

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.

FM-7 Z80カードの調査 (3)

posted by sakurai on June 2, 2020 #268

引き続き、Z80コネクタへの信号を解説します。また、Z80CPUの高速化に伴い、Z80⇒6809切り替え時にDRAMのRASプリチャージタイム不足が判明したため、その対策も取っています。

EB

EBはZ80のMREQに相当する信号のため、前稿でのライト信号(=$\text{R/}\overline{\text{W}}$, M5 5pin)とCPUの$\overline{\text{RD}}$の負論理ORを取り、EBとしています。信号名は6809のE信号のバッファしたもの(E Buffered)から来ています。

QB

QBは立ち上がりはアドレス有効を示す信号です。また、6809の場合はQBの立下りでデータ確定しますが、Z80は$\overline{\text{WR}}$の立ち下がりでデータ確定します。そのため$\overline{\text{WR}}$の反転をQBとして使用する場合、その考慮が本体DRAM側で必要となります。その理由からFM-7メインボードのDRAMの回路図では、Z80と6809でQBの論理を反転させています。信号名は6809のQ信号のバッファしたもの(Q Buffered)から来ています。

RWB

RWBは、前述のライト信号を後縁を広げてRWBとしています。またデータバスバッファのDIRも後縁を広げて制御しています。この理由は図268.3でも示されているように、ライトサイクル時にZ80からのデータの切れが悪く、MREQがネゲートされていてもまだ出ているように見えるためです。信号名は6809のRW信号のバッファしたもの(RW Buffered)から来ています。

Z80W

しばしば負論理信号と誤解されますが、この信号は正論理の”Z80 wait”の意味であり、すなわち正論理の6809動作中を示す信号です。つまり$\text{6809/}\overline{\text{Z80}}$を表します。waitをバーと読み替えれば理解が容易です。

DRAM RASプリチャージタイム不足

基本的には上記の回路で動作しますが、一点、Z80から6809に戻る時に問題があります。それはZ80のEBにより\$FD05に0をライトすると$\text{G/}\overline{\text{H}}$が1となり、すぐに6809からQが出力されます。そのため、RASのプリチャージタイム$\text{t}_\text{RP}$が不足となり、結果としてDRAM化けが起こります。これを解決するために、Z80から\$FD05にライトする場合には、D0を0とし、EB、QBを出力せずに、6809側のEでライトし、CPUを切り替えるようにしています。

システムバスのEB及びQBが出力されないため、DRAMへのRASが出力されません。従って、RASプリチャージタイム不足が起きず、DRAMデータ化けが防止できます。

本来であれば、このようなトリッキーなことをせずZ80カードがやっているように、6809側で切り替え信号を遅延させてバスアクセスを行えば良いはずですが、時期的に本体側の回路変更ができなかったのかもしれません。

I/O掲載のZ80カード

アーカイブサイトに1985年9月号の月刊I/Oが保存されていました。その中に「FM-7/New7/77 IC9個でできる! Z80カードの製作」という記事がありました。IC9個は簡易回路とのことで、動作が不安定のようです。一方、コンパチ回路は基本的に富士通純正回路のコピーであり、ゲートを組み替えているだけに見受けられます。従って回路は正しく動作するはずですが、記事中に2点誤りがあります。

  • Z80Wが負論理となっている⇒Z80Wは正論理です。記事中では負論理のバーがついていますが、Z80Wは正論理の”Z80 wait”の意味であり、正論理の6809動作中を示す信号です。上記のように$\text{6809/}\overline{\text{Z80}}$を表します。筆者はこの$\overline{\text{Z80}}$を$\overline{\text{Z80W}}$と誤認したのかもしれません。ただしこれは表記上だけの問題であり、回路への実害はありません。
  • Z80カード側ではCPU(6809)のHALTと誤認する恐れがある⇒BA/BSだけで判断するとDMA(リフレッシュ)の場合と誤認するため、6809が動作中でないことを表すZ80Wとの論理をとっており、誤認しません。そもそも6809がHALT中にはDMAはかかりません。これも回路解釈の誤りだけで、回路への実害はありません。

左矢前のブログ 次のブログ右矢

FM-7 Z80カードの調査 (2)

posted by sakurai on June 1, 2020 #267

ライト時のデータバス衝突

FM-8もFM-7も、オプションのZ80カード上のデータバスバッファには、双方向バッファ74LS245を使用しています。245ではDIRにより方向制御を行いますが、6809の場合方向制御は$\text{R/}\overline{\text{W}}$信号であり、ノーマリリードです。ノーマリリードとは、ライト時以外は常にリード方向、すなわち周辺からCPU方向にバスバッファの方向を向ける制御方式です。Z80にも似たような信号であるライト時を示す$\overline{\text{WR}}$があるため、FM-8のZ80カードではこれをデータバスバッファのDIRに接続していました。

ところが、図267.1を見るとわかるように、$\overline{\text{WR}}$はストローブ信号であり、データバスバッファの方向制御に使用すると、

  • T1のクロックの立下りからT2のクロックの立下りまで(1クロックのデータセットアップタイム)
  • T3のクロックの立下りから立上がりまでの間(0.5クロックのデータホールドタイム)

の2つの期間において、CPUはデータを出力しているにも関わらず、バッファはリード方向となっています。すなわち、Z80と245の間でバスが衝突します。

図%%.1
図267.1 メモリリードライトサイクルの波形

通常、Z80システムではデータバスバッファのDIRには$\overline{\text{RD}}$を用います。すなわち、Z80はノーマリライトバスアーキテクチャです。

バス衝突の解消

まず、データバスバッファのDIRに$\overline{\text{RD}}$を用いれば、CPUとバスバッファの間のバス衝突は解消できます。FM-7のZ80カードではこの方式をとりました。

次に問題になるのがシステムバスのRWBです。データバスバッファ方向制御が$\text{R/}\overline{\text{W}}$であることから、同じ信号をシステムバスに出力するのが最も容易ですが、一方、これはノーマリライトのバスアーキテクチャであることを意味します。従って、システムバスアーキテクチャの変更にはリスクがあるため、無理やりノーマリリードの信号を作り出しています。

まずM18.4によりリフレッシュでないメモリ要求信号(!RFSH & MREQ)を作成します。

図%%.2
図267.2 M18周りの回路

これはリードとライトの両方でアサートされるため、次の図のように$\overline{\text{RD}}$信号で打ち消し、ライト信号を取り出します(M19.8)。これは同時変化の信号の論理を取っているため、M5のDFFを用いてクロックで叩きます。これが基本的に$\text{R/}\overline{\text{W}}$となります。

図%%.3
図267.3 M5周りの回路
バッファの方向制御に関して、CPUバスバッファ、システムバスバッファの両方ともにアナログ遅延を入れ後縁を伸ばしていますが、これはデータホールドタイムの保証目的だったと思います。バス容量によるホールドタイムを考えれば不要かもしれません。

バス衝突の確認

上記のとおり、バスの方向制御を作成しましたが、残るのはデータバスバッファ(ノーマリライト)と周辺(ノーマリリード)の間でのバスアーキテクチャの食い違いであり、この間でのバス衝突です。以下ではこれを確認します。バッファの衝突の可能性があるのは、

  • 周辺バッファはリード方向
  • データバスバッファはライト方向

であるから、下図において、M5.5($\text{R/}\overline{\text{W}}$)=Hのときです。さらにEB=Hの時に周辺からデータが出力されます。一方、データバスバッファは$\overline{\text{RD}}$=Hの際に周辺方向になるため、これらをANDすれば、リードサイクルのEBの後縁及び、ライトサイクルのEBの後縁のみであり、DCパスは無いことが確認できました。

図%%.4
図267.4 メモリリードライトサイクルの波形

左矢前のブログ 次のブログ右矢

FM-7 Z80カードの調査

posted by sakurai on May 29, 2020 #266

FM-7のZ80カード

FM-7のZ80カードは基本的にはFM-8のZ80カードの継承ですが、数点の改良があります。

図%%.1
図266.1 FM-7 Z80カード回路図( 「FM‐7 F‐BASIC 解析マニュアル (フェーズ II)」より引用)
  • 高速化
  • DRAMリフレッシュ方式の変更
  • ライト時のデータバス衝突の解消
  • 切り替え時のDRAM RASプリチャージタイム不足の解消

高速化

FM-8のZ80が2.4MHz動作だったのに比べて、FM-7本体の高速化に合わせてZ80Aを採用し、4MHz動作になっています。ただしM1サイクルが通常のメモリリードライトサイクルに比べて厳しいため、ウエイトをかけています。なお、タイムチャートはここのオンラインツールで作成しました。

図%%.2
図266.2 M1サイクルの波形

$\overline{\text{RFSH}}$リフレッシュ

M1で重要なのが*REFCKの生成です。前稿でリフレッシュタイミングを示しまたが、Z80でも同様に出力する必要があります。DRAMのタイミング要求に合うように、MREQからリフレッシュ時のみを取り出し(M18.10)、前縁を削り*REFCKとして出力しています。


左矢前のブログ 次のブログ右矢