DRAMが、一応、動いた

DRAMの動きかたがおかしい件、同じ41464を使ったCOMMODOR64の回路図を参考にして、#OEを常時有効とし、#WE(こちらが優先)だけで制御する方式に変更。DRAMボードはもはや修正不可能ないほどツギハギだらけなので、別のプリント基板で作り直す。10枚まで同じ値段というシステムは、この種の試行錯誤に向いている。ただし、ICソケットとか積層セラミックコンデンサとか、安いけれど湯水のように使う部品が懐に響く。

DRAM_ok1

結果はぜんぜん変化なし。手弁当の開発は資金が枯渇しかけている。あとひとつ6803の速度を半分に落として動かしてみて、ダメだったら諦めることにした。現在、6803には4.9152MHzの水晶が付いている。それを2.4576MHzに取り換える。この簡単な話が意外な大仕事になった。今どきそんな低い周波数は需要がないらしく、著しく入手が困難。千石電商とサンエレクトロと日米商事はケースがあるのに中身がカラ。ケースがない若松通商で店員さんに尋ねて、ようやく入手することができた。

DRAM_ok2

速度を半分に落としたから通信速度も9600bpsから4800bpsに半減。端末をつないで電源を入れると、あ、テストプログラムが完走し、待ちに待ったOKの2文字をやっと見ることができた。テストプログラムはこのあとスタックをDRAMに設定して割り込みで文字の入出力を繰り返す。すべて正常。何もかもうまくいったとき人間の発する言葉は「あ」だけなんだね。

DRAMtest_ok

タイミングをうまく調整すればたぶん普通の速度で動くと思う。はじめからタイミングだけの問題だったかもしれないので、これまでに試したいろいろな回路を遡って見直したい。やりたいことはたくさんあってカネがない。資産家の令嬢と交際したい。

カテゴリー: 6800, DRAM | 2件のコメント

DRAMの試行錯誤

DRAMの動きかたがおかしい件、まだ検証していない「心当たり」のうち、いちばん怪しいのはアドレスが確定する前にRASが下りているんじゃないかということ。うまい具合にゲートがふたつ余っている。その間に時定数を入れてRASを50μ秒ほど遅らせてみた。もう部品の差し替えでは対応できなくて、プリント基板はとうとう空中配線になった。

sbc6803_dram_test

結果はぜんぜん変化なし。ちょっと頭を冷やすか。下に示す回路はマイクロシステムの68系CPU用64K DRAMカード(クリックすると別窓で拡大表示する)。これが動いて、ボクのDRAMボードが動かない、その理由をじっくり考えてみたい。

6809-2964-DRAM

正直、ここまで苦労するとは思っていなかった。確かにDRAMは厄介な部品だが、Z80で何回も動かしたことがある。たいてい1発で動いたし、そうでなくてもすぐ原因を突き止めることができた。今回のやつは波形が完璧で動作がおかしいという最悪の状態。超常現象のせいにして現実逃避しようとする自分を叱咤激励しているところ。

カテゴリー: 6800, DRAM | 7件のコメント

DRAMいまだ混乱中

DRAMの動きかたがおかしい件、MUXの立ち上がりからCASの立ち下がりまでの間隔を広げた。計算値と実測値はとうの昔に掛け離れており、どんな部品でどのくらい広がるかはやってみなければわからない。部品を繰り返し抜き差ししているうちにプリント基板が傷んできたので、この際、取り外しやすい取り付け方をする。測定用の電線も付けっぱなし。耐え難く美観を損なうが、うまく動くまでの辛抱だ。

dram_test2

結果を下に示す。DRAMをアクセスしたあとリフレッシュサイクルが続いた例。2チャンネルのオシロスコープで測定したものを合成した。赤がE、黄がRAS、緑がMUX、青がCAS。全部のタイミングがほぼ理想的。MUXの立ち上がりからCASの立ち下がりまでの間隔は、もう少し広げられるが、計算値から掛け離れすぎてしまい、計算どおりに動いたとき大変なことになるので、このあたりにとどめておく。

dram_timing2

テストの方法を少し変えた。DRAMに$55を書き込み、それを読み出して、$55でなかったら、アドレスと値を表示する。結果は下のとおり。相変わらず読み書きを盛大に失敗しているが、今度はちょっとした法則が見られる。失敗するアドレスは下位バイトが$13、$95、$96、$FAの順、読み出した値は$00または$FF。まったくのでたらめよりは前進。

dram_term2

電子工作の神様がヒントをくれた感じ。でも神様、ヒントじゃなくて答えを教えて。

カテゴリー: 6800, DRAM | 3件のコメント

DRAMの動作を調べた

DRAMの動きかたがおかしい件、テストプログラムを丹念に調べたが間違いが見当たらない。実際、SRAMをテストすると正常に終了する。これはいよいよオシロスコープで波形を調べなければならない。その準備としてDRAMボードの裏側から電線を引き出し、信号名のラベルを貼る。DRAMボードを1発で動かす才能はないけれど、こういう面倒臭い作業を愚直にやりとげる才能がある。

dram_test_view

結果を下に示す。2チャンネルのオシロスコープで測定したものを合成した。赤がE、黄がRAS、緑がMUX、青がCAS。MUXが出たあと短い間隔でCASが出ており、アドレスが切り替わる途中でラッチしている恐れがある。どこで計算を間違えたのだろう。そもそもこんなアナログっぽい回路が計算どおりに動くものなのか。

dram_timing

タイミングの修正はコンデンサか抵抗か、せいぜい2個の部品を取り替えるだけ。ただし、スルーホールから部品を引き抜くのが大仕事。そしてまた結果を調べるために電線を引き出してオシロスコープにつなげなければならない。そういう才能はあるといったが、何回も繰り返すとなると話が違う。もう無理。ああ面倒臭い。

カテゴリー: 6800, DRAM | 5件のコメント

DRAMの動きかたがヘン

6800を動かす過程で助太刀を頼んだ6803のコンピュータは、本来、DRAMボードをテストするために作ってあったもの。そのDRAMボードが完成。41464を2個動かすのにTTLを8個も使っている。容量は64Kバイトだけれど諸般の事情で$2000~$7FFFの24Kバイトだけが有効。6803のコンピュータにつないでとりあえず$2000の読み書きに成功。設計に苦労したとても複雑な回路に何の間違いもないなんて、何かの間違いに決まっている。

SBC6803_DRAM_review
回路図のPDFを別窓で開く

DRAMのテストプログラムを書いて走らせた。全ビットを反転してみて、もし反転しなかったら、アドレス、現状の値、正しい値を並べて表示する。ほらほら、すごい勢いで反転しなかったところが表示される。でもこれちょっとヘン。現状の値と正しい値が同じなのに表示されているところがある。怪奇現象の再来か、それともプログラムのバグか。

SBC6803_DRAM_error

というわけで、またまた混乱中。幸か不幸か思い当たるところは山ほどある。さしあたりテストプログラムのテストから始めよう。

カテゴリー: 6800, DRAM | コメントをどうぞ

怪奇現象の原因が判明

怪奇現象が多発して大混乱している件、原因の見当が付かない以上、小さな確認作業をコツコツと積み上げていくしかない。クロックジェネレータ兼リセットのPIC12F1822に手動リセットの働きを追加。7番ピンと隣のGNDを接続するとリセット信号を発生するようにした。これで手動リセットしてみたら何の問題もなく起動。感動する前に呆れる。前回の投稿で電子工作の神様に泣き言を言ったのが効いたのだろうか。

sbc6800_errfix

原因はリセット期間が短すぎたこと。リセットを解除する条件式でwhile(TMR0IF == 0);と書くべきところがwhile(TMR0IF = 0);になっている。怪奇現象の原因なんてだいたいこんなものなのにボクは謙虚さを欠いた。疑ってかかったいろいろなものに謝りたい。USB-シリアル変換はTTL-232R-5Vで何も問題を起こさない。RTSはマニュアル通りの方法でLになる(ということはJBUGのコメントがバグか?)。お詫びして訂正します。

カテゴリー: 6800 | 2件のコメント

大混乱が継続中

エントリーポイントの前にサブルーチンをおくと暴走する件、いろいろ試したところ、エントリーポイントの前に何かしらの命令があると多かれ少なかれおかしな動きをすることが分かった。下の画像はさんざん暴走してから正常に起動した例。ただし、NOPやエントリーポイントへの分岐なら大丈夫。どうやらエントリーポイント(FFFEとFFFFにあるアドレス)を正しく取り込まず、いつもROMの先頭(E000)から実行しているらしい。

sbc6800_err1

症状から推測してアドレスのどこかのビットを認識していない。アドレス線のオープンショートを検査したが正常。PIC12F1822のファームウェアを書き換えてリセット期間を8m秒から24m秒に延ばしたりクロックを700kHzまで下げたりしたが改善しない。プロ野球の監督は試合の悪い流れを変えるためによくバッテリー(電池じゃないよ)を交換する。それにならって日立製作所の6800と6850をモトローラのやつに交換。

sbc6800_err2

もちろんこんなことでスッキリ直ったりはしない。しかし、いつの間にか調子がいい時にはUSB-シリアル変換がTTL-232R-5Vでも動くようになっている(キミを疑ってごめんね)。さらにRTSがマニュアル通りの方法でLになる。これはむしろ困りもの。ダメならダメでいてくれないと直しようがない。ああもうとにかくめちゃくちゃ。電子工作の神様がいるなら教えてください。ボクがどんな悪いことをしたのですか。

カテゴリー: 6800 | コメントをどうぞ