CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

マシンサイクル

ボード上のトランスピュータIMST805は入力クロックClockin=4.9152MHzの4倍のProcClockOut=19.6608MHzを内部生成して各種タイミング信号を発生させます。

マニュアルのメモリアクセス関連の説明を読んでみました。

まずProcClockOutの半周期ごとにマシンサイクルT1~T6に遷移しそれに同期してステータス出力/MemS0~/MemS4を発生します

これらのマシンステートT1~T6を何クロック分にするかは自由にプログラムできます。それによりステータス出力/MemS0~/MemS4の開始位置、幅も変えることができるのでこれらをメモリ制御信号(ALE、/CE、/CAS、/RAS、カラムとロウアドレスの切替え・・)に利用することで様々なメモリ(速度、SRAM/DRAM)を使うことができるとされています。

プログラムの方法はMemConfigピンをアドレスピンにつないでおくだけでリセット解除後の初期シーケンスでプリセットされたセッティングが読み込まれます

 

このボードではAD8AD9をジャンパポストで選択できるようにしてあります(Internal configuration)ちなみにVDDに接続するとデフォルト(AD31接続と同じ)となりマシンサイクルは最長、低速のROMも読めます。逆にGNDに接続するとプリセットに無い自由なユーザセッティングをROMの特定番地から読取ります(External configuration

このように結構高度なメモリコントローラが内蔵されているということです。アドレスラッチやデマルチプレクサだけは外付けで必要ですがタイミング生成のためのグルーロジックは全く要らないと言っていいでしょう

 

これを踏まえてもう一度最小ループ時の波形を見てみます

ch1:ProcClockOut、ch2:ALE(=/MemS0)、ch3:/MemRD(プローブのGND処理が適当だったので波形が暴れてますが)、1マシンサイクルTm=1/19.6608MHz/2=25.4nsとすると

まずAD9にジャンパした時:(7マシンサイクル×2命令)×Tm=356ns 

で周期=2.81MHz

 

AD8にジャンパした時:(6マシンサイクル×2命令)×Tm=305ns 

で周期=3.27MHz

たしかに計算通りです。最小マシンサイクルでも正常動作するようなのでジャンパピンはAD8接続で決まりです