TTLのみでROMライターを作る(ハードウェア編)
RETROF-16Mの向こうに
2016年の春にRETROF-16Mを無事完成させ「インベーダーゲームが走る性能を持つコンピュータをTTLのみで作る」という長年の夢が遂に叶いました。
RETROF-16MはALU(算術論理演算ユニット)に74LS181を4つ、命令デコードは数個のTTLと50本ほどのダイオードを用いる「ダイオードマトリクス方式」でした。
次の目標はRETROF-16MのALUと命令デコーダーをROMに置き換えたコンピュータの製作です。もちろん単なる「RETROF-16MのROM化」ではなく、性能そのものもRETROF-16Mを遥かに凌駕するものを目指します。当然、ISA(命令セット)からの設計し直しとなりますので、完成までには1年以上、おそらくは2年近くを要すると思います。
ROMライターの作成
とにかくROMを使う以上、ROMライターが無ければ話になりません。
これはROMライターを買えば済む話なのですが、「自分で作れるものは全て自分で作る」がRETROFシリーズの『信条』ですので購入は御法度です。新たなRETROFの作成はまずはROMライターを作る事から始まります。
但し、ROMライター作ること自体が「目的」ではありませんので、ここは「世界一単純なROMライター」を目指します。
勿論ROMライターも原則「TTLのみ」で作ります。
書き込みの対象とするROMと回路図
対象とするROMは「安価で大容量、かつソケットで脱着可能」であることが絶対です。運良くこの条件にピッタリなフラッシュROMが秋月電子通商さんにありました。このROMは各ピン(電源とGNDを除くと30本ある)に一定のルールに従って論理信号を与えることで書込可能です。従って入出力が30bit分あるDIOボードがあれば、それ自体を「ROMライター」として使う事ができます。
しかし、出力が30bit以上あるIOボードは一般に非常に高価です。そこで同じく秋月電子通商さんが販売しているUSB接続で制御できるIOユニット(FT245RLユニット)を使いました。但しこのユニットは入出力が8bit分しかありませんので、直接ROMに接続するのは8bit中の3bitのみです。
残る5bitは32bit分のシフトレジスタの制御に用い、そのシフトレジスタの入出力線をROMのアドレス線とデータ線に接続することにしました。
回路図(拡大画像は準備中)
FT245RLの8ビットの割当一覧
ビット | 方向 | 説明 |
---|---|---|
0 | 入力 | ROMのデータバスに接続されているシフトレジスタの最上位ビット(QH')に接続 |
1 | 出力 | ROMのアドレスバスに接続されているシフトレジスタのクロック |
2 | 出力 | シフトレジスタの入力(アドレス用・データ用共通、Right入力) |
3 | 出力 | データ用のシフトレジスタのモード(Hで同期ロード、Lでシフト) |
4 | 出力 | ROMのデータバスに接続されているシフトレジスタのクロック |
5 | 出力 | ROMのCS#へ直結 |
6 | 出力 | ROMのOE#へ直結 |
7 | 出力 | ROMのWR#へ直結 |
基板設計
基板のレイアウトはフリーの基板製作CADであるKiCad(日本語公式ページ)を用いました。回路図エディタと連動していますので回路図が正しければ、接続的は確実に正しいパターンを作成することができます。
但し、KiCadは片面基板には対応していないので両面基板(2層基板)としてデザインし、銅箔面のみを印字して原図とします。部品面の配線(下図の赤色の線)は錫メッキ線による「部品面ジャンパ」となります。
配線パターン。KiCadは任意のレイアのみを任意の色で印刷できるので、上記のパターンを以下の様に印刷することができます。これが基板パターンの「原図」となります。
完成した基板に部品面のジャンパーをハンダづけしたところ。(100mm×75mm)
トナー転写法に関する補足
今回は「感光基板」ではなく以前から気になっていた「トナー転写法」で行いました。
トナー転写法の詳細に関してはここでは割愛します。御存じない方は「プリント基板 トナー転写」等で検索して下さい。
トナー転写は過去にも何度か挑戦したのですが、いずれも基板(200mm×150mm)が大きすぎたせいか成功した事がありませんでした。今回の基板は100mm×75mmと小さめであったためリベンジした次第です。ROMライターという機能自体とトナー転写法は何の関係もありません。
結果は以下の様に一見、上手くできた様に見えますが、拡大するとボロボロなのが分かります。
トナー転写法でも感光基板並みに綺麗な基板を作る事は可能です。今回パターンがボロボロになったのはトナー転写法自体が問題なのではく、筆者の不慣れが原因です。
あまりにも酷い基板なので、感光基板で作り直すことも考えましたが、短絡個所はカッターで切断、断線箇所は「普通のビニール線」の撚り線を一本ずつバラし、骨折した足に添え木を当てる様にしてハンダを盛り「修復」にトライしました。
かなりの手間をかけましたが、辛うじて全ての短絡個所と切断個所を修正できました。
今回は「トナー転写法を是非経験したい」という一心でパターンの修正を行いましたが、今後は更にトナー転写法に関する新たなノウハウでも習得しない限り、この方法を用いることはないと思います。
参考データ
・使用したLBP : MultiWriter5100(NEC製)
・使用した転写シート :A4判の黄色のトナー転写専用シート(アイテンドーにて購入)
・転写熱源 :家庭用アイロン、温度は最強。
完成
以下が完成画像となります。画像ではDCアダプターを用いて5Vを給電していますが、USBからの給電でも問題なく動きました。(ピーク時の消費電流は173mA)
基板上には書込アドレス確認用に19個、書込データ確認用に8個、計27個の赤色のLEDがあります。書き込み処理自体はC++/CLIで作成した専用のアプリケーションソフトで全領域を一気に書き込みますので、このLEDは実用上の意味はありません。回路やプログラムのデバッグ作業用に設置したものです。
「ソフトウエア編に続く」(いつ公開できるかは全く不明です)
御質問等あればtwitterにて御遠慮なくどうぞ。(但し回答をお約束するものではありません)
初出:2016年6月28日