[新連載開始]W65C02マイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
私としてはW65C02をさわるのは全く初めてです。何から何まで未経験です。さてどうなりますでしょうか。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第32回]
●W65C02のクロック&メモリR/Wタイミング(2)
前回はオシロスコープでクロックの波形を観測しました。
その結果5Vラインがつながっていなかったというまさかのミスを発見して追加配線をしました。
これでまともに動作するようになりましたのであらためてメモリアクセスのタイミングについて確認をしました。
オシロスコープは基本的に一定の間隔で同じ波形を繰り返すのでなければ観測できません。
それも短い期間での繰り返しが求められます。
そこで前回も動作確認に使った[第29回]でテストした超簡単なプログラムを使って引き続き波形の観測を行いました。
上記のプログラムはI/Oアドレスから入力して得た8ビットの値を同じI/Oアドレスに出力するのを繰り返すだけの短いプログラムです。
1回の繰り返しにつき1回のWRITEパルスが出力されます。
そこでそのWRITEパルスをトリガパルスにしました。

上側(CH1)がWRITEパルスで下側(CH2)がCPUクロックです。
クロックは12MHzです。
少しノイズが乗っていますが私の経験ではこの程度は全然ノープロブレムです。
WRITEパルスはW65C02のpin34からRWB信号として出力されます。
READのときH、WRITEのときLを出力します。
W65C02テスト回路基板ではこの信号は直接HM628128のpin29(R/W_)に接続するとともにI/O回路のIN/OUT制御信号としても使っています。
W65C02ではタイミングとしてそれでよいのかという意見もあろうかと思います。
そのあたりについてはいずれさらに詳しく追求していくつもりです。
前にも書きましたが命令コードやデータのREAD、データのWRITEには複数クロックを使うCPUが多いようです。
しかしW65C02はそれを1クロックサイクルで行ないます。
非常にシンプルですがクロック周波数が高くなるとメモリやI/Oに対するアクセスのタイミングが厳しくなります。
HM628128に限らず多くのSRAMではWRITEパルスの立ち上がりのタイミングでデータを固定します。
その一方でW65C02ではクロックの立ち下りから次の立ち下りまでが処理の1サイクルになっているようです。
オシロの波形ではクロックの立ち下りのほぼ直後からWRITEパルスが立ち下がっています。
WRITEパルス幅はほぼクロックの1周期分ありますから十分ワイドです。
いやそこまででなくてもよいのですけれど。
それよりもちょっと気になるのはWRITEパルスの立ち上がりがクロックが立ち下がるよりも後ろになっているように見える点です。
むむむ。
これってヤバくね?
ということで今度はまずはWRITE信号とアドレス出力を観測してみました。

メモしてなかったのではっきりしませんが多分A0だと思います。
WRITEとほぼ同時にA0も立ち下がっています。
本当はWRITEよりも前にアドレスが出力されるほうがよいのですけれど。
クロックの立ち下りとほぼ同時にWRITEが立ち下がってしまいますからほぼ同時でも仕方がありませんでしょう。
問題はデータ出力です。
おおお?

うーん。
タイミング的には全然OKなんですけれどねえ。
本当かなあ。
これじゃあデータ出力が次のクロックの中ほどあたりまで残っていることになるじゃありませんか。
すると次の命令コードの読み込みが厳しくなったりして。
ようわからんなあ。
ここはもう少し追求が必要なようです。
W65C02マイコンボードの製作[第32回]
2026.8.3 upload
前へ
次へ
ホームページトップへ戻る