CPU実験室

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

ウェイト挿入

トランスピュータのマニュアルを見てみるとアクセス時にウェイトを挿入するにはMemWaitピンをHにするとマシンサイクルT2の終わりでサンプリングされてT4の後にウェイトサイクルTwが挿入されるとあります

 

然るべき位置でサンプリング、挿入をしてくれるのでハードはあまりタイミング検討しなくて良さそうです。CPLD内にDUARTの/CSがアクティブになってからProcClockOutをカウントし4発分(1/19.66MHz×4=200ns)幅のパルスを生成する回路を入れ込みこれをMemWaitピンにアサインしました

 

この回路でRxRDY=0を読取るときの波形はこうなりました(管面イメージは連結合成してます)

ch1:/SIOCS、ch2:/RD、ch3:MemWait、一番下 データバスD0(=RxRDY)

読取りイネーブル/RDが他のデバイス(ROM)のアクセス時より伸長し計算通り200ns幅になりました・・規格より若干少ないですが。これによりデータバスのValid期間も充分な幅になり1文字入出力も安定に動作するようになりました。

ウェイトはDUARTをアクセスした時のみ発生します。といっても200nsなのでもともと低速のインターフェース;1キャラクタの送受信にかかる時間1/38400bps×10=260usに対して実に1/1000以下であり全く問題ありません。ROM/RAMは最高速で動作するようにジャンパポストのメモリコンフィグレーションは元に戻しました