メインページに戻る 

御意見、御質問、御批判、歓迎します。
twitterのどこかにいるので適当に捜してください。 但し返信や回答を約束するわけではありません。

3月はタイミング調整に費やしました。

2月から行っていたハンダ付け(部品の実装)は3月早々には終了したのですが、RETROF-16改はさっぱり動いてくれません。
もちろん、設計ミスやPCBのレイアウトミス、ジャンパ線の配線ミスは山の様にあったのですが、最も頭を悩ませたのはタイミング調整です。RETROFシリーズは全て単相クロックで0Hzから動作する設計です。当然、RETROF-16改も1Hzで動作を確認し10Hz→100Hzと徐々にクロックを上げながら試験調整を根気よく行いました。

ところが、クロックが100KHzを超えたあたりから、一部の(機械語レベルの)命令が不安定になり、クロックが1MHzを超えると確実に暴走する状況でした。目標はクロック4MHz以上での安定動作ですから、これでは「お話」になりません。

下記画像はハードウェア的にはほぼ完成したRETROF-16改の基板両面。
コンピュータの自作というと「スパゲティ配線」や「ざるソバ配線」が当り前と考えている方も多い様ですが、片面基板でも部品の配置位置や配置方向を徹底的に工夫すれば、ジャンパ線は最小限で済みます。「スパゲティ配線」や「ざるソバ配線」は決して「自慢すべき事」や「憧れるべき事」ではないのです。

 

パターンの切り貼り

上記の画像からはよく解りませんが、PCBの銅箔をデザインカッターで削除したり、繋ぎ直した場所は山ほどあります。

タイミング調整とは

コンピュータの内部で行われている動作は、基本的にはレジスタ(メモリ)からレジスタ(メモリ)へのデータの転送です。 転送先がプログラムカウンタならば「ジャンプ命令」になりますし、直接転送せずに演算回路を経由して転送すれば「演算命令」になります。

左の図は実際のRETROF-16改の実際の回路の一部ではありませんが、同等の回路はRETROF-16改の中には多数存在します。 図は上のレジスタの内容を下のレジスタに転送する場合のタイミングを表したものです。

正しく転送をする為には送り手のレジスタ(図の上のレジスタ)の出力が有効(74LS574ならOEがL)の間に、受け手のレジスタ(図の下のレジスタ)に立ち上がりクロックを与えねばなりません。


しかし現実には、波形は計算どおりの形にはならず、波形自体も直線ではなくノイズも拾い、激しい曲線状です。左記は実際にアキュムレータに計算結果を転送する際の波形です。これは上記の74LS574ではなく74LS194への転送なので上段の波形が、上記のタイミング図とは正負逆になっていますが、話は同じです。

この実測波形の場合、僅かにTsu(クロックの立ち上がりを受け入れるために準備期間)が足りず、アキュムレータに計算結果を転送できませんでした。

この事例ではアキュムレータのみ、基板上に余っていた論理素子を使い、アキュムレータ用のクロックだけを他のデバイスへのクロックよりも遅らせることで解決しました。

他にも、この様なタイミング調整箇所は山ほどあり、それらを一つ一つ潰すのが3月の主たる作業でした。


最終クロックは4.608MHz

クロックアップの試験自体はRETROF-16改の基板の外から可変周波数の発振器を用いて行いました。5MHzでもなんとか動くのですが、CPUのクロックは画像出力回路と兼用する設計です。 画像出力回路の中にはピクセル信号や同期信号など、様々な矩形波が存在しますが、その中からもっとも5MHzに近い4.608MHzをCPUのクロックとして使用することにしました。

左記の画像は実際に4.6MHzクロックで、主メモリ上に一次元配列として用意したインベーダーのパターンを、画像メモリに2次元変換して転送するプログラムを実行してみた結果です。

背景のクリア(単色での全画面塗りつぶし)も省略していますが、画像下のにあるスイッチが並んだボードでプログラミングをするのはこの程度(機械語で100命令程度)のプログラムが(精神的に)限界です。もちろん、一度でも電源を落とすと苦労して打ち込んだプログラムは全て消えてしまいます。

4月の目標はWindowsマシンからRETROF-16改の主メモリにデータやプログラム送る転送装置の作成です。
この転送装置が完成すればクロスコンパイラやクロスアセンブラの作成に弾みが着くと思います。

但し週末のみの趣味の製作なので、コンパイラの完成はいつになるかは全く不明です。


メインページに戻る