レトロマイコン86ボードの構想(その22)16MHz動作実験2 [8086]
前回の「レトロマイコン86ボードの構想(その21)16MHz動作実験」の記事でV20(8088互換)とPICを使用した自作CP/M-86ボード(Pic24V20)が16MHzクロックで動作しないことに対する調査として16MHz時の状況を確認し
※本記事で記載しているV20の規格はuPD70108H(V20HL)の5V動作時のものです。
a はロジアナでの確認なので各信号の立上り/立下り時間が規格を満たしているか否かの確認はできていません(100MHz以上対応のシンクロが欲しい・・)。
b は dの原因のため、V20が動作停止しているものと推測します(V20の中身は見れない)
c は不思議な現象ですが本記事の最後の方で推測した原因について記載します。
これらの結果から16MHzで動作しない原因としてはクロックが最も可能性が高いと思われます。
上記の前回記事にも書きましたがジャンパーピンで選択可能なPICから出力している8MHzと16MHzの信号はオープンドレイン対応が難しいのでトランジスタを追加してオープンコレクタをプルアップする形(結果としては通常のトランジスタの回路ですが)にして確認してみました。
ブレッドボード上で回路を組み、シグナルジェネレータから3.3Vの矩形波を入力してみると下図のようになりdutyが50%になりませんでした。今回は16MHz対応のV20を限界の16MHzで動作させたいため、dutyが50%からズレると規格を満たすことができなくなってしまいます。
次に回路の簡略化も考慮し、下図のようにダイオードでの対応を検討してみました。0.7V程度プラス側にレベルシフトするのでV20の規格(High:4.0V以上,Low:0.15xVdd=0.75V以下)をギリギリ満たしそうです。
16MHzの矩形波を入力した際の出力が下図で、やはりdutyが50%に保たれない結果になりました。プルアップ抵抗の調整でdutyをある程度は調整可能でしょうが、アナログ的な調整要素はあまり入れたくありません。
最後に下図のようなトランジスタによるレベル変換回路で評価してみました。
測定結果が下図でDutyが保たれていて良好な結果でした。念のため25MHzまで確認して見ました(時間の分解能は10ns)。
これならV20のクロック信号の規格に沿うものにできそうです。
Pic24V20ボードに実装した状態でのクロック信号が下図です。ロジアナのサンプリング周期が100MHzで時間分解能が10nsなので40nsの部分がありますが問題無しです。
ボードを修正後に、メモリアクセス関連の信号を確認した結果が下図で、こちらも特に問題が無いように見えます。ASTBはV20から出力されているアドレスラッチストローブでALEはアドレスラッチIC(74HC573)へ入れているラッチ信号です。ロジアナのサンプリングは50MHzで時間分解能は20nsです。
今回の改造後のボードの様子が下の写真です。表面でクロックのパターンをカットし(写真では'4'の文字に隠れて見えない)、裏面でトランジスタと抵抗2本を追加改造しホットボンドで固定しています(基板中央部)。
ハード改造については以上ですが、冒頭で書いた c の外部クロックでも14MHzまでしか動作しなかった件に関してはメモリアクセスタイミング及びクロックは問題ない状態なのに動作しないので原因が不明なままでした。
そこでV20自体の個体差もあると考えてV20(uPD70108HCZ-16)をebayで5個注文(5個で千円以下の安いやつ)していて、ようやく届いたので評価してみました。
結果、1個が8MHzでも全然動作せず(評価途中に壊した可能性もありますが)、3個は8MHzでは動作し、16MHzでは動作しませんでした。
しか~し、1個が16MHzで問題なく動作しました(^^)/
※前回の記事で書いたALEのプルダウン抵抗を510から1Kに戻しても問題なく動作しました。
下の写真は今回届いたV20です。よく見ると(写真では判り辛いですが)
最後に16MHz動作時のCP/M-86でのASCIIART.BASの実行結果は
MBASICでは 1:22(82秒)
Personal BASIC では 1:03(63秒)
でした^^
★2020/09/19 追記
twitterにポストした16MHz動作の動画付きコメントを貼っておきます。
https://twitter.com/wcinp/status/1306439314130182145
[TOP] [ 前へ ] 連載記事 [ 次へ ]
- メモリアクセス時のタイミングは問題なさそうに見える
- 16MHzではCPUが停止してしまう謎の状態が出現する
- 外部から5Vのクロックを供給すると14MHzまで正常動作する
- 現状の回路ではクロックのHighレベルは3.3Vで4.0V以上という規格を満たしていない
- 外部クロック14MHzではHighレベルが3.9V以上で正常動作した
※本記事で記載しているV20の規格はuPD70108H(V20HL)の5V動作時のものです。
a はロジアナでの確認なので各信号の立上り/立下り時間が規格を満たしているか否かの確認はできていません(100MHz以上対応のシンクロが欲しい・・)。
b は dの原因のため、V20が動作停止しているものと推測します(V20の中身は見れない)
c は不思議な現象ですが本記事の最後の方で推測した原因について記載します。
これらの結果から16MHzで動作しない原因としてはクロックが最も可能性が高いと思われます。
上記の前回記事にも書きましたがジャンパーピンで選択可能なPICから出力している8MHzと16MHzの信号はオープンドレイン対応が難しいのでトランジスタを追加してオープンコレクタをプルアップする形(結果としては通常のトランジスタの回路ですが)にして確認してみました。
オープンコレクタプルアップ実験回路 |
|
ブレッドボード上で回路を組み、シグナルジェネレータから3.3Vの矩形波を入力してみると下図のようになりdutyが50%になりませんでした。今回は16MHz対応のV20を限界の16MHzで動作させたいため、dutyが50%からズレると規格を満たすことができなくなってしまいます。
200KHz入力時のIN/OUT信号 |
|
次に回路の簡略化も考慮し、下図のようにダイオードでの対応を検討してみました。0.7V程度プラス側にレベルシフトするのでV20の規格(High:4.0V以上,Low:0.15xVdd=0.75V以下)をギリギリ満たしそうです。
ダイオードでのレベルシフト実験回路 |
|
16MHzの矩形波を入力した際の出力が下図で、やはりdutyが50%に保たれない結果になりました。プルアップ抵抗の調整でdutyをある程度は調整可能でしょうが、アナログ的な調整要素はあまり入れたくありません。
レベルシフト結果(16MHz) |
|
★2020/09/18 サンプル波形を8MHzから16MHzに変更 |
最後に下図のようなトランジスタによるレベル変換回路で評価してみました。
レベル変換回路 |
|
測定結果が下図でDutyが保たれていて良好な結果でした。念のため25MHzまで確認して見ました(時間の分解能は10ns)。
これならV20のクロック信号の規格に沿うものにできそうです。
レベル変換回路評価結果(8MHz) |
|
レベル変換回路評価結果(16MHz) |
|
レベル変換回路評価結果(25MHz) |
|
Pic24V20ボードに実装した状態でのクロック信号が下図です。ロジアナのサンプリング周期が100MHzで時間分解能が10nsなので40nsの部分がありますが問題無しです。
ボードに実装後のクロック信号(16MHz) |
|
ボードを修正後に、メモリアクセス関連の信号を確認した結果が下図で、こちらも特に問題が無いように見えます。ASTBはV20から出力されているアドレスラッチストローブでALEはアドレスラッチIC(74HC573)へ入れているラッチ信号です。ロジアナのサンプリングは50MHzで時間分解能は20nsです。
改修後のPic24V20のメモリアクセス関連信号(16MHz動作時) |
|
今回の改造後のボードの様子が下の写真です。表面でクロックのパターンをカットし(写真では'4'の文字に隠れて見えない)、裏面でトランジスタと抵抗2本を追加改造しホットボンドで固定しています(基板中央部)。
改修後のPic24V20(表面) | 改修後のPic24V20(裏面) |
|
|
ハード改造については以上ですが、冒頭で書いた c の外部クロックでも14MHzまでしか動作しなかった件に関してはメモリアクセスタイミング及びクロックは問題ない状態なのに動作しないので原因が不明なままでした。
そこでV20自体の個体差もあると考えてV20(uPD70108HCZ-16)をebayで5個注文(5個で千円以下の安いやつ)していて、ようやく届いたので評価してみました。
結果、1個が8MHzでも全然動作せず(評価途中に壊した可能性もありますが)、3個は8MHzでは動作し、16MHzでは動作しませんでした。
しか~し、1個が16MHzで問題なく動作しました(^^)/
※前回の記事で書いたALEのプルダウン抵抗を510から1Kに戻しても問題なく動作しました。
下の写真は今回届いたV20です。よく見ると(写真では判り辛いですが)
- ピン
半田が乗っていて全体的にヨレヨレ感がある(プルアウト品?)
- モールド表面の丸い痕
表面にある二つの丸い痕の深さが以前購入したV20よりも僅かに浅い(表面を削ったため?)
今回届いたV20(uPD70108HCZ-16) |
|
★2020/10/10 追記 {
追加購入したuPD70108HCZ-16が5個届いたので16MHzでの動作確認を行いました。
基板上のソケットが壊れないようにゼロプレッシャーソケットを平ピンソケットに押込み(平ピンソケットのピンが広がってしまう)、これを基板上のソケットに刺して確認しました(左下写真)。
右下の写真が今回購入したV20でピンには半田が乗っていてヨレヨレなので再生品だと思いますが、5個中4個が16MHzで動作しました(8MHzでは5個とも動作した)
}
追加購入したuPD70108HCZ-16が5個届いたので16MHzでの動作確認を行いました。
基板上のソケットが壊れないようにゼロプレッシャーソケットを平ピンソケットに押込み(平ピンソケットのピンが広がってしまう)、これを基板上のソケットに刺して確認しました(左下写真)。
右下の写真が今回購入したV20でピンには半田が乗っていてヨレヨレなので再生品だと思いますが、5個中4個が16MHzで動作しました(8MHzでは5個とも動作した)
ゼロプレッシャーソケットの取付 | 今回購入したV20 |
|
|
最後に16MHz動作時のCP/M-86でのASCIIART.BASの実行結果は
MBASICでは 1:22(82秒)
Personal BASIC では 1:03(63秒)
でした^^
★2020/09/19 追記
twitterにポストした16MHz動作の動画付きコメントを貼っておきます。
https://twitter.com/wcinp/status/1306439314130182145
V20(8088互換)とPICを使った自作CP/M-86ボード(Pic24V20)が遂に16MHzで動作^^
— skyriver (@wcinp) September 17, 2020
動画はリセット後のCP/M-86起動からデジタルリサーチ製CとAztec Cでのhello.cコンパイル状況
ASCIIARTの実行時間はMBASICが1:22(82秒)、Personal BASICが1:03(63秒)#Pic24V20 #CPM86https://t.co/KC4Lb92MNe pic.twitter.com/kDGxGIjcR1
[TOP] [ 前へ ] 連載記事 [ 次へ ]
コインホルダーの製作 [3D_printer]
財布の中のコインのエントロピーが高く(混沌としている)、買い物の際に手間がかかってしまいます。
コインホルダーをネットでざっと検索してみると卓上用ものが多くありますが携帯性の良さそうなものは思ったよりも少なく、下記のようなものが見つかりました。
この中で最もコンパクトな a でも私の安い財布には入りません・・・
そこで a の方式を参考にさせて頂き、なるべくコンパクトになるように再設計してみました。壁厚も最小限にしているので表裏で文字の高さを合わせるとスライス結果が透けてしまいますw
収納可能なコインの枚数は下表の通りで合計で1566円です。
実際にコインを収容した状態が下の写真です。
実際使ってみると財布が少し分厚くなりますが(ペラペラよりはいいw)想像以上に便利でした^^
今回作成したコインホルダーのSTLファイルは下記からダウンロード可能です。
商用目的以外であれば使用可能とします。
★2020/09/23 Ver0.02b
・1円部分を更に改善
★2020/09/22 Ver0.02a
・1円をよりスムーズに出せるようにした
・全体的に角を丸くしコンパクト化した
コインホルダーをネットでざっと検索してみると卓上用ものが多くありますが携帯性の良さそうなものは思ったよりも少なく、下記のようなものが見つかりました。
- 「日記というほどでも」のブログの【STL】コインホルダー
- MakerBot thingiverse の Japan Yen Coin Holder
- 「デジこもの好き」のブログのTPUフィラメントで作ったコインホルダー
この中で最もコンパクトな a でも私の安い財布には入りません・・・
そこで a の方式を参考にさせて頂き、なるべくコンパクトになるように再設計してみました。壁厚も最小限にしているので表裏で文字の高さを合わせるとスライス結果が透けてしまいますw
コインホルダー(表側) | コインホルダー(裏側) |
|
|
コインホルダー(全体図) |
|
収納可能なコインの枚数は下表の通りで合計で1566円です。
実際にコインを収容した状態が下の写真です。
実際使ってみると財布が少し分厚くなりますが(ペラペラよりはいいw)想像以上に便利でした^^
コインホルダー出力結果(表側) | コインホルダー出力結果(裏側) |
|
|
今回作成したコインホルダーのSTLファイルは下記からダウンロード可能です。
商用目的以外であれば使用可能とします。
★2020/09/23 Ver0.02b
・1円部分を更に改善
★2020/09/22 Ver0.02a
・1円をよりスムーズに出せるようにした
・全体的に角を丸くしコンパクト化した
レトロマイコン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] [ 前へ ] 連載記事 [ 次へ ]