汎用ロジックTTLのみでコンピュータを作る   

RETROF-16H 部品実装(1)

Copyright © 2014 T.GATARO All Rights Reserved.

上記タイトル左の画像は2013年に作成した「RETROF-16改」のものです。
今回の作品「RETROF-16H」は前作を遥かに凌ぐ性能を目指しています。
(前作、前々作との比較は「RETROF-16三部作の比較」(別窓で開きます)を御覧下さい)

「汎用ロジックでコンピュータを作る」のトップページ(目次)はこちら   管理人のメインページはこちら

基板作成完了から全部品の実装完了まで

これが手作りしたRETROF-16Hの基板(200×150mm)です。神々しく見えるのは背後(銅箔面)から黄色光を当てて撮影したためです。ガラスエポキシ基板のためパターンが透けて見えます。

この基板に全ての部品をハンダ付けすると「完成」となるのですが、それではおそらく動作はしないと思います。なぜならまだ多くの回路設計ミスや配線パターンの描画ミスが隠れていると思われるからです。

従ってRETROF-16H実装は部品を少しずつ実装し、その都度通電し動作試験を行う方法をとります。一般企業における製造現場では、この方法が採用されることはまずありません。しかし、回路シミュレーションも試作も省略する個人の趣味としての製造では最も確実な組み立て方法です。


ゴム足と電源回り(2014-3-20)

最初に装着するのはゴム足と電源回りです。

ゴム足は2.6Φのネジで留めます。ゴム足を付ける理由は銅箔面が直接作業机に触れるのを防ぐためです(金属クズ等がパターンの間に挟みこまれる等により、思わぬ短絡を引き起こします)。このゴムは最終的にはケース(筐体)に固定するためのスペーサーと交換となります。

電源周りとはDCジャックと電源スイッチです。また通電を確認するためにLEDを1つ電源SWの上に「仮止め」しました。このLEDも最終的に外され、LEDはケースに移動予定です。

画像は実際に通電し、LED(発光色はアイスブルー)を光らせた所です。これだけでも電源ラインが短絡していないことを確認できます。


なお、「基板上に電源SWが必要か?」という議論は大いにあります。無ければ無いでも良いのですが、手元にたまたま適当なSWがあったので取り付けてみました。ちなみに前作は基板上に電源SWは無く、電源ON/OFFはDCプラグの抜き差しで行っておりましたが、特に不都合はありませんでした。

画像の赤いラインはジャンパ線。本機は片面基板のため、この様なジャンパ線を多用しています。


使用したハンダとハンダごてについて

1号機(前々作)は興味本位もあり、初めて無鉛ハンダを使用しましたが、慣れていないせいもありハンダ付け不良が数箇所発生しました。そこで2号機(前作)以降、趣味の製作は「有鉛ハンダ使用」に戻しております。今回もハンダは普通の有鉛(千住金属のスパークルハンダ)を使いました。
またハンダゴテも普通の調温コテ(HAKKO 933)を330℃設定固定で使いました。
なお、上記は事実を紹介したまでで、このハンダやハンダゴテを推奨している訳ではありません。工具には使用者との「相性」があります。色々と試してみて自分が使いやすいと思う物を使うのが一番だと思います。

基準クロック発振器等の実装と発振確認(2014-3-21 AM)

発振器(画像中央やや左上)とVGAコネクタ(画像左上)、試験用スライドスイッチ(画像右上)を取り付けた所です。

(試験用スライドスイッチに関してはは別途解説予定)

部品の実装はまず、画像信号生成回路を先に行い、液晶モニタへの画像出力を確認してから、CPU本体を実装します。画像信号生成回路を先に行う理由は特にありません。CPU部分を先に実装しても特に問題はないと思います。

いずれにせよ、RETROF-16Hは画像出力回路のクロックとCPUのクロックが共通ですので、まずはこの発振を確認するのが最初の目標となります。


発振器はEPSONのSG-8002DB(27MHz)を使います。全てのICはソケットを用いて実装します(作成に失敗した時に貴重なTTLの回収を容易にするため)。発振器のソケットの「内部」に0.01uFのパスコンを設置しています(画像の水色の部品)。


発振の確認は周波数カウンタ付きの安価テスタで十分です。但し安価テスタは常に測定誤差が生じる事を意識する必要があります。画像は26.99MHzを表示していますがこれはテスター側の誤差で、実際には27.000MHzを発振しています(高精度の周波数カウンタで確認済)。



クロックの分周確認(2014-3-21 PM)

27MHzをインバーター(74LS04)でバッファリングし、分周器(74LS393)に渡す回路の実装です。普通なら1時間ほどで終了する作業ですが8時間以上費やしました。理由は3つあります。

一つは何度も確認した筈なのに「74LS04に電源が供給されていない」というレイアウトミスがあった為です。これはジャンバー線を無理矢理追加する事で解決しました。

もう一つは、27MHzの分周に用いた74LS393の最大周波数が25MHzであることによる動作不安定です。これは設計時点でも気付いており、30MHzでの動作も確認していたのですが、74LS393にも「個体差」がありました。手持ちの393をいくつか試し、最も安定動作する物を使用することで解決しました。


3つ目は、思いのほか分周後の波形が汚なかった事が原因です。
画像はオシロで分周後の波形を観察している所です。一見、正しい周波数で発振していてもオシロで観察するとリプルやジッターが確認できます。このままではCPUとしての動作を不安定にする要因となりますので、電源ラインの迂回路の新設(ジャンパー線追加)や、0.01~0.1uFのパスコンを様々な位置に取り付け、最も波形が綺麗になる様に調整しました。


使用したワイヤーについて

本作品は片面基板を用いています。従って当然、量のジャンパー線が必要となります。
画像の赤と緑のワイヤーは電源供給線で少々太めの単芯線をつかいました。その他のジャンパー線は全て芯径0.26mmのETFE線(エチレンテトラフルオロエチレン線)を使いました。(細線用のワイヤーストリッパーは必須工具です)

水平同期信号の作成(2014-3-22)

パスコンを取り付け、電源が安定し、27MHzの発振も安定してくると、作業はかなり楽になります。画像は27MHzを74LS393で分周して作成した13.5MHzを、更に2つの74LS163(画像黄色枠)で169分周した所です。
13.5MHz÷169は=79.88KHzです。これが液晶モニタに渡す水平同期信号になります。169分周はカウント値が最大値(255)になった時点で87を同期ロードすることにより実現しています。74LS163は最大値の検出出力(RCO)とロード要求入力(LD)の論理が逆ですので74LS00(画像黄緑枠)を1ゲート使い論理を反転しています。

図中の水色で囲んだ部品は単なるジャンパー線の差込口で、左が画素をブリンク表示する際のブリンク周期の設定用。右がCPUに渡すクロックの選択用です。


ここでも、出力周波数を確認します。画像は79.8KHzを示しています。
この様に部品を数個実装する都度、そこまでの回路が正しい事を確認します。一見手間隙がかかる方法ですが、この手法は万一不具合が発生しても、その要因の解析は非常に簡単になるメリットがあります。


垂直同期信号の作成(2014-3-23)

79.8KHzの水平同期信号を74LS393で更に1064分周し、75Hzの垂直同期信号を作ります。水平方向の分周は同期カウンタの74LS163を用いたのに対し、垂直方向の分周は格段に低い周波数ですから、非同期カウンタの74LS393で十分です。
1064分周は74LS393で12bit(4bit×3)のカウンタを作り、カウント値が0100_0010_1000になった瞬間にゼロクリアすることで実現します。

なお、この75Hzを更に128分周し、ブリンク表示(ソフトウェアでカーソルを表示する際にそれを点滅させるのに必要)に必要な0.6Hzも作成しています。


水平同期信号と垂直同期信号のタイミングについて

左の波形は黄色が水平ブランキング期間(長さは[79.8KHz=12.52uS]の41/169、約3us)です。
青が実際にモニタに渡す水平同期信号です。(画像は端から端までが5ns)
SXGAの正規の規格では、この水平ブランキング期間(フロントポーチ期間+バックポーチ期間の長さが厳密に定められていますが、この波形はその推奨規格とは大きな差があります。しかし多少ラフな波形でも、液晶モニタがほぼ自動的に補正して追従してくれます。いろいろと実験してみましたが、水平ブランキング期間の真ん中付近に、水平ブランキング期間の4分の1ほどのパルスがあれば、モニタは水平同期信号と見做してくれる様です。

同じく黄色が垂直ブランキング期間(長さは[75Hz=13.33mS]の40/1064、約501us)です。
青が実際にモニタに渡す垂直同期信号です。(画像は端から端までが1ms)
こちらもSXGAの正規の規格とは大きく外れ、垂直ブランキング期間の真ん中よりやや手前で、垂直ブランキング期間の4分の1ほどのパルスをモニタに渡しているだけです。

尚、液晶モニタに与える信号の正規の規格は以下のサイトが便利です。
http://tinyvga.com/vga-timing(別窓で開きます)
筆者もこのサイトを見ながら、ブレッドボードを用いて事前に「どこまで簡略化できるか」を確認しました。

画像を出す(2014-03-25)

水平同期信号と垂直同期信号ができたので、それを液晶モニタに与えれば「絵」が出るのですが、同期信号だけだと「真っ黒な絵」が出るだけです。RGB信号も何か与える必要がありますが、画像メモリはまだ実装していないので、RGB信号はまだありません。そこで水平方向の分周カウンタ出力と、垂直方向の分周カウンタ出力の値をRGB信号とてモニタに渡します。

R信号 ⇒ 水平方向の1/4幅の方形波を470Ωの抵抗を介して直結。
G信号 ⇒ 水平方向の1/2幅の方形波を470Ωの抵抗を介して直結。
B信号 ⇒ 垂直方向の1/4幅の方形波を470Ωの抵抗を介して直結。
(同期信号はTTL出力をモニタに抵抗を介さないで直結)


左が表示結果です。
(モニタは1280×1024画素の普通のパソコン用モニタです)

この時点で部品の実装は1割ほどですが、電源電流は100mAを突破しています。
(電源は2A(5.0V)の安価な小型スイッチングレギュレータを使用)
ちなみに、この時点での基板の質量は140g、使用した糸ハンダは約1.5m(0.8Φ)です。



画像メモリの実装(2014-03-26)

画像メモリはHM62256LP-10(日立、8bit×32KのSRAM)を使います。コンピュータのメモリにはDRAMを使うのが当り前になった頃から、SRAMは入手が困難になりましたが、このSRAMは定番中の定番であったため、今でも容易に(注1)入手可能です。

RETROF-16HではこのSRAMの8bitのデータ出力を74LS157で4bit×2に変換し、擬似的に4bit×64KのSRAMとして用います。1画素を4bit(RGB各1bitとブリンクに1bit)とし、縦横を共に256画素とすると、丁度このメモリ一個で1画面を記憶できます。

尚、使用するモニタはSXGA(1280×1024)ですので、モニタ上の5×4画素の矩形が、RETROF-16Hにおける(擬似的な)一画素となります。


左が画像メモリ実装後の表示結果です。
まだ、CPUとのインタフェイスは確立していないので、電源投入時のランダムパターンが表示されるだけです。

左の画像はモニタ画面をデジカメで撮影し縮小したため、多少ボケて見えますが、実際にはDVI出力と同程度の鮮明表示です。(また一部の画素はブリンクしているのですが、静止画像では判りません)

(注)HM62256は様々な互換品があります。例えば東芝製ですとTC55257という名称になります。必ずしも「HM62256が入手容易」という意味ではありません。また、店により1個500円から2000円超と価格が大きく異なります。もっとも安価なのは秋月電子のSRM2B256SLMX55(エプソン製)で5個で300円です(2014年3月現在)。但しSRM2B256SLMX55は1.27mmピッチのフラットパッケージですので、DIPパッケージの代替とするには、別途変換基板が必要です。


次はいよいよ、CPU本体の実装です。

RETROF-16Hの部品実装(その2)へ進む