自作CPU #13 PUSHがうまくできない



自作CPUにはスタックを構成して載せました。しかし動作確認をしているとスタックへデータを積み上げるPUSH操作がうまくできないことが分かりました。ブレッドボード上で実験していた時はできていたのに…普通こういう回路を組む時、スタックの操作は数クロック使ってやると思います。しかし私のは、CPUの創り方のTD4を大元にしていますので、すべての命令が1クロックで実行されます。PUSH、POPも例外でなく、1クロックで実行できるようにしています。PUSHはスタックポインタを先にデクリメントしてデータを格納、POPはデータを取り出してからインクリメントしないといけないので、(スタックポインタを操作する順番が違う)マルチプレクサやらマルチバイブレータをつかってなんとか1クロックで実行できるようにしました。

実験中

 

f:id:Hamakita:20180117111830j:plain

弄っているうちにどうやら手でマシン語を操作する分には期待通りの動作をしていることが分かりました。プログラムを書き込んで実行させるとダメみたいです。

自作CPU #12 基板届きました。部品載せました。

基板が届きうれしくなって部品を一通りはんだ付けするまでブログに書く事を忘れてました。

こちらが届いた基板です。レトロ感を出したかったので基板の色は緑色にしました。

f:id:Hamakita:20180114002105j:plain

そして一通り部品を載せたのがこちらです。

A基板

f:id:Hamakita:20180114001734j:plain

B基板

f:id:Hamakita:20180114001735j:plain

合体!!

f:id:Hamakita:20180114001720j:plain

今日簡単な動作確認をしていましたらバグが二か所見つかりました。

一つ目は、手でDIPSWを操作しマシン語でプログラミングできるようにしているのですが、その出力にあるトライステートがうまく動作しないというものです。これの原因はトライステートのICにTTLである74F373を使用したのが原因でした。

自分はCMOSを使うつもりで設計していたので誤動作したようです。

電子回路のスイッチでは一般的に抵抗でプルアップしてスイッチをONにするとGNDへつながるように設計するんですが、今回はわかりやすくするためにONでHになるようにプルダウンしてました。TTLのICでは入力端子に何もつながないとHが入力されるようになってるみたいでONでLでないと動作しないみたいです。

この問題はトライステートをCMOS版に変えれば解決すると思います。

 

二つ目はZフラグのデコーダです。ALUの演算結果が0000になるとZ(ゼロ)フラグが立つようにしているのですが、このZフラグを出力するには4入力のNORが必要なのです。普通の組み合わせでは、どうしてもICを二つ以上使う必要があったため、アドレスラッチの74HC259を使ってアドレス000と出力有効端子(負論理)をつかって4入力のNORを実現しました。ここで配線を間違っていたみたいで誤動作していました。

これはしょうがないのでパターンを切って修正するしかないです。

 

ハードウェアのバグつぶしが済んだら次はファームウェアを書いていこうと思います。

 

自作CPU #11 基板発注しました。

回路図のチェックで、それなりにミスがみつかったのでその修正に時間をとられました。大幅に配線を変更した箇所もあります。なんとか年内にハードウェアを完成できてよかった。出来上がった基板にミスがないとは限らないが、一応不安な部分はブレットボード上で実験しています。

A基板

f:id:Hamakita:20171230033852p:plain

B基板

f:id:Hamakita:20171230033910p:plain

自作CPU #10 とりあえず基板図完成

今日一気に作業を進めました。とりあえず基板図完成しました。

あとは細かい位置調整等をやっていきます。さらに回路図に間違いがないかもう一度チェックしようと思います。

A基板(ALU等)

f:id:Hamakita:20171217010922p:plain

B基板(RAM,ROM,ブートローダー等)

f:id:Hamakita:20171217010936p:plain

自作CPU #9 A基板の配線が少しすすみました

最近はあまり作業が進んでいません。A基板の配線が少しすすんだので記事にします。

ALUの部分はある程度配線完了しました。配線するときは表面の配線を縦に裏面の配線を横にするようにしています。線数が多いのでマトリックスにしたほうが配線しやすいのです。

f:id:Hamakita:20171215001702p:plain

今悩んでいるのは右上に見える4本の線をどうやって左側に持っていくかというところ。

自作CPU #8 A基板部品配置

A基板(2枚目の基板)の部品配置だけとりあえず完了しました。これから配線作業をします。適当に置かれているチップ部品は無視してください。

f:id:Hamakita:20171206162928p:plain

自作CPU #7 ALUの配線作業開始

1枚目の基板がとりあえず完成したので、2枚目の基板を設計していきます。2枚目の基板は基本的にALUです。

f:id:Hamakita:20171205163757p:plain

1枚目の基板に比べたらずいぶん楽そうです。ちゃっちゃと終わらせてしまいたいですね。