50MHz/50MIPSのPIC16C5X互換マイコン
SXシリーズの紹介
▲▲
トップページに戻る
▲
前のページに戻る
-
◆注意◆
- このページの文及び図表はSXマイコンの各種資料(最後に示す参考文献等)を参考にして私が独自にまとめたもので、内容に間違い等があるかもしれませんが、ご容赦ください。
●
概要(SXシリーズの概要)
Scenix Semiconductor社のSXマイコン(SX18/20/28AC)は50MIPSの処理速度をもつPIC16C5x上位互換のワンチップマイコンです。
(1)(2) 50MIPS(1命令20ns)の性能はライトバック機能を持つ4段のパイプラインにより1命令を1クロックで処理することと50MHzクロック動作によ実現しています。現在リリースされているSXマイコンを表1に示します。
PIC16C5xとはピン配置(図1参照)が同じで、命令コードもバイナリレベルで互換性があります。(3)
ただし、処理速度及び命令処理内容に互換性を保たせるにはデバイスコンフィグレーションを適切に設定する必要があります。また、ISP(インシステムプログラミング)によるプログラミング方法は異なりますのでPIC16C5x用のライタは使用できません。
●
SXマイコンの特徴
ここではSXマイコンの特徴をPIC16C5xから拡張された機能に絞って説明します。
■
1命令1クロック動作
SXマイコンは図2のような4段(フェッチ、デコード、実行、出力)のパイプラインにより図3の順序で1命令を1クロックで処理します。
このとき図3の INC fr1 で出力(図3@)された fr1 レジスタが次の MOV W,fr1 で参照されていますが、INC 命令が出力されているときにはすでに MOV 命令で fr1 レジスタをラッチ(図3A)しているので、MOV 命令の実行(図3B)でこの値を使用すると MOV 命令は誤った結果を出力しています。このような問題を解決するためSXマイコンでは図2のように出力段から実行段に結果を戻すライトバック機能が用意されています。よって、この場合には fr1 レジスタの値は MOV 命令の実行段にライトバック(図3C)され、正しい結果が得られるようになっています。
パイプラインは JMP 命令等の分岐命令が実行されるとクリアされますが、このときフェッチとデコード段にある命令は NOP 命令に置き換えられるようになっています。このため分岐命令の実行には3クロック必要となります。
■
最大動作クロック50MHz
50MHzの水晶又はセラミック発振子、外部からの50MHzクロック供給で動作可能です。
■
フラッシュメモリ搭載
プログラムメモリは2048×12bitのフラッシュメモリを搭載しています。フラッシュメモリは10,000回の書換えが可能です。
■
割込み可能
RTCC(タイマ/カウンタ)のカウントアップとポートBの外部入力で割込みが可能です。
■
割込み時のレジスタのプッシュ/ポップ
割込みが発生した時にPC(プログラムカウンタ)に加えW、STATUS、FSRの各レジスタもスタックにプッシュされます。図4のようにPCは8レベルのハードウェアスタック(PIC16C5xは2レベル)に格納されます。一方、W、STATUS、FSR用のスタックは1セットの裏レジスタのみです。
■
内部RCオシレータ
発振周波数4MHzのRCオシレータが組込まれています。内部RCオシレータの周波数は4MHz〜31.25kHz間で8段階に分周可能となっています。
■
Brown-Outリセット
電源電圧が設定された電圧(工場設定約4.2V)以下に低下した場合にリセットをかけることが可能なBrown-Outリセット回路が組込まれています。
●
ハードウェア
SXマイコンのブロック図を図5に、図1に示した各ピンの機能を表2に示します。また、表3に絶対最大定格、表4に電気的特性を示します。
■
I/Oピン
SX18/20にはポートAに4本、ポートBに8本、SX28には加えてポートCとして8本の入出力可能なI/Oピンがあります。
ポートの各I/Oピンは入力保護のため図6と図7のように二つのダイオードでVDDとVSS間でクランプされています。
各I/Oピンは内部でプルアップ可能です。入力レベルはCMOSレベルの他にTTLレベルも選択可能となっています。加えて、ポートBとCはシュミットトリガ入力を選択することもできます。またポートBはスリープ状態からのウェークアップ、外部割込み入力して使用可能です。さらに、ポートBには図8に示すコンパレータが組込まれています。
各ポートの駆動能力はシンク/ソース共に最大30mAとなっておりPIC16C5xより向上しています。ただし、全てのI/Oピンに同時に30mAを流すことはできないので注意が必要です。
■
オシレータ回路
SXマイコンはオシレータ回路が内蔵されています。外部に水晶又はセラミック発振子を接続する場合は図9、外部RCオシレータの場合は図10、外部からクロックを供給する場合は図11のように接続します。
ISPでプログラミングする場合にはOSC1は書込み電圧供給ピン(Vpp)に、OSC2はシリアルデータ入出力ピンとして使用します。
■
リセット回路
SXマイコンのリセット回路は図12のようになっています。リセット要因はパワーオン(POR)、Brown-Out、マスタークリア(MCLR)、ウォッチドグタイマ(WDT)のタイムアップが用意されています。
他のリセット要因と異なりMCLRにはリセット遅延タイマにより、電源電圧やオシレータが安定するまで、約72ms内部回路の起動タイミングを遅らせる機能があります。これによりMCLRピンを数kΩの抵抗を介してVDDに接続するだけでリセット回路が完成します。ただし、電源電圧の上昇速度が極端に遅い場合には、図13のようにMCLRのタイミングを遅らせる回路を付加する必要があります。
■
パワーダウンモード
SXマイコンはPIC16C5x同様、SLEEP命令によりパワーダウンモードに移行します。パワーダウンモードからのウェイクアップはMCLRピンへの外部リセットパルス、WDTのカウントアップ、ポートBの外部入力(MIWU)で行うことができます。
パワーダウンからのウェイクアップとリセットによる起動を判別するにはSTATUSレジスタのPDとTOビットにより行います。
●
ソフトウェア
SXマイコンはプログラムメモリマップ、レジスタ及びデータメモリマップ、命令コード、リセットベクタなどはPIC16C5xに対して上位互換となっています。ここではSXマイコンで拡張された機能を中心に説明します。
■
デバイスコンフィグレーションレジスタ
表5に示したレジスタ中のFUSEワードのCPWDTE,FOSC1/0の各ビットはPIC16C5xでも用意されていますが、その他はSXマイコン独自の機能を設定するために使用します。
●
FUSEワード
TURBOビットを0とすることで、1命令サイクルを1クロックで処理することが可能となります。RTCCを内部クロックで使用する場合、1命令サイクル毎にインクリメントされますので、TURBOが0では1クロック毎、1では4クロック毎にインクリメントとなります。
OPTIONXビットは割込みを使用する場合に0とします。STACKXビットはスタックを8レベルに拡張するときに0とします。IRC,DIV2/1/0の各ビットは内部RCオシレータの設定に使用します。
●
FUSEXワード
CFビットを0とすることで、加算/減算命令でキャリー/ボローフラグを結果に加算することが可能となります。例えば、2byteの変数fr1(下位)とfr2(上位)に#201hを加算する場合は、
CLC | ;キャリーフラグをクリア |
mov w,#01h | |
add fr1,w | ;fr1=fr1+W+C(=0) |
mov w,#02h | |
add fr2,w | ;fr2=fr2+W+C |
となり桁上がり処理が不要となります。
BOR1/0はBrown-Outリセットの設定で、工場出荷の段階で設定済みで、Brown-Outリセットを無効にすることのみユーザに許可されています。RAM1/0及びMEM1/0は使用するデータメモリ容量及びプログラムメモリ容量を設定します。これはPIC16C5xをSXマイコンで置き換える場合にメモリ容量を一致させるために使用します。
●
DEVICEワード
ここにはチップに実装されているメモリ容量が書き込まれています。
■
プログラムメモリ
アドレスマップは図14のようになっています。リセットベクタは7FFh番地(FUSEXワードのMEM1=1、MEM0=1とした場合)、割込みベクタは000h番地です。
図14に示すように分岐命令実行時のアドレス指定はSTATUSレジスタのページ選択ビットPA<1:0>と命令のオペランドの組み合わせにより行われます。異なるページへの分岐ではjmp命令やcall命令の前にページ選択ビットを設定しておく必要があります。図14右のようにcall命令で指定不可能なアドレスが存在するので注意が必要です。SXマイコンではページ選択ビットの設定を容易にするためにPAGE n命令(nはページ番号)が、リターン時にプログラムカウンタと同時にページ選択ビットを復元するRETP命令が追加されました。
■
データメモリ
データメモリ空間は256バイト分用意されていますが実装されているのは138バイトのデータメモリと8バイト分の制御用レジスタのみです。
また、命令のオペランドで指定可能な範囲は図15のように8つ別れた各Bank内に限られます。Bankの選択はFSRの<7:5>ビットで指定します。
SXマイコンにはBank切換えを簡単に行えるようにbank命令が追加されました。例えばBank4の14h番地に値を書き込む場合は、
bank 4 | ;Bank4を選択 |
mov w,#10h | |
mov 14h,w | ;14h番地に10hを書き込む |
となります。一方、FSRを用いた間接アドレッシングではBankを意識する必要なく上記の例は、
mov w,#94h | |
mov fsr,w | ;FSRにアドレスをセット |
mov w,#10h | |
mov ind,w | ;94h番地に10hを書き込む |
となります。ここで、FSRを変更したことによりBankも変更されていることに注意して下さい。
図15のようにBank0の00h〜0Fh番地の制御用レジスタ及びデータメモリはBankを切換えなくても直接アクセス可能となっています。
■
制御用レジスタ
制御用レジスタには図15のようにデータメモリにマップされているもと、独立して存在するものがあります。
表6にデータメモリにマップされている制御用レジスタの機能を示します。
PIC16C5xでは01h番地はRTCCがマップされていましたが、SXマイコンでは設定によりRTCCとWレジスタを選択することが可能となりました。
データメモリにマップされていない制御用レジスタの一つにオプション(OPTION)レジスタがあります。レジスタの機能を表7に示ます。
ビット7と6がPIC16C5xから拡張された部分です。OPTIONレジスタの変更はMOV !OPTION,W命令により行いますが、この命令はPIC16C5xのOPTION命令と同一のコードとなっています。
また表8に示すポート制御レジスタ群もデータメモリにマップされていません。
表8にあるRx(x=A,B,C)の3つのレジスタはPIC16C5xにあるポート制御レジスタTRISx(x=A,B,C)に相当します。PIC16C5xではTRISx命令でレジスタを変更しますが、SXマイコンではレジスタが増えたためMODEレジスタが設けられました。表8のレジスタ群はMODEレジスタにより表9のように選択されます。
例えば、ポートAのLVL_Aレジスタを設定するときは、
MODE #0Dh | ;MODEレジスタを0Dhに設定 |
MOV W,#0Fh | |
MOV !RA,W | ;W-> LVL_Aレジスタ |
となります。WKPND_BとCOMP_Bレジスタは値を参照する必要があるため、これら二つのレジスタに対するMOV !RB,W命令はWとレジスタの内容を交換する動作となるので注意が必要です。
■
命令セット
表10に命令セット一覧を示します。
これを見るとPIC16C5x互換とは思えないほどの命令がありますが,例えばPIC15C5xでは
と単一命令扱いだったものがSXマイコンでは
と別の命令として扱っています。また、キャリーフラグをクリアするCLC命令がありますが、これは CLRB 03h.0 と同一コードです。このような重複を除きPIC16C5xの手法で分類するとSXマイコンは43命令(PIC16C5xは33命令)となります。
ここでは、SXマイコンで新たに設けられた命令でまだ説明していないものを紹介します。
●
RETI/RETIW命令
これらは割込みからのリターン命令です。RETIW命令はリターン時にRTCC=RTCC−Wの演算をカウントを停止させること無しに行います(通常RTCCへ結果を書き込むと2命令サイクルの間カウントが停止します)。これはタイマ割込みの周期を変更する場合に使います。例えば、タイマが128カウントする毎にタイマ割込みを発生したい場合、
MOV W,#-128 | ;Wに-128をセット |
RETIW | ;RTCC + 128 → RTCC |
のようにします。
●
IREAD命令
これはプログラムメモリを参照する命令です。Wレジスタにプログラムアドレスの下位8ビット、MODEレジスタに上位4ビットをセットしIREAD命令を実行すると、Wレジスタに命令コードの下位8ビット、MODEレジスタに上位4ビットが格納されます。通常この命令はプログラムメモリに定数データを書込み、これを参照するのに使用します。
●
参考文献
-
SCENIX SX18/20/28ACユーザーズマニュアル(Ver.1.00),住商電子デバイス株式会社、1998年4月.
-
SX18AC / SX20AC / SX28AC datasheet, Scenix Semiconductor, Inc., July 31, 1998.
-
PIC16C5x Seriesデータシート(DS30015I-J02),Microchip Technology,Inc.,1992.
▲▲
トップページに戻る
▲
前のページに戻る