電気・電子」カテゴリーアーカイブ

TTL IC で自作する Atari Pong(4)

* ものは完成しているのですが、執筆が間に合っていません…

4 枚目はゲームコントロール回路、サウンド出力回路です。参考にした回路図には少し誤りがあるので、原本を参照したほうがよいかもしれません。右下の SW はゲーム開始ボタンです。

オリジナルの回路にはアンテナ入力があるのですが、役割がよくわかりません。この信号と /SRST 信号は Tr で組まれたラッチ回路の入力となっており、客が近づいたら ATTRACT モードになるという動作でいいのでしょうか?今回はこの部分も TTL IC に変更しています。また、オリジナルのオーディオ出力には DC 成分が残りますので、10uF でカップリングしています。

IC のデカップリングキャパシタですが、IC 1 列ごとに 3.3uF のタンタル C、フリップフロップに別途 0.1 uF のセラミック C を乗せています。少し足りないかとも思いましたが、この程度で十分のようです。ただし、使用した IC は半分以上 74LS なので、スタンダード 74N を使用するなら、もう少し多く載せたほうが良いかもしれません。

TTL IC で自作する Atari Pong(3)

3 枚目はボール位置のカウンタ、ボール速度の計算回路を載せています。
毎度美しくない配線ですが、このほうが後のデバッグに都合良いのです…

Pong の回路の面白いところは、上下左右に動くボールの「位置」を 74161 (同期式カウンタ…オリジナルでは Fairchild 9316 ですが) によって演算させていることです。どういう仕組みなのかというと、例えば次のフレームでのボールの縦位置は現在位置の ± N とするためには、ディスプレイの縦幅が 252 ラインなので、74161 のプリセットを 4+N (>0) とした modulo 256-(4+N) のカウンタ回路を構成します。このカウンタを水平同期信号でフリーランすると、カウンタがプリセットされるタイミングの V 位置 y(t) として y(t) = y(t-1)+N となるわけです。(説明を理解するより回路を見た方が早いでしょう)

ボールの垂直速度、水平速度は動的に変わってゆきます。垂直速度はボールがパドルに当たった位置によって変化するので、ボールの移動角 度が変わることになります。水平速度もゲームが進むにつれて高速になります。これらの工夫により、Pong というゲームは素朴ながらゲーム性が高くなっているわけです。

TTL IC で自作する Atari Pong(2)

基板 1 枚目

やはり 1 日がかりの作業となってしまいました。1 枚目の基板にはクロック(14.31818 MHz の 2 分周)を含む、映像タイミング生成回路を中心に乗せています。

ケーブルによる配線は基板の表面を這わせています。裏面を Point-Point で配線した方が表面からの見栄えが良く、配線スピードも速くなるのですが、配線ミスが見つけにくくなります。難しいところです。今回は表面での配線で統一しようと思います。

基板間の配線は L 型ピンヘッダを使用して、マザーボード経由の配線もしくはフラットケーブルによる配線を考えています。一昔前ならカードエッジコネクタでしょうが、今はそのほうがコスト大です。

このユニバーサル基板では、パターンの制約から、DIP IC を乗せて使うとあまりスペース効率が良くなりません。パターンカットすればこの 2-3 倍の IC を乗せることができるのですが、配線が窮屈になりすぎて不都合です。この点、サンハヤトの IC ユニバーサル基板は良くできているのですが、少し高価です…

TTL IC で自作する Atari Pong (1)

去年から ロジック IC をたくさん収集していましたが、そろそろ消費するフェーズかなと思います。冬休みということもあり、Atari のアーケードゲーム Pong を作ろうと考えました。

本稿の題名は「TTL IC で自作する Atari Pong」としましたが、オリジナルの Pong は 74 シリーズの汎用ロジックで組まれているので、サービスマニュアルの回路図を元に製作することにします。サービスマニュアルや回路図は archive.org 等で手に入りますが、このページ(Dan B’s Video Game Tech Page)に清書済みの PDF があるので、参考にさせてもらいます。

製作にあたって設けたルールは以下の通りです。

  • 使用する IC は 74N、74LS (+555) に限る
  • 配線には UEW を使わない
  • チップ部品を使わない

製作にはおおむね 60 個程度の TTL IC を使用しますが、ほとんど手持ちストックの中から揃えることができました。ただし、ストックの都合で、以下の IC は別の IC で代用することにします。

  • 7425 -> 7432 (+7404)
  • 7450 -> 74LS51
  • 74107 -> 7473, 74LS113
  • 9316 -> 74LS161
  • 7483 -> 74LS283

 
ストックから集めた IC

今回は以下のようなユニバーサル基板を調達しました。「新印 8.5CM*20CM」と書かれており、ロジック IC の実装に便利そうです。これ 1枚に 16 個程度の IC が楽に乗せられるので、複数枚を用いてモジュール構成とします。


IC 向けユニバーサル基板

以下次回。

ニキシー管テスタのその後

以前紹介していた TR-6364 マルチメータですが、
電源ケーブル欠品という問題がありました。

特殊な規格のコネクタのようで、どうしてもケーブルが手に入らなかったので、

写真のように、普通のメガネコネクタに付け替えてしまいました。
(ちなみにこれはマルツで購入したもの)

これで、電池動作に加えて、内蔵トランスからの動作ができるようになりました。
電池動作との動作の違いは、内部動作が電池電圧直結から安定化 +15V になることで、
これにより
・AC-DC 変換部分オフセットの安定化
・内部 DC コンバータのピー音の解消
などのメリットがありました。


実は半年前に改造・調整していたのですが、
今動かしても ACV レンジでちゃんと 0 が出ます。
よかった。

自作VFD電卓 その3

クロック回路の設計


TMS1030/1031 にはクロックドライバが無いので、
1 ピン(CK) にクロック信号を入力する必要があります。
周波数は 100k – 200kHz ほどで、14V p-p (Vdd-Vgg) の振幅が必要です。

当時の製品では、Tr 2石のマルチバイブレータでクロックを生成させているケースが多いのですが、
部品点数と消費電流が気になるので、今回は CMOS インバータによる発振回路を作ります。
こういう高電圧系の応用に CMOS の 4000B / 4500B は便利です。

 
4584B (シュミットトリガインバータ) を使った発振回路は、図のようになります。
4069UB を使うことも考えましたが、その場合貫通電流の影響で、
消費電流が 図の回路に比べて 10 倍ほどになってしまいます。
出力の 1k は保護用で、接続先のピン配置がまだ確実ではないので入れたのですが、
そもそも 4584 の出力 Z がそれくらいあるので、無くても同じかもしれないです。


ここまでの基板写真です。

ドライバ回路の設計

この IC にはディスプレイのドライバ回路もなく、単にオープンドレイン出力となっているだけで、
定格などは資料が無いため不明です。
VFD を駆動するために、外部 Tr によるドライバ回路が必要です。


これは、上図のような単純な回路で十分です。
図中 グランド記号で示されている電位は、VFD のカットオフ電圧なので、
Vgg より低い電圧です。
2SC2021 は ROHM の汎用トランジスタですが、外形が FTR なので高密度実装が可能です。


ここまでの基板写真です。
抵抗などはチップ部品を使っているので、部品面に実装してあります。

IC の生存確認

ここまででの実装で、もし IC が生きていれば、
少なくともプルダウンされたグリッド出力には信号が出力されるはずです。
というわけで…

動作かくにん!よかった
製造後 40 年あまりにして、IC にはじめて電源が入れられたわけです。

自作VFD電卓 その2

電源回路の設計

TMS1030 を使った VFD 電卓の製作です。
乾電池2本で動作させるための電源回路を設計します。
まず、動作に必要な電位レベルを書き出してみます。

VFD の駆動に必要な電圧は、アノード電圧 Va, グリッド電圧 Vg,
フィラメント電圧 Vf の 3 種類です。
(前回はフィラメントを VFD 付属資料に引っ張られてヒーターと呼んでいました)
通常 Va = Vg として駆動、その値は 12V – 30V ほどです。
大型の VFD になると、フィラメントは交流で駆動させる必要がありますが、
今回のものは直流でも問題なさそうです。


今回使用する VFD (ITRON DP95A4)は、定格等詳細は不明なので、
実験によりこれらの値を推測する必要があります。

フィラメント電圧は、大きすぎると VFD の寿命が極端に縮まってしまいます。
かといって、小さすぎると VFD が点灯しません。
フィラメント(発光部分の手前にある細い電線)自体が発光しないで、
VFD の アノード、グリッドに電位を与えた上でセグメントが発光するような値にセットします。
今回の VFD では 1.6-1.8V 程度が丁度よさそうです。

定電圧駆動が望ましいのですが、乾電池 2 本動作なので、1.9V 動作まで電圧低下をみると、
レギュレータの設計がちょっと面倒です。
簡単ですが、アクティブ駆動は見送り、抵抗で電圧制限することにします。
50Ω 程度の抵抗と直列に繋ぐことで、丁度良い電圧幅に落ち着きました。

アノード、グリッド電圧は、十分に発光する適当な電圧に設定します。
じつは最初は経験から 26V で駆動させていたのですが、あらためて実験すると、
もう少し低い値でもよさそうなので、今回は 18V としました。
この高電圧は、スイッチングコンバータで昇圧させて生成します。


TMS 0130 の定格は 14V で、ドライブ段は pMOS のオープンドレインとわかっているので、
Vss を Va, Vg とする必要があります。
この電源電圧(Vgg, Vdd)は、VFD 用に生成した高電圧から降圧させて作ります。
あとで アノード、グリッド電圧を上げることを考えると、リニアコンバータより、
効率の良いスイッチングコンバータとした方が都合よさそうです。




設計した電源回路の構成図と回路図、写真を示します。
プローブをひっかけるために方々配線が伸びているので、
あまり綺麗じゃないですね。

こういう多出力の電源システムを構成するには、多巻線トランスを介したコンバータに
するほうが簡便で、商品化された大抵の電卓でもそうなっています。
しかしながら、手元に適当なコアがないので、通常のインダクタで設計できる
ブースト型・バック型の DC-DC コンバータとしました。
2系統のスイッチング・フィードバック経路が必要になるので、専用 IC を使わずに、
制御はマイコン (ATtiny13A) にさせることにします。

この回路で 初段 2.0V -> 26V (13倍)@ 35mA(Vss-Vgg 間) の出力が可能です。

ただこの条件は極端な duty 比率となるため、ブーストコンバータとしては
かなり厳しい条件になります。
この後の実験では、Vss-GND は 18V で行っており、
上記回路図の回路定数もそのようになっています。

次回につづく

自作VFD電卓 その1

キーアイテムが揃ったので、今回からは電卓を作ってみようと思います。


写真は Texas Instruments のTMS0130NC で、1973年 21 週製造のワンチップ電卓 LSI です。
インターネット上の情報を集めてみると、これは松下製の電卓に使われていたもののようです。
ピンは酸化してしまっていますが、未使用の状態で製造から 40 年以上経っています。
まだ動くかどうか定かではありませんが、この IC を動かしてみたいと思います。


計算結果を表示するディスプレイは、70年代らしく VFD (蛍光表示管)でいきたいと思います。
丁度良く、当時の電卓にしばしば使われていた itron 製の小型 VFD を入手できたので、
これを使用することにします。

IC についての詳しい資料はありませんが、同じシリーズの TMS0102 について
書かれたものが参考になりそうです。
この TMS0130 は TI の TMS0100 シリーズに属するもので、
端的に言えば電卓に特化された 8bit マイコンのカスタム品です。
ハードウェアは共通なので、ピン配置や電気的特性は同一であると考えられます。
テスタで IC を簡単にチェックした感じでは、この仮定は正しそうです。


ピン配置を図に示します。
pMOS なので Vss が最高電位となる点に注意が必要です。
IC の動作には Vdd 、Vgg の 2 電源が必要で、
加えて VFD のカットオフ電圧 (Vk) 、ヒータ電圧 (Vk 付近に 0.8-2.0V 程度) を用意しなければいけません。
また、オープンドレインの各出力ピンには、VFD のドライバ回路が必要です。
CK ピンに入力するためのクロック発振回路も、外付けとなります。

したがって、この IC を動作させるためには、
・電源回路
・ドライバ回路
・クロック発振回路
の設計が必要になります。

「電卓」と言うからには、電池で動作するものを作りたいです。
乾電池 2本(3V)での動作を要件として、電源回路の設計を行います。
(つづく)

R8C プログラミングアダプタ

R8C マイコンは汎用 UART から RxD, TxD ピン経由でのプログラム書き込みが可能ですが、
そのためには、古い品種 (R8C/1B など) ではクロック発振子を外付けする必要があります。
DIP ならまだしも、ISP 書き込みせざるを得ない SMD 品には致命的です。

専用のアダプタ回路を介すことで、
MODE ピン経由でプログラム書き込みができます(モード 3)。
こちらの書き込み方式は内蔵発振器で動作するので、クロック発振子の接続は不要です。
また、RxD, TxD ピン を自由に使用できるというメリットもあります。


アダプタ回路を作ってみました。
詳細はこちらに書きましたが、
要するにリセット時に適切なタイミングで MODE ピンを操作することと、
MODE ピンの半二重信号と TxD, RxD との変換をしています。
マイコンを使って作ってもよいのですが、簡単な仕組みなので
汎用ロジックで組んでみました。
手持ちの部品の都合で、少し複雑になってしまいましたが、
74HC86 を使えばちょっとだけ簡単にできます。

スイッチを押した状態で PC 側の書き込みソフトを動作させて書き込みます。


これはとりあえず作った基板で、裏面に SOP のロジック IC を実装しています。


使用時はこのようにUSB-シリアルを接続するわけです。