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

トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


[第354回]



●MYCPU80TR CPLDロジアナで波形を確認する

測定する信号が1つか2つの場合でしたらオシロスコープが便利なのですが3つ以上の信号を同時に観測するとなると2現象オシロではなんともなりません。
そういうことになるとここはやっぱりロジアナの出番です。

CPLDロジアナの写真です。

CPLDロジアナについては「CPLD入門!」[第114回]を書いたのが最後になっています。
2019年10月の記事ですから1年半も前に書いたきりになっています。
その後何もしていなかったわけではありません。
時間の空きをみつけては少しずつさわってきました。
ハードウェアについては上の写真のものが最後です。
改良のためにジャンパ線が1本追加になりましたが、これがとりあえずの最新版です。
問題はソフトウェアのほうです。
特にWindows側のソフトがホネでした。
今までWindows側のプログラムはC++を使って作ってきました。
MSDOSプロンプト(DOS窓)で実行するCUI(Character User Interface)です。
しかし波形表示のためにはグラフィック表示が必要です。
ということになるとGUI(Graphical User Interface)に手を染めなければなりません。
でもCPLD側との通信はND80Z3.5などのようにPIC18F14K50を使う方式ですから、その部分は今まで通りのCUIプログラムです。
そこを離れるわけにはいきません。
結局のところCUIプログラムを内蔵したGUIプログラムということになりました。
GUI部分はWINAPIを使わざるを得ませんでしたが全体としては使い慣れたBorland C++でなんとか組み上げることができました。
まだもう少しなんとかしたいところもありますが、だいたい実用になるところまでできたと思います。
このCPLDロジアナも近日中に発売開始予定です。

前回作成した74HC74を使ったマシンクロックテスト基板にクロック発生回路基板を接続してCPLDロジアナで測定中の写真です。

CPLDロジアナはWindowsパソコンとUSBで接続して使います。

Windows側に表示された画面です。

とりあえずサンプリング周波数は5MHzで測定してみました。
データはうまく取れているようですがやっぱりテスト回路のクロック周波数が高いため5MHzではパルス幅が均一にはなりません。

サンプリング周波数は最高20MHzです。

今考えているMYCPU80TRのCPUクロック(マシンクロック)は1MHzか2MHzの予定ですしND80Z3.5のCPUクロックでも6MHzですからサンプリング周波数が20MHzならばなんとか実用になるでしょう。
サンプリング周波数を10MHzにしてみることにしました。

10MHzでの測定結果です。

PROBE0はCLR(リセット信号)でその立ち上がりで測定を開始します。
CLR信号にはテストとしてクロック発生回路基板から128KHzを入力しました。
PROBE1にはCPUクロックとして2MHzを入力しました。
この信号を2分周したものがマシンクロックになります。
PROBE2が74HC74から出力されたT0信号です(これが思い違いであることが後でわかりました)。
PROBE3がT1信号でPROBE4がT2信号、PROBE5がT3信号です。
いずれも0.5μSのパルス幅で順に出力されています。
これならMYCPU80TRのマシンクロック信号として使えると思います。
なおCPLDロジアナのチャンネル数は8チャンネルです。
できれば16チャンネルにしたかったのですがそうするとRAMも特殊なものを使うことになりますしコストがうんと違ってきます。
CPLDも現在のものでは力不足です。
結局8チャンネルに落ち着きました。
CPU回路のバスラインやアドレスラインの測定には8チャンネルではちょっと機能的に不足するところもありますが手軽に使える入門用のツールとしてはよろしいのではないでしょうか。

最高サンプリング周波数の20MHzで測定してみました。

サンプリング周波数を20MHzにすると隣り合うTクロックに少し重なりが見えます。
前段の出力の遅れが見えているものですが、ここに遅れがまったくなければ、この回路は成り立ちません。
もっとも出力の遅れは立ち下りだけではなくて立ち上がりにもあるはずで見かけ上は立ち下りの遅れのほうが大きいように見えますが本当のところがどうなのかはもっと高いサンプリング周波数でなければわかりません。
いずれにせよクロックの立ち下りの時に前段の出力パルスの状態をラッチすることで結果としてシフトレジスタとして動作しますから、そのためにはクロックに対して前段の出力の遅れがわずかでもあることがこの回路では必要です。
そのように遅れはあるもののT0からT3の出力がクロック(PROBE1)の立下りに同期していて、かつそこからの遅れも均一のようですし、この回路を考えたそもそもの目的の「ヒゲの除去」ということについてはこれは十分に使える回路だと思います。

ところが。
それはそれでよかったのですけれど、うっかりしていてまだこのままでは回路としては不足している重大なオチがあることに気が付きました。
そのオチについては次回で説明をすることにいたします。

トランジスタでCPUをつくろう![第354回]
2021.5.23upload

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