SSブログ
English Version

SuperSimpleController(その20)TMS9918Aの接続 その5 [OriginalCPU]

 東京2020オリンピックも終わったので「SuperSimpleController(その19)TMS9918Aの接続 その4」の記事で書き掛けの自作CPU基板(Simple8Z)用に作った下の写真のビデオボード(Simpe8VDPSG)のハードディバッグ状況について記録しておきます。

 結果としては無事に安定して画面表示ができるようになりました^^
 TMS9918への4bitDRAMの接続例はネット上には見当たらなかったので珍しい試みだと思います(4bitDRAMを接続するならTMS9118等を使用するのが通例)

VDPSG on Simple8Z



 前回の記事でDRAMへのリード/ライト信号の調整を行ったので今回はDRAMへのRAS/CAS信号のタイミングやVDP(TMS9918)へのライトタイミングの調整を行いました。

  1. DRAMへのRAS/CASタイミング
     DRAMへのライト時のRAS/CAS信号のタイミングは下図のような感じで特に問題無いように見えます。

    DRAM Write timing(OK pattern) サンプリング:50MHz


     DRAMからのリード時のRAS/CAS信号例が下図でこちらも特に問題ないように見えます。

    DRAM Read timing(OK pattern) サンプリング:50MHz


     しかし、下図のようにCAS/の立下りとアドレス(A0)の変化が同じタイミングのNGパターンが散見されました。
     アドレス信号が変化後、CAS/が立ち下がることでDRAMがカラムアドレスをラッチするのが本来のシーケンスのはずです。尚、ロジアナのサンプリング周期は50MHzなので時間分解能は20nsになります。

    DRAM RAS/CAS timing(NG pattern) サンプリング:50MHz


     対策としてDRAMに供給するCAS/信号を遅らせるために未使用のORゲートを追加しました。全体の回路図は「SuperSimpleController(その17)」の記事を参照してください。

    CAS/信号生成部にORゲート追加


     対策後の波形を確認したところ、上記のNGパターンのようにCAS/とアドレス信号が同時に変化するようなパターンは無くなりました。
     波形サンプルが下図になります。図中のVDP_CAS/はVDP(TMS9918)から出力されるCAS/信号でアドレスと同時に変化しています(この時のロジアナの時間分解能は25nsなので実際にはCAS/の方が後で変化しているものと推測されます)

    対策後のDRAM RAS/CAS timing サンプリング:40MHz


     上記の改造を施した基板の写真も貼っておきます。未使用ゲートの入力は両面でベタグランドにサーマルパッドで4点接続されていてグランドからの切り離しが困難なのでシングルラインの丸ピンソケットの1ピン分を使ってICのピンを曲げて接続しました。

    プリント基板の改造


     下の写真が改造後のボトム面になります。

    プリント基板の改造(ボトム面)


     対処後の動作としては前回の記事に掲載した画面表示例よりも若干ゴミ表示が少なくなりましたが、まだ、問題がありそうです。


  2. VDP(TMS9918)のライトサイクル
     VDPとDRAM間の制御信号の確認はできたのでCPUとVDP間のI/F信号の確認を行います。
     VDPに対するライトサイクルのタイミングチャートを下図に示します。

    VDPのライトサイクル


     今回のオリジナルCPUのI/O命令ではリードやライト信号がディセーブルになると同時にデータバス上のデータも切り替わるので上図のth(WH-D)の仕様を満たしていません。
     更にVDPへのライト信号はアドレスディコード後のセレクト信号とANDしているのでデータバス上のデータよりもゲートでの遅延分、遅れてしまいます。

     ロジアナで確認したライト時の波形が下図になります。
     尚、自作CPUは暫定的に約1MHzのクロックで動かしています。

    VDPライト時のロジアナ波形例(修正前) サンプリング:100MHz


     上述のようにライト信号立上りと同時にデータバス上のデータも変化しているのでVDPの規格を満たしていません。

     今回のオリジナルCPUのI/Oライト命令はI/Oアドレスを指定するのにイミーデット値の場合とR1レジスタ値の二通りの命令を実装しています(出力値はR0レジスタで指定)

     前者のマイクロコードは8ワードで次のマイクロコードが直後に書かれているのでマイクロコードを追加するのが難しいですが、後者のマイクロコードは7ワードなので1ワード追加してライト信号立上り後も1クロック分データを保持するようにしました。
     マイクロコードの具体的な変更部分は下記の黄色部分になります。

    I/Oライトのマイクロコード修正内容
    CSTART	0A0H		; ** OUT (R1),R0
    
            CLR     IRW
            CLR     RD
            ACT     ALUR
            CLR     PWEN
            ACT     ADW
            PCLOAD
            CODE            ; 1:AD <- PC, data-bus:R1, set load-mode
    
            CLR     ADW
            ACT     PWEN
            ACT     PLW
            CLR     MEM
            ACT     WR
            CODE            ; 2:PCL <- R1, data-bus:R0
    
            CLR     PLW
            CLR     WR
            ACT     MEM
    ;;      CLR     ALUR
    ;;      ACT     ALR
            CODE            ; 3:
     
            CLR     ALUR
            ACT     ALR
            CODE            ; 3:
    
            CLR     ALR
            ACT     PLW
            CODE            ; 4:PCL <- ADL
    
            CLR     PLW
            PCINC
            CODE            ; 5:set inc-mode
    
            ACT     PLW
            ACT     RD
            CODE            ; 6:inc PC
    
            ENDCODE         ; 7:
     

     マイクロコード修正後のI/Oライト時のロジアナ波形が下図になります。ライト信号が立上り後、1クロック分ライトデータを保持しています。

    VDPライト時のロジアナ波形例(修正後) サンプリング:100MHz


     以上の対処でVDPとDRAM間及びCPUとVDP間の信号が確認でき、下の写真のように安定して画面表示できるようになりました^^

    VDP(TMS9918)による表示例


    ★追記 2021/08/21 {
     バックカラーをシアン(R07=07H)、テキストのバックカラーをダークブルー(テキストカラーの値をF4H)にしたMSX風の画面を貼っておきます。

    VDP(TMS9918)による表示例2

    }

  3. VDP(TMS9918)のドライブ電流
     補足としてVDPのドライブ能力について書いておきます。
     VDPの出力ピンの吐出しと吸い込み電流は最大100uAしかなく、ドライブ能力はかなり非力です。

    VDP(TMS9918)の規格


     VDPはHCTシリーズでインターフェースを取っているので問題ないだろうと思いますが、下図のようにTTL規格表に記載されている74245の規格ではHCTの入力電流が未記載になっています(最大100uAで駆動すれば問題ないように思います)

    74245の規格


     しかし、「74HC と 74HCT の内部回路の違い」のサイトの内容を参照させて頂くと「HCT シリーズに TTL の H レベル信号を入力すると、mA オーダの消費電流が流れてしまいます」ということなので、何かしらの原因で信号のエッジが鈍った場合等には問題が発生するかもしれません。

     因みにDRAM(uPD41464)側の規格は下図で負荷的にはかなり軽くなっているのでVDPに直接接続する場合は問題ありません。

    DRAM(uPD41464)の規格




[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー