2020.3.26
前へ
次へ
ホームページトップへ戻る

トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


[第204回]



●OPコードフェッチ回路(4)動作テスト

今回はOPコードフェッチ回路試作基板の動作テストです。
テストはND80Z3.5の82C55入出力コネクタに[第195回]で作ったフラットケーブルを接続して、BASICプログラムで行ないます。

下はOPコードフェッチ回路試作基板にフラットケーブルコネクタを接続した写真です。

写真ではコネクタの向きが悪くてちょっと見にくいですが、ケーブルの反対側は26pinコネクタになっています。
そちらをND80Z3.5の82C55入出力用コネクタに接続します。

コネクタの結線は[第195回]の接続図と同じですが、試作基板側の信号は異なります。

82C55のPA0〜PA7の出力を試作基板のD0〜D7につなぎます。
データのラッチ信号は本来はCPUクロックのT1ですが、今は動作テストですからT1の代わりにPC7をつなぎます。
試作基板からラッチ出力されるOPコード(OP0〜OP7)を確認するためにPB0〜PB7の入力をつなぎます。
D0〜D7とPA0〜PA7のビットの並びは一致していませんが、動作テストですから結果が正しく確認できればよいのでそのままの接続にします。
つまりD0とPA5、D1とPA4というように接続することになります。
同様のことはOP0〜OP7とPB0〜PB7にもあてはまります。
こちらも並びは異なりますがこのまま接続します。
OP0とPB6、OP1とPB7というように接続することになります。
一見するとそのままではテスト結果の入力と出力の並びがでたらめになってしまって、結果の確認がしにくいように思われますが、幸い入力と出力の間には規則性があります。
試作基板の側のD0〜D7とOP0〜OP7は同じ並びです。
一方で82C55のコネクタのPA0〜PA7とPB0〜PB7を見てみると、PA0〜PA3とPB0〜PB3は同じ並びになっています。
またPA4〜PA7とPB4〜PB7は丁度順序が逆になっています。
このことからプログラムでPA0〜PA7に特別の加工をしないで普通にデータを出力して、その結果を試作基板を通してPB0〜PB7で受ければ、その結果が正しいかどうかは十分判断できます。

下は今回テストのために作ったBASICプログラムです。

    10 OUT $83,$82
    20 A%=1
    30 FOR T%=0 TO 7
    40 OUT $80,A%
    50 OUT $83,$0F
    60 OUT $83,$0E
    70 OUT $80,$FF
    80 B%=IN($81)
    90 PRINT BI$(A%),BI$(B%)
   100 A%=A%*2
   110 NEXT T%
   120 A%=1
   130 FOR T%=0 TO 7
   140 C%=$FF-A%
   150 OUT $80,C%
   160 OUT $83,$0F
   170 OUT $83,$0E
   180 OUT $80,0
   190 B%=IN($81)
   200 PRINT BI$(C%),BI$(B%)
   210 A%=A%*2
   220 NEXT T%

ND80Z3.5の82C55のアドレスは80〜83です。
PAとPCを出力に、PBを入力に設定しています(アドレス83に82を出力)。
行番号20〜110ではビット0〜ビット7のうちの1ビットのみを1にして、ほかのビットを0にしたデータをPAから出力したあと、PC7をL→H→Lに変化させることでラッチパルスを出力し、そのあとデータがラッチされていることを確かめるためPAからFFを出力します(データが筒抜けにならずにラッチされているかどうかの確認のため)。
最後にPBで試作基板からのデータを入力したあとPAに出力した値とPBから入力した値を表示して、これを8回繰り返します。
次の120〜220ではビット0〜ビット7のうちの1ビットのみを0にし、ほかのビットを1にしたデータをPAから出力することと、ラッチした後の確認のためPAから00を出力するところのみを変更してあとは前半と同じ処理を8回繰り返します。

下が実行結果です。

>r.
00000001     00000001
00000010     00000010
00000100     00000100
00001000     00001000
00010000     10000000
00100000     01000000
01000000     00100000
10000000     00010000
11111110     11111110
11111101     11111101
11111011     11111011
11110111     11110111
11101111     01111111
11011111     10111111
10111111     11011111
01111111     11101111

試作基板の回路は期待した通りの動作をしてくれているようです。

何回も書いていることですが、BASICは実行速度は遅くなりますが、短いプログラムならば今回のプログラムのようにほとんど即席で簡単に作ってしまうことができます。
そしてこれは宣伝なのですが、今回のようにND80Z3.5はハード回路のテストなどにも十分使える優れものなのです。

ともあれ、これでやっとOPコードフェッチ回路は完成です。

トランジスタでCPUをつくろう![第204回]
2020.3.26upload

前へ
次へ
ホームページトップへ戻る