12F1822 スペックオーバービューを読む①
投稿日 2011/10/13
12F1822はMicrochip社の8pinマイクロコンピュータです。
8ピンでは新しい部類に入りますが、小さい割にはかなり高機能で、その贅沢なスペックに惚れました。
そこで今回から、少しずつ12F1822を解剖していきたいと思います。(説明がわかりやすくなる場合は12F683を引き合いにして説明します。)
英文のスペック(データシート)とインターネットを検索して得られた知識ですから間違っているところがあるかもしれませんが、今後12F1822を活用していく上でひつような勉強ととらえています。
Microchip 12F1822のデータシートからすこしずつ抜粋して、解釈していきます。
PIC 12F683と12F1822 見かけは同じでも中身が違う!
以下はデータシートの先頭にあるスペックオーバービューからの抜粋です。
High-Performance RISC CPU:
• Only 49 Instructions to Learn:
- All single-cycle instructions except branches
• Operating Speed:
- DC – 32 MHz oscillator/clock input
- DC – 125 ns instruction cycle
• Interrupt Capability with Automatic Context Saving
• 16-Level Deep Hardware Stack with Optional Overflow/Underflow Reset
• Direct, Indirect and Relative Addressing modes:
- Two full 16-bit File Select Registers (FSRs)
- FSRs can read program and data memory
High-Performance RISC CPU:
RISCとはReduced Instruction Set Computerの略で、その意味のとおり短い命令で動くコンピュータという意味です。RISCでないCPUは、1命令が高機能だが長ったらしいビットパターンで構成され、命令解析にさえ時間がかかるものでしたが、そこは逆転の発想!簡単な命令を高速で多く実行できれば全体の性能は上がるという考えでつくられたコンピュータアーキテクチャです。
• Only 49 Instructions to Learn:
- All single-cycle instructions except branches
49個の命令しかなく、簡単にマスタできる。それらの命令はブランチ命令を除いて、1インストラクションサイクルで実行される。これはRISC CPUの特性が強く表れているところで、RISCではないCPUでは、命令が高機能なので、数インストラクションサイクルが必要なものがあります。
PICの場合1インストラクションサイクルは、4クロックで実行されます。たとえば20MHzのクリスタルのオシレータでしようすると、その周期は1 / 20000000 = 50nsなので、その4倍 200nSで1命令実行されることになります。
4つのクロックのうち、最初のクロックでメモリから命令を読み出し、2番目のクロックで解析し、3番目のクロックでオペランドを計算し、4番目のクロックで実行するという具合です。
ブランチ命令や、判定命令でスキップが発生した場合は2インストラクションサイクル必要です。
• Operating Speed:
- DC – 32 MHz oscillator/clock input
- DC – 125 ns instruction cycle
DC - 32MHzのクロックオシレータで動くということです。DCとは直流? つまり0Hzですから、1命令ずつステップ実行しても動くということです。最高は32MHzですから 1 / 32000000 = 31.25nS これの4倍ですから125nSが1インストラクションサイクルとなります。
• Interrupt Capability with Automatic Context Saving
割り込みが発生した場合、割り込み処理ルーチンを実行する直前にレジスタ類が自動的にスタックにセーブされます。割り込み処理ルーチンから、割り込まれたところに戻る時には、セーブしたデータを元のレジスタに戻します。このセーブ/リストアが自動的に行われるので、プログラマは気にしないでいいということです。
• 16-Level Deep Hardware Stack with Optional Overflow/Underflow Reset
16レベルのハードウェアスタックを持っています。言い換えれば最大16レベルまでのサブルーチンの入れ子ができるということです。スタックは割り込みでも使用されます。(サブルーチンの入れ子:サブルーチンの中からサブルーチンを呼ぶこと)
スタックがオーバフローまたはアンダーフローしたとき、CPUをリセットすることができます。
• Direct, Indirect and Relative Addressing modes:
- Two full 16-bit File Select Registers (FSRs)
- FSRs can read program and data memory
アドレッシングの方法に、直接アドレッシング、間接アドレッシング、相対アドレッシングがあります。
ブランチ命令を例にすると、直接飛び先を指定するのが直接アドレッシング。指定した番地の内容を飛び先にするのが間接アドレッシング、現在のPCから±n番地に飛ぶのが相対アドレッシング。
FSR(File Select Register)は、12F683では8bit長で、bit7がバンク指定ビットなので残りの7bitが1バンク当たり128バイト(2の7乗)のデータメモリにあるGPR(General Purpose Registers)のアクセスに使用します。ところが12F1822ではFSRが2個用意され、しかも16bitです。2個あるということは間接アドレッシングが2系統利用可能ということです。16bitということは2の16乗で64kですから、データメモリだけでなくプログラムROMもアクセス可能になっています。(詳細はメモリアーキテクチャで)
以下は12F683のものです。
High-Performance RISC CPU:
• Only 35 instructions to learn:
- All single-cycle instructions except branches
• Operating speed:
- DC – 20 MHz oscillator/clock input
- DC – 200 ns instruction cycle
• Interrupt capability
• 8-level deep hardware stack
• Direct, Indirect and Relative Addressing modes
これを見ると、12F1822では、49命令、MAX 32MHz、16レベルのスタック、アドレッシング関連(間接アドレッシング)が強化されていることがわかります。
(JF1VRR)