CNCでプリント基板を製作し CP/Mシステム動かすぞ

#目的
　少し前に、CNCでArduino基板を作成し、動作させた。
　この時点での成功率は50%位、でもこれにめげてはいけないぞ。
　次になにを作ろうかと、つらつら考えた。
　現状のツールの範囲で作れる、最大のものを作りたいな。
　例えば、144ピンのQFPを使うとか。これ以上はBGAになり、もう無理だから。
　◆◆◆　そうだ、CNCでCP/Mシステムを作ろう　◆◆◆
　手慣れて来たので、上手く動作するだろう。


#経緯
　CP/Mはご承知の通り、80/Z80CPUで動作するデジタルリサーチ製のOSです。
　昨今のOSに比べば軽量な環境で動作しますが、それなりの技術は必要です。
　そこで回路及びソフトは先達のノウハウを借用する事とし、自己の実装技術(?)を検証する事にしました。
　参考にしたサイトは　「[CP/M on FPGA](http://searle.x10host.com/Multicomp/cpm/fpgaCPM.html)」です。
　※出来合いのFPGA基板を使用するのであれば、上記内容内容を見れば事足ります。
　※あれ、ホームページが移動している、サイトを移してのか、お亡くなりになったのかも。
　ただ、基板を作るにしても、CP/Mが動作しないと何がなんやら判らなくなるので、次のようにステップを踏む。

　Step-1　市販FPGA基板でBASICを動かす
　Step-2　市販基板にメモリ増設して、CP/Mを起動させる
　Step-3　プリント基板を作成し、CP/Mを起動させる

#前提条件
　以下のハード・ソフトを必要に応じ、予め準備してね。(購入先、金額は参考)
　1. FPGA-board 　　　　アルテラ FPGA Cyslonell EP2C5T144 最小システム学習ボード開発ボード(AliExpressで購入、千円ぐらい)
　2. 外部メモリ　　　　　128KB.RAM AS6C1008(EBayで購入、500円位)
　3. 基板試作用部品　　　FPGA等をEBay等で調達。(部品合計より、FPGA-BOARDの方が安い!、なぜだ)
　3. SD-CRAD　　　　　　コネクタとカード本体(EBAYで購入した)
　4. 基板設計ソフト　　　EAGLEを使用(無料、動作が軽快なので7.2を使っているが最新版でも多分問題ない)
　5. 切削データ作成　　　pcb-gcodeを使用(無料、ver 3.6.2.4)
　6. Quartus Prime　　　FPGAのプログラムの開発、変更に使用(無料、旧13.0sp1が必要)
　　　　　　　　　　　　※EP2C5は13.0sp1でないと開発不可、今でもＤＬ可能、別Verと併用可能。
　7. USB-Braster　　　　FPGA書き込み機(Amazonでコンパチ品を売っている、千円位か)
　8. USBシリアル　　　　FTD1232(Amazonでも売っている、百円位、但し、運用に制限が発生)
　9. 通信ソフト　　　　　テラタームを使用(無料)


#Step-1 市販FPGA基板でBASICを動かす
　「[...custom computer on a low-cost FPGA](http://searle.x10host.com/Multicomp/index.html)」の通りにやれば動くはず。
　BASICの起動画面を拝む。
　※動作したソフトを「[Step-1](https://github.com/hi631/FPFA_CPM/tree/master/Step1_2KBASIC)」に掲載しておく。
　※Serial-1の配線はFD1232に繋がるように変更。この時、基盤の裏に有るR9,R10を外す必要が有るので注意。
　※USB-BrasterとFT1232は同時に動作出来ない。(不満ならもっと高価なUSBシリアルを買ってね)
　　通信ソフトを起動していなければ、書込み動作が可能となる。signal-tapを使用する場合も、動作させてから通信を起動すれば使える。

#Step-2　市販基板にメモリ増設して、CP/Mを起動させる
　1.メモリとSD-CARDをFPGA基板に適当に接続する。
　2.メモリを外部接続にして、MS-BASICを動作させる。
　3.ROMをCP/M用に変更し、起動を確認。
　※「Press [SPACE] to activate console」と表示されたら、ブートは成功。
　　「space」「x」「y」と押して、A>のプロンプトが出ればCP/M起動成功。
　※これもCNCで作製したので、参考としてCNCでのＩＯ基板の作成例を「[Step-2](https://github.com/hi631/FPFA_CPM/tree/master/Step2_56KBASIC)」に掲載しておく。

#Step-3　プリント基板を作成し、CP/Mを起動させる
　1.FPGA回路を適当に設計し、EAGLEでプリント基板設計を行う。
　2.pcb-gcodeによる切削データ(g-code)化。
　3.CNCで基板を切削。
　4.部品をはんだ付けする。
　5.電源を入れて、動作確認。
　※参考としてCNCでの基板作成例を「[Step-3](https://github.com/hi631/FPFA_CPM/tree/master/Step3_CMP80)」に掲載しておく
　※動作しない場合は、Step-1,Step-2を実行して、不良個所を検出、訂正する。


#基板設計
　基板設計はEAGLEで回路設計、プリント基板配線、切削データ作成までを行った。
　FPGAの回路設計は、電源と書込み回路さえ繋げば動作した。(但し、書込み回路に必要なピンが回路のあちこちに有るのには参った)
　基板は両面とはせずに、１．５面基板として設計。
　バターンと表面実装部品は上面に、ジャンパとディスクリート部品は背面から実装した。
　表面実装部品をはんだ面(上面)に、DIP部品を部品面(下面)に配置、電源とジャンパーを部品面とした。
　これによりスルーホール処理が不要となるが、実装効率は良くない。
![Image10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/be4d4a25-a301-d9c6-e80a-6d8c6316cd3b.jpeg)
　　EAGLEによる回路設計結果　　　　　　　パターン設計

#切削データ作成
　データの作成はpcb-gcodeを起動すれば作成できるが、旨く作るには多少のテクニックと調整が必要。
　今回のターゲットはTQFP-144、ピン間隔0.5mm、パッド0.3mmとかなり狭い。目視だと良く見えない。
　そこで、パターン幅は0.3mm、パターン間を0.2mmに設定。
　もっと細くとも切削可能だが、諸般のばらつきによってはパターンがやせ細り不安なので、再現性を重視してこの設定。
　pcb-gcodeでTool Diaを0.2mmに設定して、パターン間隔を0.2mm以下にするとpcb-gcodeでは、配線がくっついてしまうので、要注意。
　ギリギリで通すために、何回も書き直した。

#CNCによる切削
　Vカッターはamazonで販売されていた、自称0.1mm,15度を使用。
　※実際には0.1-0.3mm位のばらつきが有るようなので、試掘してから用途に合わせて選別する必要有り。
　※細いのがいいとは一概には言えない。はんだブリッジの発生を考慮すると、0.2mm程度が使いやすいようだ。
　※pcb-gcodeでIsolationを指定しているので、狭い場所以外は沿面距離を0.4mm程度取れている。
　基板材質は紙フェノールを使用した。
　安いVカッターではガラスエポキシでは刃が立たない(0.1-0.2mmでは一寸した事で折れる。)
　※高周波性能が悪いみたいだが、取り合えず無視。
　※はんだ付け時に、なるべく熱を加えないように考慮が必要のようだ。


#切削上の注意
　Vカッターのはめ込みが不十分で切削幅が広がった(0.3mm)状況も有ったので、しっかり差し込もう。
　切削中にUSBシリアルが通信不良になる状況が発生。ハブ接続は止めてパソコンに直接接続すると発生しなくなった。
　※CNCのシリアル電源が本体とUSBに接続されており、本体の5V電源不足でUSBがダウンしているような気がする。


#QFP-144のはんだ付け
　QFP-144はピン間が0.2mmしかなく、ICが0.2mmずれると信号が接触してしまう。
　もう少し大きい部品は手で押さえて、最初のピンをはんだ付けしてから微調整後に残りのピンをはんだ付けすればいいが、これはちょいと難しい。
　そこで、QFP-144を固定する治具を作成。基板には治具固定用の穴を開けている。
　これで仮固定してから、拡大鏡で見ながら位置微調整、旨い位置に来たらはんだづけすると結構うまく出来た。時間はかかるが。

![Image7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/c2c67407-7aa6-7fc6-cf08-352640ad2c67.jpeg)
　　　基板切削例　　　　　　　　　　　　　　　　TGFP-144固定治具
![Image3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/f5f65244-84e0-7c92-37b7-86b83feec17a.jpeg)
　　　　部品実装　　　　　　　　　　　　　　　　背面
　※コンデンサを付けているが、無くても動く。
<BR>
　TQFP-144は現在の手持ちツールではギリギリ自作可能なレベルではないかと考えている。
　今後考えるのはEP4CE6を使い、ワンボード　ベーシックマスター レベル３を考えているが、その先は手が届かないだろう。
　市販ハードを利用すればさらに実現可能だが、なんだか悔しい。
　現在は実施できないが、BGA等も自作出来ないか、考えたいところではある。
　なお、もし追試する奇特な方がおられた場合、上記記載内容は無保証であり、各自の責任においてご利用願います。