CPU実験室

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

データメモリアクセス

このMC14500ボードにはデータメモリとして1bit×2048word積んでいますが、これを使ったテストプログラムを書いていたら動作がおかしいことに気付きました。

例えば以下のプログラムはREGA_0~REGA_7(800~807番地)にセットされたビットパタンをDOUT0~DOUT7(000~007番地)に出力し接続されたLEDを点灯させるものですが

f:id:O3I:20210410225258j:plain

ビットパタンが何であろうが、最後にビットセットしたREGA_7の0/1状態だけが全ビットに反映されてしまうという謎の不具合です。アドレスを指定して複数のレジスタにセットしているつもりなのですが、あたかもレジスタは1個しか存在せず、アドレス関係なく最後に書込んだデータで置き換えられてしまっているかのように見えます。

 

見通しを良くするためにプログラムを単純化し800番地と801番地のみに連続書込みしているときのデータメモリ周辺の波形ですが、

f:id:O3I:20210410233230j:plain

一応A0=0の800番地とA0=1の801番地にちゃんと書いているようには見えます。ただ書込み信号/WEの立上りタイミングとアドレスの変化点はクロックに同期しており、ひょっとするとアドレスバスのホールドタイムが不足しているのではないか、という心配はあります。