= !PicoBlazeBankedMemory = PicoBlaze3(KCPSM3)の命令アドレスは10bitなので、命令数は1024が限界です。 Virtex6やSpartan6向けにはもっと広い命令空間を持つPicoBlaze6があるのですが、Spartan3系では使用できません。 そこで、1024命令を超えるプログラムを動かすために、バンクメモリ方式を適用してみることにしました。 = どう切り替えるか = PicoBlazeでは、InstructionメモリとDataメモリは完全に独立しています(!ScratchPadをDataメモリと考えての話)。 Banked Memoryの普通の方式は、メモリ空間を4ブロックぐらいに分割し、そのうち何ブロックかを窓として、窓の先に見える実メモリをとっかえひっかえするものです。ですが、PicoBlazeではInstructionメモリをごっそり切り替えても!ScratchPadはそのままなので、単純化のために命令空間全部をごっそり切り替えてしまうことにします。 問題は、ごっそり切り替えると切り替え前に実行していたルーチンが見えなくなってしまう(自分の足場が無くなる)ことなのですが、発想の転換でそれを逆に利用することにしました。