ROM内のアクセスウェイト

| | コメント(0) | トラックバック(0)

カメレオンUSBのロジアナを買ったので、さっそくWAIT信号について調査しました。

用意したプローブ(=ただのICピン)が足りず、アドレス線は10ビットしか取れていませんが、どこを実行しているかはわかります。

計測したのは、起動後に"How Many Pages?"と表示され、入力待ちになっている状態です。ROM内を実行していることになります。 

0xfbf-call.png

この画面で青い線で区切られたA-Bの区間は、0x0fbfを実行しています(ADは10ビットのみ表示されていることに注意)。 この部分のアセンブリ表現は次のようになります。

0FBF CDFF0F    CALL    $0FFF

すなわち、3バイト命令のCALLを実行していて、M1ステートの0xfbfで2回、 続く0xfc0, 0xfc1の読み込みでそれぞれ2回ずつWAITが入っていることがわかります。 そして次の命令が0x0fffから始まっていることが読み取れます。

もう少し詳しくアドレス線を読み解くと、まず0xfbf(0x3bf)からオペコードを読込み、次にリフレッシュアドレス0x45(0x245)を送出します。M2サイクルでは0xfc0(0x3c0)、M3サイクルで0xfc1(0x3c1)からそれぞれオペランドを読込みます。これはCALL命令なので、PCの2バイトをスタックにプッシュ(0x0eb, 0x0ea)しています。その後、次の命令である0xfff(0x3ff)に飛びます。

クロックを見ると、本来17クロックのCALLに20クロックかかっています。 どうやら2バイト目と3バイト目を読み込む際のWAITは1クロックずつで、 各マシンサイクルでの2回目のWAITは実際には入っていないようです。

次に実行する命令を見てみます。

0FFF 2130FA    LD      HL,$FA30

0xfff-ld.png

この命令では、本来10クロックのところが13クロックかかっていて、やはりM1だけでなく、2バイト目、3バイト目の読み込みにも1クロックずつWAITがかかっています。

以上のことより、ROMからの読み出しのときは、常に1クロックずつWAITが入ることがわかります。 PC-6001のROMに使われているuPD2364のアクセス性能は製品により異なりますが、300/350/450nsです。 450ns品を使っているとすればまぁ納得のいく仕様でしょう。

トラックバック(0)

このブログ記事を参照しているブログ一覧: ROM内のアクセスウェイト

このブログ記事に対するトラックバックURL: http://www.markn.org/cgi-bin/mt/mt-tb.cgi/50

コメントする

このブログ記事について

このページは、marknがNovember 1, 2008 4:36 AMに書いたブログ記事です。

ひとつ前のブログ記事は「カジュアルクラッカーのオモチャ」です。

次のブログ記事は「動画と音声の同時再生可能性の検討」です。

最近のコンテンツ アーカイブ