CPU実験室

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

メモリチェック(2)

前回のメモリチェックプログラムは分岐の直後にNOPを挿入する修正のほかに一部手直しがあります。SRAM自体の動作もまだ怪しいのでチェック方法を簡略化して"00"を書いた後”FF”で追記し、読みだしたとき"FF"になるか、"FF"でなかったらその値をPAに出力する、としてあります。もちろんこれでは穴だらけですが追々強化していきます。

 

ところが実行させてみるとこの原始的なチェックでエラーが発生しました。発生するアドレスやデータパタンはまちまちで、頻度も2Mbyteを一巡する間に数回ランダムに発生します。そして数巡に1回は2Mbyte1周をエラーなし完走することもあるので単純に接続不良ではないようです。

 

完走した時はこんな様子になります。最後にベリファイOKだったアドレス0xFFFFFFFFのD23-D16が正論理でPBポート(治具の右バーLED:全点灯)に、D15-D8が負論理でPCポート(CPU基板上のパラレルLED:全消灯)に出力され、今エラーになったアドレス0x00000000で読取り失敗したデータがPAポート(治具の左バー:0x03)に出ています。

このメモリチェックプログラム自体がROMの0番地に固定され、その先頭コードはまさに「0x03」なので動作は正しいといえます。

f:id:O3I:20201128094621j:plain

一周に約20秒かかるのでメモリアクセスは約100kbyte/sでそんなに高速ではありませんが念のためメモリ周辺の信号を観察しておきます。

 

3個セットでアクセスされていますが最初が「00」書込み、2番目が「FF」書込み、最後が読出し、となります。

SRAMHM628512のチップセレクト/CS---CH1 アウトプットイネーブル/OE---CH2

f:id:O3I:20201128094710j:plain

アクセスサイクルが約160nsありますが、メモリのアクセススピードが70ns、CPUのクロックサイクルが20MHz(50ns)だとすると結構危ないのかもしれません。