標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第18回]

●試作基板を発注しました

とりあえず図面チェックが完了した1枚目の基板のガーバーデータを基板屋さんに送りました。
2週間ほどで試作基板が出来てくると思います。基板がきたら部品実装前にまず写真を撮って、皆様にお見せいたします。

いろいろ迷っていたので、実際に手配するのが遅くなってしまいました。
なんたってTTL300個ですものね。これはもうとても組立キットと言える代物ではありませんし、新しく、「TTLでCPUをつくる、組立キット4bit版」を考えてしまったことでもありますから、もうこんな基板は製作するのを止めて、新しい4bit版の試作に切り替えた方が良いのでは…。

でも、まあ、せっかくここまでやってきたのですから、とりあえずやれるところまでやってみましょうか(本当は基板が出来てきてからが、大変なんですけれどね。修羅場です、多分)。

第2の基板の図面チェックでもしながら、試作基板が出来てくるのを待ちましょう。
というわけで、さっそく、図面のチェックにとりかかったのですけれど…。

●また、大ミスをみつけてしまいました…

なんなのでしょうかねぇ。猛暑のせいなのか、トシのせいなのか、我ながら情けなくなってしまいます。
回路図を見ていて、あれぇ、どうして、こんなことになってるの…。
MEMWR信号の出力タイミングがおかしい!
気をつけていたはずなのですけれど…。

図で説明いたします。



Tnは内部タイミングクロックで、全ての動作はこのクロックに基づいています。
Mnはマシンクロックです。ひとつの動作の最低単位はマシンクロックです(タイミングクロックではありません)。
1マシンクロックは2タイミングクロックから成ります。
メモリへの書きこみ動作は、図のように2マシンクロック必要です。
図ではM2〜M3(T4〜T7)のタイミングの時の例を示しています。
A0−A15がアドレスバス出力信号で、D0−D7はデータバス出力信号です。
MEMWRはメモリに対する書き込み信号です。

8080はこの種の出力信号が使いにくく、外部にタイミング回路が必要でした。
Z80は相当に楽になりました。
今回の「TTLだけでつくるCPU組立キット」では、MEMWR、MEMRD、IOWR、IORDに分離して出力するように考慮しました。その方がうんと使いやすくなります。

そのMEMWR信号のどこが大ミスなのかと言いますと(図でx印をつけたMEMWR信号です)、アドレス信号やデータ信号と同時にアクティブになっています。これがまずいのです。
一般にメモリなどのタイミングチャートでは、WR信号の立ち上がりエッジで書き込みデータが確定することになっています。
それなら、これでよさそうなものなのですが…。

●TTLは遅い!

TTLは遅いのです。図ではアドレスバス、データバスの変化と「同時」にMEMWR信号もアクティブになるように見えますが、実はその保証は全く無いのです。
TTLゲートは入力と出力のタイミングにずれ(遅れ)があります。入力が変化してから、出力が変化するまでの遅れ時間です。
どのくらい遅れるかというと、74HC00とかHC04とかのように最も単純なゲートで20〜30nsecです。
なんだ、そのくらい、大したことはないじゃないの?

でもないのですよ。甘く考えていると、「大変なことになりますよ」

アドレスバス、データバスとMEMWR信号が同じタイミングで変化するように回路設計したとしても、その遅れ時間はカタログ平均値とでもいうべきものなので、チップによって当然異なります。厳密に言うと同じICチップ内でも個々のゲートによって全部異なっているとも考えられます。
これを無視して、「メモリの技術資料では、アドレス、データとWR信号の立下りのタイミングは最低では0nsecになっているから、これでOK」などと甘く考えて設計すると、試作ではOKだったのに、いざ製品にしたら、誤動作するボードがいっぱい出来てしまった、などということになります。

上のタイミングチャートでは、当然のことながら、A0−A15、D0−D7よりも先にMEMWRがアクティブになってしまうことも十分考えられるからです。すると、どうなるか?
これは、一般的にメモリの技術資料などには明記されていませんが(面倒くさいので、私も実験して確かめてはいませんから、ただの想像ですけれど)、アドレスバスやデータバスよりも先にMEMWRがアクティブになると、そのときには目的のアドレスやデータはまだ確定していませんから、メモリバスには異なるアドレスに対して異なるデータが出力されていることになります。
たまたま前の動作の続きでメモリアクセスもアクティブになっていたとすると、ひょっとするとその予期していないメモリアドレスに、これも予期していないデータが書きこまれてしまうかも知れません。
もっとも、タイミングのズレは数nsecからせいぜい20nsecくらいのものだと思いますから、遅いメモリなどでは、影響は出ないかもしれませんが(でも、最近のメモリは速いのですよ!)。

WR信号が先に立ち下がるということは、WR信号がアクティブになったまま、アドレスバス信号とデータバス信号がズズズッと変わるという恐ろしいことがおきるわけですから、その結果何がおきても不思議ではない、ことになります。

では、どうするのが正しいかといいますと、さきほどの図で、x印をつけたMEMWRの下に○印をつけて示したようにすべきなのです。
図の例では、T4〜T5のタイミングではxで、T5〜T6のタイミングが○です。
さて、困った!

●ORを8ゲートも追加!

T4〜T5というタイミングパルスは用意してあるのですが、T5〜T6のように奇数クロックから始まるパルスは用意してありません。
基板図の写真をお見せしましたように、あれだけびっしりと回路を貼り付けてしまったあとで、そのような信号を、いまさら、元からつくるなんてとてもできません。
T5とT6のOR回路を付加することならば、なんとかできるかもしれません。
本当はこういうORは注意しないと、危険です(どこが危険なのかは、また別の機会に説明いたします)。

とにかくそんなことは言っておれません。ORならなんとかできます。
しかし実は、MEMWRはこのタイミングだけではありません。
基板のあちこちに異なるタイミングで散らばっています。
しらべてみたら、ORゲートを8個追加!しなければならない、ことがわかりました。

いっぺんに落ち込んでしまいました。

これが、昨日のできごとでした。

朝から猛暑だというのに、昨日の私はと言えば、どんより曇り空でなんともグルーミィな気分に朝からどっぷり。
もう、やめようか…。
どうせ、ただの試作なんだし、ちょっとくらい誤動作したって、そんなもの、誰に見せるわけでもないのだし…。
思いっきり苦いコーヒーをすすりつつ、しばし、図面をぼーんやりと眺めておりました。

それでも、やっとのことで、気を取りなおし、ぶつぶつ世の中を呪いながら、のろのろと、必要な変更について検討を始めました。
なんとか出来そうな感じになってきましたので、意を決して、2枚目の基板の基板図の変更作業に着手しました。
結局夕方までかかって、なんとか変更作業は無事完了しました。
正直、きつかった!
こんな感じです。


●不幸はまだ続く!

昨日、夜になってから、やっと作業も一段落つきましたし、そうそう、ホームページも更新しなければ、ということで、ことの次第を書いたのですけれど…。
だいたい、私の経験では、不幸は重なって訪れてくれるのです。幸せは滅多にきてくれないし、たいてい単発。
よくないことは、続いておきるのです。
注意していたつもりだったんですけれど…。

私は、ホームページを作成するのに、IBMのホームページビルダー(V9)を使っています。
が、経験で知ったバグがあります。
もっとも私のパソコンは自作の、それもいまだにWindows98SEなのですから、これはIBMを責めるわけにはいきません。
とにかくリンクの挿入でうっかりリンク先のアドレスや、ファイルネームを確定しないでOKをしてしまうと、「リンク先アドレスを指定してください」という警告メッセージが出ます(これはご親切にどうも)。
当然のことながら、正しく指定しなおして、OKボタンを押すと!
なんの警告も無く、いきなり、みごとに、終了してしまうのです。
ええ!ホームページビルダー君が、作成中のファイルをそのまま道連れにしてくれて。

じつは、昨日、一気にその日のページを書き上げて、最後にいつものように頁の下部に「戻る」リンクを貼り付けようとしたときに、ふっと頭の隅を「警告メッセージ」が流れました。
「その前に、まず、保存を!」

ここのところ毎日やっている慣れた作業だから、大丈夫、だよぉ。

大丈夫、じゃなかったんですよぉ!

やってしまったんです。みごとに、書きかけのファイルは昇天!
こういうときのためにどこかにバックアップファイルが残っているはず、と諦め切れない、私。
どうも、ファイルネームを確定して一度saveしたファイルでないと、バックアップは作成されないようなのですね、トホホ…。
昨日、アップしなかったのは、そんな事情からでした。

これも経験で、こういうときには、何をやっても駄目。もう、悪魔に魅入られたように、見事に悲惨な結末を迎えてしまいます。
私はそこまで愚かではない!
さっさと、パソコンの電源を落として、いきつけのスーパー銭湯に行って汗と悪運を洗い流したあと、家に帰ってから、ビールを飲んで(諸物価高騰のおりから、じつは、発泡酒なのですけれど)、さっさと寝てしまいました。
2008.7.26upload

前へ
次へ
ホームページトップへ戻る