TK80/BSの

シンセシステムを復活/拡張したい〜

その45

SBC8080ボードを使った
TK80BS互換機の作製

TK80BSの修理

2019年
11月16日
TK80BS 互換機の続きです。最終的にはUSBキーボードを接続する予定ですが、その前に、本物のBSのキーボードを使ってFPGAの8255の動作確認を行います。キーボードに載っているコントローラはuPD364ですが、WEB上でデータシートを見つけることができませんでした。


キーボードのコネクタのピン配置を調べるために、分岐コネクタを作製しました。


アナログディスカバリのロジアナで分岐した信号を調べます。キーボードの出力する8ビットデータSTB−信号(ストローブ)の位置が判りました。正論理のSTB信号も出ていました。モード1で出力されるIBF信号(ACK)はコネクタには出力されていませんでした。また、本体から5V以外に12V−5Vの電源も供給さ れています。右の波形はピン配置が判明した後で’’の次に’’を押したときです。正しいASCIIコードになりました。


マルツで購入したD−SUBの25ピンコネクタと3.5mmのプラグジャックが来ました。D−SUBはROMライタのパラレルケーブル用です。


TK80BS互換機用のFPGAボード100Tから35Tに変更し、設定を変更してインプリし直しました。


BSのキーボードは12V−5Vも必要なようなので、電源は本家のTK80BSから供給し、キーコードSTB−信号をFPGAボードに接続するケーブルを作製しました。信号線のレベルを5Vから3.3Vに変換し、PMODコネクタに接続できるようにします。


分岐したキーコードとSTB−信号をFPGAボードに接続し、8255の動作確認を行いましたが、キーは入力できませんでした。原因はポートCの5ビットに出るはずのキーが押されていると いうIBF(Input Buffer Full)が出力されないためです。ポートCの3ビットに出力されていました。


Vivadoのシミュレータで確認します。キー入力でポートCが0Cになり、ポートのリードでポートCが08変化しているので、IBFは3ビット目に出ています。


11月17日
8255のIPのVerilogのソースコードを確認したところ、内部レジスタをポートCに出力しているビット連結が上位下位で逆になっていて、間違えています(笑)。以前に動作確認のために埋め込んだデバッグコードも、そのまま間違えていました。


早速、ビット列を逆して修正しました。この8255のIPはGitHubにあったもので、動作を保障したものではないです。


修正後、モニタへキー入力ができるようになりました。ただ、3回に1回くらいの割合で一度に2文字入力されることもあり、調査が必要です。下はメモリダンプを実行したところです。


続いてBASICの動作確認です。FPGAボードのスライドスイッチをL−1側に設定にして、BASICを実行してみます。エンドアドレス入力のメッセージが長いのでL−1が動作していることが判ります。アドレスの6000E000にマップするリマップ機能が正しく動作しています。


続いて、スライドスイッチをL−2側に設定して実行してみます。エンドアドレス入力のメッセージが短いのでL−2が動作していることが判ります。こちらも正常に動作しているようです。ただ、偶にVRAMに不正な書き込みが発生します。右の赤矢印の’’は不正書き込みです。こちらも調査が必要です。



11月20日
キー入力が2回入る件です。アパートで実機が無いので、机上での考察です。以前にも書きましたが、本物の8255とIPの8255ではPC5のIBF(ACK)が0に戻るタイミングが違いました。これによってキーが2回入るか確認するためタイミング図を作成しました。キー入力の判定はポートポーリングして、5ビット目がになることで行います。キーが押されていればループを抜け、ポートAを読んでキーコードを取得します。IBF(ACK)はポートAを読むことでに戻りますが、本物の8255ではRD−の立ち上がり、IPの8255ではポートAのアドレス確定です。これはIPの8255にはRD−信号が接続されていないからでした。ポーリングのループを抜けた後はIBFの状態は参照されないので、やはりIBFが0に戻るタイミングは不具合とは無関係のようです。


以下はモニタの文字入力関数逆アセンブルリストです。赤枠のgoto LOOPの所がポーリング先頭へ戻っているところです。キーが押されてポーリングのループを抜けた後、キーコードの種別判定、VRAMへ1文字出力、バッファへの書き込みを行っています。次のポーリングまでは、かなりのステップ数があり、キーを1回押したのに2回入るのは、2文字目のポーリング中にPC5が1になっているからで、ケーブルや5V−>3.3Vレベル変換回路などハードウェアの不具合かもしれません。



11月23日
TK80BS互換機用のUSBキーボードをアマゾンで購入しました。キー機構はメンブレンですが、キーストローク長い物を選びました。また、FPGAにUSBホストを組込むのは時間が掛かりそうなので、念のためPS/2付きを購入しました。


PS/2延長ケーブルもいっしょに購入しました。


キー配列を比べてみます。BSはJISキーなので、記号やカナキー(使わないですが)の位置も日本語キーボードと同じです。ただ、ファンクションなどが余分に付いています。


ケーブルが長すぎるので、一度分解して短くしました。



先週キーボードのコネクタピン配置で未調査だった、Breakキーの信号を調べ始めると、BSの調子が悪くなりました。簡易ICEでモニタROM領域を調べると、モニタROMの内容が正しくないです。早速、ROMを取り出してROMライタで読み込みます。マスクROMの型番はuPD2332Cですが、アダプタで2732に変換して読み込みます。


左が取り出したモニタROMの先頭で、右が予備のROMのダンプです。明らかに左側はアドレスが異常です。


11月24日
モニタROMは予備に交換して復帰しましたが、だいぶ前に直ったはずの上位12KバイトRAMエリアは全てFFが読めます。一度分解して、再度組み立てましたが、直りませんでした。また、Breakキーも効かず、モニタが割り込みモードに入れません。



11月30日
友人S、元同僚Yさんとアナログシンセビルダーズサミットに参加してきました。


FPGAシンセを出展しました。移動中の故障や忘れ物も無く、ちゃんと動いて良かったです。ここに前回も含めて出展資料のページを作りました。


完成度の高いアナログポリフォニックシンセロータリエンコーダが6個に7セグ表示もあって、FPGAシンセと似ています。


S端子ケーブルでパッチをするユーロラックシンセ。


特殊な操作形状の電子楽器ウーダ


ローランドのCNCルータを使ったVCFの切削基板の展示。


12月1日
土曜の夜はアナログシンセビルダーズサミットの機材をガレージに運びました。TK80BS互換機の続きです。本家BSのキーボードが壊れても良いようにBSキー ボード互換を作る予定です。キー入力のヒストリ機能なども実装したいと思います。これを作製すれば本家BSにも互換機にも使えます。とりあえずPS/2で接続します。だいぶ前に購入してあっPSoc 5lpでPS/2をASCIIコードに変換するWEBページがありました。クリックするとサイトに飛びます。


キーボードのUSBコネクタにPS/2変換を付けて、アナログディスカバリで信号を測定します。



データ、クロックとも4.7Kでプルアップすると、キーボード側から送信が始まります。PS/2キーはキーボード側がクロック出力します。下はキーを離したときのF0コードです。上からクロック、データです。クロック周波数は約13.4KHzです。


前回のキーが2回入ってしまう不具合です。本家BSのキーボードを繋いで再確認します。データの8ビットは5V<−>3.3V変換ボードで電圧変換していますが、STB−信号は抵抗で分圧しているのが不具合の原因のようです。次回、もう少しちゃんとした電圧変換で確認してみます。



アナログシンセビルダーズサミットから戻ったFPGAシンセ動作確認を行いました。問題なく動作しています。



12月4日
上記のPSoc 5lpを使ったPS/2−>ASCII変換は英語キー用なので、日本語キーのキーコードを表にしました。クリックするとオープンオフィスCALCのobsファイルをダウンロードします。






back