レトロマイコン86ボードの構想(その25)回路図アップデート [8086]
前回の記事までの評価で16MHzのクロック信号の3.3Vから5Vへの変換回路が決まったので回路をアップデートしました。
結論を先に書くと、今回のクロック部分の改造したプリント基板でV20が16MHzでもCP/M-86が問題なく動作することを確認できました。
今回改善した回路図が下図になります。
グランドベタ化前のトップ面とボトム面のパターンを重ねたものが下図です。
グランドベタ化後のトップ面のパターンが下図です。
下図はボトム面のパターンです。
今回は初めてELECROWさんに基板製造を依頼してみました。
SEEEDさんではDesignSparkPCBの出力をそのままアーカイブして提出すればよかったのですが、ELECROWさんでは他の多くのプリント基板製造業者さんと同様にCADから出力された設計データファイルを規則に従ってリネームする必要がある点が少し面倒でした。出来上がった基板自体は特に問題ない状態でした。
長所としては発注する基板をかごに入れる前に輸送方法を選択できるので枚数と輸送費との関係が判り易いことです。
製造費用は5枚でも10枚でも同じですが輸送費は重さと大きさで決まるので5枚の方が安くなります。
また、ELECROWさんは予備として作成した基板も問題無ければ送ってくれます。今回は5枚発注して6枚届きました。先程確認したらポイントが555ポイント貯まっていました。有効期限は不明です。
5枚の製造費が$4.9で輸送費は一番安いものを選択して$8.44でした。実際はDHLで送られてきて 11/24に発注して12/9に届きました。
出来上がった基板のTOP面が下の写真です。
ボトム面が下図です。
前回のバージョンと見た目はあまり変わりませんが部品実装後の写真も貼っておきます。
未実装部分はリアルタイムクロック用のクリスタル周りの部品とバックアップ用の電池ホルダです。
★追記 2020/12/15
「レトロマイコン86ボードの構想(その20)ケース作成2」の記事で書いたケースに入れた状態の写真を追記しました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
結論を先に書くと、今回のクロック部分の改造したプリント基板でV20が16MHzでもCP/M-86が問題なく動作することを確認できました。
今回改善した回路図が下図になります。
グランドベタ化前のトップ面とボトム面のパターンを重ねたものが下図です。
Pic24V20パターン(グランドベタ化前) |
|
グランドベタ化後のトップ面のパターンが下図です。
Pic24V20Tトップ面パターン |
|
下図はボトム面のパターンです。
Pic24V20Tボトム面パターン |
|
今回は初めてELECROWさんに基板製造を依頼してみました。
SEEEDさんではDesignSparkPCBの出力をそのままアーカイブして提出すればよかったのですが、ELECROWさんでは他の多くのプリント基板製造業者さんと同様にCADから出力された設計データファイルを規則に従ってリネームする必要がある点が少し面倒でした。出来上がった基板自体は特に問題ない状態でした。
長所としては発注する基板をかごに入れる前に輸送方法を選択できるので枚数と輸送費との関係が判り易いことです。
製造費用は5枚でも10枚でも同じですが輸送費は重さと大きさで決まるので5枚の方が安くなります。
また、ELECROWさんは予備として作成した基板も問題無ければ送ってくれます。今回は5枚発注して6枚届きました。先程確認したらポイントが555ポイント貯まっていました。有効期限は不明です。
5枚の製造費が$4.9で輸送費は一番安いものを選択して$8.44でした。実際はDHLで送られてきて 11/24に発注して12/9に届きました。
出来上がった基板のTOP面が下の写真です。
Pic24V20基板(トップ面) |
|
ボトム面が下図です。
Pic24V20基板(ボトム面) |
|
前回のバージョンと見た目はあまり変わりませんが部品実装後の写真も貼っておきます。
Pic24V20トップ面 |
|
未実装部分はリアルタイムクロック用のクリスタル周りの部品とバックアップ用の電池ホルダです。
Pic24V20ボトム面 |
|
★追記 2020/12/15
「レトロマイコン86ボードの構想(その20)ケース作成2」の記事で書いたケースに入れた状態の写真を追記しました。
Pic24V20ケース |
|
Pic24V20ケース(正面) |
|
Pic24V20ケース(背面) |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]
レトロマイコン86ボードの構想(その24)16MHz動作実験4 [8086]
PICからV20(クロックのhighレベルは規格上0.8xVdd=4V以上)へ供給するクロックの電圧レベル変換回路の検討中で、前回記事の「レトロマイコン86ボードの構想(その23)16MHz動作実験3」の末尾で書いたように手配していたFETが届いたので評価結果のダイジェストを書いてみます。
始めにFETを使ったレベル変換に関しては下記のレベル変換ボードの説明にあるように双方をそれぞれの電源電圧で吊り、更にゲートを低い方の電圧で釣ることで双方向のレベル変換に対応できます(電圧の低い側をソースに接続)。
ネット上でも「FETで異なる電圧のインターフェース」や「3.3V 5V レベル変換」に同様な回路が示されています(前者は方向固定の例で入力側のプルアップが省略されている)。
海外に注文していたNMOS FETの2N7002が届いたので(実はかなり前に届いていた^^;)下図の回路で評価してみました。
まずは 3.3V → 5V 変換からです。
下図が10KHzと100KHzの矩形波入力時の波形で黄色(ch1)が入力で水色(ch2)がレベル変換後の信号です。
左側の10KHzの方は問題ないように見えますが、右側の100KHzでは立上り時にFETのオフに遅延が発生して3.3V側に接続されている状態が発生しています。
下図の500KHzではプラス側の末尾の1/3で5Vへ向かって推移していますが始めの2/3は3.3Vのままの状態です。
上の100KHzの波形と合わせてみるとFETがONからOFFに推移し始めるのに1us弱の時間が掛かっているようです。
V20のクロックとして使用する8MHzと16MHzではプラス側の全領域が3.3Vになってしまっていてレベル変換回路の効果がなくなっています。
これらの現象は前回の記事で書いたトランジスタによるレベル変換回路で生じた現象と酷似しています。
トランジスタ回路ではベース抵抗にスピードアップコンデンサを付けて改善できましたがゲート抵抗はないのでもっと高速なFETを使うのがいい?(入力信号はきっちり立ち上がっているのでドライブ不足ではないと思う)
2N7002のデータシートを確認するとTurn-On Delay TimeとTurn-Off Delay TimeがどちらもMax 20nsになっているのでスペック的には問題なさそうなのですが・・
5V → 3.3Vの変換方も同様の傾向が見られます。
黄色(ch1)が入力側で水色(ch2)が3.3Vへの変換後の信号です。
因みに下図のような単純なプルアップ回路では500MHz時点で完全にスイッチングが追い付かない状態になりました。
他のFETでも試した方がいいかもしれませんが、やはり前回記事で書いたトランジスタ方式の方がいいかなぁ~ という感じです(実際16MHzでV20が動いているし)。
いっそトランジスタを2個使ってプッシュプルドライブ回路にでもしてみる?(でも部品が増えるのはちょっと)
一点気になることは・・・今回使用した海外から調達した2N7002のマーキングが「7002」になっていることです。
DIODESのデータシートでは下図のように書かれています(メーカーにより刻印文字は異なるのでしょうが)
SOT-23の小さなパッケージをリマークするのは手間賃の方が費用が掛かりそうなので本物だとは思うのですが・・
秋月さんのHPを見ると2N7002は2件ヒットし、2つとも”K72"と書いてあり下記のマーキング仕様に準拠してますね。
★追記 2020/11/03
neko Javaさんからプルアップ抵抗を小さくしてみては?とのコメントを頂いたので 3.3V -> 5V変換時の5V側のプルアップ抵抗を10Kから1Kに変更して確認してみました。
前回記事のトランジスタ回路ではプルアップ抵抗を色々変えて試していました(この時は解決策が1つも見つかっていなかったので)が今回は少し潔すぎたかもしれません^^;
下図が500KHzと1MHzでの確認結果で、500KHzでは10Kプルアップ時と同様に立上り直後にFETのON状態が残留し出力が3.3Vで、プルアップ抵抗を小さくしたことで立下りがかなり鈍っています。
1MHz側の立上りは最初から5Vに遷移する右上がりの状態になっていますが、これは入力がlowの時にFETが完全にONしきっていなかったためと思います。
下図は8MHzと16MHzの場合で、High側はかろうじて4Vに達していますが、Low側がプルアップ抵抗に引っ張られて1V以上になっています。
V20HLのクロックのlowレベルの規格は 0.15xVdd 以下なので今回の場合は0.75V以下にする必要があります。
また、16MHzのケースでは振動現象が現れ、その2、その3の図に示したように出力が一定周期で2V程度の幅で上下しました。
結果としてプルアップ抵抗を小さくすると立上り時の問題はほぼそのまま(5Vへの遷移開始タイミングは早くなった)でlowの時の電圧が上がってしまうということが判りました。
MOS FETは一般的にオン抵抗が小さいという印象でデータシートにもVgs=5V、Id=0.05AではTypicalで3.2Ωと記載されています。
データシートにあるオン領域特性グラフ(下図)からVgs=3.0Vの場合の線形領域を延長してFETの抵抗値を求めてみると20(=4/0.2)Ω程度になりますが、これはあくまでも静的特性であって、今回の様な過渡的な状態では当てはまらないということだと思います。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
始めにFETを使ったレベル変換に関しては下記のレベル変換ボードの説明にあるように双方をそれぞれの電源電圧で吊り、更にゲートを低い方の電圧で釣ることで双方向のレベル変換に対応できます(電圧の低い側をソースに接続)。
ネット上でも「FETで異なる電圧のインターフェース」や「3.3V 5V レベル変換」に同様な回路が示されています(前者は方向固定の例で入力側のプルアップが省略されている)。
レベル変換ボード説明書(抜粋) |
|
海外に注文していたNMOS FETの2N7002が届いたので(実はかなり前に届いていた^^;)下図の回路で評価してみました。
レベル変換評価回路 |
|
まずは 3.3V → 5V 変換からです。
下図が10KHzと100KHzの矩形波入力時の波形で黄色(ch1)が入力で水色(ch2)がレベル変換後の信号です。
左側の10KHzの方は問題ないように見えますが、右側の100KHzでは立上り時にFETのオフに遅延が発生して3.3V側に接続されている状態が発生しています。
3.3V -> 5V (10KHz) | 3.3V -> 5V (100KHz) |
|
|
下図の500KHzではプラス側の末尾の1/3で5Vへ向かって推移していますが始めの2/3は3.3Vのままの状態です。
上の100KHzの波形と合わせてみるとFETがONからOFFに推移し始めるのに1us弱の時間が掛かっているようです。
3.3V -> 5V (500KHz) |
|
V20のクロックとして使用する8MHzと16MHzではプラス側の全領域が3.3Vになってしまっていてレベル変換回路の効果がなくなっています。
3.3V -> 5V (8MHz) | 3.3V -> 5V (16MHz) |
|
|
これらの現象は前回の記事で書いたトランジスタによるレベル変換回路で生じた現象と酷似しています。
トランジスタ回路ではベース抵抗にスピードアップコンデンサを付けて改善できましたがゲート抵抗はないのでもっと高速なFETを使うのがいい?(入力信号はきっちり立ち上がっているのでドライブ不足ではないと思う)
2N7002のデータシートを確認するとTurn-On Delay TimeとTurn-Off Delay TimeがどちらもMax 20nsになっているのでスペック的には問題なさそうなのですが・・
5V → 3.3Vの変換方も同様の傾向が見られます。
黄色(ch1)が入力側で水色(ch2)が3.3Vへの変換後の信号です。
5V -> 3.3V (10KHz) | 5V -> 3.3V (100KHz) |
|
|
5V -> 3.3V (500KHz) |
|
因みに下図のような単純なプルアップ回路では500MHz時点で完全にスイッチングが追い付かない状態になりました。
単純なプルアップ回路 |
|
単純プルアップ(100KHz) | 単純プルアップ(500KHz) |
|
|
他のFETでも試した方がいいかもしれませんが、やはり前回記事で書いたトランジスタ方式の方がいいかなぁ~ という感じです(実際16MHzでV20が動いているし)。
いっそトランジスタを2個使ってプッシュプルドライブ回路にでもしてみる?(でも部品が増えるのはちょっと)
一点気になることは・・・今回使用した海外から調達した2N7002のマーキングが「7002」になっていることです。
DIODESのデータシートでは下図のように書かれています(メーカーにより刻印文字は異なるのでしょうが)
SOT-23の小さなパッケージをリマークするのは手間賃の方が費用が掛かりそうなので本物だとは思うのですが・・
秋月さんのHPを見ると2N7002は2件ヒットし、2つとも”K72"と書いてあり下記のマーキング仕様に準拠してますね。
2N7002のマーキング仕様(データシートからの抜粋) |
|
★追記 2020/11/03
neko Javaさんからプルアップ抵抗を小さくしてみては?とのコメントを頂いたので 3.3V -> 5V変換時の5V側のプルアップ抵抗を10Kから1Kに変更して確認してみました。
前回記事のトランジスタ回路ではプルアップ抵抗を色々変えて試していました(この時は解決策が1つも見つかっていなかったので)が今回は少し潔すぎたかもしれません^^;
下図が500KHzと1MHzでの確認結果で、500KHzでは10Kプルアップ時と同様に立上り直後にFETのON状態が残留し出力が3.3Vで、プルアップ抵抗を小さくしたことで立下りがかなり鈍っています。
1MHz側の立上りは最初から5Vに遷移する右上がりの状態になっていますが、これは入力がlowの時にFETが完全にONしきっていなかったためと思います。
3.3V->5V:Pull Up 1K (500KHz) | 3.3V->5V:Pull Up 1K (1MHz) |
|
|
下図は8MHzと16MHzの場合で、High側はかろうじて4Vに達していますが、Low側がプルアップ抵抗に引っ張られて1V以上になっています。
V20HLのクロックのlowレベルの規格は 0.15xVdd 以下なので今回の場合は0.75V以下にする必要があります。
また、16MHzのケースでは振動現象が現れ、その2、その3の図に示したように出力が一定周期で2V程度の幅で上下しました。
3.3V->5V:Pull Up 1K (8MHz) | 3.3V->5V:Pull Up 1K (16MHz) |
|
|
3.3V->5V:Pull Up 1K (16MHz)その2 | 3.3V->5V:Pull Up 1K (16MHz)その3 |
|
|
結果としてプルアップ抵抗を小さくすると立上り時の問題はほぼそのまま(5Vへの遷移開始タイミングは早くなった)でlowの時の電圧が上がってしまうということが判りました。
MOS FETは一般的にオン抵抗が小さいという印象でデータシートにもVgs=5V、Id=0.05AではTypicalで3.2Ωと記載されています。
データシートにあるオン領域特性グラフ(下図)からVgs=3.0Vの場合の線形領域を延長してFETの抵抗値を求めてみると20(=4/0.2)Ω程度になりますが、これはあくまでも静的特性であって、今回の様な過渡的な状態では当てはまらないということだと思います。
On-Region Characteristics (2N7002) |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]
レトロマイコン86ボードの構想(その23)16MHz動作実験3 [8086]
前回の記事でPICから選別したV20へ供給しているクロックをトランジスタでレベル変換してV20が16MHzで動いたことを書きました。
しかし、信号の確認はロジアナを使っており、波形を確認できていませんでした。
注文していた最大帯域250MHzのUSBオシロ(HANTEK6254BC)がやっと届いたので、今回は波形確認結果等を自分へのメモも兼ねて記載しておきます。
記録として画面キャプチャを多く貼り付けていて記事内容としてはあまり面白くないと思いますので最初にお断りしておきます。
前回の記事で書いたようにPICからのクロックを下図の回路でレベル変換してV20に供給するように改造しました。
Pic24V20ボード上のPIC出力のクロックとV20に入力されるクロックの波形を確認した結果が下図になります。
ch1(黄色)がPICからのクロック出力でch2(水色)がレベル変換後のV20へ供給されるクロック波形です(以降のシンクロ画面も全て同様)。
折角レベル変換したのに最大電圧が4V程度になってしまっていますorz
再度ブレッドボードで100KHzの信号を使って確かめてみるとトランジスタがoffするのに1.7us程度の時間がかかっている(この間、出力は3.3V)ことが判りました。
そこで常套手段としてベース抵抗にパラでスピードアップコンデンサを付けてみました。
コンデンサの容量の目安としては
※参考 https://cc.cqpub.co.jp/system/contents/2430/
τ = CR
→ C = τ / R
= 1700n / 10K
= 170 [pF]
となるので手持ちの部品の中からマージンを加味して220pFで実験しました。
100KHzと800KHzの場合の波形が下図で100KHzでは想定通り立ち上がっているように見えますが、800KHzの方を見ると立上り時間が100ns弱掛かっています。
コレクタのプルアップ抵抗を1Kから330に変更した結果が下図です。
8MHzの矩形波は私のシグナルジェネレーターの限界(矩形波の上限は6MHz)を超えているのでかなり鈍った波形になってしまっていますが変換後のクロックはかろうじて5Vまで達しています。
元々の改善目標であった16MHzでの波形が下図で左は試しにプルアップ抵抗を660にした場合で、右側は330の場合です。
660の場合はV20へ供給するクロック(水色)の電圧がが3V程度までしか上がっていません。
強引に釣り上げている感はありますが330では16MHzでも5V付近まで上がっています。
ブレッドボード上で試行錯誤するのも何なので文明の利器(シミュレータ)を使って確認してみましょう。
左はスピードアップコンデンサ無しでの50Hz矩形波の場合でトランジスタのoff遅れが1.5ms程度発生していてブレッドボードでの実測(1.7us)と大きく異なる結果になりました・・
右側はスピードアップコンデンサを入れた場合立上りが俊敏になっています。
クロック1MHzで確認して見ると左下図のように出力が立ち上がらないのでプルアップ抵抗を330にしたものが右下図です。
プルアップ330Ω側は出力が立ち上がりかけているので時間軸を長くして確認してみましたが出力が立ち上らない(左下)のでスピードアップコンデンサを10uFにしたものが右下です。
試しにプルアップ670(左下)と1K(右下)の場合も立上りに時間がかかりますが5Vまで立ち上がっていました。
立上り後の波形をズームしたものが下図で右側(プルアップ1K)の方は立上りが少し鈍っているのが判ります。
最終目的のクロック16MHzでプルアップ330の場合のシミュレートが下図です。右側のズーム波形からはプルアップが強すぎる感もありますが前述のブレッドボードでの実験からは330の方が望ましいという結果が得られています。
以上、ブレッドボードでの実験とシミュレータ(LTspice)での確認の結果について書きましたが、今回の作業で
最後に実機(Pic24V20)に実装した結果についてですが、スピードアップコンデンサ220pFを付加した場合の波形が下図です。
右側の16MHzの方はほとんどサイン波形になってしまっていますが、それよりも最大2V弱までしか上がっていません。
5Vにレベルシフトするための追加ですが逆にレベルダウンしてしまっていますorz
スピードアップコンデンサを取り除き、コレクタのプルアップ抵抗を330Ωにした場合の波形が下図で右側の16MHzでも最高電圧が4Vを超えるようになりました(選別したV20でCP/M-86も動いています)
今回のPICからのクロック供給に関して、ゲートICを追加すればすごく簡単なのですが、ゲートICの内部回路ではアクティブ素子が複数使われていて、これを1個のトランジスタで代用しようとすることがそもそも無理があるのかもしれません(でもこういう無理に挑戦するのも面白い)
また、FETを海外に手配中なので届いたら実験してみたいと思います。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
しかし、信号の確認はロジアナを使っており、波形を確認できていませんでした。
注文していた最大帯域250MHzのUSBオシロ(HANTEK6254BC)がやっと届いたので、今回は波形確認結果等を自分へのメモも兼ねて記載しておきます。
記録として画面キャプチャを多く貼り付けていて記事内容としてはあまり面白くないと思いますので最初にお断りしておきます。
前回の記事で書いたようにPICからのクロックを下図の回路でレベル変換してV20に供給するように改造しました。
レベル変換回路 |
|
Pic24V20ボード上のPIC出力のクロックとV20に入力されるクロックの波形を確認した結果が下図になります。
ch1(黄色)がPICからのクロック出力でch2(水色)がレベル変換後のV20へ供給されるクロック波形です(以降のシンクロ画面も全て同様)。
8MHzクロック波形 | 16MHzクロック波形 |
|
|
折角レベル変換したのに最大電圧が4V程度になってしまっていますorz
再度ブレッドボードで100KHzの信号を使って確かめてみるとトランジスタがoffするのに1.7us程度の時間がかかっている(この間、出力は3.3V)ことが判りました。
レベル変換入出力波形(100KHz) | レベル変換入出力波形(8MHz) |
|
|
そこで常套手段としてベース抵抗にパラでスピードアップコンデンサを付けてみました。
コンデンサの容量の目安としては
※参考 https://cc.cqpub.co.jp/system/contents/2430/
τ = CR
→ C = τ / R
= 1700n / 10K
= 170 [pF]
となるので手持ちの部品の中からマージンを加味して220pFで実験しました。
100KHzと800KHzの場合の波形が下図で100KHzでは想定通り立ち上がっているように見えますが、800KHzの方を見ると立上り時間が100ns弱掛かっています。
スピードアップコン追加後(100KHz) | スピードアップコン追加後(800KHz) |
|
|
コレクタのプルアップ抵抗を1Kから330に変更した結果が下図です。
8MHzの矩形波は私のシグナルジェネレーターの限界(矩形波の上限は6MHz)を超えているのでかなり鈍った波形になってしまっていますが変換後のクロックはかろうじて5Vまで達しています。
プルアップ抵抗1K⇒330(800KHz) | プルアップ抵抗1K⇒330(8MHz) |
|
|
元々の改善目標であった16MHzでの波形が下図で左は試しにプルアップ抵抗を660にした場合で、右側は330の場合です。
660の場合はV20へ供給するクロック(水色)の電圧がが3V程度までしか上がっていません。
強引に釣り上げている感はありますが330では16MHzでも5V付近まで上がっています。
プルアップ抵抗660(16MHz) | プルアップ抵抗330(16MHz) |
|
|
ブレッドボード上で試行錯誤するのも何なので文明の利器(シミュレータ)を使って確認してみましょう。
左はスピードアップコンデンサ無しでの50Hz矩形波の場合でトランジスタのoff遅れが1.5ms程度発生していてブレッドボードでの実測(1.7us)と大きく異なる結果になりました・・
右側はスピードアップコンデンサを入れた場合立上りが俊敏になっています。
スピードアップコン無し(50Hz) | スピードアップコン有り(50Hz) |
|
|
クロック1MHzで確認して見ると左下図のように出力が立ち上がらないのでプルアップ抵抗を330にしたものが右下図です。
スピードアップコン有り(1MHz) | プルアップ 1K⇒330Ω(1MHz) |
|
|
プルアップ330Ω側は出力が立ち上がりかけているので時間軸を長くして確認してみましたが出力が立ち上らない(左下)のでスピードアップコンデンサを10uFにしたものが右下です。
PullUp:330 SpeedUp:0.2uF(1MHz) | PullUp:330 SpeedUp:10uF(1MHz) |
|
|
試しにプルアップ670(左下)と1K(右下)の場合も立上りに時間がかかりますが5Vまで立ち上がっていました。
PullUp:670 SpeedUp:10uF(1MHz) | PullUp:1K SpeedUp:10uF(1MHz) |
|
|
立上り後の波形をズームしたものが下図で右側(プルアップ1K)の方は立上りが少し鈍っているのが判ります。
PullUp:670 ズーム(1MHz) | PullUp:1K ズーム(1MHz) |
|
|
最終目的のクロック16MHzでプルアップ330の場合のシミュレートが下図です。右側のズーム波形からはプルアップが強すぎる感もありますが前述のブレッドボードでの実験からは330の方が望ましいという結果が得られています。
PullUp:330(16MHz) | PullUp:330(16MHz) |
|
|
以上、ブレッドボードでの実験とシミュレータ(LTspice)での確認の結果について書きましたが、今回の作業で
- シミュレータでの再現性
今まで何度かシミュレータを使ったことがありますが、今回のように実験結果とかなり異なる結果が出たのは初めてです。
扱う周波数が高いことが主な原因かと思いますが、ネットからダウンロードしたトランジスタ(SS8050)のパラメータがランク別になっておらず少し怪しげでもあります。
- 実験環境
今回は新調した最大1GサンプルのUSBオシロを使ってみましたが数十MHzオーダーの波形が目で見えるのは素晴らしい!
シグナルジェネレーターの方は少し性能不足でしたが矩形波ならPICで出せよ(>自分)って感じですねw
最後に実機(Pic24V20)に実装した結果についてですが、スピードアップコンデンサ220pFを付加した場合の波形が下図です。
右側の16MHzの方はほとんどサイン波形になってしまっていますが、それよりも最大2V弱までしか上がっていません。
5Vにレベルシフトするための追加ですが逆にレベルダウンしてしまっていますorz
Pic24V20 SpeedUp:220pF(8MHz) | Pic24V20 SpeedUp:220pF(16MHz) |
|
|
スピードアップコンデンサを取り除き、コレクタのプルアップ抵抗を330Ωにした場合の波形が下図で右側の16MHzでも最高電圧が4Vを超えるようになりました(選別したV20でCP/M-86も動いています)
Pic24V20 PullUp:330(8MHz) | Pic24V20 PullUp:330(16MHz) |
|
|
今回のPICからのクロック供給に関して、ゲートICを追加すればすごく簡単なのですが、ゲートICの内部回路ではアクティブ素子が複数使われていて、これを1個のトランジスタで代用しようとすることがそもそも無理があるのかもしれません(でもこういう無理に挑戦するのも面白い)
また、FETを海外に手配中なので届いたら実験してみたいと思います。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
レトロマイコン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] [ 前へ ] 連載記事 [ 次へ ]
レトロマイコン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] [ 前へ ] 連載記事 [ 次へ ]