全体構成とCPU構成
dsPICはその名前の由来のとおり、DSP+PICという内部構成をしています。
しかもPICは最新の16ビットマイコンのアーキテクチャとなっています。
dsPIC30Fシリーズの内部構成は、下図のようにかなり複雑な構成となって
います。

主要部の働きを説明します。
《プログラムカウンタ》
24ビット幅のカウンタで、最大4Mワード×24ビットのアドレス空間を
直接アドレッシングできます。
《プログラムメモリ》
dsPIC30Fシリーズでは、最大144kバイトつまり48kワード×24ビットのメモリ
として使われ、命令そのものを格納します。
命令長は24ビットとなっていて、84個の命令のうちの多くが1命令1ワードと
なっています。
これらの命令は、MCU用とDSP用の命令に大別されていますが、プログラムでは
全く同じように記述し扱うことができます。実行も全く同じように、命令デコード
実行部で解読実行され、演算処理部だけがDSP用とMCU用に分かれて実行
されるだけとなっています。
《レジスタアレイ》
16ビット幅のレジスタが16個用意されていて、演算やアドレッシングに使われます。
このレジスタにより高速演算が可能となっています。
またスタックポインタ用のレジスタとしても使われ、ソフトウェアスタックをサポート
するために使われます。
これらの機能により、各命令は6種類のアドレッシングモードを使うことができます。
《データメモリ》
最大64kバイトの容量を持つことができ、2つのブロックXとYに2分されています。
それぞれのブロックは、X、Yアドレス生成部によってアドレス指定されることで
16ビット幅のデータとしてアクセスできるようになっています。
この特徴により、DSP用として用意された2つのオペランドを扱う命令で、同時に
2つのデータメモリにアクセスして読み書きができるため、非常に高速の演算が
できます。
さらにMCUモードでは、両方合わせてXデータメモリというひとつの空間として
扱うこともできます。
dsPIC30Fシリーズでは最大4kバイト×2ブロックの容量となっています。
《16bit ALU》
16ビットマイコンの演算処理部で、全てのMCU用命令の機能が実行されます。
《DSPエンジン》
DSP用の命令を実行する部分で、特に積和演算などの命令を高速に実行する
ための機能が含まれています。
X、Yアドレス生成部を制御しながら、XデータメモリとYデータメモリとの間の
積和演算などを実行します。
この機能により、例えばA+B*Cというような3つのオペランドを扱う命令を
1サイクルで完了することができます。
演算結果は40ビット幅をもつアキュミュレータ(ACCA、ACCB)に格納されます。
40ビットという余裕のあるビット幅により、オーバーフローを起こさずに高精度の
演算が可能となるようになっています。
《16×16乗算器》
DSP機能を高速に実行するために用意された掛け算を実行する演算部です。
結果は32ビットのデータとなりますが、これをDSPエンジン内の40ビットの
アキュミュレータ(ACCA、ACCB)に格納します。
《バレルシフタ》
DSPで演算するとき、固定小数で演算すると、演算結果の40ビットのデータの
小数点位置をシフトさせて、16ビットのデータと同じになるように桁合わせをする
必要があります。
このバレルシフタにより、最大15ビット右シフトまたは最大16ビット左シフトを
1サイクルで実行することができます。
《X、Yアドレス生成部》
Xデータ、Yデータメモリのアドレス指定を行う部分で、DSPエンジンと連動して
X、Yデータをアクセスします。
さらにXアドレス生成部は、FFT演算をするときに必要となる、ビット逆順アドレッシ
ングをサポートしています。
目次ページへ