2020年6月10日水曜日

FM-7用Z80カードの第3作を製作

富士通の回路を10x8㎝に収めたCP/Mカードを作ってしまいました

3月13日のブログ「FM-7用Z80カードの第2作などを製作」で紹介したI/O誌の記事を元にしたZ80カードでは富士通のCP/M-80が動作しましたし、特に不満はなかったのですが、実は、「F-BASIC解析マニュアル フェーズ2」に掲載されている富士通純正のCP/Mカードの回路図も、いずれ製作するつもりでKiCadで回路図を作成してありました。

しかし、IC数が19個と多いので10x10㎝の格安基板には収まりそうもなく(富士通純正のCP/Mカードのサイズは124x78mmです)、製作費を考えて二の足を踏んでいました。
でも10x10㎝以内のサイズに無理やり押し込んでみたらどうなるかと試してみたところ、何とか10x8cmのサイズに入りましたので、作ってみることにしました。

いつもですと電源ラインだけは太い線で手配線し、残りはFreeRouting.exeに任せるのですが、今回は電源ラインも太くする余裕もありませんし、また、いつも全ICにつけているパスコンもオリジナル回路を忠実に再現するということで少なくなっているので、安定して動作するかという点では不安がありますがとにかく作ってみたものが下の画像です。


製作した基板と完成基板


ICの配置はオリジナルと同じにしてありますし、他の部品もできる限り同じ配置になるようにしてあります。ご覧のように、これ以上は小さくできないというサイズです。

左:純正基板 右:製作した基板


左が純正のZ80カードで、右が製作したコンパクトサイズのZ80カードです。高さは同じ8cmで幅が10㎝と狭くなっています。


動作中の様子1



動作中の様子2


動作中の様子です。私としては珍しくミスがなく、組み立てたらすんなりと富士通のCP/M-80が動作しました。
まだ十分にテストしていませんが、今のところ純正基板と同様に動作しているように思えます。しかし上記しましたように、安定動作するかどうかはまだまだ確認する必要があります。

ということで、2種類のZ80基板を作ってしまいましたが、余った基板は現在発注してある40Pコネクタと共に配布する予定です。
(40Pコネクタが届くのが待ち遠しいです。今回は、以前作った基板から40Pコネクタを外して使用しました。)

10 件のコメント:

  1. 以前メールさせていただいた者です2020年6月11日 13:51

    素晴らしいですね。私もFM77AVにぜひつかってみたいです!

    返信削除
    返信
    1. 以前メールさせていただいた者ですさん コメントありがとうございます。
      純正基板と同様に動作するかどうかの確認が済んでいませんが、それが済んで、40Pコネクタも入手できたら、他の基板と共に希望される方に配布するつもりです。
      7月末頃になりそうですが、よろしくお願いいたします。

      削除
  2. おお、素晴らしいですね。
    オリジナルは4層基板なので、2層だと無理かなと思っていたのですが、
    それをさらに基板サイズ縮めて配線引ききるとは、FreeRoute君もやりますね。

    返信削除
    返信
    1. はせりんさま コメントありがとうございます。
      オリジナルは4層基板だったのですね。そんなことも知らずに使っておりました。
      富士通版Z80カードの設計者である桜井さまのお話では第2作のI/O誌掲載の回路は富士通版と同等だろうということでしたので、あえて製作することもなかったのですが、既にKiCadで回路を描いてあったので興味本位でやってしまいました。確かにFreeRouting.exeは優秀で、寝る前に走らせて朝起きたら終わっていまして、もっとかかると思っていたのでびっくりしました。

      削除
  3. オリジナルの基板にパスコンが少ないのは、4層基板である事に頼っている面もあるかと思います。
    気になるなら裏面にパスコンを直付けして補強するのもありですね。

    FreeRouteはOptimize含めて一晩で完了したのでしょうか。
    だとすると、まだ余裕あるのかもしれませんね。
    私が昨年作りました基板は、もっと小さいサイズですが、三日三晩かかってました。
    いずれにしろ、10cmx10cmのサイズで配線引き切れる、というのは大変貴重な情報です。
    オリジナルのサイズでも引き切れる可能性がありますね。縦方向がちょっと厳しいかもですが。
    もっとも、後期版(BSCサポートカード版)はさらにTTL 3つ分の部品増えても同じサイズに収まってるので、それに比べれば余裕があるとは言えますね。

    I/O誌のZ80カードの回路は、QB、EB の波形整形が不完全なようで、DRAMのビット化け対策のため、$FD05 に 0 を書いた時だけ EB と QB を止める、という強引な技を使っています。
    これを、RCディレイ等アナログ的な対処でなく、アドレスとデータをフルデコードして止めてるのでちょっとゲートがもったいない気がしますが、実はこのやり方の方がクロックアップ耐性が高いと思います。(FM-7/77の内蔵メモリがついて来れないので無意味ですが)
    QB、EB、特に $FD05 に 0 を書いた時の様子を、オリジナルと比べてみたいですね。

    返信削除
    返信
    1. 私のFreeRouting.exeの使い方は、まず手配線で電源関係だけ太線で配線を済ませておいてから(再実行のために保存しておきます)FreeRouting.exeを走らせます。時間がかかるようでしたら途中で止めて、配線が密になっている箇所を拡げるためにIC等の部品を移動させてから、改めて再実行します。
      以前製作したFDC基板の場合はこれを何回か繰り返しまして、それでも最終配置で2日ほどかかりましたが、このZ80基板の場合は、電源関係の手配線をしなかったこともあり、最初の配置のままで一晩で済みました。もちろんOptimizeまで完了ということです。元にした富士通のZ80基板の配置が合理的だということでしょうか。
      電源ラインが細いのが不安ですが、動作状況を見ながら必要ならパスコンを追加するつもりです。

      削除
  4. 失礼しました。
    桜井さんのコメントは2号機の方に書かれてたんですね。今初めて読みました。
    そうして、秀和の本も引っ張り出してオリジナルの方の回路をあらためて見ましたら、$FD05の回路は同じようなのが入ってますね。桜井さんのおっしゃる通りなんだと思います。
    オリジナルは RCディレイが3か所入ってるので、I/O誌のとは微妙にタイミングが異なり違う症状になって現れたのですかね。

    返信削除
    返信
    1. 設計者である桜井さま自身によるZ80カードの解説記事がサイト「FS-Micro Corporation」中の「設計ブログ」に3回に渡って掲載されています。とても丁寧に述べられているので分かりやすいです。
      桜井さまも今ならRCディレイを使わずに設計したいと言われておりますので、新設計による新Z80カードにも期待したいです。

      削除
  5. > 私のFreeRouting.exeの使い方は、まず手配線で電源関係だけ太線で配線を
    > 済ませておいてから(再実行のために保存しておきます)FreeRouting.exe
    > を走らせます。時間がかかるようでしたら途中で止めて、配線が密になって
    > いる箇所を拡げるためにIC等の部品を移動させてから、改めて再実行します。

    あ、私も全く同じです。と言うか、それが標準的な使い方なんでしょうね。

    ところで、気になったのでI/O誌、プロセッサ誌、Oh!FM誌を引っ張り出して私のサイトで紹介している各種CPUカードの回路を調べました。

    作者     カード   $FD05デコード回路
    --------------------------------------------
    北斗星さん  Z80カード   あり
    大島賢治さん 8088カード  なし
    川村雅則さん V20カード   なし
    川村雅則さん Z280カード  あり
    川村雅則さん 64180Zカード あり
    川村雅則さん 64B180カード あり
    ikkeiさん  HD63C09カード なし

    HD63C08カードの場合は、一旦63C09に切り替わったら6809には戻らないので、「なし」は理解できるのですが、なぜだか 8088系は「なし」、Z80系は「あり」ときれいに分かれてしまいました。川村雅則さん曰く、FM-7のCPU切替回路には問題があるので、対策に苦労した、とのことでした。
    これ、8088だから「なし」にできる、とは考えにくいので、Z80系でも「なし」できないか、いつかチャレンジしてみたいと思います。TTLが3つ位減るのはかなりのメリットです。
    実際、北斗星さんのZ80カードでも問題発生はFM-7後期版だけのようですし。

    返信削除
  6. 桜井さまのArduino2560搭載カードで6809への切り替えに取り組んで苦労していた際に北斗星さんの記事や大島さんの8088カードの記事は読みました。富士通の純正回路や北斗星さんの回路にはアドレス$FD05の処理があるのに、8088カードにはないのが不思議でしたが、8088の知識が全くないので、HLDAやHOLDの機能のためかと思っていましたが、実際はどうなのでしょうか。
    とにかく$FD05に0を書き込んだ瞬間に6809へ切り替わるのではなく少し遅らせる必要があるが、その手法はそれぞれのCPUで異なっているということなのでしょうか。

    返信削除