レトロマイコン86ボードの構想(その21)16MHz動作実験 [8086]
V20(i8088互換)とPICを使った自作CP/M-86ボード(Pic24V20)は8MHzでは安定して動いているのですが、16MHzではすぐに暴走してしまう状態です。
使用しているV20はuPD80108HVZ-16で16MHzまで対応しているものです。
最初に記録の意味も込めて8MHz動作時のV20からPICへのサービス要求処理の開始と終了部分のタイミングをロジアナで確認した結果が下図です。
ロジアナのサンプリングは40MHzなので時間の分解能は25nsで、MREQとMACKはV20の信号名称で言うとHLDRQとHLDAKです(バスリクエストとその応答信号)
V20とPICとのI/Fに関しては「レトロマイコン86ボードの構想(その4)V20とPICのI/F確認」、回路図は「レトロマイコン86ボードの構想(その10)回路図整理とパターン設計」を参照してください。
次に、V20のクロックを16MHzにした場合のメモリアクセスタイミングをロジアナで確認した結果が下図になります。
ASTBはV20から出力されているアドレスラッチストローブでALEはアドレスラッチIC(74HC573)へ入れているラッチ信号です。
ALEの立下りが鈍る(Highの期間が70ns程度)のでプルダウン抵抗を一時的に1Kから510しています。
ロジアナのサンプリング周波数は50MHなので時間の分解能は20nsです。
時間スケールの+0.7us部分のA0を見るとアドレスラッチ後データ読み出しが60nsで特に問題無いタイミングに見えます(メモリはアクセスタイム70usのものを使用)
V20の動作を追っていくとコール先が変なアドレスだったりしてまともに動いていないようです(V20はプリフェッチするので追いづらい)
また、下図のように途中で一定時間停止したり、突然停止したままになったりする意味不明の状態が発生します。この時でもクロックは供給されているしIO/M信号がLowなのでHLT状態でもありません(バスもV20側にある)
今回のPic24V20ではチップ数を最小限にするためにPICからV20へクロック供給している関係でクロック信号がGND-3.3V間の矩形波になっていますがV20の規格ではクロックのHighレベルの最低電圧が 0.8 x Vdd(=4.0V)です。
PICからのクロック信号は 8MHz と 16MHz をジャンパーピンで選択できるようにしています。8MHz側は出力をオープンドレインにして5Vにプルアップすれば対応できます。
しかし、16MHzの方はconfigフラグ設定で該当ピンが RA3 か クロック出力かの切替えになっており、クロック出力に設定した場合はRA3側の出力回路自体が切り離されるようで、RA3をオープンドレイン設定にしてもクロック自体はオープンドレインにはなりませんでした。
試しに「シグナルジェネレータ/カウンタ「MHS-5200A」の購入」の記事で書いたシグナルジェネレータを使ってクロック供給実験を行ってみました。
8MHzから1MHz間隔でクロックを上げていったところ、14MHzまでは CP/Mが起動し、MBASICでASCIIARTが問題なく動作することを確認しました。
また、クロックのHighレベルを5Vから0.1V間隔で下げてみたところ、3.9V以上(クロックは14MHz)で問題なく動作することが確認できました。
現状でも8MHzであれば安定して動作していますが、今回の確認で16MHz動作対応するのは簡単ではなさそうである・・・ということがある程度具体的に判りました^^;
因みに14MHz動作時のASCIIARTの実行時間は1分33秒(8MHzでは2分5秒だったので予想どおりクロック反比例の結果)でした。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
使用しているV20はuPD80108HVZ-16で16MHzまで対応しているものです。
最初に記録の意味も込めて8MHz動作時のV20からPICへのサービス要求処理の開始と終了部分のタイミングをロジアナで確認した結果が下図です。
ロジアナのサンプリングは40MHzなので時間の分解能は25nsで、MREQとMACKはV20の信号名称で言うとHLDRQとHLDAKです(バスリクエストとその応答信号)
V20とPICとのI/Fに関しては「レトロマイコン86ボードの構想(その4)V20とPICのI/F確認」、回路図は「レトロマイコン86ボードの構想(その10)回路図整理とパターン設計」を参照してください。
PICサービス開始部分(8MHz) |
|
PICサービス終了部分(8MHz) |
|
次に、V20のクロックを16MHzにした場合のメモリアクセスタイミングをロジアナで確認した結果が下図になります。
ASTBはV20から出力されているアドレスラッチストローブでALEはアドレスラッチIC(74HC573)へ入れているラッチ信号です。
ALEの立下りが鈍る(Highの期間が70ns程度)のでプルダウン抵抗を一時的に1Kから510しています。
ロジアナのサンプリング周波数は50MHなので時間の分解能は20nsです。
V20が16MHz動作時のメモリアクセスタイミング |
|
時間スケールの+0.7us部分のA0を見るとアドレスラッチ後データ読み出しが60nsで特に問題無いタイミングに見えます(メモリはアクセスタイム70usのものを使用)
V20の動作を追っていくとコール先が変なアドレスだったりしてまともに動いていないようです(V20はプリフェッチするので追いづらい)
また、下図のように途中で一定時間停止したり、突然停止したままになったりする意味不明の状態が発生します。この時でもクロックは供給されているしIO/M信号がLowなのでHLT状態でもありません(バスもV20側にある)
V20の停止現象(16MHz) |
|
今回のPic24V20ではチップ数を最小限にするためにPICからV20へクロック供給している関係でクロック信号がGND-3.3V間の矩形波になっていますがV20の規格ではクロックのHighレベルの最低電圧が 0.8 x Vdd(=4.0V)です。
PICからのクロック信号は 8MHz と 16MHz をジャンパーピンで選択できるようにしています。8MHz側は出力をオープンドレインにして5Vにプルアップすれば対応できます。
しかし、16MHzの方はconfigフラグ設定で該当ピンが RA3 か クロック出力かの切替えになっており、クロック出力に設定した場合はRA3側の出力回路自体が切り離されるようで、RA3をオープンドレイン設定にしてもクロック自体はオープンドレインにはなりませんでした。
試しに「シグナルジェネレータ/カウンタ「MHS-5200A」の購入」の記事で書いたシグナルジェネレータを使ってクロック供給実験を行ってみました。
シグナルジェネレータでのクロック供給画面 |
|
8MHzから1MHz間隔でクロックを上げていったところ、14MHzまでは CP/Mが起動し、MBASICでASCIIARTが問題なく動作することを確認しました。
また、クロックのHighレベルを5Vから0.1V間隔で下げてみたところ、3.9V以上(クロックは14MHz)で問題なく動作することが確認できました。
現状でも8MHzであれば安定して動作していますが、今回の確認で16MHz動作対応するのは簡単ではなさそうである・・・ということがある程度具体的に判りました^^;
因みに14MHz動作時のASCIIARTの実行時間は1分33秒(8MHzでは2分5秒だったので予想どおりクロック反比例の結果)でした。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
コメント 0