CPU実験室

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

論理間違い

とりあえず1チャンネルから方形波が出て、設定値と周波数の関係も明らかになったので手探りのわりにはかなり進歩しましたが、まだおかしいところがあります

(1)KEYDATを1にすると最低音のCが出るはずがC5相当で結構高い
(2)ch.1から出力しているはずが設定されるのがch.8に書込んだKEYDATである
(3)ch.2~ch.8はどんなKEYDATを書き込んでも無音状態である

というところですが、先ず(1)についてはch.1のドローバ出力は2’しかないようです。・・ピン数の問題か集積度の関係でカウンタをケチったのか・・・

ch2~ch.8は2'4'8'16'の4本のドローバ出力を備えているので16’を基音とすると2'は3オクターブ上、8倍の周波数が出るというのは納得です

いっぽう(2)(3)は目的のレジスタに正しくデータがセットされてないということになります。これは端子入力のロジックレベルをハゲしく勘違いしている気がしてきました

つまりPMOSロジックにおいても論理1は高い電位(Vss=0V)、論理0は低い電位(Vdd=-9V)でやはり良いのではないかと。いやもっともこれは定義付けだけの話なので端子入力を負論理と云ってしまえばそれまでですが、ともかくwclkCEの極性をひっくり返し(元に戻し)データ出力時もwclk=0、CE=1を保つよう0x40をORするようにプログラム修正。ch.2のみにKEYDAT=1を出力する例です

 

ch2の出力波形を観察すると2'4'8'16'の4本のドローバ出力が均等に混ざった階段状の波形が現れました。基本周波数は約65Hz、C2相当の音程が得られています

こうなると苦し紛れに入れた謎のオマジナイinit_3631()は全く意味が無く不要ということになります