2018-03-02 23:08 — asano
先日クロック信号について書いた時、資料に面白い記述を見つけたので今回はそれについて書いてみます。
それは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版との住み分けなど)
あたりが思いつきますが、どうなんでしょう?
コメント
最低クロック周波数 500kHz の理由
聞いた話真偽のほどは明らかでないのですが。
レジスタなど保持部分が「ダイナミック構造」なのでリフレッシュタイミングが必要なのだとか。
(SRAM構造よりチップ占有面積を節約できるので)
都市伝説のたぐいかも
初期のMC6800ぐらいでしかダイナミック回路は使用していないはずです。また、DRAMの保持時間が1ms以上あることなどからダイナミック構造がクロック下限の原因とは考えにくいです。
恐らくチップ内部で、クロックが遅くなると同期回路の動作は遅くなるため、速度の変わらない非同期回路との信号の受け渡しでどこか、ホールドタイムが足りなくなってしまい誤動作するのだと思います。
他社は不明ですが私の知る限り、uPD780Cでは内部にラッチなどの非同期回路があり、uPD70008ではFFによる完全同期設計と聞いています。
コメントを追加