TMS9918ビデオボードDRAM版 (1) 64kbit x 4bit DRAM・・・不調→解決!

KZ80-TMS9918A-DRAM

以前 SRAMで構成したTMS9918ボードを作成しました。もともとTMS9918はVRAMに16k x 1bit DRAMを想定しているのですが、そのICは3電源だったりして、なかなかつかいずらいのです。
最近 64k x 4 bit DRAMでTMS9928を駆動された方がいらっしゃいまして、TMS9918でも動くのでは?!と思ってプリント基板作ってみました。

64k x 4 bit DRAMでTMS9928のVRAMを…

Twitter(現 X)を彷徨っていたところ、TMS9928を64k x 4bit DRAMで駆動された方の記事を見つけました。64k x 4 bit DRAM 2つでVRAMを構成されているようです。

TMS9929A VDP Rediscovery and Alternative Retro VRAM Solution - Digicool Things
TL;DR The TMS9929A / TMS9928A / TMMS9918A are Video Display Processors produced by Texas Instruments in the Retro 8-bit era of the early 1980's. They were used ...

以前 わたしも単一5V電源 DRAM(16k x 4bit TMS4416)でTMS9918ボードがつくれないもんか?と考えていたのですが、回路図引いてみたもののDRAMってどう繋げばいいの?というレベルで頓挫していたのでした。TMS9918のVRAMって16kバイトなんで単一5V電源 DRAM(16k x 4bit TMS4416)が2つあればちょうどいいんじゃ??みたいな考えだったのでした。

上記 記事によるとTMS9918/28は7bitのカラムアドレスを要求するのですが、TMS4416(16k x 4bit)だと6bit(A1〜A6)しかサポートしてない模様。なんと!
というわけでちょっと容量的にはオーバースペックですが64k x 4 bit DRAM 2つでVARMを構成されている模様であります

https://digicoolthings.com/wordpress/wp-content/uploads/2022/03/TMS992xA_VDP_VRAM.png

TMS9928を64k x 4bit DRAMで駆動された方の記事に掲載されている回路図が上記の感じでして、64k x 4bit DRAMは16k x 1bit DRAMと違ってデータIN/OUT端子が同一ですので74HCT244でコントロールしてたり、W信号や書き込みデータを通過させるHCT244のコントロールの信号をHCT04で遅延させたりしている仕組みのようでした。

記事で使っていたのはTMS9928ですが、TMS9918とTMS9928はアプリケーションノートも同じ資料だったりします。アプリケーションノートを見ると LSIからの 映像出力がコンポジット出力(黄色いビデオ線)か、R-Y,B-Y,G-Yの色差信号かの違いだけに見えますので、このTMS9928用のVRAMソリューションはわたしのTMS9918ボードに使えそうです。
またSRAM版より制御信号コントロール用ICが少ないので基板に搭載するICもつくなくて済みそうです。

プリント基板作ってみた

お正月休みに SRAM版TMS9918ビデオボードの回路をもとに検討しまして、64k x 4bit DRAMでVRAMを構成したボードの回路を引いてみました。できた基板製造データを いつもおせわになってるJLCPCBさんにお願いして5枚作ってもらいました。

5枚で製造費用 $2、送料はOSC NEP(ネコポス)を選択して$1。日本円で500円ぐらいです。

1週間ちょいでプリント基板が届きまして、部品を組み付けてみたのが上の写真です。2枚目がSRAM版のTMS9918ボードとの対比写真でして結構 部品が少なめになってるのが分かります。

回路図とか基板製造データとか

回路図はこんな感じです。
以前 SRAMで構成したTMS9918ボードのうちTMS9918周りと、アドレスデコーダーまわりはそのままでVRAMを構成する回路を64k x 4bit DRAM版にしたかたちになってます。

ちなみにいつものように回路図データやプリント基板製造データは、以下のgithubリポジトリにUPしています。ご覧ください。

GitHub - kuninet/KZ80-TMS9918A-DRAM
Contribute to kuninet/KZ80-TMS9918A-DRAM development by creating an account on GitHub.

最初に製造した版の基板製造データは、アドレスデコーダーの切り替えジャンパのシルク印刷が間違っているため注意してください。自分でもハマって 画面が映らずウンウンと悩んでしまったもので….

動かしてみたら色がシマシマ

いつもの偽MSXの構成でテストしてみました。
部品を組み付けて、アドレスジャンパを設定して起動したところ、グラフィックはきちんと表示されるのですが、色が縦縞のサイケデリックというかゲーミングXXXみたいな感じというかちゃんとした色が出ませんでした。

やってみたこと

映像出力をTMS9918から「直」に…

TMS9918からのコンポジット出力をトランジスタとかの回路を通してピン端子へ出力しています。そこで映像に何か不具合があるかも?と思いデータシートの以下のようなシンプルな回路に変更してディスプレイに表示してみましたが…シマシマは変わりませんでした。TMS9918からすでにシマシマ画像が出ているようです。

画像

DRAM制御信号をロジアナで観測

VRAM部分以外は実績のある構成でしたので、DRAMで構成したVRAM部分のタイミング?の問題ではないかと思いまずはロジックアナライザで波形を観測してみました。

上記の波形はDRAMへのW(書き込み)信号が H→Lへ変化したところをトリガーにして観測しています。RAS、CASなどのDRAMカラム信号と データ入出力端子の出力/出力停止切り替えのG端子、74HST244バッファのOE(出力イネーブル)を並べて観測してみました。見た目はまぁまぁいい感じ。若干制御信号ごとに変化時点が重なっている感じがしないでもない…ということで、プリント基板のパターンカットをしつつ以下のDRAM信号タイミングを調整してみました。

DRAM制御信号のタイミング調整

  • DRAM書き込み(W)信号の遅延を若干速める
    • W信号はHCT04インバータ4段を通して遅延させてますが、2段へ変更。
  • データ入出力端子の出力/出力停止切り替えのG端子信号をCASがLに落ちるまでHレベルをKeep
    • G端子がLレベルに落ちるとHST244の信号とバッティングするので、もうちょっと先までHレベルをKeep
  • CAS信号をもうちょっと遅延させる
    • CAS信号がLレベルに落ちるときにデータが整ってない?かもということでHCT04インバータ2段分ち縁を追加

結局 上記のパターンカット&ジャンパによる調整をしても、画面の色がシマシマという状況はまったく変化がありませんでした。

結局、水晶振動子を交換!

Twitter(現 X)で状況を報告していたところ、TMS9918につながっている水晶振動子の発振周波数に問題がないか?というアドバイスをいただきまして、テスターの周波数カウンターモードで測定してみたところ 10.738635MHzで発振していてほしいところ 10.4MHz程度でした。テスターをあてたことで周波数が変動しているかもしれないとも思いましたが思い切って水晶を交換してみたところビンゴでした!!

交換した水晶は10.73864MHzのもので、定格とはちょっとズレたものでしたが、ディスプレイ表示の色のシマシマは無くなってちゃんとした色合いで表示ができました! やたっ!

TMS9918は水晶振動子を発振させて、それをもとに3.579545MHzの周波数を内部で作り出してNTSCビデオ信号を生成しているようでして、その元となる水晶振動子の周波数が微妙にズレていたため色信号がちゃんとディスプレイに届かなかったものと思います。

次は…

(ちょっと時系列的には前後するんですが…) つぎの記事はTMS9918ビデオボードのDRAM版 その2として、単一電源5V 16k x 1 bit DRAM版の記事を書こうと思ってます。

コメント