データメモリアーキテクチャ


【データメモリアーキテクチャの概要】

 PIC18シリーズのデータメモリは、まだ「Bankの概念」が残っています。従ってアクセス
する時にはBankの切り替えを必要とします。
しかし少し工夫が加えられています。それは、「Access Bank」という考え方が新たに
追加されたことです。
このアクセスバンクを使えば、特殊レジスタ(SFR)と128バイトの汎用レジスタは、バンク
を切り替えなくても、いつでもアクセスが可能となるようになったことです。
これにより128バイト以下の変数で済むときにはバンクを意識する必要は無くなりました。

データメモリの構成は下図のようになっています。
 ・バンクは256バイト単位で最大16バンクまで
 ・最大256×16=4kバイト
 ・バンク15の上位128バイトが特殊レジスタ領域(SFR)となっている。
 ・バンク0の下位128バイトが汎用レジスタ領域の一部で、これとSFR領域をひとつの
  「アクセスバンク」としてバンク切り替え無しでアクセスが可能。






【データメモリアドレスの方法】

 データメモリのアクセス方式には、直接アドレッシングと間接アドレッシングがあります。

(1) 直接アドレッシング
  データメモリの直接アドレッシングには、Bank Select Register(BSR)が必要となり
ます。
このBSRの下位4ビットと命令内のオペランドの8ビットのアドレスの合計12ビットで
4Kバイトのデータメモリを直接アドレスしてアクセスします。これを図で表すと下図のよう
になります。
つまり、命令のオペランドは8ビットですからこれで、256バイトまでアクセスできます。
これを単位としてバンクとしています。そして、これ以外にBSRレジスタを上位に加えて
16個のバンクが指定できることになります。






ここで、全バンクをアクセスする時には命令のオペランドのAccess Bank指定ビットを
」にしておく必要があります。
このビットが「」の場合にはBSRレジスタの内容は無視されて、「アクセスバンク」が
常時指定され、命令のオペランド内のアドレス(8ビット)で指定されたアクセスバンク
内のデータを指定したことになります。


(2) 間接アドレッシング
 データメモリの間接アドレッシングには、File Select Register(FSR)と間接アクセス
用レジスタが使われます。それぞれのレジスタが3個ずつ3組あり、3つの間接アドレッ
シングを同時進行させることが可能です。この関係を図で表すと下図のようになります。






まず、FSRnレジスタは12ビット構成となっており、下位8ビットはFSRnLレジスタ、上位
4ビットはFSRnHレジスタの下位4ビットに対応しています。(nは0,1,2の3種類)

 このFSRnにセットしたドレスで指定された場所のデータメモリは、間接アクセス用
レジスタ経由でアクセスします。
つまり、間接アクセス用レジスタに書き込めば、指定アドレスのデータメモリに書き込んだ
ことになり、間接アクセス用レジスタを読み出せば、データメモリから読み出したことに
なります。

 さらに、この間接アクセス用レジスタはこれまでINDFの1種類だけでしたが、PIC18
シリーズでは下記のような5種類に増えて、間接アドレッシングが強力に強化されて
います。
これによりテーブルアクセスのプログラミングがぐっと楽に出来ます。

(a) INDFn    間接アクセス後FSRnに変化なし
(b) POSTDECn  間接アクセス後 FSRn-1
(c) POSTINCn  間接アクセス後 FSRn+1
(d) PREINCn   FSRn+1してから間接アクセス
(e) PRUSWn   FSRn+Wレジスタを間接アクセス(FSRnはもとのまま)
    (nは0,1,2の3種類)


   目次ページへ