CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

クロック見直し

 
ここまで珍しくパタン設計ミスなしで来ましたが、ちょっと問題発生。
 
これから実装するFM音源IC(YM2151)のマスタークロックはV50のCLKOUT端子(システムクロック)に接続する設計にしていました。ところが、YM2151の最大入力クロック周波数は4MHzとなっています
 
 
イメージ 1
 
 
そのためV50で発振させる水晶も8MHz以下にせざるを得ず、20MHzまで可能なV50で最高のパフォーマンスが発揮できません。ここはFM音源IC専用のクロックオシレータを別に用意すべきでした。音程はもちろんですがエンベロープの速度もマスタクロックに依存するため、これを標準の3.58MHzにしておけば音色データの移植も可能だったはずです・・・といっても後の祭り。
 
水晶はあとで泣く泣く8MHzに交換しなければなりません。原振が8MHzになると、MIDI通信のための設定は
 
 8MHz/2/2/4/16=31250bps
 
でカウンタでの分周比は4に設定すれば辛うじて設定できます。内部プリスケーラがもう少し大きかったら必要な転送クロックを確保できなかったかもしれません。
一方、デバッグのためのターミナル接続では
 
 8MHz/2/2/13/16=9615bps
 
となりカウンタでの分周比を13に設定してやると標準の9600bpsに対して+0.16%で通信できます。モニタからアプリケーションに飛んだとき、先頭で分周比を切り替えることになります
ということでV53用のモニタをさくっとV50用に改造。(・・変更点は内部レジスタの初期化部分だけです。)最初は分周比13、9600bpsのボーレートでモニタが起動します
といってもまだ水晶も20MHzのままだしI/FもRS232C用になっていないのでMIDIOUTで出力波形を観測。電源ON起動後、20.8msの期間バースト状態になっています
 
ローレベルが0Vラインから浮いているのはオープンコレクタ出力7406の飽和電圧分です
 
 
イメージ 2
 
モニタは起動時、オープニングメッセージと最初のプロンプトで50文字分のキャラクタを送出します
 
 
イメージ 3
 
現状のボーレートは20MHz/2/2/13/16=24083bps
この速度で10bit/キャラクタ×50文字を送るには10*50/24083=20.8ms
 
ぴったり計算どおりなので、クロックと物理的I/Fを合わせればつながるだろうと思います