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ライターという機能自体とトナー転写法は何の関係もありません。

結果は以下の様に一見、上手くできた様に見えますが、拡大するとボロボロなのが分かります。
トナー転写法でも感光基板並みに綺麗な基板を作る事は可能です。今回パターンがボロボロになったのはトナー転写法自体が問題なのではく、筆者の不慣れが原因です。

基板レイアウト

あまりにも酷い基板なので、感光基板で作り直すことも考えましたが、短絡個所はカッターで切断、断線箇所は「普通のビニール線」の撚り線を一本ずつバラし、骨折した足に添え木を当てる様にしてハンダを盛り「修復」にトライしました。

基板レイアウト

かなりの手間をかけましたが、辛うじて全ての短絡個所と切断個所を修正できました。
今回は「トナー転写法を是非経験したい」という一心でパターンの修正を行いましたが、今後は更にトナー転写法に関する新たなノウハウでも習得しない限り、この方法を用いることはないと思います。

参考データ

・使用した生基板       :片面紙フェノール(サンハヤト No.10 100mm×75mm)
・使用したLBP         : MultiWriter5100(NEC製)
・使用した転写シート :A4判の黄色のトナー転写専用シート(アイテンドーにて購入)
・転写熱源                :家庭用アイロン、温度は最強。

完成

以下が完成画像となります。画像ではDCアダプターを用いて5Vを給電していますが、USBからの給電でも問題なく動きました。(ピーク時の消費電流は173mA)

基板上には書込アドレス確認用に19個、書込データ確認用に8個、計27個の赤色のLEDがあります。書き込み処理自体はC++/CLIで作成した専用のアプリケーションソフトで全領域を一気に書き込みますので、このLEDは実用上の意味はありません。回路やプログラムのデバッグ作業用に設置したものです。

基板レイアウト

 

「ソフトウエア編に続く」(いつ公開できるかは全く不明です)

御質問等あればtwitterにて御遠慮なくどうぞ。(但し回答をお約束するものではありません)

初出:2016年6月28日