現在地

NMOS Z80 CPU のクロック


カテゴリー:

先日クロック信号について書いた時、資料に面白い記述を見つけたので今回はそれについて書いてみます。

それは1978年3月版のZ80 CPUの仕様のAC特性にあった以下の記述です。『Z80ファミリ・ハンドブック』もこれを元にしていると思われます。

Signal Symbol Parameter Min Max Unit Test Condition
φ tc Clock Period .4 [12] μsec
tw(φH) Clock Pulse Width, Clock High 180 [E] nsec
tw(φL) Clock Pulse Width, Clock Low 180 2000 nsec
tr,f Clock Rise and Fall Time 30 nsec

このどこが面白いのでしょう?

まず周期 tc の最小が 0.4 というのは最高クロックが 2.5MHz であることを示しています。上の表は Z80 CPU の部分なので、Z80A CPU では 0.25 つまり 4MHzとなります。

最大値の [12] は欄外に注釈が以下のように書かれています。
 [12] tc = tw(φH) + tw(φL) + tr + tf
要はtcの定義が書かれているだけで、空欄にしても構わないような気がしますね。

tw(φH), tw(φL) の最小が 180nsec ということは最高クロック 2.5MHz で動かすのならクロックのデューティはほぼ50%が要求されます。

問題は tw(φH) の最大値です。[E]は以下のように書かれています。
 Although static by design, testing guarantees tw(φH) of 200μsec maximum
tw(φH) = 200μsec, tw(φL) = 2000nsec = 2μsec とすれば最低クロックは約5kHzまで下げられるはずです。
「static by design」を信じれば、つまりテストはされていないが原理的にはOKと考えれば、クロックを停止することも可能と解釈できます。

ところが一般的にはNMOS版の Z80 CPU の最低クロックは 500kHz とされています。これは一体どこから出てきたのでしょうか?

そこでCMOS版登場後のNMOS/CMOS併記の資料から同じ項目を拾ってみます。2.5MHzのものは記載が無いので4MHzのものです。

まずはNMOS版からです。

Symbol Parameter Min Max
TcC Clock Cycle Time 250
TwCh Clock Pulse Width (High) 110 2000
TwCl Clock Pulse Width (Low) 110 2000
TfC Clock Fall Time 30
TrC Clock Rise Time 30

表記が変わっていますが意味するところは一緒です。単位は全てnsecです。

まず周期の最大値がなくなりました。これは他のパラメータから自動的に決まってくるので不要と判断されたのでしょう。

肝心なのはTwChの最大が2000nsに制限されてしまったことですね。クロックのHを長く引っ張ることができなくなってしまっています。もちろんクロック停止も出来ません。
最低クロックを計算すると TwCh = TwCl = 2000nsec のとき 250kHz となります。(TrC, TfCは無視しています)

あれっ、500kHzにならないですね。もしかして TwCh, TwCl を周期と勘違いしたのが広まってしまったとか、まさかね。

ちなみにCMOS版は以下のようになっています。

Symbol Parameter Min Max
TcC Clock Cycle Time 250 DC
TwCh Clock Pulse Width (High) 110 DC
TwCl Clock Pulse Width (Low) 110 DC
TfC Clock Fall Time 30
TrC Clock Rise Time 30

TcC, TwCh, TwCl の最大値がDCとなっているので、クロックを停止しても問題ありません。

ところで tw(φH), TwCh の最大値の仕様はなぜ途中で変更されたのでしょうか。

  • 長く製造されているデバイスなので、途中の設計変更時に変えてしまった(他の性能とのトレードオフになった可能性も)
  • 設計は変更していないが問題があることがわかった
  • マーケティング上の都合(CMOS版との住み分けなど)

あたりが思いつきますが、どうなんでしょう?

参考文献・関連図書: 
Z80-CPU, Z80A-CPU Product Specification, March 1978, Zilog.
Z8400/Z84C00 NMOS/CMOS Z80 CPU Product Specification, Zilog.
額田忠之(1985)『Z80ファミリ・ハンドブック』CQ出版社.

コメント

聞いた話真偽のほどは明らかでないのですが。

レジスタなど保持部分が「ダイナミック構造」なのでリフレッシュタイミングが必要なのだとか。
(SRAM構造よりチップ占有面積を節約できるので)

初期のMC6800ぐらいでしかダイナミック回路は使用していないはずです。また、DRAMの保持時間が1ms以上あることなどからダイナミック構造がクロック下限の原因とは考えにくいです。
恐らくチップ内部で、クロックが遅くなると同期回路の動作は遅くなるため、速度の変わらない非同期回路との信号の受け渡しでどこか、ホールドタイムが足りなくなってしまい誤動作するのだと思います。
他社は不明ですが私の知る限り、uPD780Cでは内部にラッチなどの非同期回路があり、uPD70008ではFFによる完全同期設計と聞いています。

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。