前回のあらすじ
「CPUの創りかた」のTD4を作った。
これには、オーバークロックのために、クロックの外部入力端子を搭載した。
とりあえず、100kHzまで動作することを確認した。
そして、MHzのクロック周波数に挑戦するため、オシレータを作成しました。
30MHzまで出せるオシレータの作成
今回は、前回作成したオシレータを使用しオーバークロックを行います。
オーバークロック
早速、オーバークロックを行います。
実験方法は前回と同じで、早押しボタンプログラムを使用します。
また、今回は1MHzから初めて1MHzづつ増やします。
予想
書籍には、「最大動作周波数は3MHz程度」と書いてありましたが、なんとなくもっと早く動くのでは無いかと思います。プリント基板を使用していますし、なんとなくノイズにも強い気がします。なので、10MHzくらいまで動作するのではと思いました。
クロック周波数を上げると、ジャンプ命令が効かなくなり、ROMのLEDがすべて点灯するようになると思います。
結果
クロック周波数 | 結果 |
---|---|
1MHz | 正常 |
2MHz | 正常 |
3MHz | 正常 |
4MHz | ボタンを押しても反応せず。異常。 |
3MHzまでは、正常に動作しているようです。すくなくとも、早押しボタンプログラムに関しては。
4MHzは不思議な動きになりました。一番右のボタンは正常っぽいですが、他のボタンは反応しませんでした。
やはり、書籍に書いてあることは正しかったようです。適当なことを言うものではありませんね。
ジャンプ命令が効かなくなる前に、ボタンが反応しないという現象になりました。ボタンが反応しないだけで、ジャンプ命令は効いているみたいです。
考察
ボタンが反応しない理由はおそらく、キャリーフラグがJNC
命令に届く前にクロックが来てるのだと思います。
一番右のボタンが正常に動作している理由はわかりません。「1111+0001」と「1111+0010」の計算速度が異なるのでしょうか?
まとめ
実験結果は、とてもおもしろい結果になりました。なぜこうなるのか気になりますが、この結果が面白くて満足もしています。オシロスコープがあれば詳しく調査することもできると思いますが、持っていません。また、速度のボトルネックになっているROM部分を改造すれば、もっと高速に動作させることができそうです。
しかし、他にも作りたい実用的なものも有るので、TD4で遊ぶのはとりあえず一区切りにしようと思います。
投稿者の人気記事
-
shigobu
さんが
2022/02/05
に
編集
をしました。
(メッセージ: 初版)
Opening
uchan
2022/02/16
shigobu
2022/02/16
ログインしてコメントを投稿する全然詳しく見てないのですが、ぱっと考えると確かにそうかもしれませんね。
全加算器は最下位ビットから最上位ビットへと順に繰り上がりが進行していくためです。
確かに!!
それが原因で計算速度が異なるのかもしれません。