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 | コメントをどうぞ

怪奇現象が増殖して大混乱中

6803でうまく動いたプログラムをもとに6800のプログラムを作り直したところ、やっぱり端末が反応しない。端末のインタフェースは6803だと内蔵だが6800は6850だから、6850の初期設定を間違えている公算が強い。信号にテスタを当てたら6850のRTSがLを出力していない。原因がわからず、困り果ててモトローラのJBUGを見ると、あらら、マニュアルに「Hを出力する」と書いてある方法でLを出力している。次に掲載する資料は、上がマニュアルの説明、下がJBUGのソース。

MC6800_RTS2

MC6800_RTS1

これっておかしいでしょ? 絶対におかしいよね。で、マニュアルを無視してJBUGにならったところRTSが無事にLを出力。だからといってこれがマニュアルの誤植だとは断定できない。日立製作所のマニュアルも同じ説明をしているし、大昔の本「私だけのマイコン設計&製作」がマニュアル通りの方法でLを出力している(ようだ)。そして、次のような問題が発生。

JBUGにならったプログラムは、いったん正しく動作した。このROMをとっておいて次の段階へ進む。サブルーチンを若いアドレスへ移動し、エントリーポイントを後ろへ下げた。すると、ただそれだけで暴走。とりあえず元へ戻そうと思い、とっておいたROMへ差し替えたのに、これがまた暴走してしまう。この怪奇現象は、いったい何なんだ。これだけ次から次へと襲い掛かる大問題がいつか笑い話になるなんてことがあるのだろうか。

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