エントリー

ユーザー「gshoes」の検索結果は以下のとおりです。

GPSDOで手に入れる高精度クロック[製作編]

  • 2016/08/10 16:17
  • カテゴリー:make:

20160816092655.JPG

 GPSDOの続き,今回は回路の検討から製作までです。 

 基本的な話はトラ技に書いてあるとしても,やっぱり実際に作って見て,動かしてみないと,どうもイメージが掴めません。

 周波数のズレというのは,欲しい周波数からどれだけずれているかというものと,経年変化で徐々にずれていくものは想像しやすいのですが,ある周波数を中心にしてゆらゆらと揺らいでいるものもあり,これらがちゃんと区別出来るようになるのは,それが実際の測定結果の違いであるとか,実際に怒る現象のどう反映されるのかが頭の中で繋がっていないとダメだと思います。

 周波数のズレ,経年変化,ゆらぎはそれぞれ別の物ですので,排他ではなく,すべて同時に独立して起きるものです。そして,それぞれが引き起こす現象も異なります。

 例えば,時計を動かす基準クロックの周波数を考えてみます。基準クロックを使って1秒を作り,これを数えて時計は動いています。

 この基準クロックの周波数ズレは,時計の狂いとして表面化し,しかもそれは一定の割合で蓄積していきます。一日1秒の遅れがある時計は,10日で10秒遅れるわけです。

 では経年変化はどうでしょう。これは言葉通り,時計の経年変化による狂いの変動をに現れます。一日1秒の送れがある時計が,10日で100秒遅れたり,逆に10秒進んだりします。

 最後の揺らぎですが,これがなかなか気付きにくいです。揺らぎですので,フラフラと周波数が変動するのですが,揺らぐ範囲が規定されていれば,ある瞬間は進んでいるけどある瞬間は遅れている,そして長い時間で平均すればある値に収束するというものです。

 きちんと合わせた時計が,12時間後に見ると10秒遅れていました。さらに12時間後に見ると,ぴったり狂っていませんでした。この場合,1時間ごとに時計を見るともっと細かく,ゆらいだ状況がわかる訳ですが,逆に24時間に一度しか時計を見ないなら,なんと正確な時計か!と腰を抜かすことになるわけです。

 これ,長い範囲で考えれば揺らぎはないことになるし,短い範囲で見れば揺らぎは大きく見えてきます。範囲をどんどん短くし,限りなくゼロにして・・・なんてことを言い出すと,どっかで聞き覚えのある微分の考え方になってきますし,人によってはサンプリング定理を思い出す人もいたりするかも知れません。

 なにせ,短時間では減ったり増えたりを小刻みにしていても,平均を取れば,そしてその平均もたくさん(長時間)取れば取るほど,ある値に収れんしていきます。

 一番わかりやすいのは,家庭に来ているAC100の周波数でしょう。西では60Hz,東では50Hzですが,これはいつもぴったり50Hzになっているわけではなく,ある瞬間は49.95Hzかもしれないし,50.02Hzかもしれないんですが,一日平均でちょうど50Hzになるように,調整をしています。

 一日の平均としては非常に高い精度を持っているそうで,こうした商用電源周波数を基準に持つ時計がちっとも狂わないという経験は,この種の時計が全盛期だった40年ほど前を知る方には,よく記憶がおありでしょう。

 長くなりましたが,こういう話も実際に作って見ればはっきり区別出来るようになります。うん,これはとりあえず作って見ましょう。


・回路検討

 マイコンやDSPを使わずに,アナログのPLLで構成された回路は一見するとややこしそうで,実は簡単です。でも簡単なようで,1つ1つの常数に深い深い意味があり,実装によって性能が左右するのも,またアナログの世界です。

 私は,設計者の意図を尊重し,まずは素直にモノマネすることにしました。ただし,回路も常数も「そうなっているから」ではなく,どうしてそうなっているかを考えた上で,モノマネさせて頂く事にします。


・部品集め

 この回路はアナログですが,アナログ回路というのは得てして部品の性能に依存して設計を行うものであり,部品が手に入らないとモノマネすら出来ないという難しさがあります。

 まずGPSモジュールですが,1PPSではなく10kHzが高精度で出てくるものであり,かつ高感度,高精度なものである必要があります。加えて安価でなければ手が出ません。記事にあるように,u-bloxのNEO-6Mを使ったGPSモジュールが,aitendoで安価に売られていましたので,これを買って使うことにしました。

 アンテナは屋外に出さないと厳しいのですが,本格的な物は高価ですし,そもそも設置が大変です。そこで,カーナビようのアンテナを中古で数百円で入試し,コネクタをSMAに交換して使うことにしました。一応トヨタ純正です。

 次のキーパーツは,OCXOです。これまで書いたように,OCXOは揺らぎ成分を担保する最重要部品であり,はっきり言えばGPSDOの揺らぎは,このOCXOの性能がそんまま出てくるといってもよいです。

 ですから,非常に高価なダブルオーブンのOCXOを使う物なのですが,私は偶然,以前購入した電圧制御可能なOCXOが,実力でなかなか揺らぎがないことを確かめたあったので,これを使うことにしました。

 購入先の話を聞くと,もともとメーカー製のGPSDOに使われていたOCXOを外したものらしく,それならGPSDOにぴったりじゃないかと,そういうお話です。でも素性がはっきりしなかったこともあり,4000円弱で手に入りました。GPSDOに使える電圧生業OCXOとしては半額以下だと思いますが,うまくいくかどうかは試して見ないとわかりません。

 幸い,1.6Hz/1Vくらいの周波数変化率でもありますので,今回の記事で使われているものとほぼ一致しています。回路変更も必要ありません。

 難しい部品はこのくらいです。500uAのラジケーターなんてのはどこでも買えますし,使っているICも一般的で安価な汎用品です。

 出力波形を正弦波にし,しかも接続機器と絶縁するための回路の規模が結構大きく,部品もトランスやFETに入手が難しいものがあり,いろいろ検討してみましたが,私の用途ですと矩形波でも絶縁していなくてもあまり関係なさそうだったので,そのまな出力することにしました。

 電源は,本当はトランスで作ったリニアレギュレータがベスト何でしょうが,ずっと通電して機器ですのでちょっとした効率がきいてきます。そこで15VのスイッチングACアダプタを使い,基板ごとにローカルで用意したLDOを通して,電源の質を維持するようにしています。


・オリジナルな要素

 GPSモジュールが衛星をきちんと補足し,常に精度が維持されていれば,出力もPLLでじっくり時間をかけて,高精度で出てくるでしょう。しかし,衛星を補足し損ねた,あるいは停電があった等で精度が出ていない10kHzがGPSモジュールから出力されることは十分に考えられます。

 しかし,そうした精度が落ちた事実はGPSモジュールからのログを見ないと分からず,しかも24時間以上の時間をかけて,ゆっくりゆっくり揺らぎを除去していくのですから,現在出ている10MHzのクロックの精度がどの状態にあるのか,分からないことになります。

 さすがにそれは不安ですし,いい勉強なりますので,GPS時計を作った経験を生かし,GPSモジュールのステータスモニタをAVRtiny2313で作ります。LCDはグラフィックタイプのAQM1248Aを使って,小さな画面にたくさんの情報を出せるようにしましょう。

 NMEAセンテンスをデコードし,現在の日時と衛星の補足数,測距モード(無効,2D/3D,DGPS),そして衛星を補足し損ねてモードが無効となった回数を数えたカウンタを表示します。

 また,初回起動時には,画面右上に*を表示ししました,これは停電の検出です。停電をすれば,復帰しても衛星の再補足後から24時間以上経過しないと,所定の精度が得られません。

 ですので,この*が表示されていれば,停電が起きたことがわかります。

 そして,このマークを消し,かつ衛星を補足し損ねた回数のカウンタをリセットするボタンを1つ用意します。起動後,衛星を補足してからこのボタンをおしてやれば,画面に*が出ていれば停電を,カウンタの数が0以外になっていれば衛星を補足し損ねたと,分かります。そこから24時間経てば,悪くとも精度が出ていると考えていいわけです。

 あと,場合によっては出力の周波数に1MHzが欲しい時があるかも知れません。そこでデューティが50%になるように,HC390の配線を変更しました。10進カウンタとしてどうさせるのではなく,5進カウンタにバイナリカウンタをカスケードして,バイナリカウンタで50%デューティにするという回路です。

 ここから1MHzを引っ張り出すことができます。

 もう1つ,実は私が持っているAG1022というファンクションジェネレータは,供給する外部クロックとして20MHzが指定されています。10MHzではダメなんですね。

 そこで,Si5351Aを使って,20MHzに逓倍する回路を追加しました。実は,通電直後に電源とGNDがショートし,それがSi5351Aの破損によって起こるという大問題が発生し,SI5351Aを2つも壊してしまったのですが,原因が分からず,3回目の交換で正常動作するようになってしまったので,謎のままです。

 こういうのって本当に気持ちが悪いのですが,動いてしまったので確かめようがありませんし,ICの交換も大変,しかも安いとは言え1つ150円しますので,もう結果オーライにします。ああ,こういうあきらめ方って。何年ぶりだろう。

・PLLの考察

 GPSからの10kHzには、数mHz以下の揺らぎが入ってきます。これをローパスフィルタで除去(つまり積分器で平均化)することで,PLLが揺らぎに追従しないようにするのが,GPSDOのミソです。

 では,その揺らぎはどこで防ぐかというと,前述のようにOCXOというもともと揺らぎの少ない部品の力で確保します。

 なら,このローパスフィルタのカットオフはどうなっているのでしょう。LTSpiceでシミュレーションしてみると,10mHzで-3dBでした。また,リークの対策として,100mHz以上の周波数をさらにカットするフィルタも入っています。


・製作

 私はどんな回路でも,自分で一度書き直します。自分の流儀に出来るので,製作中にさっと見るときの読解力に差が出ますし,一度書き直すことで回路の隅々まで理解するチャンスが得られます。

 今回もそうしました。また,ケースは小さい物にしましたので,基板もギリギリの高密度実装です。大きめの基板にはOCXOと4046,そしてOP-AMPをのせました。もう1枚の小さい基板にはGPSモジュールと分周器をのせました。

20160816153545.JPG

20160816153546.JPG


 LCDとマイコンはフロントパネルに取り付けるので別基板にしました。
20160816153547.JPG
 製作そのものはあんがすんなり出来ました。バラックで動かしてみると,あっさり動いてしまいました。1E-9くらい出ていると思われる別のOCXOをリファレンスに入れた53131Aで測定してみれば,その安定度はよく分かります。

 ケースに穴を開け,ギリギリのレイアウトで押し込みます。フロントパネルはいつものようにステッカー自作キットを使いプリンタで印刷して用意します。今回は手に入ったラジケータがVUメータでしたしので,このままでは格好が悪く,シンプルなセンターメータの目盛板も印刷することにしました。なかなか綺麗に仕上がりました。



 長くなりました。結果は後日。

GPSDOで手に入れる高精度クロック[考察編]

  • 2016/08/09 16:19
  • カテゴリー:make:

20160816092537.JPG

 GPSDOを作りました。

 GPSDOとはGPS Disciplined Oscillatorの略でして,GPSによって統制された発振器,GPSを基準に常に調整される発振器のことを言います。

 GPSの衛星には原子時計が搭載されています。すべての衛星の原子時計は完全に同期していることが前提で,複数の衛星を受信機が地上でとらえた場合の,各々の衛星の時刻のズレから,地上での位置を特定するのがGPSの仕組みです。

 当然,時刻の精度が位置を特定する精度に直結するわけで,例えば時計が僅か100nsずれただけでも,測距誤差は30mにもなり,これでは役には立ちません。

 ですから,実用上数mの誤差でなければならず,そうなると時計の精度は10nsくらいのズレに押さえないと厳しいのです。

 衛星に搭載されている原子時計にもいろいろありますが,概ね10-12くらいの精度があるとされています。すべての衛星がこの精度で,完全に同期しているというのもすごい話だと改めて思うのですが,残念な事にこの時刻情報が衛星から電波で届く途中で電波が揺らいでしまい,10-8程度の精度に落ちてしまうと言われています。

 みなさんも,スマートフォンのGPSで,現在地を表示させたことがあると思いますが,その時,現在地の表示がふらふらと数メートルの範囲で動いているのを見たことがあるかも知れません。

 この,フラフラと動いてしまう揺らぎが,宇宙空間を飛んで来る間に生じた揺らぎだと思って間違いないです。電波は光の速度と同じ30万km/秒の速度ですから,10ns程度のゆらぎがあると,3mくらいフラフラ動いて見えると言うわけです。

 さて,私は先日,HP53131Aという周波数カウンタを手に入れました。非常に高性能で,さすが定番と思わせるカウンタゆえに,自作の8桁カウンタは愛着があったにもかかわらず引退を余儀なくされたのですが,レシプロカル方式の高速性と,桁数の多さから,リファレンスクロックの精度が問題になってきました。

 リファレンスクロックが例えば10-6のTCXOとすれば,7桁目から下は値が信用出来ませんし,フラフラと変動してしまいます。ゲートタイムが1秒とか10秒ならそうした変動も丸め込まれるので表面化しませんが,0.1秒くらいのゲートタイムで8桁が表示出来るカウンタだと,本当にフラフラ動くのがわかります。

 そこでOCXOのような,10-9くらいのリファレンスを用意することになるのですが,揺らぎはこれでそれなりに押さえられるとしても,そもそもの周波数が正確な物になっているは限りません。10MHzのリファレンスが欲しいのに,11MHzで安定されても全く意味がありません。

 なので,正確な周波数であり続けること,そしてその周波数から変動しないこと,が高精度な発振器には求められるというわけです。

 こうした高精度な発振器が必要なシーンは,例に挙げた測定器の基準として欲しくなることがありますね。

 他には正確な時計です。1ppmという聞けばとても高精度な発振器のように聞こえますが,これを使って時計を作っても11日で1秒もずれてしまいます。3年で1秒という今は普通の時計の精度を出そうとすると,実に0.01ppmという精度が必要になるのです。

 ちょっと変わったところで,オーディオの高音質化があります。デジタルオーディオは,一定の時間間隔で音を数値化て録音と再生をしていますから,その時間間隔がずれたり揺らいだりすれば,元の音を再現出来ません。これがオーディオで発振器の精度を高める動機になっているのですが,マニアには原子時計を導入している人もあると聞きます。すごいですね。

 波形が変化することは間違いないので,それが分かるほどの高精度なアンプやスピーカーがあり,聞き分ける耳があるなら,間違いなく高音質化に貢献する物です。このあたり,わかりにくい事でもあるのでオカルトっぽく聞こえると思いますが,ある程度は事実として認めてもいいんじゃないかと私は思います。

 さて,こうした精度の話を急にしても,なかなかピンと来ないものです。そこで,わかりやすい「不確かさの目安」を書いておきます。

10-5        0.003年(1日)で1秒 普通の水晶発振子,10ppm
10-6        0.03年(11日)で1秒 TCXO,1ppm
10-7        0.3年(3.6ヶ月)で1秒 OCXO,0.1ppm
10-8        3年で1秒 地球の自転周期
10-9        30年で1秒
10-10        300年で1秒 地球の公転周期
10-11        3000で1秒
10-12        3万年で1秒
10-13        30万年1秒 ルビジウム原子時計
10-14        300万年1秒 セシウム原子時計
10-15        3000万年1秒 一次周波数標準の原子時計

 3万年に1秒といわれてしまうと「なんかわからんがすごい」となってしまいますが,こうして冷静に数字を並べてみると,割に現実味が出てくると思いませんか。また,1ppmというと「百万分の一」で,これも慣れていないとイメージが沸かないものですが,前述のように10日ほどで1秒狂ってしまうほど,いい加減な物だとわかると思います。

 意外なところで,地球の自転周期が10-8,公転周期は10-10と,なかなか高精度なことに驚かれたかも知れません。私は驚きました。やはり地球は大きいし,宇宙は大きいのです。我々人間がいかにちっぽけな存在か,思い知りました。

 こんな感じで,高精度なクロックが欲しいなあと考え出すと,そこらへんのTCXOやOCXOなんかでは全然物足らず,目指すは原子時計ってな話になるのですが,初期投資も維持費も(普通は)個人でまかなえるものではありませんし,しかも寿命が避けられず,いずれダメになってしまいます。

 これらを個人で持つのはやはり非現実だとわかったところで,やっぱり正確な時刻を維持して,かつ揺らぎのない時計が欲しいことには変わりません。

 そうだ,GPSがあるじゃないか。

 GPSは冒頭に書いたように,すべての衛星に原子時計が搭載されており,すべての衛星が同じ時刻で同期しています。これを使えば手元に原子時計などなくとも,原子時計レベルの精度が手に入るじゃありませんか。

 ところが,これには問題が2つあります。

 1つは,GPSで得られる情報は基本的には時刻であり,得られる周波数は1秒に一度,つまり1Hzのパルスだということです。

 もう1つは前述の通り,宇宙空間を飛んでくるときに精度が落ちてしまい,10-8くらいになってしまうという問題です。せっかく10-12レベルなのに,4桁も落ちるなんて・・・

 しかし,この2つを解決すれば,どこでも原子時計が実現します。それがGPSDOなのです。

 GPSDOを実現するには,こんな風にします。

(1)1Hzを変換する

 基準クロックとして測定器やオーディオ機器に供給する周波数が,1Hzであることはほとんどありません。多くは10MHzや1MHzですから,1Hzを10MHzに逓倍することになります。逓倍と言えばPLLです。

(2)揺らぎを押さえる

 揺らいでいるとはいえ,ある周波数を中心に揺らいでいると言うことですので,長い時間の平均を取れば,ある周波数に収束します。別の考え方をすると,1秒に対して10nsの揺らぎがあると,パルスの出るタイミングが少し早かったり少し遅かったりするので,1Hzのパルスの数は1秒に1個かも0個かもしれませんが,100000000秒のパルスの数は100000000個です。長い時間をかけて数えるほど,どんどんタイミングのズレが薄まっていくのです。

 もうちょっと計算すると,1秒のパルスの精度が10-8だとしても,1000秒なら単純に10-11にまで精度があがります。

 しかし,これでもまだ問題はあります。

 PLLを使えば確かに1Hzを10MHzにすることが出来ますけど,基準周波数とVCOの発振周波数を比較するチャンスが1秒に1度になってしまうので,なかなか精度が出ません。それに,GPSで作った基準周波数は揺らいでいますので,この揺らぎに追従してしまうと,10MHzにも同じ程度の揺らぎが入ってきてしまいます。

 そこで,数Hzから数mHzの揺らぎをカットし,これには追従しないようにPLLのロープフィルタを作ります。でも,そうしてしまうと,揺らぎ成分がPLLでロックされなくなりますから,VCOの揺らぎがそのまま出てきてしまいます。

 なら,VCOに揺らぎが少ないものを選べばいいわけです。長い周期の揺らぎはVCOの性能でカバーするという作戦です。

 比較するチャンスが1秒に1度になってしまう問題は,GPSモジュールの性能に頼りましょう。少々ずるいのですが,市販のGPSモジュールには,外部へのタイムパルスの周波数をユーザーが設定出来る物がたくさんあります。

 どんな周波数でも出力出来るようなのですが,基本的に1秒に一度のタイムパルスしか飛んでこないGPSで,他の周波数を作って出すのですから,周波数によっては精度が悪い物もあります。

 先人達は,u-bloxのNEO-6MというGPSモジュールにおいて,10kHzの出力なら非常に高精度であることを突き止めてくれました。10kHzを基準にするのであれば,PLLで10MHzを作る事はそんなに難しいわけではありません。

 この話,既にお気づきの通り,トランジスタ技術2016年2月号に掲載されたGPSDOの製作記事そのままです。これをお書きになった加藤OMはデジタルからRFまで高い技術をお持ちの方で,GPSDOのシステム全体のまとめ方には,思わず唸ってしまう程の見事さがあります。

 私がオリジナル回路で勝負したり,はたまたオリジナル要素を組み込んだりしても,このシステムに並ぶことは無理でしょう。素直にトレースして,GPSDOの世界を探求してみることにします。

 製作編に続きます。

PC-1500のRTCが動かない

 PC-1500のレストアが終わって,ここしばらく様子を見ていたのですが,どうもリアルタイムクロックの調子がおかしいようです。

 恥ずかしながら,私はPC-1500にRTCが入っていることを,手に入れるまで知りませんでした。それも,NECのuPD1990という,本物のRTCです。

 まだクオーツ時計がそれなりに高価でだったあの時代に,ポケコンの中身にそれと同じ(カレンダーまで入っているのだからそれ以上かも)ものがひっそりと入っているのですから,私は正直驚きました。

 これが,ディスクベースのマシンなら,タイムスタンプを記録するためにRTCは必須とも言えるわけですが,CMOSのSRAMによるバックアップで,電源ONですぐに動作するというポケコンの特性から考えると,RTCなんかどこで使うのよ,と思ったりします。

 1981年に発売になった機種で,同じ時期にPC-8801やMZ-80Bが登場しているわけですが,ちゃんとした8ビットのCPUに大容量メモリ搭載可能,フルスペックに近いBASICを装備し,狭いとはいえグラフィック可能なディスプレイも内蔵し,電池で長時間動き,プログラムはバックアップされている,RTCまで持っていて,オプションで4色のプロッタプリンタまで用意されている,そんなマシンが当時59800円で売られていたというのは,かなりお買い得だったのではないかと思います。

 もっとも,当時の私は子供でしたから,59800円あれば一生遊んで暮らせると思う以外,想像する事すら不可能な大金でしたので,PC-1500も全くリアリティがなく,自動車や家と同じレベルで見えていました。

 実際PC-1500を使ってみると,ポケットには入らないだろうと思われる大きさもそんなに悪いものではなく,キーボードも使いやすく,ディスプレイも1行とはいえ,十分な情報量を持っています。単三電池で動くというのもなかなかよいです。

 これがPC-1600KやPC-E200なんかになると,画面が大きすぎて,ちょっと私は慣れないです。ポケコンはやっぱり1行表示に限る。

 まあ,そんなことはどうでもいいんですが,そのレストアしたPC-1500,壊れていないか気になって電源を入れ,「TIME」と入力してRTCを読み出すことをやるんですが,ある日ゼロを返してきました。

 PC-1500のRTCは,TIMEという変数を介してやりとりされます。書式は,MMDDHH.MMSSというちょっと変則的なものです。マイクロソフト系のBASICだと,TIME$という文字変数を介することになるのですが,これは日付の区切りである/や,時刻の区切りである:を含んでいるからで,.を1つだけ使って区切ってあるなら,文字変数である必要はありません。

 ですが,返ってくる数字は0。おかしいです。しまいになにも表示されず,ダンマリになることも出てきました。リセットをすると治ることがあるのですが,それも駄目になってきました。

 ダイレクトモード(RUNモード)ではダンマリになる場合,プログラムでTIMEを使うとエラーで止まってしまいます。これはいよいよおかしいです。

 面倒でしたが,早速原因を確かめるために分解です。時々0を返すという症状から,常に0しか返ってこない,と言う深刻な状況になっていましたので,とりあえず目視で配線を確認します。

 以前交換したPIOの足に浮きのようなものがあったのでこれを修正しますが治りません。波形を見ますが,中間電位も出ていませんし,TIMEと打ち込んだときにはパラパラと波形に変化も出ています。おかしい。

 こうなってくると,uPD1990の破損という話も視野に入れねばなりません。あれこれ考えるのも面倒ですので,もう1台のPC-1500のuPD1990と入れ替えてみます。

 交換作業を手早く終え,電源を入れてみると治っています。日時のセットも出来ますし,読み出しも問題ありません。もし,RTCが壊れていたというのであれば,もう1台のPC-1500はRTCを読み出せないことになりますが,やってみたらちゃんと動きます。しかも前のPC-1500で設定した日時がそのまま残っていました。

 短期間で判断するのは難しいですが,おそらく基板のパターンか,ハンダ付けの不良などがあったのではないかと思います。ICの交換でそれがうまくおさまったということだとすると,またいずれ同じようなことがおきるのではないかと思います。

 どっちにしても,35年も前のものですので,なかなか厳しいなあと改めて思いました。特に程度のいい方のPC-1500はROMのバージョンから最初期型と判明しましたし,壊れても仕方がないというか,後どれくらいつかえるものか,さっぱり見当も付きません。

 まあ,またしばらく様子を見ることにしましょう。


 

ポケコンGo!

20160725151846.jpg

 前回までのあらすじ~

 満身創痍でやってきたPC-1500の命を「神の手」を持つ天才外科医G-SHOESが救う。とても30年を経過したとは思えない美しい肢体に心を奪われたG-SHOESは,その中身をみて戦慄する。

 むしばまれた内臓はすぐに手術が必要だった。

 長時間にわたる手術は驚くほど順調に進んだ。終盤を迎え,いよいよ縫合と言うとき,「神の手」がほんの少しぶれてしまった。G-SHOESに悪い予感が走るが,立ち止まらないのが天才外科医だ。

 やがて何事もなく手術室を出るPC-1500。誰もが手術の成功を疑わなかった。

 しかし,麻酔から目覚めたPC-1500は,もはや元のPC-1500ではなかった。それまで動いていた,キーが動かなくなっていたのだ。

 緊急再検査。結果はCPUと同じくらい大事なPIO,LH-5811の破損とわかった。そう,手元が狂った時に,LH-5811を傷つけてしまったのだ。

 痛恨の失敗に悔やむG-SHOES。そして無邪気に微笑むPC-1500。一体どうすれば・・・彼女の命を救うには,もはや臓器移植しかない。

 しかし,非常に特殊なLH-5811はほぼ入手不可能。かといってすでに存在自身が貴重となったPC-1500を,別のPC-1500を生かすために壊すなど,許されることではない。

 知り合いのエージェントからもたらされた情報によると,LH-5811はなぜかオーストラリアに存在することが分かった。だが,費用や支払い条件など,その高い壁に断念せざるを得なかった。

 どうする,G-SHOES?

 そんなある日,LH-5811の機能の一部を肩代わりする,人工臓器の開発のアイデアを持ち込んだ男がいた。彼との共同開発に一条の光を見いだしたG-SHOESは,家族を顧みず,寝食を忘れて開発に没頭した。

 G-SHOESの体力が限界を迎えるその直前,ようやくプロトタイプが完成,PC-1500は組み込み手術を待つ。

 翌日の手術を控え「死にたくない」とつぶやくPC-1500。

 しかし,神の手は彼女の命に届かなかった。目覚めたPC-1500を待っていたのは,相変わらずキーが効かないという,残酷で正直な現実である。

 G-SHOESは病院を追われ,地位も名誉も家族も捨てた。

 あきらめられない・・・隣で寝息を立てる美しいPC-1500を見ては,いつか復活させると心に誓うのであった。

 そんなとき,突然ドナーが現れた。専用のプリンタCE-150である。CE-150はLH-5811を搭載するプリンタであるが,内蔵の充電池の液漏れにより,最後は壮絶な死を遂げることで知られている。

 幸か不幸か,こうして電解液まみれで,すでに復活不可能なCE-150が目の前にいる。

 手術開始・・・

 直ちに緊急手術が行われた。CE-150から基板が取り出された。すでに腐食が進み,どうしても復活させる手段はない。LH-5811を慎重に取り外す。手が震える。

 次にPC-1500のLH-5811を外す。すでに壊れたチップには未練はない。基板だけとにかく壊さないように,細心の注意を払って作業する。

 そして,いよいよLH-5811の移植。寸分の狂いもなく,もとの場所に収まったLH5811を見て,G-SHOESは安堵した。電源の投入,よし,キーボードは正常だ。

 そして,このCE-150に抱きかかえられた,もはや動かないPC-1500からLCDも移植され,長きにわたる手術は終了した。

 病室で目覚めたPC-1500は,それまでの故障がウソのように,元の姿を取り戻したのだった。

 ----

 なんかあらすじが長くなってしまったわけですが,PC-1500の分解掃除とLCDの修理を行った終盤に,不注意でLH-5811を壊してしまい,外部に同じ働きをする回路を考えて取り付けてみるも見事に失敗,結局壊れたCE-150からLH-5811を取り出して交換し,どうにか元の状態まで戻しました,というのが,前回までのお話です。

 さて,PC-1500はPC-1501と違い,搭載メモリが非常に少ない機種です。内蔵されているRAMは,16kビットのSRAMが1つと,4kビットのSRAMが2つ,これに加えてLCDドライバ内蔵のVRAMが512バイトのみで,合計は3584バイトに過ぎません。

 ここからVRAMやワークエリアとして1734バイトを差し引いた1850バイトがフリーエリアです。「MEM」と打ち込んで出てくる数字がこれです。

 わずか1.8kバイトというのは,もうどうにもならないくらい少ないように思うわけですが,そうはいってもPC-1245など1486バイトですし,割り切ればなんとかなる容量ではあります。

 ただ,PC-1245と違い,PC-1500は高機能,多機能な上位機種ですから,メモリがネックになってその性能が生かせないという事になってしまうと,残念な商品になります。

 しかし,当時16kビットのSRAMというのは非常に高価で,私の記憶でもZ80の2倍ほどの値段で売られていたと思います。SRAMの4倍の容量が同じ世代のDRAMなので,当時超LSIと畏敬の念を持って奉られた64kビットのDRAMと同じ最先端だったことを考えると,さもありなんというところでしょう。

 ですから,16kビットのSRAMを複数搭載することはどうしても出来ず,旧世代の4kビットを搭載することでなんとかしたのがPC-1500でしょう。メモリ拡張用のスロットも用意したので,あとはこっちでよろしくね,と言うことなんでしょう。

 しかし後年16kビットのSRAMを4つ搭載したPC-1501が登場していることを考えると,いくらなんでもこの性能のコンピュータで1850バイトは少なすぎたという事です。

 PC-1500のメモリスロットは1つだけです。ここに増設出来るRAMは16kバイトまでですので,合計19.5kバイトというのが公式の最大メモリです。

 しかし,そこはもうちょっとシンプルに考えてみましょう。PC-1500のCPUであるLH-5801は8ビットCPUで,16ビットのアドレスバスを持ちます。ゆえに直接扱えるメモリは64kバイトです。Z80なんかと同じで,I/O空間には別の16ビットが割り当てられますので,最大128kバイトまで直接扱う事が出来ます。

 メモリマップを見ていると,7600hから77FFhまでの512バイトがLCDドライバに割り当てられている以外は,特に他に割り当てられているデバイスもなく,RAMのエリアとして扱われているようです。

 なら,0000hから7FFFhまでの32kバイトをとりあえず256kビットのSRAMで埋め尽くし,LCDドライバだけアクセスを分けるようにすれば,面倒な事を考えないでメモリを最大に出来るんじゃないか,そう考えたのです。

 こうすれば,アドレスのデコードも簡単にできそうです。

 考えた回路は,HC139を使い,2つ目のデコーダでスタンバイモードを示すBFOをGに,AとBにはA15とME0を入れて,0000hから7FFFhのデコード信号を作ります。

 そして,これをもう1つのデコーダのGに入れ,AとBにはLCDドライバのCSをいれて,25kビットSRAMのCEを作ります。これならデコーダもワンチップで済みます。

 あとは,4kビットと16kビットのSRAMを基板から外してしまい,16kビットの代わりに256kビットのSRAMを取り付けて,配線を少々変更するだけです。

 作業はそんなに大変でもなかったのですが,4kビットのSRAMがDIPの大きなパッケージを強引に緬実装にしたものなので,作業はなかなか難しいものでした。

 ドキドキしながら電源を入れますが,電流は動作時最大の電流で流れています。画面には何も出ませんし,動いている様子もありません。失敗です。

 回路図と配線を再度確認すると,ミスが1つ見つかったのでこれを修正。しかしやっぱり状況は変わりません。ただ,アドレスバスの波形を見ると,明らかに変化があります。なんだか動きそうな波形です。

 とはいえ,回路にも配線にもミスはなく,案外簡単に万策尽きてしまいました。

 ということは,元々の考え方にミスがあったのかも知れません。あるいは,すでにどこか別の場所を壊してしまったのかも・・・嫌な想像がグルグルまわります。

 しんどいなあと思いながら,,もう一度配線ミスを確認しようとテスターを当てていくと,なにやらA5がVCCとくっついています。もしやと思いよく見ると,やはりA5がショートしています。

 ショートしているように思えた部分を綺麗にしてやると,ありがたいことにA5のショートがなくなりました。電源を入れると無事に起動します。やったー!

 早速NEW0,MEMと入力すると,28474と返ってきます。

 おお,27.8kバイトです。どうやらうまくいったようです。

 簡単なメモリテストを走らせて,多分大丈夫という所まで来て,この数字が妥当かどうかを考えてみました。

 まず,PC-1500が使うワークエリアとLCDのVRAMは,前述のように3584-1850で1734バイトです。これが必ず差し引かれます。なお,7C01hの1バイトもBASICのワークエリアになっているので,この1734バイトのうちに含まれています)

 さらに,7C00hから7FFFhまではBASICでは使用できないエリアです。ここが1024バイト。そして7000hから75FFhの1536バイトも使用できないエリアとなっています。

 ということで,32768-1024-1536-1734=28474バイトです。

 逆算してみましょう。0000hから6FFFhまでは4096*7で28762バイト。これにVRAMの512バイトを加え,さらに7800hから7C00hまでの1024バイトを足して,ここから1734バイトを引けば,28474バイトです。当たり前ですが,一致しています。

 実質的に,これ以上のフリーエリアを確保することは無理なはずで,BASICがそのまま扱えるエリアとして最大拡張したと言ってよいと思いますので,これで増設は成功したと考えてよいです。

 
 さて,このCE-150にはPC-1500本体も一緒に付いてきたのですが,電源を入れても動きませんでした。正確に言うと,画面にゴミが出たり,おかしなビープがなり続けたりと,正常に動作しなかったのです。

 見れば,CE-150から漏れ出た電解液がPC-1500の基板にも派手に染み込んでおり,パターンの腐食も出ている有様です。これはなかなか大変です。

 幸いLCDは無傷でしたので,この個体からLCDを取り出し,メモリ増設を行った綺麗な個体に移植しました。

 これでまず1台,綺麗なPC-1500が完成しました。

 で,LCDが取り出された,壊れているPC-1500に目をやると,これを放置しておくのも可愛そうです。とりあえずLCDを取り付けて,電源を入れてみますが,やっぱり動きません。

 基板の汚れを拭き取り,パターン切れを確かめようとテスターであたっているうちに,導通が復活したようで,電源を入れると動いてくれました。

 なんか気持ち悪い復活ですが,主立ったICの足をハンダでなめてスルーホールにもハンダを流し込みます。

 これで動くはずと電源を再度入れると,動かなくなっていました。悲しくなってきましたが,冷静になって顔を上げると,4kビットのSRAMの足にハンダのクズが付着していました。これを拭うと,ちゃんと動作するようになりました。

 基板の腐食が原因ですから,たぶんそのうち動かなくなってくると思います。断線した部分が見つかれば,ここをジャンパで補修するので確実に治るんですが,こうして動き出してしまった以上,どこが切れていたのかもうわかりませんから,仕方がありません。

 これで,PC-1500をめぐる顛末はおしまいです。

 なかなか大変で,うまく動かず凹んでしまったこともありますが,うまく行き始めるとトントンと進むのも,またこの手の修理だったりします。どっちにしても,簡単にあきらめないで,その時々の自分のスキルで出来る事をコツコツやれば,最終的にはどうにかなるものだと思います。

 それにしてもPC-1500,なかなかいいマシンです。大きいとか重たいとかありますが,この時代のマシンとしては高速で,メモリも多く搭載出来るし,キーも大きく使いやすいです。電源を入れればすぐに復帰しますし,当時このマシンを持っていれば,それなりに楽しかったろうなあと思います。

 さて,もうポケコンはおしまいです。まだ持っていないマシンもありますけど,これ以上はもう切りがないし,言ってみれば派生機種みたいなもんですから,PC-1260やPC-1350なんかを手に入れる必要は,あまり感じていません。

 ああ,でも,パソピアminiやJR-800があると,面白いかなあ。


何度目かのポケコンの波がきた

20160722132625.jpg

 先日,ふとしたことから古いポケコンを入手しました。

 入手したんですが,これがなかなか一筋縄ではいかず,肉体的にも気分的に疲れてしまいました。

・PC-1246

 シャープのPC-1200シリーズのうち,小型で薄く,真のポケットコンピュータであり,実売で1万円を切っていたにもかかわらず非公式ながらマシン語が走るという,当時のマニアが絶賛したモデル,PC-1245の後継機種です。

 PC-1245の後継機種ではあるのですが,CPUが4bitに変更になり,互換性があるのは周辺機器とBASICで書かれたプログラムだけでした。ま,シャープとしては,それが公式サポート範囲だったわけですが・・・

 大きさはPC-1245そのまま,価格は下がり,BASICの処理速度は大幅に向上したということで,本当はもっと評価されてしかるべきなんでしょうが,やっぱりマニアとしての面白い部分が全くなかったため,不人気機種に終わったと思います。

 私も10年ほど前に,安かったという理由で1つ手に入れていますが,先入観を捨てて触ってみると,これがなかなかよかったのです。

 PC-1246の後継機,PC-1248になると,もうキーボードがフィルムを張り付けたシートキーになってしまい,まともなプログラムを作る気にはなりません。PC-1245のようなキートップがあるわけではありませんが,PC-1246のゴムキーはそんなに悪い物ではないと思います。

 さて,これ,完動品という事で手に入れたのですが,残念な事に私の手元に来たときには,すべてのキーが動作しませんでした。まあ,騙されたというやつです。

 悔しいので,頑張って修理をしました。原因ですが,電池の液漏れによってキーが押された状態になったままで,それで他のキーを受け付けなくなっていました。漏れた液を拭き取り,復旧です。

 早速メモリの追加を行い,さらにBEEPの回路も搭載してPC-1247相当品にしました。液晶は,これも残念なのですが,やっぱり劣化が進んでいるようで,右側が霞んでいます。繰り返しますが,まあ騙されたというやつです。

 もともと,このPC-1246は,完全に液晶が壊れてしまい,14歳の頃から常に持ち歩いていたPC-1245の代わりに使おうと思って手に入れたものですから,とりあえず動く事が重要です。

 PC-1245の代わりに私の計算を助けてくれるものですので,出来ればPC-1245の感触を手に入れたいものです。そこで,PC-1245のキートップを移植しました。

 幸いなことに,PC-1245のキーサイズはPC-1246と全く同じです。そこで,PC-1245から流用可能なキートップをPC-1246の筐体にセットし,PC-1245のゴムキーを被せて,基板をおきます。

 カーソルキーやSHIFTキーなど,一部のキーの場所が変わっているのでそのままゴムキーを置けないのですが,はさみで切って大きさを調整します。

 MODEキーはもともとPC-1245にはありませんし,SHIFTキーやDEFキーも大きさが変わっているので流用はできません。でも,流用可能な文字キーやテンキーは問題なく,感触も上々です。まるでPC-1245を触っているような気分です。

 ハードケースもPC-1245を流用します。もともと色違いが付いていたはずなのですが,付属してなかったので,PC-1245のものを流用しました。色が茶色ですし,いい具合にくたびれているので,これもぱっとみれば私のPC-1245そのままです。

 PC-1246はBASICは高速で,マシン語を使わないなら一番よいマシンではないかと思います。今はもう,ポケコンでマシン語を使うことはありませんから,高速なBASICであることが実はとてもありがたいのです。


・PC-1500

 PC-1600Kは随分前から持っていますが,その前の機種であるPC-1500は,ずっと縁のない機種でした。欲しいと思っていろいろ手を出しましたが,結局一度も手に入りませんでした。

 それが,ふとしたことで手に入れました。程度が悪く,おかげで安く買うことが出来ました。

 見た目は傷も少なく,全く問題はないのですが,液晶が滲んだようになっています。液層そのものが壊れていたらお手上げなのですが,分解したところ,液晶の背面に張ってある偏光シートと反射シートの隙間に水が入り込んでしまったようです。

 そういえば,綺麗であることは違いないけど,内部の鉄の部品は錆びて真っ茶色になっていますし,汚いです。

 なにが入り込んだかわかりませんから,可能な限り分解し,水洗いです。

 液晶は,とにかく偏光シートと反射シートは交換です。偏光シートは東急ハンズで購入した変更シートを同じ大きさに切りました。問題は反射シートですが,いろいろ試したところ,プリンタの写真用紙がとても良い見栄えでした。

 液晶も修理出来たし,ケースも乾いた。早速組み立てをし,電源を入れたら当然問題なく動作しています。

 ここで,それまで使っていた安定化電源を外して組み立てを完成させたのですが,不注意で電源のミノムシクリップが外れてしまい,不注意にも基板の上をなめていったのです。

 たいしたことないと思っていたのですが,組み上げて見ると一部のキーが効かなくなっています。それも,きっちりマトリクスの一列分だけ,全く反応がありません。


 もしやと思い,キーマトリクスを担当するPIO,LH-5811を調べて見ると,やっぱり動作しないラインの電位が中間になっていて,全く動かなくなっています。

 やはり,PIOを壊してしまったようです。

 ショックです。

 こうなったら,ここも修理です。

 とはいえ,30年以上も前のポケコンの。カスタムICがそこら辺に売ってるわけはありません。そんななか,オーストラリアの部品屋さんがストックを持っていると分かったのですが,カードが使えず断念。

 すっかり意気消沈した私ですが,ならPIOと同じ働きをする回路を別に作ってやればいいのではないかとひらめきました。

 幸いなことに,今回壊してしまったキーマトリクスに使われるポートAは出力専用のポートです。

 PIOのレジスタ($FFFEにマッピング)に値を書き込むと,それがそのままPA0からPA7に出力されるだけですので,このアドレスに書き込みが発生したらD-FFでデータバスをラッチすればいいはずです。

 そう思って数日頑張って見たのですが,うまくいきません。このアドレスへの書き込みは発生しているのですが,その時のデータバスがずっとLowのままで,スキャンを行う時のHighレベルにはなってくれません。

 クロックで同期させていないのが問題なのかもと思いましたが,バスマスタであるCPUはクロックに同期して動いているわけですし,非同期のSRAMなどは別にクロックで同期しなくてもいいわけですから,本当は動くはずです。

 いろいろ悩んだのですが,やっぱりわからず,心と体がくじけてしまったので,あきらめました。

 しかしこのまま終われません。

 八方手を尽くして,壊れたPC-1500とCE-150を手に入れました。ちょっと高かったのですが,CE-150は内蔵電池の液漏れで,復活不可能な状態でした。PC-1500もひどい状態ですが,これはなんとか復活出来るんじゃないでしょうか。

 ところで,なんでCE-150というプリンタの話が出てくるのよ,と思ったあなた,実はCE-150には本体と同じPIO,LH-5811が使われているんです。

 CE-150のシステムはちょっと面白くて,単純なパラレルやシリアルのインターフェースで本体と繋がるのではなく,CPUのバスに繋がるという無茶な仕様になっています。

 ですので,PC-1500のアドレスに,CE-150に内蔵されたPIOはもちろん,ROMもマッピングされて,あたかもPC-1500の一部として動作するわけです。さらに面白いのは,カナテープを読み込ませたり,カナROMをPC-1500に装着すると,表示用のビットマップデータに加えて,プロッタプリンタ用のベクトルデータが一緒にインストールされて,CE-150でカタカナが描ける(まさに描くです)ようになることです。

 実はPC-1600Kでは,カタカナに加えてなんと漢字までプロッタプリンタで印刷してしまうんですが,それはまあここではおいておきましょう。

 なんでこんな構造になってるのか,PC-1210やPC-1250ではシリアルインターフェースでプリンタを動かしていますし,当時一般的だったプリンタの制御は8ビットのパラレルでしたから,私も不思議な気がしています。

 ただ,バスにぶら下げてしまえば無敵で,なんでも出来ちゃうわけです。問題はピン数が増えることと,コストが上がってしまうことですけど,それが許されるならそりゃバスで繋ぐ方が,汎用性は高いです。

 そんなわけで,CE-150にPIOが入っていることは分かっていましたし,内蔵電池の液漏れがほぼ100%起きるものなので,壊れている可能性が高いことから,安く入手出来るとふんでいたのですが,残念ながらそんなに安くはありませんでした・・・

 届いて早速CE-150を分解,修理はあきらめてドナーになってもらいます。PIOを慎重に取り外し,ピンを整えます。この時,基板は壊れてもいいので,PIOの破損に最大の注意を払います。

 PC-1500の死んだPIOを取り外しますが,こちらは基板が壊れては困りますので,基板にダメージを与えないように作業をします。

 そして,PC-1500に取り外したPIOをマウントします。QFPとはいえ,ピン間隔が広いので作業は楽です。

 電源を入れると,あっさり動作しました。キーも問題なく動くようになっています。まあ,あっさり治ることは予想できていましたから,特に感動もなくほっとしただけなのですが,なにより不注意で壊してしまったことが,こんなに面倒な話になってしまうとは,つくづく情けないです。
 
 さて,ここまでだとなんということはないのですが,次のテーマとしてメモリの増設を考えています。PC-1500はメモリが3.5kバイトと大変少ないので,増設するのが基本です。RAMカートリッジで増設するんですが,私は本体改造することにしました。

 RAMカードリッジはバッテリーでバックアップされるので,外部記憶装置の代わりになりますから,これはこれで価値があるのですが,今さらそこま活用する事もないだろうということで,本体改造をすることにします。

 続きは後日。

ユーティリティ

2026年04月

- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

過去ログ

Feed