TK80/BSの
シンセシステムを復活/拡張したい〜
その50
SBC8080ボードを使った
TK80BS互換機の作製
2020年
4月11日
互換機の拡張I/Fに接続するシンセ用8255ボード、FDCボード、VDPボードを新規作製する予定です。ランダムロジックでアドレスデコーダを作ったり、双方向バッ
ファの配線するのは面倒なので、PSoCのUDBにロジックを組み込んでみます。価格が2000円弱と少し高いですが、手配線する手間を考えると良さそ
うです。赤枠内はFDCボードのアドレスデコーダ、データバスバッファ、ドライブとサイドのセレクト用D−FFです。回路図で組み込む部分を確認します。


PSoCのCreatorで回路入力します。LS139はLUTに、LS245はスリーステートバッファを組合わせて作成します。分周回路のD−FFにQ−出力が無いので、インバータを通してからD入力にフードバックします。


プロセッサは何もしないので、無限ループしているだけで、ちょっともったいないです。省電力のためにもスリープに入れた方が良さそうです。

プロジェクトをビルドするとスリーステートバッファがループしているとワーニングが出ます。

UDBのリソースを確認すると、5.7%でスカスカです。IOピンは45/48で使い切りそうです。

プロジェクトをPSoC 5LPにダウンロードします。使用しているボードはKitProg部を切り離してあるボードで、MAC8のコンスルーピンを使って簡単にターゲットボードのスルーホールに挿せるようになっています。

FDCボードのドライブ側のインターフェース信号はランダムロジックで作製するので、手持ちの在庫から探します。7406、LS123、LS245が見つかりました。

互換機でVDPを使ったグラフィックディスプレイボードの動作確認をします。

VDP用のプログラムやデータの入ったフロッピディスクがあります。アセンブラで作った制御プログラムとそれを呼ぶBASICプログラムがあり、プログラムをロードして動作確認します。

左は陰線消去のある3D表示プログラム、右は2Dのフラクタルプログラムです。本家のTK80BSの再起動時にも動作確認していました。動作良好です。


互換機のFPGA内に組み込んでいるVRAMの初期画面のバランスが悪いので右側に変更しました。簡易ICEが自動実行する場合はモニタの初期で上書きされ、一瞬で消えて表示されません。自動実行しない時にはこの画面が表示されます。coeファイルを作って指定するだけです。


4月12日
昨日作成したPSoCのUDBの動作確認を行います。

はじめに、高速で動作するクロック分周回路です。8MHzを1/2分周して4MHzを出力します。

アナログディスカバリで3.3V電源とクロックを出力し、ロジアナで出力を確認します。1/2分周されています。動作良好です。

もう一段、カスケード接続して2MHzも出力すると、動作不良になりました。

ライブラリに周波数分周器があり、これでを使って1/2、1/4分周を作ってみます。

1/2、1/4分周も動作良好になりました。

メモリボードのSRAMにバッテリバックアップ用3.6Vニッケル水素電池を接続して動作確認します。電池は外側に少しオフセットしないと、アクリルで作製したステーと干渉します。ちょっと失敗でした。


メモリのエリアに特定データを書き込み、チェックサムを計算します。

一
度、電源を切ってから少し待って、再立ち上げしてチェックサムを再計算します。値が異なっています。はじめメモリが化けているのかと思いましたが、モニ
タが2000番台に割り込みベクタを書き込んでいることを思い出しました。右はモニタの先頭部のプログラムです。1000番台にもベクタを書いています。これは修正した方が良さそ
うです。再度、チェックサムを計算しておきます。


TK80に載っているI/Oアクセスの8255(元々はキースキャン用)のPC1がゲーム音用、これは実装済みです。PC0がシンセのテンポ制御、テレタイプの出力用です。これはも実装してFPGAを書き換えました。PC0とPC1をバッファを介して追加コネクタへ接続しました。次回、シンセのテンポ制
御ができるか確認します。

4月18日
TK80BS互換機の拡張I/F用に手持ちのPSoCのKitProg部を切り離します。割った時にパターンがきれいに切れるように、ミシン目の部分にカッタを入れておきます。


本体とKitProgの間にはSWD信号以外にもI2C、UART信号も通っています。J3の5本を接続しても、他の信号は接続されないので注意が必要です。

手持ちの丸ピンのオス/オスピンを分解し、連結してPSoCに半田付けします。

モノタロウで購入した拡張I/F用のマザー用の50ピン、フロッピ用の34ピンの圧接コネクタが来ました。

続いて、マルツのコネクタとVDP用水晶発振子などです。

こちらは秋月のスイッチ、8MHzの発振モジュール、コンデンサ、ユニバーサル基板などです。


ポーランドからフロッピエミュレータも来ました。本家用に使っているマウントタイプではなく、Rev.Cという基板タイプです。おまけでヌガーが1個入ってました(笑)。


早速、フロッピエミュレータをフロントパネルに取り付けやすいように改造します。LEDとスイッチをアングルにして、LCDは延長ケーブルを作製しました。


購入したユニバーサル基板は高さを半分に、幅を10インチ(256mm)にカット後します。L字のピンヘッダとマルツで購入した、ボードエジェクタを取り付けました。


リアパネルにミニDINコネクタを取り付け、シンセのテンポ制御やテレタイプに使っているTK80上の8255のPC0とPC1を接続しました。


4月19日
先週のPSoCのUDBの続きです。クロック分周回路に続いて、双方向バッファ(LS245の代用)の動作確認を行います。簡単にするため双方向バッファのみにしてビルドしてロジックをダウンロードします。


アナログディスカバリの電源とパターンジェネレータで動作確認します。途中うまく動かないビットがあり、回路図を確認したところ、4つのポートに0.1uのコンデンサが付いていました。すっかり忘れていました。


コンデンサを取り外してから、再度、確認します。8ビット、双方向で動作していることを確認しました。

拡張I/Fボードのガイドレールを作製します。以前から使っている廃品の10mm厚のコの字アクリル部品をフライス盤で加工します。コの字の部分を削って、2mmの溝を入れます。


ボードのガイドレールが8個完成しました。

拡
張I/F用のユニバーサル基板の幅は本家と同じサイズに、高さは少し低くなりました。本家で使っているユニバーサル基板は高校生の時にアルバイトをしていた、基板作製造会社の廃棄物置き
場から貰ってきた、S100バス用のユニバーサル基板です。金メッキのエッジコネクタが切り取られています。S100バスのサイズはキリの良い10インチx5インチです。

拡張I/F用のマザー用ケーブルを作製しました。50ピンの圧接コネクタを2列使います。50ピンで使っているのは片列の25ピンで、2列合計で50ピンです。スロット数は4で、シンセ用8255ボード、FDCボード、VDPボードと予備です。

ミニDINに接続したPC0〜1の動作確認をします。簡易ICEで8255にアクセスして、出力をアナログディスカバリのロジアナで読み込みます。動作良好です。

ミニDINのケーブルに丸ピンのメスコンタクトを半田付けして、シンセのテンポ制御のコネクタに接続します。信号はアナログシーケンサに接続されていて、PC0がクロック、PC1がリセットです。簡易ICEからPC0をアクセスしてアナログシーケンサのポジションが動作すること、PC1でリセットすることを確認しました。


実際にシンセのシーケンサプログラムで確認します。曲のファイルに付いているテンポ値にポジションが移り、テンポが変わることを確認しました。

本
家に接続されているフロッピエミュレータの調子が悪いです。先週は正常動作していましたが、シーク/リードエラーになります。別のSDカードでも同様です。本物の8インチの方は正常で、FDCのMB8877のピン
で確認したところ、インデックスパルスのタイミングが2倍に伸びていました。8インチは360rpmですが、丁度半分のタイミングになっています。時間
がなく、次回に持ち越しです。


4月25日
先週の続きです。本家用のフロッピエミュレータがシーク/リードエラーになる件です。インデックスパルス(フロッピが1回転すると1パルス出力されセクタの始まりを示す)の確認を行います。初めに本物の8インチフロッピです。360rpmになっています。正常に動作します。

続いて、調子の悪いフロッピエミュレータです。インデックスパルスの周期が2倍になっています。シークエラーが発生します。

一度、調子の悪いエミュレータを取り外して、新しく購入した基板タイプに交換してみます。エラーは発生せず、正常です。基板上にはPICの他に、TTLが2個くらいしか載っていないので、PICが壊れた可能性があります。一度、ファームウェアのアップデートを行ってみます。新しいSDカードをFAT32でフォーマットしてファームをコピーし、左右のボタンを押しながら電源を投入すると、1分程度でファームが更新されます。


動作確認したところ、インデックスパルスも正常になり、エラーも発生せず、正常にファイルが読めるようになりました。


PICのフラッシュが化けたのが原因でしょうか?ハード的に壊れていなくて良かったです。ドライブを元に戻しました。

互換機用の拡張ボードを作製します。初めにシンセ用8255+バッファボードです。左の上が本家のシンセ用8255ボードです。細かいTTLをなるべくPSoCに入れて配線を少なくします。下は新しいユニバーサルボードにPSoCとICソケットを仮り実装した互換機用です。PSoCのICソケットは超低プロファイルを使いました。


4月26日
復活したフロッピを接続して、互換機の動作を一通り確認します。動作良好です。

互換機の本体と拡張I/F間を接続するケーブルを作製します。外部用は両端が50ピンのアンフェノールコネクタです。内部用は50ピンのアンフェノールを40ピンのピンヘッダに変換します。こちらは半田付けで作製しました。

シンセ用の8255+バッファボードの裏側です。初めにメッキ線で電源を配線し、続いて信号線を配線してます。10%くらい終了です。

8255+バッファボード用のPSoCのロジック部を作成します。双方向バッファとバッファをイネーブルにするセレクト信号のロジックです。下位メモリでVRAMと互換機本体からのTKのROM領域、BSの8251と8255のメモリマップI/O領域を除外して、その他はイネーブルにします。負論理が使えないのが泣き所です。


PSoCのピンを配置します。Creator内はデバイスのピン配置なので、実際の評価ボードと対応をとるためオープンオフィスのCALCでピンアサイン表を作成しました。デバッグポートのSWDは汎用ピンにはアサインできないので色分けしておきます。



