(57)【特許請求の範囲】
【請求項１】
第１のフォーマットのプログラム状態語の状態ビットを保持するプログラム状態語レジスタを有するマイクロコントローラにおいて、
−  上記プログラム状態語レジスタが、上記第１のフォーマットとは異なる第２のフォーマットを有する別のプログラム状態語の状態ビットを保持し、
−  上記マイクロコントローラが、上記レジスタと結合するとともに状態ビットを前記レジスタから及び／又は前記レジスタに選択的に転送する選択・転送手段を具えることを特徴とするマイクロコントローラ。
【請求項２】
請求項１に記載のマイクロコントローラにおいて、前記選択・転送手段が、レジスタの上で実行される読取り動作中にレジスタから複数のビットを並列に転送することを特徴とするマイクロコントローラ。
【請求項３】
請求項１に記載のマイクロコントローラにおいて、前記選択・転送手段が、レジスタの上で実行される書込み動作中にレジスタにあるビットのうちの少なくとも１つの単一の特定ビットを修正することを特徴とするマイクロコントローラ。
【請求項４】
請求項１から３のうちのいずれか１項に記載のマイクロコントローラにおいて、
−  上記選択・転送手段が番地を受信し、
−  上記選択・転送手段が、
−  上記番地が上記第１フォーマットと第２フォーマットのうちの何れのフォーマットを有するプログラム状態語を参照しているかを検出する符号器と、
−  上記符号器の制御の下で、レジスタに対して、またはレジスタから、１個またはそれ以上のビットを選択・転送するマルチプレクサとを具えることを特徴とするマイクロコントローラ。
【請求項５】
１個のマイクロコントローラにおいて、
−  互いに相違する複数のフォーマットのそれぞれのプログラム状態語を格納するプログラム状態語レジスタと、
−  マイクロ符号動作を実行し、各プログラム状態語のうち特定の１個に関連する番地を供給し、上記プログラム状態語レジスタの中に書込むべき１ビットを条件付で供給する処理ユニットと、
−  上記処理ユニットに接続され、上記番地の転送を行うバス・インタフェイスと、
−  上記バス・インタフェイスと接続され、上記番地及びビットを搬送するバス手段と、
−  上記プログラム状態語レジスタ及びバス手段に接続され、上記番地の制御の下で上記ビットを上記バス手段から受信してプログラム状態語レジスタに転送する書込み回路と、
−  上記プログラム状態語レジスタ及びバス手段に接続され、上記番地の制御の下で複数ビットを上記レジスタから上記バス手段に並列に転送する読取り回路とを具えることを特徴とするマイクロコントローラ。
【発明の詳細な説明】
発明の属する技術分野
本発明は、特定フォーマットのプログラム状態語（ＰＳＷ）の状態ビットを保持するプログラム状態語レジスタを有するマイクロコントローラに関連する。
従来技術
マイクロコントローラは、一層複雑なタスクを一層速く実行するよう求められている。その結果、マイクロコントローラの設計は、一層複雑高速化の方向へと再設計されてきた。複雑なマイクロコントローラには、監視を必要とする機能・動作が一層多くなっている。その結果、再設計されたマイクロコントローラのプログラム状態語（ＰＳＷ）では、より多数の状態語が使われ規模が大きくなる。例えば、マイクロコントローラのアーキテクチャが８ビットから16ビットに成長すると、ＰＳＷは12ないし16ビットに拡大する。ＰＳＷのサイズのみならず再設計の過程でのアーキテクチャとレイアウトに関連する考慮の結果として、時にはＰＳＷの状態ビットのビット配列を前世代のマイクロコントローラとは異なる形に再配列・再配置することが必要になる。しかし前世代のマイクロコントローラのユーザは、前世代用に設計したソフトの廃棄や書直しを嫌がるのが普通で、後継世代のマイクロコントローラが以前のソフトを使えるよう望んでいる。
本発明の目的
本発明の目的は、より新しい世代のマイクロコントローラのＰＳＷに前世代のそれとの間の互換性を与えることである。
更に本発明の目的は、ＰＳＷのサイズとビット配列が世代間で変わった場合でも互換性を保証することである。
更に本発明の目的は、旧または前世代の命令と新世代の命令、または新と旧の動作モードが、同一マイクロコントローラ上で共存できることである。
本発明の概要
本発明では、前文(preamble)で指定したようなマイクロコントローラを提供することにより上記の諸目的を達成する。このマイクロコントローラの特徴は、ＰＳＷレジスタが、第１のフォーマットと異なる第２のフォーマットを有する更に別の（further）プログラム状態語に係る別の状態ビットを保持し、及び、当該マイクロコントローラが、上記レジスタと結合してそのレジスタとの間で状態ビットを選択的に転送できるような選択・転送手段(selection and transfer means)を具えることである。
プログラム状態語は、前世代のマイクロコントローラと互換性があるよう再構成でき、それにより複数のマイクロコントローラ・モードが共存できる。更に顕著な特徴として、選択・転送手段の動作により、複数のマイクロコントローラ・モードに応答し、プログラム状態語のビットを選択・再配列する。マイクロコントローラが、前世代のマイクロコントローラ命令と互換性あるモードにある場合は常に、あるいは所望のいつの時点においても、選択・転送手段は、バス上にある現世代のＰＳＷビットを、前世代マイクロコントローラの処理に適した位置に配置する。このことにより、新旧動作モードは共存できる。また選択・転送手段は、前世代機種に適合する形でバス上に配列されたビットを読んで、それを現世代の配置に直して格納することもできる。本発明で提供されるシステムでは、ＰＳＷのビットをマイクロコントローラのモードに従った適切な位置に移動(rout)し、大きなＰＳＷを前世代マイクロコントローラ用の小さなＰＳＷに変換するのである。
実施例
上記各図面を通じて、同一記号は類似または対応する機能を示す。
好適な実施例の説明
本発明のマイクロコントローラ・システム10のアーキテクチャを図１に示す。このシステム10には、16ビット算術演算を行ない内部命令・データ記憶装置を含む単一チップのマイクロコントローラ12を有する。このマイクロコントローラ12は、外部装置14と16とが使用でき、更に24ビットの外部番地指定機能を通じて、16メガバイトの外部命令記憶装置18と16メガバイトの外部データ記憶装置20に接続される。マイクロコントローラ12には、バス・インタフェイス・ユニット22を有し、このユニットは外部記憶18及び20との間で外部の双方向の番地データ・バス24を介して通信する。マイクロコントローラ12は、外部装置14及び16との間でＩ/Ｏポート26-28を経由して通信する。これらポートは特別機能レジスタ(ＳＦＲ)40として番地指定できる。ポート26-28は、他の特別機能レジスタと同様、バス・インタフェイス・ユニット22を経由して内部周辺バス42の上で番地指定できる。データ記憶20もＩ/Ｏポート26-28を経由して、オフチップでマップされたＩ/Ｏ（破線の下部）としてアクセスできる。オンチップの特別機能レジスタ40（その一部はビット番地指定可能）には、プログラム状態語（ＰＳＷ）レジスタ44を有し、このレジスタは、外部装置及びＡＬＵ72との間で通信する割込み制御ユニット84、実行ユニット70、及びフラグと一般制御を行なう複合ユニット（decode unit）74のそれぞれと結合している。割込みレジスタ46、タイマー・レジスタ50、及びシステム構成ビットを収容するシステム構成レジスタ(ＳＣＲ)54も特別機能レジスタ40に含まれる。ＰＳＷレジスタ44は、レジスタ動作一般に用いられる周辺バス42を介して番地指定ができ、他の実行関連動作に用いられる内部バス86への接続を介してでも番地指定ができる。ＰＳＷレジスタ44は、ＡＬＵ72及びＡＬＵ72と実行ユニット70に関連するパリティ、ゼロ欠陥(zero defect)、オペレータ欠陥(operator defect)の各回路とも結合している。バス・インタフェイス・ユニット22は周辺特別機能レジスタ（群）40をマイクロコントローラのコア60と分離している。コア60は、マイクロ符号でプログラム可能な実行ユニット70を含み、命令の実行をＡＬＵ72その他のユニットで制御する。復号ユニット74で解読される命令は、命令記憶空間の一部である内部ＥＰＲＯＭ76かまたは外部命令記憶18から、フェッチ・ユニット78により取り出される。データ記憶空間の一部である静的ＲＡＭ80も、レジスタ・ファイル82の汎用レジスタと同様、命令とデータの記憶装置として利用できる。
プログラム状態語レジスタ44は、図２に示すようなプログラム状態語100を有し、これらは新世代の命令によりアクセスできる。ＰＳＷレジスタ44は、ビット番地指定可能なＳＦＲ空間40における１個のワード・レジスタである。上半分のバイト(ＰＳＷＨ)102は保護領域で、システム／監視レベルのフラグが収容される。下半分のバイト(ＰＳＷＬ)104には、以下に述べるユーザ・レベルのフラグと機能がすべて収容される。算術論理命令とデータ転送命令は、大抵の場合、状態フラグの一部または全部を更新する。ＰＳＷ状態フラグの更新は、ＰＳＷへの書込みの最中には抑圧される。ＰＳＷへ書込まれたデータは、通常のフラグ更新よりも優先権がある。このことは、ＰＳＷの何れの半分のバイトへの書込みにおいても適用される。Ｃはキャリー・フラグであり、このフラグの主機能は、ＡＬＵ72による算術演算の最上位ビットのキャリー・アウト（carry out−桁上げ）を格納することである。ＡＣは、補助キャリー・フラグであり、算術命令の最中に、ＡＬＵ72の下位ニブル（less significant nibble）のキャリー・アウトが起こると更新される。ＲＳ1とＲＳ2は、レジスタ・バンク選択ビットであり、レジスタ・ファイル82の中にあってある時点で動作中(active)の４個のレジスタ群（またはバンク）Ｒ0ないしＲ7のうち、１個を識別する。この４個のレジスタ・バンクは、データ記憶のボトム32バイトとして直接・間接に番地指定することもできる。Ｖはオーバフロー・フラグで、ＡＬＵ72で実行される算術演算の最中に、２の補数の算術的溢れ条件（twos complement arithmetic overflow condition）が起こると立てられる。ＳＭはシステム・モードのビット・フラグである。システム・モードはリセットの際選択され、割込み処理の間に変更が可能で、ＰＳＷをポップして割込みから復帰(ＲＥＴＩ)することにより書込まれる。これはマルチタスクの応用への支援を意図している。ＴＭは追跡(trace)モード・ビットで、プログラム開発過程への支援のため、命令ごとの追跡を可能にするものである。Ｚは、最初の演算表示またはゼロ欠陥フラグ(a first operation indication or zero defect flag)で、あるデータ演算の後演算の結果が０になるとＺフラグには１が立つ。そうでない場合、Ｚフラグはクリアされて０になる。Ｎは負の表示フラグで、データ演算後もし演算結果に符号ビット（ＭＳＢ）を伴う場合には、Ｎフラグには１が立つ。そうでない場合にはＮフラグはクリアされて０になる。ＩＭ3-ＩＭ0は実行優先割込みマスク・ビットで、これらのビットは現在実行中の符号の実行優先度を識別するのに使われる。割込みがあった場合、これらのビットは進行中の割込みの割込み優先度を表示するように立てられる。これらビットは、割込みの処理中にも変更または書込みができる。マイクロコントローラ12では、トラップ、割込み、割込みからの復旧にあたって、これらビットを保管・復元するだけでなく、これらビットから、コアの外部に存在する何らかの割込み制御モジュールに対して、割込み制御ユニット84経由で連絡線（lines）を設けている。各ＩＭビットへの書込みはシステム・モード符号に限定される。マイクロコントローラ12には、もう一つの追加フラグがあるが、これはＰＳＷにも影響されず走行中のプログラムにも直接は見えない。それは累算器ゼロ・���ラグ(ＡＺ)である。これは80Ｃ51型マイクロコントローラのJump-Zero(ＪＺ)と命令とJump-Not-Zero(ＪＮＺ)命令を実現するのに用いる。80Ｃ51の符号はＡレジスタの内容を直接試験してこれら命令を実行する。マイクロコントローラ12は、Ｒ4Ｌを変えるような演算があると、組み込まれたＡＺフラグをその演算の間に更新する。Ｒ4Ｌとは80Ｃ51マイクロコントローラの累算器を模擬するのに使うレジスタである。
システム構成レジスタ(ＳＣＲ)54はバイト・レジスタでシステム構成フラグを収容する。このレジスタ54に含まれるフラグは、リセットされた後一度プログラムされるとその後放置される性質ものである。これらフラグは、割込みその他の処理の最中退避する必要はない。これらフラグの１つであるＣＭはフラグは本発明には重要である。ＣＭ互換モード・フラグである。このフラグは80Ｃ51のＰＳＷが用いられるモードに関連がある。もちろん80Ｃ51のＰＳＷは、その他のＣＭ＝０の場合にもアクセスできる。
マイクロコントローラ12では、命令を使ってＰＳＷのビット番地指定(bit addressing)をすることもできる。ビット番地指定に用いる１個の命令の中の、10ビット領域130の符号化を図３に示す。ビット９と８により、番地指定したレジスタがＳＦＲ空間40（ビット９）にあるかレジスタ・ファイル82（ビット８）にあるかが決定する。ビット７−３は番地指定中のレジスタのバイトを識別し、ビット２−０はそのバイトの中の特定ビットを識別する。
図２について論じたように、マイクロコントローラ12のＰＳＷ100は、その設計過程で生まれたある種の配列をもっている。他方、80Ｃ51マイクロコントローラは、図４に示すようなＰＳＷ200を用いている。このバージョンのＰＳＷは、80Ｃ51の各種命令によってアクセス可能であり、同一プログラムの中で異なるモードまたは世代が存在することを許容している。このバージョンのＰＳＷでは、ＰＳＷに与えられた特定番地に応じて、状態ビットＣ，ＡＣ，ＦＯ，ＲＳ1，ＲＳ0，Ｖ，Ｆ1が、レジスタ44へ、又はレジスタ44からの読み書きに利用できる。Ｆ0とＦ1はユーザにより定義可能なフラグで、ユーザ・プログラムによって読み書きできる。Ｐはパリティ・フラグで、このビットはレジスタＲ4Ｌ（レジスタ４の下位バイト）の現在の内容のための偶数パリティを示す。（上記レジスタは、80Ｃ51マイクロコントローラのＡレジスタとの互換のためにPhilips Semiconductor社が用いているもので、前世代マイクロコントローラの１例である。）ＰＳＷ100と上半分と下半分も、番地次第で利用できる。ＰＳＷ100の下半分すなわちバイトＰＳＷＬ104は、ＳＦＲ空間40の中で周辺バス特別機能レジスタ（ＳＦＲ）の読取り中に特定の番地が使われると、周辺バス42の上に現れる。別の特定番地が使われるとＰＳＷＨ102が現れ、もう一つの特定番地が使われるとＰＳＷ200が現れる。書込みの間には、特定フォーマットのＰＳＷの特定ビットのみが、バス42からレジスタ44に転送される。
物理的に同一のレジスタ44から、ＰＳＷ100の上下２バイトとＰＳＷ200という異種のバイトを供給するには、図５に示すように、番地解読・ビット選択回路を用いて、どちらのＰＳＷ及び（または）バイトの番地を指定中かを決定し、適当する８ビットを選んで周辺データ・バス212に送出する。読取り動作の間、番地復号器214が１個の番地をフェッチ・ユニット78からバス・インタフェイス・ユニット(ＢＩＵ)22を経由して周辺番地バス216の上で受取り、指定されている番地はＰＳＷ100のどのバイトか、あるいはＰＳＷ200かどうかを決定する。復号器214は、マルチプレクサ218に加わる３つの選択信号の１つを生成する。このマルチプレクサ218は、８ビットの３対１マルチプレクサで、加わった選択信号に応じて８ビットの３群から（１群を）選択する。ＰＳＷＨが表明された場合には、マルチプレクサ218はＳＭ，ＴＭ，ＲＳ1，ＲＳ0，及びＩＭ3-ＩＭ0を選択する。ＰＳＷＬが表明された場合には、マルチプレクサはＣ，ＡＣ，“０”，“０”，“０”，Ｖ，Ｎ，及びＺを出力する。ここで３ビットに対して二進法の“０”が生成されるのは、Ｆ0，Ｆ1及びＰの各ビットはマイクロコントローラ12では使われないからである。ＰＳＷ200が表明されると、マルチプレクサ218は、Ｃ，ＡＣ，Ｆ0，ＲＳ1，ＲＳ0，Ｖ，Ｆ1及びＰを選択し出力する。マルチプレクサ218は、選択した８ビットを、周辺データ・バス212に接続された８ビット３状態駆動回路（tristate driver）220へ供給する。この駆動回路220は、選択信号の１つがＯＲゲート222を通過し、それがＢＩＵ22からＡＮＤゲート224に加わった周辺バス読取り信号と一致する場合に起動する。ＢＩＵ22は、バス212の上にある選択したＰＳＷまたはバイトのビットを目的のコア・ユニットに転送する。
ＰＳＷビットの書込みは、マイクロ符号制御の下で以下のように行なわれる。ＢＩＵ22が先ずレジスタ44にある特定バイトを周辺バス42を介して読む。実行ユニット70は指定された特定ビットを修正し、次いでＢＩＵ22がそのバイトをレジスタ44に再び書込む(write back)。バス42からレジスタ44への転送においては、修正された特定ビットのみがレジスタ44に転送される。書込みは、図６に示すように、番地解読・ビット選択回路240で制御される。
図５の読取り回路におけるように、書込むべきバイトまたはＰＳＷの番地は、復号器214で検出される。復号器214（図６）はＰＳＷＨまたはＰＳＷ200の何れかの番地が指定されていることを検出し、更にビット選択領域（図３）がＣビットを書込むよう表示している場合、周辺バス212からのＣビットが、３対１型単一ビットマルチプレクサ244により、ＯＲゲート246、ＡＮＤゲート248及びＮＯＲゲート250により供給される選択信号に基づいて選択される。ＡＬＵ72の演算結果からＣビットを更新したいときにはマルチプレクサ244がＡＬＵ72により与えられる対応ビットを選択する。選択信号の表示によりビットの再循環（recirculation）に変化が起こっていないことが分かると、マルチプレクサ244の出力が、フリップフロップ（ＦＦ）252によって入力にフィードバックされる。Ｃビットが一旦ＰＳＷレジスタ44に現れると、その特定ビットのためのイネーブル信号が実行ユニット70から発生し、それによりレジスタ44のビットの中へその値がクロック（clock）される。ＡＣビットとＶビットのビット選択配列はＣビットと同一であるが、データを供給する周辺バス212からのビットが（それぞれ線６及び線２と）異なっている。ＮビットとＺビットもＣビットと同様に扱われるが、ここでも特定ビットが（線０及び線２であるという）相違がある。
ＰＳＷ200の番地が指定されていることを符号器214が検出し、更に命令領域（図４）でＦ0ビットの番地が指定されている旨表示されると、ＡＮＤゲート258及びインバータ260で制御される２対１型単一ビット・マルチプレクサ256が、周辺バス212の中の該当する線（線５）を選択し、そのビットをＦＦ262を経由してＰＳＷレジスタ44に供給する。この場合もまた、ＰＳＷレジスタ44の上記ビットのみがイネーブルされる。Ｆ1ビットは同一回路を用いて書込まれるが、バス212の線１から来るビットである。
ＰＳＷＨかＰＳＷ200の何れかが表明されかつビットＲＳ0の番地が指定されている旨検出されると、３対１型単一ビット・マルチプレクサ266が、ＡＮＤゲート268と270、及びＮＯＲゲート272からの選択信号に対応する該当ビットをバス212から選択し、そのビットをＦＦ274を経由してレジスタ44に供給する。レジスタ44は、その特定ビット対応のイネーブル信号を受けて、そのビットをロードする。ビットＲＳ1は、バス212の別の１対の線から同一の方法で書込まれる。
ＴＭビットを書込むべきときには、２対１型単一ビット・マルチプレクサ278がＡＮＤゲート280とインバータ282の制御によって、そのビットをＦＦ284を経由してレジスタ44に書込む。ＳＭビットとＩＭ0-ＩＭ3ビットは、同様に扱われるが、ビットの到来するバス線は異なる。
本発明によれば、マイクロコントローラ12は、前世代のマイクロコントローラの命令により動作し命令を処理することができ、こうして、従来機種対応の互換性が得られると同時に、一層複雑なマイクロコントローラ・アーキテクチャのニーズが満たされる。
本発明は、特定位置に存在するビットの連続集合(contiguous set)の形で現れるＰＳＷレジスタ44を用いて説明してきた。マイクロコントローラ12のような複雑なアーキテクチャでは、特定の状態レジスタ・ビットを、それらビットを使うユニットの近傍に配置しまたは物理的に分散することが可能であり時には望ましい。例えば、ＣビットをＡＬＵ72の中において、ＳＦＲ44の領域内に位置するかのように「見せ掛ける」などである。
【図面の簡単な説明】
本発明は実施例により説明するが詳細については付図を参照する。それらの付図は下記の通りである：
図１は、本発明のマイクロコントローラのアーキテクチャである；
図２は、マイクロコントローラのプログラム状態語（ＰＳＷ）を示す；
図３は、本発明の特別機能レジスタ（special function register）に関連するビット番地符号化（bit address encoding）を示す；
図４は、前世代マイクロコントローラによって使用される場合のＰＳＷビット配列を示す；
図５は、本発明に基づくＰＳＷ読取り回路の１例である；
図６は、本発明に基づくＰＳＷ書込み回路の１例である。
【図１】
0003705811.tif 000002
【図２】
0003705811.tif 000003
【図３】
0003705811.tif 000004
【図４】
0003705811.tif 000005
【図５】
0003705811.tif 000006
【図６】
0003705811.tif 000007