趣味

私の趣味はこ〜んな事をすることです


マイコン自作 (^^)

●1号機は・・・・・

  学生のときに作成したZ80のマイコンです。
  スペックは
  ・CPU     Z-80Aを5MHzで動作
  ・RAM     64KB(64KDRAM × 8)
           2KB SRAM × 4
  ・ROM     32KB
  ・CRTコントローラ 日立 HD46505使用
  ・カセットインターフェース FSK/トーンバースト方式
  ・シリアル    RS232C × 2ch(Z−80 SIO使用)
  ・8インチFDC MB8877使用
  ・ROM ライター(2716/2732対応)

 写真には写っていないですがフルキーボード(ディコーダーとケースも もちろん自作)と8インチ倍密度のディスクドライブを付け、最終的に CP/M80を移植しました。

 最初はCPU(アドレス、データバス表示LED付き)+2Kのメモリ (2114を4個使用)+トグルスイッチパネルの必要最小限の物から 出発しました。
 トグルスイッチを操作してDMAでメモリに書き込みDMAを解除して CPUを走らせていました。

 こんなやっとプログラムがなんとか動く状態の物を使って研究室の先輩が リセットスイッチを入力、アドレスバス表示のLEDを出力に使って簡単な ピンポンゲームを作ったではありませんか(驚)

 I/O装置の無い状態でリセットスイッチを入力、バス表示LEDを出力 にゲームを作るなんて(なんという発想の転換!)・・持ち主よりすごーぃ プログラム作るなんて・・・ゆるせなーぃ(笑)

 次に電卓用のキーを300円で買ってきて7セグつけてやっと16進キー でメモリ書き込みができるようになりました (^^)

 でもROMがのってないので立ち上げる時はトグルスイッチをパチパチやって 数十バイト入力してbootモニタいれてからやっと16進キーが使えるように なり、それから16進キーで数百バイト入力でやっと本来のモニタが動くといった めんどくささでした(ROMボードとROMライタ作るまではこれの繰り返し^^;)

 フルキーボードとFDコントローラと8インチフロッピードライブをつけて、 最終的にCP/M80を移植しました (FDフォーマットプログラム等ももちろん自作)。
 CP/M80が動くようになってからは快適快適(^^)

 キャラクタジェネレータ切り替え方式によるグラフィック描画機能も付けました (もちろんグラフィック用描画ルーチンも自作です)

 ROM上では動かない(プログラムでコードを書き換えてる)反則業使ってたり しますが、当時グラフィック描画では高速性を誇っていたFM-7よりも グラフィック描画が早かったよ〜ん(^^) ・・・まぁ単色なので速いということもありますが・・・

1号機の主要な構成パッケージ
CPU
MEM
DRAM
CRTC
KEY
FDC
ROM Writer
SIO


★2020/06/15 追記
 キーボードを発掘しましたので写真を追記します。
 秋葉原のIKEショップでキーユニットを購入し、アルミ板を加工してケースを作成しました。

フロント面 バック面



●2号機は・・・・・

 会社に入ってからはさすがに大規模なものは作れずここで紹介する2号機と次の3号機の二つしか作ってません(どちらもワンボードタイプ)^^;

 でも入社当時、私の1号機は会社の開発環境(System-8)よりもずぅっと快適な開発環境だったよ〜ん (^^)

 2号機の作成のきっかけは会社の先輩からもらった64KDRAMです。 ^^;
 DRAMのRAS/CASタイミングを巧妙(笑)に作ってワンボードに乗せました。

 これにAD/DAを付けて初めて出した特許(音声encode/decode方式・・まあADPCMの変形 ですけど)を実際に作ってみちゃいました (もちろん趣味でですよ(^^))

2号機CPU
2号機CPU裏
AD/DA



●3号機は・・・・・

 これも会社の先輩から256のDRAMチップ2個もらったのがきっかけで久々に ハード作成の虫がうずいて作ってしまいました。(^^)

 Z80ファミリーをふんだんに使ってワンボードに収めました。

 使用したICは


3号機CPU
3号機CPU裏



●4号機はPICを使用した3チップ構成のCP/Mマシン^^ ★2018/06/09追記

 2017年の暮れにebayから20MHz対応のZ80(Z84C0020PEC)を購入したことからCP/Mが動作することを目的としてワンボードマイコンを作成しました。
 ハードは極力簡略化することを開発ポリシーとした結果、Z80(Z84C0020PEC)、メモリ(HM628128ALP-7)、PIC(PIC24FJ64GA004)の3チップ構成でCP/Mの起動に成功しました。
 外部記憶装置としてはSDカード(SDHCタイプ)を使用しています。

 また、プリント基板はCNCで両面のものを作成予定でしたが、Fusion PCBに注文して作ってもらいました(5枚作製で送料込みで千円以下)
 詳細はこの辺を参照してください。

プリント基板



 ケースは側面部を3Dプリンタで作成し、トップとボトムのパネルは百均から購入したスチロール製ディスプレイスタンドから切り出した板を材料にしてCNCを使って加工しました。

ケース入り




●5号機はPICを使用した3チップ構成のCP/M-68Kマシン^^ ★2019/04/14追記

 3チップ構成のCP/M-80マイコンに続いて同じく3チップ構成のCP/M-68Kマイコンを自作しました。
 3チップ構成でCP/M-68Kが動作するワンボードマイコンはネット上を探しても他にはないと思います。

 チップ構成は

 で回路図はここを参照してください。


Pic24CPM68K部品実装写真(top面)

Pic24CPM68K部品実装写真(bottom面)

Pic24CPM68K


 CP/M-68Kの起動画面のサンプルを貼っておきます。

picle compiler CP/M Ver0.09 2018/05/06 by skyriver

... loading

CP/M-68K(tm) Version 1.3  08/05/85
Copyright (c) 1985 Digital Research, Inc.

Pic24CPM68K ver0.02 2018/09/23 by skyriver

A>■




●6号機はPICを使用した5チップ構成のCP/M-86マシン^^ ★2019/10/31追記

 ネット上を探してもCP/M-86マイコンの自作はほとんど見つかりませんでした。
 50%デューティーのクロックでも動くNEC製V20(8088互換)を使いました。86系はデータバスとアドレスバスがマルチプレックスされているため、分離のために74HC573を2個使った関係で5チップ構成になります。
 アドレスとデータが多重化されたことでPIC24の使用ピンに余裕ができたので、RTCC(リアルタイムクロックカレンダ)モジュール用に水晶の実装回路も付けてみました。

 チップ構成は

 回路図はここを参照してください。

V20ワンボード基板(トップ面)

V20ワンボード基板(ボトム面)


 CP/M-86の起動メッセージはこんな感じです。

picle compiler CP/M-86 Ver0.01 2019/07/03 by skyriver

loading ... ok
Pic24V20 ver0.02 CP/M-86 Version 1.1
Segment Address = 0040
    Last Offset = 31FF
  System Generated by skyriver 2019/10/07

A>■


 WordStarも動きました。

Opening screen of WordStar Menu screen of WordStar

★2020/08/30 追記
 ケースを作成したので貼っておきます。

Pic24V20(ケース入り)



●7号機はGALを使用した5チップ構成のZ-80ボード(Z80GAL) ★2021/01/21追記

 Z-80を高速(20MHz)で動作させGALを使ってシリアル通信等の周辺ICの機能をソフトウェアで代替えすることで構成チップ数の少ないワンボードマイコンを作りました。
 詳細は「Z80GALの構想(その10)回路図とパターン設計」のあたりを参照してください。

 次の5チップ構成です。
  1. Z-80
     Z84C002PEG(40PIN)を20MHzで動かしています。
  2. RAM
     UM61512-15(32PIN)を使いました。ピン数が少し多いですが、64K x 8bit のスタティックRAMでアクセスタイムは15nsと高速です。
  3. EEPROM
     W27C512-45(28PIN)でアクセスタイムが45nsでROMではかなり速い方だと思います。Z80のメモリ空間の後半は常にRAMをアクセスできるようにしているので、EEPROMのサイズは64Kx8bitですがZ80のメモリ空間の前半の32KBにマッピングしています。
  4. GAL
     GAL22V10D(24PIN)を使用しました。
  5. クロック発振&タイマー割込み信号生成
     PIC12F683(8PIN)で水晶発振子用バッファとタイマー割込み用のインターバル信号を生成しています。

 プリント基板に部品実装後の写真を貼っておきます。

部品実装後のプリント基板(トップ面)

部品実装後のプリント基板(ボトム面)


 3Dプリンタでケースを作りました。

Z80GALケース


 CP/M-80も動きます。

Z80GALでのCP/M起動画面



●8号機はMC68000を使用した小型CP/M-68Kボード(Pic24MC68K) ★2022/03/23追記

 MC68000を使いチップサイズ(DIP 64ピン)とほぼ同じサイズのボードで CP/M-68K を動くようにします。USB シリアル変換チップも実装してパソコンとUSBケーブルで接続するだけで動くようにしました。

 回路図などの詳細は「Pic24MC68Kマイコン(その7)CP/M-68Kの移植」のあたりを参照してください。

 以下のチップで構成されています。
  1. MC68000P16
     64ピンのDIPで 16MHz で動かしています(ジャンパーピンで8MHzに切り替え可能)
  2. RAM
     AS6C8016-55を使いました。5V電源で動かせる 512K x 16bit のスタティックRAMでアクセスタイムは55nsです。
  3. PIC
     PIC24FJ64GA004で独自言語である picle コンパイラを使っています。
  4. ロジックIC
     74HC36874HC245を使用しました。
  5. USBシリアル変換用IC
     PL2303(8PIN)を使用し、電源もUSBから給電するようにしました。

 小型化するために SMD部品を使い、パターンも結構込み合っています。

Pic24MC68Kのパターン(グランドベタ化前)


 部品実装後の基板のボトム面が下の写真です。PIC と USB シリアル変換用 IC 及び SD カードホルダとSD コネクタ等が実装されています。

Pic24MC68Kの部品実装後の基板(ボトム面)


 トップ面には SRAM(512K x 16bit)とロジック IC 等が実装されています。

Pic24MC68Kの部品実装後の基板(トップ面)


 MC68000 チップを実装後の状態が下の写真です。LED 表示等があるので チップサイズより若干幅が広いですが、ほぼ MC68000 のチップサイズですね。

MC68000 実装後のトップ面


 透明のPETG フィラメントを使い、3Dプリンタでケースを作成しました。基板上のLEDの点灯状態が透けて見えます。

Pic24MC68K 動作中の状態


 CP/M-68K はネット上で探してもアプリケーションが少ないので、ehBASIC を移植してみました。

フラクタル図形 シダの葉


 YouTube に紹介動画をアップしたので貼っておきます。




●9号機は表面実装部品を使ったコンパクトな Z80 ボード(Z80GalCompact) ★2022/05/12追記

 上記の GAL を使った Z80ボード(Z80GAL)の回路で表面実装部品を使い、更に USB シリアル変換 IC(PL-2303)を追加して USB コネクタからの給電で動作するコンパクトな CP/M マイコンボードを制作しました。

 回路図などの詳細は「Z80GalCompactの制作」のあたりを参照してください。

 以下のチップで構成されています。
  1. Z-80
     Z84C002PEG を20MHzで動かしています。
  2. RAM
     フラットパッケージの M68AF127B を使いました。アクセスタイムは55nsで、サイズは 128KBytes ですが半分しか使っていません。
  3. EEPROMPIC
     M27C512-45 でアクセスタイムが45nsのROMです。
  4. GAL
     GAL22V10D の PLCC タイプのものを使用しました。
  5. クロック発振&タイマー割込み信号生成
     PIC12F683 で水晶発振子用バッファとタイマー割込み用のインターバル信号を生成しています。
  6. USBシリアル変換用IC
     PL2303 を使用し、電源もUSBから給電するようにしました。

 小型化するために SMD部品を使い、プリント基板のボトム面に RAM、GAL、PL-2303 及び PIC12F683 を実装しました。

Z80GalCompactのパターン(グランドベタ化前)


 部品実装後のトップ面が下の写真です。 Z80 CPU、EEPROM、SD カードコネクタ及びUSBコネクタが実装されています。

Z80GalCompact 部品実装後(トップ面)


 ボトム面が下の写真です。GAL のソケットの左上部分が隣接するダイオードに干渉するのでソケットを若干削っています。

Z80GalCompact 部品実装後(ボトム面)


 基板設計環境から 3D データを引き継いで ケースを設計しました。蓋の固定は小型化のためにインサートナットは使わず、嵌め込み式にしています。

ケースの全体の CAD 表示


 FDM 方式の 3D プリンタで透明 フィラメントで出力しましたが、透明度が低く部品が見えない状態でした。そこで SLA 方式の 3D プリンタを使いクリアレジンで出力後、UV カット塗装を塗布することで、基板に実装している部品が見えるようになりました。

Z80GalCompact のケース


 YouTube に紹介動画をアップしたので貼っておきます。YouTube 内で 「Z80」での検索結果をざっと見たところ、Z80 を使ったシングルボードの中では Z80GalCompact が最もコンパクトなボードのようでした^^