自作CPU #5 命令デコーダ周りの配線

今日は命令デコーダ周りの配線を半分ぐらいしました。

f:id:Hamakita:20171201222451p:plain

この基板の上にALUを載せたボードを接続する予定です。上の画像の上部に見えるピンヘッダで上下をつなぎます。当然この部分は配線が集中するわけです。

低周波クロックの可変抵抗について少し部品を変更しようと思います。クロックの調整が細かく行えるように高精度の可変抵抗をつかっていたのですが、(画像の左上)これは回すたびにマイナスドライバーが必要でとても不便だと気づいたので、手回しできる大きいやつをつけようと思います。

自作CPU #4 低周波クロックの動作確認

昨日低周波クロックの動作確認をしましたが、計算と合わないのが気になりもう一度波形を確認しました。

f:id:Hamakita:20171130220759p:plain

低周波クロックの最高周波数でこのような波形となりました。

波形から1周期が13msとすると周波数は76.92Hzになりました。

理論値は73.75Hzですから昨日の観測結果より理論値に近いみたいです。

自作CPU #3

今日はスタック周りと昨日やってたプログラムカウンタ周りの電源線を配線しました。

あとクロックジェネレーターとクロック選択回路が少し不安だったので、ブレッドボードへ組み、テストしてみました。問題なく動いたっぽいです。クロックの選択はロータリーDIPSWで16パターン選択できるようにします。

L固定,H固定,手動クロック,低周波数クロック約0.33Hz~約66.66Hz(VRで可変)

976Hz,1.953kHz,3.906kHz,7.813kHz,15.625kHz,31.25kHz,

62.5kHz,125kHz,250kHz,500kHz,1MHz,2MHz

の16パターンです。このうち低周波クロックについて自分でも動作原理を忘れてしまいそうなのでメモしておきます。

低周波クロックの約0.33Hz~約66.66Hzというのはオシロスコープで観察した結果であって理論値とは少しずれています。低周波クロックの回路は、

f:id:Hamakita:20171130002154p:plain

こんな感じです。

  1. 電源投入始めコンデンサは充電されていない。
  2. 入力がLとなる。
  3. OUTがHとなる。
  4. OUTから電流が抵抗を通りコンデンサに充電される。
  5. インバーターの+閾値まで充電されると論理がひっくり返りOUTがLに
  6. コンデンサから電流が抵抗を通り放電する。
  7. インバーターのー閾値まで放電されると論理がひっくり返りOUTがHに

この繰り返しで動作する。このインバーターは普通のNOT素子(HC04)とは違ってシュミットトリガインバータというもので閾値を二つ持っているのが特徴。このおかげでアナログ的なカーブを描いた電圧の立ち上がり(コンデンサの充電)を入力にしても出力が乱れない。普通のインバーターでは閾値付近の電圧を入力されると出力がチャタリングのように乱れてしまう恐れがある。また閾値を二つ持つことでコンデンサの充放電の時間稼ぎができるためクロックを生成できる。

回路図の可変抵抗によって充放電の時間を調整し、クロックの速さを変える。

データシート

によると+閾値は2.5V,-閾値は1.6Vらしい。

RC直列回路の過渡現象解析からコンデンサの電位差の式はt=0で5vのステップ入力とすると

\[V_C = E(1-e^{-\frac{1}{RC}t})\]

変形して

\[t=-RC\ln(1-\frac{V_C}{E})\]

 半周期は\[V_C=2.5\]までの時間から\[V_C=1.6\]までの時間を引いたものだから

(1.6Vまで充電された状態で充電が始まる。)

R=100k+470の時の周期は2.9sゆえに周波数0.34Hz

さらに

R=0+470の時の周期は13.56msゆえに周波数73.75Hz

0.33Hzの方は辻褄があったのですが66Hzの方が少しずれてしまいました。

放電のケースも考えなければならないかな。 

 

171130追記

もう少し理論値に近いっぽいです。もう一度観測したら

76.92Hzでした。

自作CPU #2

今日はスタック用のメモリ周りとプログラムカウンタとジャンプ先のアドレスを格納するためレジスタ(ジャンプレジスタ)周りを配線しました。レトロな感じをだしたいのでなるだけDIPのICを使いたかったのですが、スペースと入手性の都合上、レジスタとメモリは表面実装です。

このあたりを配線しました。

f:id:Hamakita:20171128203648p:plain

ジャンプレジスタとプログラムカウンタを裏表の同じ位置に配置したので、特にそのあたりの配線がきつかったです。

自作CPU #1

今趣味でロジックICを主に使った自作CPUを作っているので、せっかくだから日記としてブログにやったことを記録していく事にします。次の二つを参考にさせていただきました。

渡波 郁 CPUの創りかた

・中日電工さんのホームページ

TTLでCPUを作る組立てキット・トランジスタでCPUを作る組立てキット・TK−80互換マイコン組立キット・Z80マイコンボード・BASIC制御マイコンボード

 

 

回路図はほぼ完成しており、今基板図を製作中です。昨日はクロックジェネレーター周りとINPUTのトライステート周りを配線しました。

このあたりを配線しました。

f:id:Hamakita:20171127113714p:plain

 

 

現在の基板図全体です。スペースが足らないのでさらにこの上に基板をくっつける予定

f:id:Hamakita:20171127113717p:plain

 

試しに上の状態から自動配線を試してみました。

f:id:Hamakita:20171127114352p:plain

 左半分を配線するのにかなりの時間を使ってしまって疲れていたのか、もうこれでいいんじゃね?

と思ってしまいました。しかし自分で配線したほうがきれいになるので頑張ろうと思います。

ジャンクPS3(YLOD,8002F14E)修理

ジャンクなPS3を入手しました。1080円でした。

とりあえず電源をつけてみましたが

まったく起動しませんでした。

調べてみると結構有名な故障らしくYLODと呼ばれるものだとわかりました。

原因はCPU,GPUの発熱による半田クラックらしいので、

グラボを焼く手順でオーブンで焼いてみました。

CPU、GPU以外はアルミホイルでつつんでおきます。

そうすることで起動することができました。

ドライヤーやヒートガンでYLODを修理する人が結構いるみたいですが、

個人的にはオーブンで焼いたほうがいいと思います。

オーブンだと温度管理ができるので。

その後HDDがついてなかったのでシステムソフトウェアをインストール

しようとしましたが、ここで問題がおきました。

システムソフトウェアはUSBメモリにいれて読み込ませようとしましたが、

異様に探索が遅いのです。

USBケーブルでコントローラをつなぎPSボタンを押す

スタートボタンとセレクトボタン同時押しでシステムソフトウェア探索

↑これが異常にながい

結局数時間放置することでアップデート画面に移行することはできましたが。

何度やっても8002F14Eというエラーが出るようになりました。

電源をいれたとき光学ドライブの調子が悪い

(ディスクが吸い込まれないし内部にディスク入ってないのにディスク入ってると認識してる)のが分かったのでそいつがあやしいとは思ってたのですが案の定でした。

このエラーはBDドライブのエラーらしいです。

ここからが時間がかかりました。BDドライブを何度も開けたり閉めたりしました。

結局コネクタの接触不良だったらしくドライブ側のフレキケーブルコネクタがはずれかけており、こいつを差し込み直したらアップデートに成功し無事ゲームができるようになりました。

時間がかかった理由としては、このエラーはよくコネクタの接触不良で起きているようなのですが、マザボ側のフレキケーブルコネクタばかり見ていました。

だって、ドライブ側はテープで覆われてたし、だいたい電源を付けた時ドライブが動こうとしたり、レーザーが光ってたり、強制イジェクトは動作したんですよ。

なので最初に接触不良ではないと決め付けたのがいけませんでした。