まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

SBCV20

SBCV20 16MHz動作への道

 V20/V30には16MHzで動作する高速バージョンのV20HL/V30HLというのがある。これをSBCV20で動かせないかやってみた。

 クロックジェネレータuPD71011Cは接続した水晶振動子の周波数をOSC(pin12)、1/2の周波数をCLK(pin8)、1/4の周波数をPRCLK(pin2)に出力する。uPD71011C-8は16MHz、uPD71011C-10は20MHzまでOKなので、16MHzの水晶振動子を使いOSC出力をCPUのクロックとして使い、1/2のCLK出力を周辺用のクロックにする。USARTは8MHz以上で動作するuPD71051C-10にし、ボーレートのクロックは以前SBCV20とクロックジェネレータでやったPIC12F1822により独立して供給し、システムのクロックに依存しないようにする。

 改造はパターンカットと配線2本。
(1) IC5: uPD71011Cのpin8(CLK)近傍とIC4: uPD70108のpin19(CLK)をカット。
(2) IC5: uPD71011Cのpin12(OSC)とIC4: uPD70108のpin19(CLK)を接続。
(3) IC5: uPD71011Cのpin8(CLK)とIC8: uPD71051Cのpin20(CLK)を接続。

※IC9: HC4040は外してPCI12F1822基板に差し替えているので(3)はショートしない。
※クロックの配線を両端でカットするのはアンテナになるのを防ぐため。

2021-02-17 02.15.17

 16MHz動作のメモリリードは2サイクル分で125nsなのでこれより速いROM/RAMを使用する。ROMはSTMicro M27C512-10F1、RAMはFUJITSU MB84256C-70Lに交換した。

 あと、あまり関係ないがSBCV20においてIC6はHC257の代わりにHC157が使える。

 さて、16MHzの水晶振動子を挿して実験。8080モードでのBASICは起動するがオーバーフローエラーが出てASCIIART.BASが止まる。起動時のメモリ表示も"031171 Bytes free"と先頭に0がついていておかしい。
スクリーンショット 2021-02-17 020808

 手持ちの14.31818MHzに落として実行。今度はうまくいった。ASCIIART.BASの実行に1分44秒。
だがこれはたまたま動いたことが後に判明する。
スクリーンショット 2021-02-17 021422

 さて、V20HLは16MHzまでOKなのに動かないのはおかしい。何が間に合ってないのか。このV20HL uPD70108HCZ-16は5個1000円くらいで購入したもの。外し品らしくピンには半田の跡。どうもあやしい。
 skyriver(@wcinp)さんの記事、レトロマイコン86ボードの構想(その22) 16MHz動作実験2 [8086] によるとリマーク品の疑いが。そこで残りの4個で動作確認してみると16MHzではBASICも起動しないもの、14MHzでオーバーフローエラーが出るものとおかしいものばかり。最初に引いたのがたまたま良品だったらしいのだが、これも再度14MHzで動作させると表示途中でオーバーフローエラーとなった。
 挙動を比較するため手持ちのuPD70108C-10、これはFM-11の改造用に新品を秋葉原で購入したものだが14MHzで動作させると他のものと同様のオーバーフローエラーが出た。ここから推測すると手持ち5個のV20HLはuPD70108C-10のリマーク品である可能性が高い。
 確認のためにV20HLを10MHzでASCIIART.BASを二時間連続で走らせると5個ともPASSした。
追記:12MHzでもPASSした。V20HLの12MHz品の可能性がある(はせりんさんより)

 LSIの動作周波数の上限を決めるものとしてクリティカルパスというのがある。内部の論理でいちばんタイミング的に厳しい部分が足を引っ張ってしまう。SBCV20のBASICは8080エミュレーションモードで動作していることを考えると、ノーマルV20の8080エミュレーションモードのどこかにクリティカルパスがありそうな気がする。
 また、V20は8088と差し替えクロックジェネレータも交換して12MHz動作でPCXT互換機を売っていた頃があるので実力でそのくらいで動きそうではあるが、残念ながら12MHzの発振子を持っていない。

 ということでこれ以上はV20HLの良品がないと確認できないのでどなたか挑戦してみてください。いちおう別のところからオーダーしてみましたが本物が来るかどうか……


skyriverさんのコメントを受けて写真追記:

uPD70108C-10 本物
IMGP3701
IMGP3702

uPD70108HCZ-16 ? (白字は私が書き込んだもの) ebay経由adeleparts2010より5個セット
IMGP3703
IMGP3704

uPD70108HCZ-16 16MHzでは動作せず12MHz OKebay経由CHIPS GATEより
IMGP3705
IMGP3706







SBCV20とクロックジェネレータ

 電脳伝説さんのSBCV20キットが発売になりました。

SBCV20専用プリント基板(オレンジピコショップ)

 技術資料とデータパックはそれぞれの商品説明のページにリンクされている。これによるとV20の代わりに8080を動かすためにはクロックジェネレータをuPD71011Cから8284Aに交換し、クロックを分周してUSARTの通信用クロックを作っている74HC4040のタップを切り替える。これは8088がデューティ比1:2のクロックを必要とするのでi8284Aが大元のクロックを÷3するため。V20は1:1のクロック入力でuPD71011Cは÷2。昔8086搭載パソコンにV30を差し替えるのが流行ったけどクロックジェネレータまでは交換してなかったのでタイミング的には実力で動いていた模様。

 さて8088は昨年秋葉原でなぜか新品と思われるものが店に並び、とある方から地方在住の私宛に送っていただいたので動かそうと思ったのだけど上記の変更に加え水晶振動子を14.7456MHzに交換しなければならない。これは準備していなかったのだがUSARTの通信クロックを独立させればと以前やった『SBC8080SUBボードのクロックをPICで』と同じ手を使った。

2021-01-24 17.57.02

 74HC4040の代わりに小基板をつけて、osc1536.hexをPIC12F1822に書き込み搭載。osc1536.hexについては『モトローラ6800伝説』とSBC6800ルーズキットを参照のこと。

 配線はこちら。
2021-01-24 19.38.25

 PIC12F1822をICソケット経由で実装するとすぐ下になる抵抗とダイオードに干渉するけどちょっと浮くだけだしまあいいか。
2021-01-24 17.58.04


 さて、これでよかろうと動作確認してみたら文字化け。
2020-12-30 12.19.48


 クロックは周波数カウンタで確認してちゃんと出てるけどなんでだろうか?


 これはクロックジェネレータがバイポーラかCMOSかの違いで水晶振動子の両端を抵抗でGNDに落とすか10pFのコンデンサで落とすか処理が異なっていたのが原因。これは知らなかった。

 データシートを見るとバイポーラの8284Aだと510Ωの抵抗で水晶振動子の両端をGNDに落としている。
スクリーンショット 2021-01-24 18.55.54

 このあたり気になったのでFM-11の8088カードで確認したら同様だった。ただしVccにつなぐ30pFのコンデンサはなかった。

 SBCV20基板の10pFコンデンサの足をカットし、裏面に抵抗(680Ω)を付けて動作OK。
2021-01-24 17.57.17

2020-12-30 22.07.36



UPD71011データシート(renesas)を見るとコンデンサで処理してある。8284Aと動作が同じuPD71084を使う場合はCMOSなのでuPD71011Cと同様にしなければならない。

参考:V20/V30の周辺デバイス(Electrelic)









記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ