前回書いたMC6800ボードですが、プリント基板パターンを作ったのでALLPCBさんの無料クーポンで5枚作ってみました。
前回も書いたとおりバグありで、ハマりどころが色々とありましたが、なんとか稼働しましたので、その顛末をまとめます。
ALLPCBでプリント基板作成
わたしもTwitterで知ったのですが、ALLPCBさんという基板屋さんで、なんと月一回 製造日&送料無料クーポンをいただけるとのこと。
ちょっと注文方法は癖がありましたが、IDを作成して無料作成クーポンをいただけたので、前回のMC6800マイコンボードを注文してみることにしました。
いままで頼んだことがあるFusionPCBとか、JLCPCBでは注文データとして最初にガーバーデータもUPするボタンがあったりしますが、ALLPCBでは注文データを確定してカートに入れてからガーバーデータをUPするというかたちで、最初はちょっと戸惑いました。
8/2の晩に注文して、8/3から製造開始。8/5には製造完了してDHLで出荷され8/6には成田到着。土日と祝日を挟んで8/10に手元に届きました。注文日を工夫すると1週間ぐらいで届きそうです。
部品組付け
基板が届いて翌日は、パターンのチェックなどをしてまして、その翌日の晩に2時間ぐらいかけてICソケットとかその他の部品を装着しました。
10cm x 10cmに部品の設置幅をギュウギュウに詰めて配置したので、はんだ付けもけっこうたいへんでしたが、手配線で同じ回路を作ろうとすると2時間ではとうてい配線は終わりませんので、プリント基板様様です。
今回は、手配線での確認を実施していない回路が多々ありましたので、当然ながらバグもたくさんありました。大きな問題ではなかったものもありますが、しばらくうんうんと悩んだものもありまして、次にまとめてみます。
REV1基板 既知のバグ
リセットスイッチ(PS-70N)の端子番号間違い
実害はなかったのですが…
基板上に実装するリセットプッシュスイッチ(C接点)のフットプリントを自作したときに、実物の端子幅はOKだったものの端子の列並びを間違ってしまいました。1-2-3番端子と4-5-6番端子がセットで動作するので並びが上下どちらでも実害はないのですがw
データシートを読み間違えたのですが、上から見て上部は4-5-6番、下部が1-2-3番端子です。
クロック発振回路の74LS123で回路間違い
ロジックICを組み付けて、まずは今回初物のCPUクロックの確認と思いテスターを周波数カウンターモードにして測定したのですが、うんともすんとも言いませんでした。回路図をじーーーっと見ていると、またもKiCADのシンボルにヤラれた感じです。74LS123のAユニット、Bユニットで同じような端子配置になってると思っていたら一部が逆転していました。…orz
Aユニットでは「RCext」「Cext」の順ですが、Bユニットでは「Cext」「RCext」となってまして、Bユニットの抵抗器をつなぐ位置が間違ってます。パターンカットしてジャンパしたところ無事700kHzぐらいで発振することを確認しました。
シリアル入出力端子の結線間違い
CPUクロックが出ましたのでCPUやらROMやらいろんな部品を搭載して稼働を確認してみようと思います。USBシリアルをつないだ先のMacでターミナルソフトを立ち上げ300bpsにセッティングして電源ONしてみましたが無反応。またも回路図とにらめっこしたところ、シリアル接続端子のTxとRxが。逆でした。そりゃ応答はないはず…
自分で書いたJ3端子のコメントに騙されましたが、TxDはシリアル-USB変換側の端子名なのでRxとTxはクロスさせてつながないといけません。
ここもパターンカットしてジャンパしまして、今回74LS00を使った回路のうしろにハードウェアエコーバック回路がありますので、ただしくエコーバックが動作して入力文字が返ってくるようになりました。ただ、MIKBUGの入力プロンプト “*” は出てきません。
SRAMのA15信号線をGNDに落としている
相変わらずMIKBUGが動かないので、また回路図を睨んでいて気づいたんですが、今回128k SRAMを搭載してまして、オリジナルのMIKBUGを動かす関係で $A000〜の領域にもRAMを配置したいとおもってアドレスデコードしています。
ただ、いままでのマイコンが32kB 搭載のものが多かったため、なにも考えずにA15とA16信号線をGNDに落としてしまいました。これだと、$A000にCPUがアクセスに行くとイメージが発生して$2000に読み書きに行ってしまいます。連続したRAMが$0000-$1FFFの8kBになってしまうという間抜けなバグでした。
ただ、間抜けですが ひとまず8kBのRAM搭載機としては動くはず。(残念な仕様ですけど…)ここは直さないまま進みました。REV2で直します。
(5)SBC68系バスバッファLS245が悪さをする
最後の基板バグは、なかなか分からず 部品をいろいろと外してテストをしているうちに発見したものとなります。あとで考えると74LS245、LS244を 最初はSBC68系バスを使わないのだから外しておけばハマらなかったとも言いますが…
まず何が悪さをしているか分からなかったので、6800CPUクロックの波形をチェックしてみました。CPUクロックは、ちょっとなまり気味の波形ではありますが5Vあたりまで振れているし、φ1、φ2の2つの信号は重なっていないので正しそうです。
ついでに、PIAのシリアル通信の基準クロックである150Hzが出ているかオシロスコープで確認。正しく出ているみたいです。
これまたついでですが、せっかくSBC68系バスに74LS244経由でアドレス信号を出してしましたのでロジアナで観測してみました。なんとなくアドレスはUPしているようでした。
CPUクロックの波形がなまり気味なのが気になったので、、外部にSBC6800でクロックにしていたPICをつないだりして、SBC-IOとともに動くか確認してみました。
同じCPUやPIA(MC6821)を搭載してSBC6800をCPUボードとしてつなぐと動くSBC-IOですが、今回の基板をほぼCPUボード状態でつないでも動きませんでした。他の回路はほぼ一緒なのでヤバそうなのはSBC68系バスに出す部分を補強しようと入れた74LS245があやしいです。
74LS245はデータバスのバッファです。ひとまずCPUのデータバスとSBC68系バスをスズメッキ線で直結してみます。バッファはなくなりますが、これでツーカーになるはず。以下の方法でMIKBUGが稼働するか確認しました。SBC-IOを使う場合は128k SRAMメモリやシリアルI/Oに使っているPIAはSBC-IOへ搭載します。
(1) CPUクロックをPIC12F1822による外部クロック+SBC-IO ⇛ MIKBUG稼働OK!
(2) CPUクロックをロジックIC(74LS123)へ戻し+SBC-IO ⇛ MIKBUG稼働OK!
(3) RAMとPIAをこの基板に戻して稼働確認 ⇛ MIKBUG稼働OK!
というわけで無事 MIKBUGの稼働を確認しました。
うまく動かなかった原因ですが、上記のようにデータバスのバッファにしている74LS245のチップイネーブル端子(CE)ですがGNDに落としていまして常に有効にしていました。データの送受信方向をR/W信号(Read=H、Write=L)でコントロールすれば良いという単純思考だったのですが、SBC68系バスを使わないときはチップイネーブル端子(CE)をちゃんとコントロールしてHiZ(無接続)にしないと他のデバイス(SRAM、PIA)と競合していたためNGだった模様です。
無事MIKBUG稼働
いろいろとハードバグがあったMC6800マイコン基板(K68-CPUB REV1)ですが、色々とジャンパしたりしたおかげで無事オリジナルMIKBUGが稼働しました!!
メモリーが連続で$0000から8kBしかないとか、いろいろとパターンカット、ジャンパなどが必要という問題点山盛りですので、そのうちREV2基板で改善したいと思います。
ちなみに、書籍「マイコンの作り方・使い方」の回路に習ってパワーオンリセット回路を搭載してませんので、起動した直後はMIKBUGが起動しません。リセットSWを押すと動き出します。REV2では、SBC6800やKZ80-CPUBと同様のパワーオンリセット回路を組み込もうと思います。
コメント