[新連載開始]W65C02マイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
私としてはW65C02をさわるのは全く初めてです。何から何まで未経験です。さてどうなりますでしょうか。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第33回]
●W65C02のクロック&メモリR/Wタイミング(3)
前回はWRITE信号を中心にDATA信号との関わりをオシロスコープで観測しました。
たまたまかもしれませんがWRITE信号の立ち上がりの前後に十分なDATAの出力期間が確認できました。
メモリやI/Oにとっては特にWRITE信号が完全に立ち上がってしまうまでDATAが安定していることが重要になります。
その点についてはひとまず安心できる結果が得られました。
しかし前回の終わりに書きましたようにWRITE信号が立ち上がってからもかなり長い時間(といってもnsの単位の話ですが)書き込みデータが出力されているとなるとその次に来るべき次の命令コードの読み込みが相当に厳しくなるのではということが懸念されます。
ここまで来るとちょっとオシロスコープでは間に合いません。
ここはロジアナの出番です。

カメレオンロジアナでサンプリングクロック100MHzで観測しました。
カメレオンロジアナは超安価な優れものです。
今どうなっているのか未確認ですが以前確認したときは販売されていなかったようです。
その後にCPLDロジアナを当社でも作ったのですがあれこれ利用のためにいじくった結果不具合が発生してそのまま現在に至っています。
直さなければとかさらなる機能強化をとか考えているのですが相変わらず手いっぱいでそのままになっています。
紺屋の白袴です。
余談はさておき上図の説明です。
前回のCPUクロックは12MHzでしたが今回は解析がし易いようにCPUクロックは10MHzにしました。
左端に信号名を書き加えました。
その下にWR(R/W_)とCPUクロック(10MHz)があります。
今回のプログラムはアドレス8000〜8007と非常に短いプログラムなのでアドレスはA0〜A3までを表示しています。
プログラムリストは[第29回]にありますが参考までに下に再掲します。
0000 ;w65c02test15 26.7.31 0000 ; 0000 ;I/Otest 0000 ; 8000 org $8000 8000 ; 8000 0002 io=$0200 8000 ; 8000 loop: 8000 AD0002 lda io 8003 8D0002 sta io 8006 80F8 bra loop 8008 ; 8008 ;end |
ロジアナは信号の解析をするのに強力な助っ人なのですがなにしろ波形しか見えませんからそこから解析するのは手間がかかります。
ということで解析のために必要と思われる情報を図に書き加えました。

タイミングの確認をするためにタテ線を追加したため波形そのものが見難くなってしまいました。
タテ線は緑と青の2色使っていますが見難いです。
なんなら画面をスクショして拡大してご覧ください。
緑はCPUクロックの立ち下りに入れてあります。
CPUクロックの1サイクルの終わりを示す重要なポイントです。
青のタテ線はW65C02が出力するアドレスの変化点です。
RAMはここを起点として一定の遅れ時間の後にデータを出力します。
青のタテ線はもうひとつRAMからのデータの出力の開始点にも引いてあります。
アドレスの出力からデータの出力までがRAM(HM628128)の出力遅延時間です。
図の下部に青色でその時間(単位ns)を追記してあります。
ここで気になる点があります。
前回書きましたようにWRITEの後のデータの保持時間が異常(?)に長いことです。
WRサイクル後の次のサイクルのアドレス出力からデータが出力されるまでになぜか70nsもかかっています。
70nsはWRITEだけではなくてもう一箇所あります。
そうそう。
説明が後になってしまいました。
図の下部に赤色でアドレスを追記してあります。
アドレスは8000〜8007(実際はBRA命令の実行後に8008が出力されています)なので下位1桁のみを表示してあります。
図の上部にはデータバスの値を16進数で追記しました。
それで。
アドレス3のところも青色の数値が70(ns)になっています。
ここはその前にアドレス0〜3のAD0002(LDA $0200)が実行されてアドレス0200からデータ(D3)が読み込まれた次のサイクルのためのアドレス出力から命令コード(8D)が出力されるまでの期間です。
WRITEのときと同じでなぜかここだけ70nsもかかっているために次の命令コードの読み取りタイミングまで20nsしかありません。
ロジアナのクロックは100MHzなので10nsの誤差があります。
おいおいおい。
これはヤバい。
この数値から見るとCPUクロック10MHzがほぼ限界で12MHzではひょっとするとこけるかも。
14MHzは完全にアウトです。
むむむむむ。
なぜこうなるのか。
こうなるとHM628128のREADタイミングも確認しなければなりませぬ。
HM628128のREADタイミングです。

[出典]Hitachi,Ltd.HM628128A Datasheet
アドレス確定からデータ出力までの時間はtAAです。
こちらはパラメータです。

[出典]Hitachi,Ltd.HM628128A Datasheet
W65C02テストボードに今実装しているのはHM628128ALP−7ですから…。
うーん。
Max70nsですねえ。
合っていますけれど。
日本が誇る日立の半導体技術であります。
それがMaxぎりぎりつうのは納得できませぬ。
ま。
実のところこのHM628128は出所不明の中古でありますからそこはありかもしれませんが。
やっぱりIN、OUTの後だけ70nsつうのがどうにもひっかかりますです。
だって他のところは40nsか50nsですからさすが日立と言いたいです。
あっと。
20nsはRAMではありません。
ここはディップスイッチの入力です。
それでも74HC32や74HC138や74HCU04を経由して74HC245から読み込むのですからこの20nsは速いです。
あっ。
そうか。
CSだ!
tCO1もMax70nsですけれど。
普通のメモリのREAD/WRITEではCSはLになっています。
しかしIN/OUTのときだけI/O回路をアクティブにするためその期間はRAMアクセスを禁止しています。
IN/OUTが終った後でCS(CS1)がアクティブになります。
そこには遅延があるはず。
回路図は[第16回]を参照願います。
図では62256を基準に描いていますからCEになっています。
このときのW65C02のアドレス出力からCEがアクティブになるまでの遅延時間はその経路により規定されます。
IC4(74HC32)→IC8(74HC138)→IC1(74HCU04)です。
これはやっぱり実測しなければいけませんね。
CSを追加してもう一度そこのところを観測してみました。

CSがアクティブになってからデータ出力が確定するまでの期間は50nsでした。
これは上で疑問だった70nsからTTLロジックの遅延時間20nsを引いた値と一致します。
あれ?
このチャートだとCPUクロックの立ち下りとデータ(命令コード)の出力が同じ…。
10nsの誤差を考えるとなんとか間に合っているようですけれど。
安全サイドで考えるとCPUクロックは8MHz程度がよいのかもしれません。
W65C02マイコンボードの製作[第33回]
2026.8.4 upload
前へ
次へ
ホームページトップへ戻る