2020年12月14日

レトロマイコン86ボードの構想(その25)回路図アップデート

 前回の記事までの評価で16MHzのクロック信号の3.3Vから5Vへの変換回路が決まったので回路をアップデートしました。

 結論を先に書くと、今回のクロック部分の改造したプリント基板で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] [ 前へ ] 連載記事 [ 次へ ]
posted by skyriver at 17:56| Comment(0) | 8086 | このブログの読者になる | 更新情報をチェックする

2020年11月02日

レトロマイコン86ボードの構想(その24)16MHz動作実験4

 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側に接続されている状態が発生しています。

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] [ 前へ ] 連載記事 [ 次へ ]
posted by skyriver at 13:34| Comment(5) | 8086 | このブログの読者になる | 更新情報をチェックする

2020年10月04日

レトロマイコン86ボードの構想(その23)16MHz動作実験3

 前回の記事でPICから選別したV20へ供給しているクロックをトランジスタでレベル変換してV20が16MHzで動いたことを書きました。
 しかし、信号の確認はロジアナを使っており、波形を確認できていませんでした。

 注文していた最大帯域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] [ 前へ ] 連載記事 [ 次へ ]
posted by skyriver at 07:50| Comment(0) | 8086 | このブログの読者になる | 更新情報をチェックする