CPU実験室

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

CPLD修正

イメージ 1

外部バスとつながる双方向のマルチプレクサを多少変更して
予備用の入力レジスタと出力レジスタを追加しました。
ロータリエンコーダカウンタのオーバーフロー検知やビープ音制御に使用します。

これまでにCPLD内のレジスタをアクセスすることでカウンタ値やキーの押下状態を取得
できるようになりましたが、先ずエンコーダのカウントの仕方がどうもへん。
また15個あるキーの返されるキーコード配列のとおりに書くとも

2F CF 4F 8F 0F
37 D7 57 97 17
27 C7 47 87 07

とキー毎にユニークではあるけど妙な具合になっています。
しばらく悩んで気付いたのはデータバスのMSB/LSBが逆順でつながれているということ。
これが一般の周辺LSIだったらあちゃ~というところですが、そこはCPLD
UCFファイルを直し再コンパイルでピンアサインを難なく修正できました。
修正後のキーコードに上位3ビットをマスクすると

14 13 12 11 10
0C 0B 0A 09 08
04 03 02 01 00

と判りやすくなります。エンコーダの出力も正常になりました。