CPU実験室

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

ロジック変更

この大失敗をリカバリするには、I/Oをプログラム空間にマッピングすればいけるんでは、というのはすぐ思いつきます。

プログラム空間であればD7-D0に有効なデータを乗せることができます。プログラムメモリの最後の256バイトを潰してI/Oを割り付けました。

f:id:O3I:20210610214634j:plain


ここらへんの変更はGALのロジック修正のみで対応できます。ほんとにGALにしておいて良かったです。

f:id:O3I:20210610213327j:plain

 

これでハード的な対応はできたのですがDSPアーキテクチャとしてこの領域をアクセスできるか、というのは別の話です。ここまでハードウェアができてしまってから今になってマニュアルを読み始めました。こういう資料がネットですぐ見つかるのは助かります。

f:id:O3I:20210610213752j:plain

 

インストラクションセットのMOVE命令についての説明でDM(データメモリ転送)とPM(プログラムメモリ転送)の記述を見つけました。

f:id:O3I:20210610213340j:plain

 

これをみるとDMは即値アドレッシングができるのに対しPMはできないといった制約がありますがレジスタ間接で読み書きはできるようです。なんとかギリセーフです。

 

アナデバDSPアセンブラコードは今までにもちらっと見たことはありましたが、あらためて調べてみると「=」で代入するとか高級言語みたいなコードです。意外にとっつきやすいかもしれません。