(57)【特許請求の範囲】
【請求項１】
マイクロコントローラであって、
プログラムバスと、
プログラムをストアするためのプログラムストアと、
前記プログラムバスを介して前記プログラムストアに結合されるプログラム実行ユニットと、
前記プログラムバスとは別個の８ビットデータバスと、
前記８ビットデータバスに結合され、前記プログラムストアとは別個のデータストアと、
前記８ビットデータバスに結合されるレジスタファイルとを含み、前記レジスタファイルは複数の８ビットレジスタを有し、前記レジスタファイルはさらに前記８ビットレジスタのうち２つを単一の論理１６ビットレジスタとしてアクセスされるように組合せるための手段を有し、前記マイクロコントローラはさらに、
前記８ビットレジスタのうちの２つの内容を受取るよう結合される汎用ＡＬＵを含み、前記汎用ＡＬＵは前記８ビットデータバスに結合される１出力を有し、前記マイクロコントローラはさらに、
前記プログラム実行ユニットを、プログラムの実行の間に前記データストアおよび前記レジスタファイルに直接アクセスするよう結合する直接アドレスバスと、
プログラムの実行の間に前記レジスタファイルに前記データストアへの間接データアクセスを提供する間接アドレスバスとを含み、
前記レジスタファイルはさらに前記組合せるための手段を通じてアクセスされる論理１６ビットレジスタに対し算術演算機能を行なうため、前記組合せるための手段に結合される専用ＡＬＵを含み、
前記間接アドレスバスは前記組合せるための手段からの１６ビット値を受取るためのアドレス受信手段を有し、それによって１６ビットの間接アドレス指定が行なわれる、マイクロコントローラ。
【請求項２】
前記レジスタファイルはさらに定数値−１、定数値＋１またはプログラムにより発生される値を出力するためのセレクタ手段を含み、前記専用ＡＬＵは、前記組合せるための手段を通じてアクセスされる論理１６ビットレジスタで算術演算を行なうため前記セレクタ手段からの出力を受取るよう結合される、請求項１に記載のマイクロコントローラ。
【請求項３】
前記２つの８ビットレジスタのうち一方は前記論理１６ビットレジスタの下位バイトであり、前記２つの８ビットレジスタの他方は前記論理１６ビットレジスタの上位バイトである、請求項２に記載のマイクロコントローラ。
【請求項４】
ページングレジスタと、前記ページングレジスタの内容および前記組合せるための手段により与えられる１６ビットアドレスからアドレスを形成するための、前記アドレス受信手段に結合されるアドレス形成手段とをさらに含む、請求項１に記載のマイクロコントローラ。
【請求項５】
前記ページングレジスタは８ビットレジスタであり、前記ページングレジスタは前記８ビットデータバスに結合され、前記ページングレジスタへの値のロードで各々６４Ｋバイトの２５６のページの１つが指定される、請求項４に記載のマイクロコントローラ。
【請求項６】
単一のビットを保持するためのビットストアと、前記ビットストアと前記レジスタファイルから選択されたレジスタ内のビットロケーションとの間でビットを転送するための手段とをさらに含む、請求項１に記載のマイクロコントローラ。
【請求項７】
前記８ビットデータバスに結合される状態レジスタをさらに含み、前記状態レジスタは複数のビット位置を有し、複数のビット位置の１つは前記ビットストアとして役立つ、請求項６に記載のマイクロコントローラ。
【請求項８】
プログラムバスと、プログラムストアと、前記プログラムバスを介して前記プログラムストアに結合されるプログラム実行ユニットと、８ビットデータバスと、前記データバスに結合され、前記プログラムストアとは別個のデータストアと、前記データバスに結合される一出力を有する汎用８ビットＡＬＵと、前記プログラム実行ユニットを前記データストアに結合する第１のアドレスバスとを有する８ビットマイクロコントローラであって、
複数の８ビットレジスタのうち２つに対して８ビットの算術演算を行なうよう、前記汎用８ビットＡＬＵによりアクセス可能な前記複数の８ビットレジスタを有するレジスタファイルを含み、前記レジスタファイルはさらに、前記レジスタの２つを１６ビットレジスタとしてアクセスを行なうためのレジスタ手段を有し、前記レジスタファイルはさらに１６ビットＡＬＵと値セレクタとを有し、前記１６ビットＡＬＵは前記レジスタ手段から１６ビットのデータを受取り、前記値セレクタから数値を受取り、それらによって計算を行なうよう結合され、前記マイクロコントローラはさらに、
前記１６ビットＡＬＵから計算の結果を受取るための第２のアドレスバスを含み、前記第２のアドレスバスは前記レジスタファイルと前記データストアとの間に結合され、前記計算の結果は前記データストア内のメモリロケーションのアドレスとして使用される、８ビットマイクロコントローラ。
【請求項９】
前記値セレクタは、定数値−１、定数値＋１またはプログラムにより発生された数値を与える、請求項８に記載の８ビットマイクロコントローラ。
【請求項１０】
前記レジスタファイルは、前記１６ビットＡＬＵの前記計算の結果または前記レジスタ手段からの１６ビットのデータのいずれかを前記第２のアドレスバスへ転送するための手段を含む、請求項９に記載の８ビットマイクロコントローラ。
【請求項１１】
ページングレジスタと、前記ページングレジスタの内容および前記レジスタ手段から与えられる１６ビットアドレスに基づいて、拡張されたアドレスを形成するための手段とをさらに含む、請求項１０に記載の８ビットマイクロコントローラ。
【請求項１２】
外部アドレスバスと、前記拡張されたアドレスを前記外部アドレスバスおよび前記第２のアドレスバスへ選択的に結合するための手段とをさらに含む、請求項１１に記載の８ビットマイクロコントローラ。
【請求項１３】
前記ページングレジスタは８ビットレジスタである、請求項１２に記載の８ビットマイクロコントローラ。
【請求項１４】
ビットストアと、前記ビットストアと前記レジスタファイルのレジスタ内のビットロケーションとの間で１ビットのデータを転送するための手段とをさらに含む、請求項１２に記載の８ビットマイクロコントローラ。
【請求項１５】
前記８ビットデータバスに結合される状態レジスタをさらに含み、前記ビットストアは前記状態レジスタ内のビットロケーションである、請求項１４に記載の８ビットマイクロコントローラ。
【請求項１６】
ハーバードベースのアーキテクチャを有する８ビットマイクロコントローラであって、
プログラム命令をデコードし、それによって制御信号を発生するためのプログラム命令デコーダと、
データストアと、
複数の８ビットレジスタと、前記８ビットレジスタのうち２つに論理単一１６ビットレジスタとしてアクセスするためのレジスタ手段と、「＋１」値または「−１」値のいずれかを出力するための数値セレクタと、前記数値セレクタの出力を前記論理単一１６ビットレジスタに加算するための１６ビット加算器とを有するレジスタファイルと、
前記８ビットレジスタのうち２つの内容を受取りそれらに対して算術演算を行なうよう結合される８ビットＡＬＵと、
前記８ビットレジスタの１つからビットを受取り、ビットを前記８ビットレジスタの１つにコピーするための、転送ビットを有する状態レジスタと、
前記８ビットレジスタの１つと前記状態レジスタの前記転送ビットとの間でビットを転送するためのビット転送手段と、
前記データストア、前記レジスタファイル、前記８ビットＡＬＵ、前記状態レジスタおよび前記ビット転送手段をともに結合させる８ビットデータバスと、
前記データストア内のメモリロケーションにアクセスするよう、前記レジスタファイルを前記データストアに結合するアドレスバスと、
前記制御信号を前記レジスタファイル、前記８ビットＡＬＵ、前記状態レジスタおよび前記ビット転送手段へ送るための制御ラインとを含む、８ビットマイクロコントローラ。
【請求項１７】
各々インクリメントコードまたはデクリメントコードを指定する数値演算コードおよび前記８ビットレジスタの対の１つを指定するレジスタ対演算コードを有するプログラム命令の第１のサブセットを含み、前記命令デコーダは、前記レジスタ対演算コードおよび前記数値演算コードに応答して第１の制御信号を発生することを特徴とし、これによって、前記レジスタ手段は前記レジスタ対へ１６ビットレジスタとしてアクセスさせられ、前記数値セレクタは「＋１」または「−１」を出力させられ、前記１６ビット加算器は前記セレクタの前記出力を前記１６ビットレジスタへ加算させられる。請求項１６に記載のマイクロコントローラ。
【請求項１８】
前記数値セレクタは、定数値を受取り前記定数値を出力するための手段を含み、プログラム命令の前記第１のサブセットのいくつかは数値を指定する数値演算コードを有し、前記命令デコーダはさらに、数値を指定するこれらの前記数値演算コードに応答して第２の制御信号を発生することを特徴とし、前記第２の制御信号は前記数値セレクタにより受取られる前記数値の２進表現である、請求項１７に記載のマイクロコントローラ。
【請求項１９】
各々前記レジスタファイル内のレジスタを特定するレジスタ演算コードと前記レジスタ演算コードにより特定されたレジスタのビット位置を指定するビット演算コードとを有するプログラム命令の第２のサブセットをさらに含み、前記命令デコーダはさらに、前記レジスタ演算コードおよび前記ビット演算コードに応答して第３の制御信号を発生することを特徴とし、これによって、前記ビット転送手段は前記状態レジスタの前記転送ビットと、前記レジスタ演算コードおよび前記ビット演算コードによって指定されたビット位置との間でビットを転送させられる、請求項１８に記載のマイクロコントローラ。
【請求項２０】
各々前記８ビットレジスタの１つを指定する、行き先レジスタ演算コードと発信元レジスタ演算コードとを有するプログラム命令をさらに含み、前記状態レジスタはさらに、桁上げビットを含み、前記８ビットＡＬＵは前記桁上げビットを受取るよう結合され、前記命令デコーダはさらに、前記行き先レジスタ演算コードおよび前記発信元レジスタ演算コードに応答して制御信号の第４のセットを発生することを特徴とし、これによって前記８ビットＡＬＵは算術計算を行なわされ、前記算術計算は、
Ｒｄ−Ｒｒ−Ｃ
であり、ただし、ＲｄおよびＲｒはそれぞれ前記行き先レジスタ演算コードおよび前記発信元レジスタ演算コードにより特定されるレジスタの内容であり、Ｃは前記桁上げビットの内容である、請求項１９に記載のマイクロコントローラ。
【発明の詳細な説明】
発明の分野
この発明は、マイクロコントローラ一般に関し、特に、より少数の命令セットを実行するマイクロコントローラに関する。
背景技術
現在のサブミクロンＣＭＯＳ技術では、複雑なメモリおよび周辺論理の実現のために十分なシリコン面積を残しつつ、複雑なマイクロコントローラアーキテクチャをチップ上に集積することが可能である。３２ビットおよび６４ビットのハイエンドＲＩＳＣマシンにおいて最も一般に使用されている設計アーキテクチャおよび方法論は、低コストの８ビットマイクロコントローラシステムにおいても効率的に利用および応用できる。このようなパワフルでありながらも費用対効果のよいマイクロコントローラにより、システムの全体としての集積度は上昇し続けている。ハードウェアアーキテクチャにおいてより効率的なプログラムを実行することができ、より多くのハードウェア機能を集積することができる。
近年、ＲＩＳＣアーキテクチャは人気を増している。最も目立つのは、アップル・コンピュータ、ＩＢＭおよびモトローラが共同開発したパワーＰＣ（登録商標）である。ＲＩＳＣプロセッサを定義する特徴についての合意は存在しないものの、さまざまなＲＩＳＣアーキテクチャ間には共通した特徴がある。すなわち、（１）ほとんどの命令が１サイクル内に実行される。（２）別個の簡単なロード／ストア命令がしばしば２サイクル内に実行される。（３）命令のデコーディングが典型的にはマイクロコーディングされるのではなくハードワイヤードで構成され、実行時間が高速になっている。（４）ほとんどの命令は固定フォーマットを有しそのため命令のデコーディングが簡素になっている。（５）命令セットが小さくアドレス指定モードが少ない。（６）データ経路が高度にパイプライン化されており、処理の平衡性の程度が高い。（７）より低速のシステムＲＡＭへのおよびそこからの過剰なデータ転送を回避するための大きな高速レジスタの組（レジスタファイルとしても知られる）。
半導体製造業者数社がマイクロコントローラを製造している。たとえばテキサス・インスツルメンツ社は８ビットマイクロコントローラであるＴＭＳ３７０Ｃｘ１ｘシリーズを提供する。これらのマイクロコントローラはＲＩＳＣアーキテクチャを用いていないが、ＲＡＭとしてもまたは汎用レジスタの組としても使用できるＲＡＭ（１２８バイトまたは２５６バイト）を設けている。モトローラ社は、テキサス・インスツルメンツ社の装置に似た２目的ＲＡＭを用いる８ビットマイクロコントローラのＭＣ６８０５ファミリーを提供する。マイクロチップ・テクノロジー社はマイクロコントローラ、ＰＩＣ１６Ｃ５Ｘファミリーを提供する。これらのマイクロコントローラは、データとプログラム命令とが別個のメモリおよびバスを有する、２つのバスのあるハーバードアーキテクチャを使用する。ＰＩＣ１６Ｃ５ＸはシステムＲＡＭと共有されるレジスタファイルを用いる。ＰＩＣ１６Ｃ５Ｘは１レベル命令パイプライン方式を使用する。つまり、１つの命令が実行されている間に、次の命令がプログラムメモリからプリフェッチされる。ＲＡＭはレジスタとしては２倍なので、内部レジスタの組は現実にはない。すべてのメモリはスタティックＲＡＭとして存在するため、レジスタ動作に関係する性能が低下する。
上述のように、設計サイクルが速いことは、マイクロコントローラの設計において重要な関心事である。コンピュータベースのシステムにおいてソフトウェアが果たす役割が重要であることは疑いがない。したがって、マイクロコントローラ設計の利便性は、プログラマーとハードウェア設計者との仕様のインターフェイスすなわちマイクロコントローラの命令セットに直接関係する。いかなる計算可能な機能も合理的な量のプログラムスペース内で実現できなければならないという点で、命令セットは完全でなければならない。命令セットは頻繁に使用される機能が比較的少数の命令で実現可能でなければならないという点で効率的でなければならない。
したがって、アプリケーションソフトウェアの開発者に完全かつ効率的な命令セットを提供するマイクロコントローラ設計を提供することが望ましい。
発明の概要
この発明は８ビットＲＩＳＣアーキテクチャを有するコントローラである。８ビットのデータバスが、ＲＡＭメモリストア、レジスタファイル、汎用８ビット算術論理演算装置（ＡＬＵ）および状態レジスタの間のデータ経路を提供する。マイクロコントローラはハーバードアーキテクチャを実現し、ＲＡＭストアとは別個にプログラムメモリストアを、そして、データバスとは別個にプログラムデータバスを備える。
レジスタファイルは複数の８ビットレジスタを含む。レジスタファイル中のレジスタのいくつかは論理１６ビットレジスタを提供するよう組合せることができる。論理１６ビットレジスタは効率的なアドレス計算を行ない、データメモリおよびプログラムメモリに対する間接的アドレスポインタとして使用される。データメモリ用であるにせよまたはプログラムメモリ用であるにせよ、１６ビットのアドレススペースはプログラムアドレススペースおよびデータアドレススペースの両方を増加させることによって、マイクロコントローラの柔軟性および利便性を著しく向上させる。この発明の好ましい実施例においては、レジスタファイルは３つの個別の論理１６ビットレジスタとしてアクセスされ得る（すなわち読出／書込され得る）３対の８ビットレジスタを備える。
さらに１６ビットアドレス指定の利点を高めるため、レジスタファイル専用の特別な第２の算術論理演算装置が利用される。第２のＡＬＵは１６ビットの加算器を含み、論理１６ビットレジスタに対し１６ビット算術演算を行なう。第２のＡＬＵは１６ビットの結果を１６ビットレジスタにストアし直すことができる。さらに、この１６ビットの結果はアドレスとして機能し得る。したがって、汎用８ビットＡＬＵの負荷を増やしたりそれによって装置の動作速度を減じたりすることなく、第２のＡＬＵの存在によって、効率的な１６ビットアドレス計算が行なわれる。
レジスタファイル内に設けられる論理１６ビットレジスタのさらなる拡張は、８ビットＲＡＭページングレジスタの使用である。ＲＡＭページングレジスタの８ビットは、論理１６ビットレジスタの１６ビットと論理的に連結されており、論理２４ビットアドレスを提供する。この特徴によって、基本的には８ビットの設計である基礎アーキテクチャを持つマイクロコントローラにかつてないアドレス指定範囲が与えられる。特に、ページングレジスタはメモリを６４Ｋ（６４＊１０２４）バイトのページ、２５６ページのＲＡＭとして形成し、６４Ｋページ各々がページングレジスタにより参照される。この発明の好ましい実施例においては、レジスタファイルにより設けられる３つの論理１６ビットレジスタ各々に対し１つずつ３つのページングレジスタがある。
レジスタファイルのレジスタ内の任意のビット位置へおよびビット位置からの１ビットのデータの転送をビットストアが可能にする。好ましい実施例においては、ビットストアは状態レジスタ内に位置付けられる。このビット転送特徴により、これ以外の場合は時間のかかる数多くのレジスタシフト動作を行なう必要なくレジスタのビット位置を直接操作することができる。多くのマイクロコントローラ応用例において典型的であるように、１バイトのデータに含まれる個別のビットは他のビットとは独立した意義を有する。従来の技術のマイクロコントローラの命令セットは典型的にはレジスタの左シフトおよび右シフトのためのシフト命令を含む。したがってレジスタの所定のビット位置のビットへのアクセスは、ビットを右または左のいずれかにシフトさせることにより達成される。これは、原データの保存が必要ならばレジスタの内容をセーブすることが必要となる、破壊動作である。加えて、この動作は、時間がかかり、実現するためにはいくつかのプログラム命令が必要である。この発明のビット転送動作は、任意のビット位置にアクセスするための、より時間効率がよく、使うスペースが少ない手段を提供する。
桁上げ比較命令は、レジスタファイルに含まれる８ビットレジスタを１６ビットにエンハンスする。命令セットのこの特徴は、８ビット環境において１６ビットの量の比較を実現するための効率的な方法を提供し、それによってさらにこの発明の８ビットマイクロコントローラの利便性を高める。
【図面の簡単な説明】
図１はこの発明のマイクロコントローラの概略的なレイアウトを示す図である。
図２Ａから図２Ｃは図１のマイクロコントローラ内で使用されるレジスタファイルの内部概略図である。
図３Ａおよび図３Ｂは図２Ａから図２Ｃに示すレジスタファイル内のレジスタの構成を示す図である。
図４Ａおよび図４Ｂはこの発明のビットストア機構を示す図である。
図５はこの発明によるページングレジスタを使用する２４ビット論理アドレスの形成を示す図である。
図６は図５に示すページングレジスタを組入れた図１のマイクロコントローラの図である。
発明を実施するためのベストモード
図１を参照し、この発明のマイクロコントローラ１０が８ビットデータバス１２構造のまわりに設計される。データバスは、マイクロコントローラに含まれるさまざまな構成要素に対しデータ経路を提供する。オンボードＳＲＡＭは汎用データストアとして役立つ。ＳＲＡＭとは別個の８ビットレジスタファイル（REGISTER FILE）がマイクロコントローラ用の高速８ビットメモリストアの組を提供する。
レジスタ内にストアされるデータに対して算術計算を行なうために、汎用算術論理演算装置ＡＬＵ−１がレジスタファイルに結合される。ＡＬＵ−１の出力は８ビットデータバス１２および状態レジスタ（STATUS REGISTER）の両方に結合される。状態レジスタに含まれるさまざまな状態ビットは、ＡＬＵ−１の結果に応じてセットされる。状態レジスタに含まれる典型的なビットは、キャリーフラグ、ゼロフラグ、負フラグ、２つの補数のオーバフローインジケータ、負フラグと２つの補数のオーバフローフラグとの排他的論理和に等しい符号ビットおよび割込許可ビットを含むが、これらに限定されない。状態レジスタは、状態ビットへの読出／書込アクセスを可能にするよう、データバス１２に結合される。データバス１２に結合される付加的な構成要素は、サブルーチンの呼出／リターンおよび割込処理のために使用されるスタックポインタ（STACK POINTER）、タイマ、割込回路、タイミングおよび制御回路、ＥＥＰＲＯＭ、およびＵＡＲＴを含む。ポートドライバ（PORT DRIVERS）により駆動されるＩ／Ｏデータレジスタ（I/O DATA REGISTERS）は、マイクロコントローラに対するＩ／Ｏ経路１８を提供する。
直接アドレスバス１６は、プログラムの実行中にＳＲＡＭロケーションおよびレジスタファイルへの直接アクセスを提供する。間接アドレスバス１４は間接アドレス指定を行なう。間接アドレスバス１４はレジスタファイルからアドレスを受取るための手段、すなわち、アドレスをＳＲＡＭまたはプログラムカウンタ（PROGRAM COUNTER）に伝送するためレジスタファイルを間接アドレスバス１４に結合するバスインターフェイス１４′を含む。
マイクロコントローラ１０の命令実行構成要素は、プログラムメモリ（PROGRAM MEMORY）に結合されるプログラムカウンタを含む。プログラムカウンタにより指定されたプログラム命令はプログラムメモリからフェッチされ命令レジスタ（INSTRUCTION REGISTER）に与えられる。命令レジスタから、プログラム命令が命令デコーダ（INSTRUCTION DECODER）によりデコードされさまざまな制御信号が発生される。制御信号は、制御ライン（CONTROL LINE）によってマイクロコントローラ１０の他の構成要素へ運ばれ、デコードされたプログラム命令によって動作が行なわれる。命令実行構成要素を結合するバスは集合的にプログラムバスと呼ばれる。データストアとは別個のプログラムメモリストアの配置およびデータバス１２とは別個のプログラムバスの使用は、一般にハーバードアーキテクチャと呼ばれる。
前述のように、レジスタファイルは複数の８ビットレジスタからなる。この発明の好ましい実施例においては、３２個の８ビットレジスタがある。しかし、レジスタファイル内のレジスタがより多くてもまたはより少なくてもマイクロコントローラが同様に良好に動作するであろうということが指摘される。汎用算術論理演算装置ＡＬＵ−１は８ビットの演算子であり、レジスタファイルから選択されたレジスタの間で８ビットの算術演算を行なう。ＡＬＵ−１の出力はレジスタファイル内のレジスタへとデータバス１２を介して送り返され得る。以下にさらに詳細に説明するように、８ビットレジスタのいくつかは対にして組合されることができ、それによって論理１６ビットレジスタが提供される。好ましい実施例においては、図１に示すように、３対の８ビットレジスタが３つの論理１６ビットレジスタＸ、Ｙ、Ｚを提供する。
図２Ａを参照し、この発明のレジスタファイルは、３２個の８ビットレジスタＲ０からＲ３１を備えるレジスタ回路１００を含む。以下に説明するように、レジスタ回路１００は最後の６つのレジスタＲ２６からＲ３１を３対の論理１６ビットレジスタＲ２７／Ｒ２６（Ｘ）、Ｒ２９／Ｒ２８（Ｙ）、Ｒ３１／Ｒ３０（Ｚ）として準備できる。２つの１６ラインデータバス１０２および１０４からなる共通バスインターフェイスは、それぞれレジスタに対しデータ入力バスおよびデータ出力バスを提供する。
レジスタファイルの備える１６ビットレジスタはＳＲＡＭおよびプログラムスペースのアドレス指定のための間接アドレスレジスタポインタとして使用される。この場合、ポストインクリメントおよびプリデクリメントなどの特定の１６ビット算術演算が、アドレス計算のために必要とされる。１６ビットレジスタに対して１６ビットの算術演算を行なうためにＡＬＵ−１を使用することも可能であるが、このような動作はＡＬＵ−１が８ビット設計であるためかなり非効率的であろう。
したがって、図２Ａに示すレジスタファイルは、論理１６ビットレジスタにかかわる１６ビット計算を容易にするためレジスタファイルに専用される第２の算術論理演算装置ＡＬＵ−２を含む。算術論理演算装置ＡＬＵ−２は１６ビット設計であり、間接アドレスポインタに典型的に必要とされる特定の演算を行なうようカストマイズされる。ＡＬＵ−２は、レジスタファイルのデータ出力バス１０４により与えられる第１の入力を有する。ＡＬＵ−２はセレクタ１１０により与えられる第２の入力を有する。セレクタ１１０は、３つの選択肢の中から１つの数値を選択する。すなわち、数値−１、数値＋１および定数Ｖである。ＡＬＵ−２の出力はデータ入力バス１０２を通じてＸ、Ｙ、Ｚレジスタへと送り返され、レジスタの内容の更新が可能にされる。ｍｕｘ１１４はレジスタファイルのバスインターフェイス１４′に結合される。ｍｕｘ１１４の１入力はＡＬＵ−２の出力に結合され、一方、ｍｕｘの第２の入力はデータ出力バス１０４に結合される。この構成によって、ｍｕｘ１１４は、ＡＬＵ−２またはレジスタ回路１００のいずれかから選択的にデータを出力することができる。
以下に挙げる制御信号は、上に説明したレジスタファイルの特徴である動作に関係する。これらの信号は、ＡＤＤ  ＥＮＡＢＬＥ、ＳＵＢ  ＥＮＡＢＬＥ、ＭＵＸ  ＳＥＬＥＣＴ、Ｖ  ＳＥＬＥＣＴ、Ｖ5〜Ｖ0、ＩＮＣＲ  ＳＥＬＥＣＴ、およびＤＥＣＲ  ＳＥＬＥＣＴを含む。これらの信号は、命令デコーダ（INSTRUCTION DECODER）から発するさまざまな制御ライン（CONTROL LINE）により運ばれる。これらの制御信号に関してのレジスタファイルの動作を、この発明のマイクロコントローラのプログラム命令に関して以下に説明する。
図２Ａに示すレジスタ回路１００の内部構成を図３Ａのブロック図に示す。この発明の一実施例において、３２個のレジスタＲ０〜Ｒ３１が設けられ、その各々が８ビットの出力ライン１２１の組と８ビットの入力ライン１２３の組とを有する。実際に設けられるレジスタの数はこの発明の本質部分ではない。１組のラッチ１２０〜１２６が、レジスタへのおよびレジスタからのデータを選択的にラッチするよう結合される。これらのラッチは、図２Ａに示す共通バスインターフェイス１０２、１０４の入力データビットｂｉ15…ｂｉ0および出力データビットｂｏ15…ｂｏ0を与える。８ビットレジスタＲ０〜Ｒ３１の間でのデータ転送は、それぞれビットｂｉ7−ｂｉ0およびｂｏ7−ｂｏ0としてデータ入力ラッチ１２２およびデータ出力ラッチ１２６を通じて行なわれる。
論理１６ビットレジスタＸ、Ｙ、Ｚについては、付加的なデータ入力ラッチおよびデータ出力ラッチ１２０および１２４が設けられる。Ｘレジスタはレジスタ対Ｒ２７：Ｒ２６からなり、Ｙレジスタはレジスタ対Ｒ２９：Ｒ２８からなり、Ｚレジスタはレジスタ対Ｒ３１：Ｒ３０からなる。データ出力ラッチ１２０および１２２は、共通バスインターフェイス１０２および１０４の出力ビットｂｏ15〜ｂｏ0に１６ビットレジスタの１つの内容をラッチし、一方、データ入力ラッチ１２４および１２６は入力ビットｂｉ15〜ｂｉ0に現われるデータをラッチする。データ出力ラッチ１２０は、上位バイトレジスタＲ２７、Ｒ２９およびＲ３１の出力ライン１２１へ結合される。同様に、データ出力ラッチ１２２は下位バイトレジスタＲ２６、Ｒ２８およびＲ３０の出力ライン１２１に結合される。データ入力ラッチ１２４および１２６は同様の態様で結合され、すなわち、データ入力ラッチ１２４は上位バイトレジスタＲ２７、Ｒ２９およびＲ３１の入力ライン１２３に結合され、一方データ入力ラッチ１２６は下位バイトレジスタＲ２６、Ｒ２８およびＲ３０の入力ライン１２３に結合される。
以下の制御信号は、レジスタ回路１００の上に説明した特徴を持つ動作に関連する。信号は、ＤＡＴＡ１６＿ＩＮ、ＤＡＴＡ１６＿ＯＵＴ、ＤＡＴＡ８＿ＩＮ、ＤＡＴＡ８＿ＯＵＴ、Ｒ０  ＳＥＬＥＣＴ〜Ｒ３１  ＳＥＬＥＣＴ、Ｘ  ＳＥＬＥＣＴ、Ｙ  ＳＥＬＥＣＴ、およびＺ  ＳＥＬＥＣＴを含む。これらの制御信号に関連してのレジスタ回路１００の動作を、この発明のマイクロコントローラのプログラム命令に関連して以下に説明する。
次にこの発明の８ビットマイクロコントローラの他の特徴について説明する。レジスタの任意のビット位置にロードまたはストアするための従来技術はレジスタのシフト動作および／またはレジスタのマスキング動作を必要とし、そのためにコードの効率が落ち、コードサイズが大きくなっていったことが、上述の説明から思い出される。さらにこれは破壊動作であって、もし原データを保存したいのであればレジスタの内容をセーブする必要がある。
この発明のレジスタファイルの内部構成の他の図について図４Ａを参照し、レジスタＲ０〜Ｒ３１からビットへの任意のアクセスを提供するレジスタファイル内の付加的な構成要素について詳細に説明する。論理的には各レジスタは１：８マルチプレクサ１３０を有し、マルチプレクサの８つの出力は各々レジスタ内のビットに結合される。したがって、ビットをｍｕｘ１３０の１ビット入力にラッチし、ｍｕｘ入力をその８個の出力の１つの転送することによって、レジスタ内の任意のビット位置にビットをロードすることができる。各レジスタはさらに、８：１ｍｕｘ１３２を有し、その８個の入力は各々レジスタ内のビットに結合される。したがって、所望のビットに対応するｍｕｘの入力を選択することで、レジスタの任意のビット位置をコピーできる。
続いて、レジスタファイルは論理的に１：３２ｍｕｘ１３４と３２：１ｍｕｘ１３６とを含む。まず１：３２ｍｕｘ１３４について考える。このｍｕｘは８ビットデータバス１２からの１ビット入力を有する。入力は３２個の出力のいずれか１つに転送できる。３２個の出力の各々は１：８ｍｕｘ１３０の１つの入力に結合され、それによって、データバス１２からレジスタファイル内のレジスタＲ０からＲ３１のうちいずれかの中のいずれかのビット位置への経路が提供される。次に１：３２ｍｕｘ１３６について考える。８：１ｍｕｘ１３２の各々の出力はｍｕｘ１３６の３２個の入力の１つに結合される。ｍｕｘ１３６の１ビット出力は、データバス１２に結合され、これによって、レジスタＲ０〜Ｒ３１のいずれかの中のいずれかのビット位置からデータバスへのデータ経路が提供される。
図４Ａに示す状態レジスタは、ビットを転送するためのＴビットとして知られる１ビットのデータを受取りかつ保持するためのビット位置を含む。状態レジスタは８ビットデータバス１２に結合され、そのさまざまなビットへの読出／書込アクセスを提供する。特に、Ｔビット位置は、データバスを通じて３２：１ｍｕｘ１３６から１ビットのデータを受取るかまたはデータバスを通じて１：３２ｍｕｘ１３４へ１ビットのデータを転送するかのいずれかのために、１：３２ｍｕｘ１３４および３２：１ｍｕｘ１３６に関連して制御される。
以下の制御信号は、図４Ａに示すレジスタファイルの特徴を持つ動作に関連する。これらの信号は、ＢＳＴ  ＲＥＧＩＳＴＥＲ  ＳＥＬＥＣＴ、ＢＳＴ  ＢＩＴ  ＳＥＬＥＣＴ、ＢＬＤ  ＲＥＧＩＳＴＥＲ  ＳＥＬＥＣＴ、およびＢＬＤ  ＢＩＴ  ＳＥＬＥＣＴを含む。これらの制御信号に関連してのレジスタファイルの動作を、以下にこの発明のマイクロコントローラのプログラム命令に関連して説明する。
この発明の８ビットマイクロコントローラの他の特徴は、図５に示すようなエンハンスされたアドレス指定能力である。図示されるのは、レジスタファイルの外部にある３つの付加的なレジスタ、すなわちＲＡＭページングレジスタ、ＲＡＭＰＸ、ＲＡＭＰＹ、ＲＡＭＰＺである。ＲＡＭページングレジスタは、従来の技術の８ビットマイクロコントローラと比較してはるかに広いアドレス指定範囲を提供するよう、対応する論理１６ビットレジスタＸ、Ｙ、Ｚに関連して動作する。開示される実施例においては、ＲＡＭページングレジスタは８ビットレジスタである。しかし、これは重要な点ではなく、この発明が異なったビット長を有するレジスタにおいても容易に作動し得ることは明らかとなるであろう。
図５を参照し、どのようにアドレスが補強されるかの概略図を示す。ＲＡＭページングレジスタは各々それと対応する１６ビットレジスタに連結される。たとえば、ＲＡＭページングレジスタＲＡＭＰＸの８ビットはＸレジスタの１６ビットと連結され、２４ビットのアドレスを形成する。好ましい実施例においては、ＲＡＭＰＸの８ビットは２４ビットの論理アドレスの上位ビットＸ［２３…１６］として役立ち、一方Ｘレジスタの１６ビットは２４ビットの論理アドレスの下位ビットＸ［１５…０］となる。この構成によって作られるメモリのモデルは、６４Ｋバイト（６４＊１０２４）ページの組であり、６４Ｋページは各々８ビットのＲＡＭページングレジスタによりアクセスされ全部で２５６ページである。
次にこの発明の開示される実施例の環境におけるＲＡＭページングレジスタの実施例の説明について図６を参照する。ＲＡＭページングレジスタＲＡＭＰＸ、ＲＡＭＰＹ、ＲＡＭＰＺは各々、８ビットデータバス１２に結合され、プログラムの実行の間８ビットページ参照を受ける。（たとえば３：１マルチプレクサなどの）セレクタ１１は、ＲＡＭページングレジスタの各々から８ビットを受取り、ＲＡＭページングレジスタの選択された１つの８ビットをセレクタの出力に転送する。レジスタファイルのバスインターフェイス１４′の１６ビットはセレクタ１１からの８ビットと連結され、２４ビットのアドレスを形成し、これは間接アドレスバス１４によって運ばれる。
この発明の拡張された２４ビットアドレス指定により、２４ビットアドレスはＲＡＭの１６Ｍ（１６＊１０２４＊１０２４）をアドレス指定することができるので、外部に設けられるＲＡＭ（図示せず）を使用することが可能になる。外部２４ビットアドレスバス２０および８ビットデータバス２２はマイクロコントローラと外部ＲＡＭ（図示せず）との間のデータアクセスのために含まれる。この発明により、レジスタファイル、オンボードＳＲＡＭおよび外部ＲＡＭは同じデータアドレススペースを占める。レジスタファイルは第１の３２アドレスロケーションを占め、オンボードＳＲＡＭは次のＮアドレスロケーションを占めるが、ＮはＳＲＡＭの大きさである。残りのアドレススペースは外部ＲＡＭにより設けられる。したがって、００から（Ｎ−１）のアドレス範囲がオンボードメモリ（レジスタファイルおよびＳＲＡＭ）のメモリロケーションをマップし、一方残りのアドレス範囲Ｎから（１６Ｍ−１）が外部ＲＡＭのメモリロケーションをマップする。たとえば、もしオンボードメモリが全部で６４Ｋバイトを有するのであれば、オンボードアドレス範囲は＄００から＄ＦＦＦＦ（「＄」は１６進表現を意味する）となり、一方外部ＲＡＭのアドレス範囲は＄１００００から＄ＦＦＦＦＦＦとなる。オンボードメモリの量はこの発明の利便性または動作性に影響することなく変えることができ、実際のメモリの量は利用可能なシリコン面積、素子のジオメトリおよびデザインルールなどの設計上の基準に依存することが注意される。
オンボードメモリおよび外部ＲＡＭが所与のアドレスについて正しくアクセスされることを確実にするため、内部アドレスバス１４または外部アドレスバス２０のいずれかにアドレスを転送するため第２のセレクタ１３が使用される。好ましい実施例においては、セレクタ１３は１：２ｍｕｘであり、単一のＭＵＸ入力がその２つの出力の一方に転送される。ここで、単一の入力はセレクタ１１から出る２４ビットのアドレスラインである。セレクタ１３の出力の一方はアドレスバス１４に結合され、他方の出力は外部アドレスバス２０に結合される。オンボードメモリのアドレス範囲内のアドレスを検出すると、セレクタ１３はその入力をアドレスバス１４へ転送させられる。２４ビットアドレスの下位１６ビット［１５…０］のみがアドレスバス１４に転送される。逆に、外部メモリのアドレス範囲内のアドレスを検出すると、セレクタ１３はその入力を外部アドレスバス２０へ転送するであろう。いくつかの検出機構のうち任意のものが使用できるが、そのいずれも通常の技量を有する設計者の能力内にある。たとえば、２４ビットアドレスの上位８ビット（ビット［２３…０］）をともに論理和し、その結果をセレクタ１３を制御するために使用してもよい。もし論理和演算の結果がＦＡＬＳＥであり、そのアドレスがオンボードメモリのアドレス範囲内にあることを意味すれば、セレクタ１３はその入力を内部アドレスバス１４へ転送しなければならない。もし論理和演算の結果がＴＲＵＥでありそのアドレスが完全な２４ビットアドレスであることを意味すれば、セレクタ１３はその入力を外部アドレスバス２０へ転送しなければならない。
この発明の８ビットマイクロコントローラの特徴に関連するハードウェアの詳細について説明してきたが、次にマイクロコントローラの命令セットについて説明する。まず、この発明のマイクロコントローラは、算術論理演算命令、分岐命令、データ転送命令ならびにビットテストおよびビットセット命令を含むすべてのマイクロコントローラに典型的なプログラム命令をサポートする。さらにこの発明のマイクロコントローラはここまでに説明し、図に示す回路によって可能にされる命令を提供する。以下はこれらの命令の概要である。
0003694531.tif 000002
0003694531.tif 000003
0003694531.tif 000004
0003694531.tif 000005
0003694531.tif 000006
図１においては、デコードされた命令を行なうために必要とされる動作を行なうため、マイクロコントローラのさまざまな構成要素に制御ラインにより運ばれる制御信号が命令デコーダにより生成されたことを想起されたい。次に上述の命令に関連する制御信号の上述の図に示した回路に対する効果に関連して、これらの制御信号について説明する。
まず、図４Ｂに示すビット転送命令（ＢＳＴ、ＢＬＤ）について考える。ＢＳＴおよびＢＬＤ命令は各々、特定の命令を特定するＯＰ＿ＣＯＤＥフィールドおよび２つのオペランドを含む。すなわちレジスタオペランドＲｄおよびビット位置オペランドｂである。これらの命令が命令デコーダ（図１）によりデコードされるとき、レジスタ選択制御信号およびビット選択制御信号が発生されるであろう。これらの制御信号は所望のビットにアクセスするよう、ｍｕｘ１３２−１３６を制御する。ＢＳＴ  ＲＥＧＩＳＴＥＲ  ＳＥＬＥＣＴ制御信号は、レジスタオペランドＲｄに基づいてＢＳＴ命令のために生成される。同様に、ＢＳＴ  ＢＩＴ  ＳＥＬＥＣＴ制御信号はビット位置オペランドｂに基づいて生成される。同様に制御信号がＢＬＤ命令についても生成される。
図４Ｂに示すように、ＢＳＴ  ＢＩＴ  ＳＥＬＥＣＴ制御信号は、レジスタＲ０〜Ｒ３１の各々の８：１ｍｕｘ１３２を動作させ、各レジスタから３２：１ｍｕｘ１３６へと指定されたビットを転送する。ＢＳＴ  ＲＥＧＩＳＴＥＲ  ＳＥＬＥＣＴ制御信号は３２ビットのうち指定された１ビットを選択するよう３２：１ｍｕｘを動作させ、それによって選択されたレジスタの選択されたビットを８ビットデータバス１２へ転送し、これは次に状態レジスタのＴビット位置へとラッチされる。
ＢＬＤ命令に対応する制御信号は同様の態様でｍｕｘ１３０および１３４を動作させる。Ｔビットにストアされるビットはデータバス１２を介して３２：１ｍｕｘ１３４へ転送される。次にビットはＢＬＤ  ＲＥＧＩＳＴＥＲ  ＳＥＬＥＣＴ制御信号の制御下で１：８ｍｕｘ１３２の１つへと転送され、ビットは指定されたレジスタへ送られる。次にＢＬＤ  ＢＩＴ  ＳＥＬＥＣＴはビットを指定されたレジスタの正しいビット位置へと出力する。
次に、１６ビットの算術演算ＡＤＩＷおよびＳＢＩＷ、すなわち、それぞれ論理１６ビットレジスタＸ、Ｙ、Ｚの１つと定数値との加算および減算について考える。図２Ｂをまず参照し、ＡＤＩＷおよびＳＢＩＷ命令の図は、ＯＰ＿ＣＯＤＥフィールドおよび定数値オペランドＫが、命令デコーダ（図１）によるデコーディングに際し制御信号を生成することを示す。ＯＰ＿ＣＯＤＥフィールドはＡＤＤ  ＥＮＡＢＬＥまたはＳＵＢ  ＥＮＡＢＬＥ制御信号のいずれかを生成し、これによってＡＬＵ−２がその２つの入力において適切な算術演算を行なう。定数値オペランドＫは制御信号Ｖ5〜Ｖ0を生成し、これらはセレクタ１１０のＶ入力に与えられる。制御信号Ｖ5〜Ｖ0はＡＤＩＷおよびＳＢＩＷ命令のオペランドにおいて指定される定数Ｋの２進形を表わす。この発明の開示される実施例においては、定数Ｋは６ビットのデータである。さらに、定数値オペランドＫはＶＳＥＬＥＣＴ制御信号を生成し、これはセレクタ１１０にＡＬＵ−２の入力へ定数Ｖを出力させる。ＡＬＵ−２への他入力は以下に説明するように、データ出力バス１０４介してレジスタファイル内の１６ビットレジスタＸ、Ｙ、Ｚの選択された１つからくる。ＡＬＵ−２の出力はデータ入力バス１０２を通じてレジスタファイルへと送り返され、選択された１６ビットレジスタにストアされ、こうして演算が完了する。
次に、図３Ａおよび図３Ｂを参照し、ＡＤＩＷ命令およびＳＢＩＷ命令のために命令デコーダにより生成される制御信号について考える。レジスタのオペランドＬは適当なレジスタ対が指定される論理１６ビットレジスタへの読出／書込アクセスを行なうことを可能にさせるＸ、ＹまたはＺ  ＳＥＬＥＣＴ制御信号を生成する。Ｘ  ＳＥＬＥＣＴ信号はレジスタＲ２６およびＲ２７を可能化し、ＹＳＥＬＥＣＴ信号はレジスタＲ２６およびＲ２７を可能化し、Ｚ  ＳＥＬＥＣＴ信号はレジスタＲ３０およびＲ３１を可能化する。ＯＰ＿ＣＯＤＥフィールドは、ＤＡＴＡ１６＿ＩＮ  ＥＮＡＢＬＥ制御信号およびＤＡＴＡ１６＿ＯＵＴ  ＥＮＡＢＬＥ制御信号を生成する。ＤＡＴＡ１６＿ＯＵＴ  ＥＮＡＢＬＥ制御信号は、データ出力ラッチ１２０、１２２に、選択された論理１６ビットレジスタ内に含まれるデータをデータ出力バス１０４へ出力させ、データ出力バス１０４は上述のようにこれをＡＬＵ−２へ送る。これに対して、ＤＡＴＡ１６＿ＩＮ  ＥＮＡＢＬＥ制御信号は、データ入力ラッチ１２４、１２６に、ＡＬＵ−２の出力で生成された結果としての和または差を入力させる。
次に論理１６ビットレジスタＸ、Ｙ、Ｚに関連するロードおよびストア命令（ＬＤ、ＳＴ）について説明する。まず、１６ビットレジスタのプリデクリメントまたはポストインクリメントのいずれかがあるＬＤおよびＳＴ動作の形について考える。図２Ｃを参照し、更新を伴うロード／ストア動作のためのＯＰ＿ＣＯＤＥフィールドは、更新がプリデクリメントであるかまたはポストインクリメントであるかに依存して、ＤＥＣＲ  ＳＥＬＥＣＴまたはＩＮＣＲ  ＳＥＬＥＣＴ制御信号のいずれかを発生する。ＤＥＣＲ  ＳＥＬＥＣＴ制御信号およびＩＮＣＲ  ＳＥＬＥＣＴ制御信号は、適当な「−１」または「＋１」の値を出力するようにセレクタ１１０を動作させ、これらの値はＡＬＵ−２の一入力へ送られる。ＡＬＵ−２への他入力はレジスタファイル内の１６ビットレジスタＸ、Ｙ、Ｚの選択される１つからデータ出力バス１０４を介して送られる。ＡＤＤ  ＥＮＡＢＬＥ信号が、ＡＬＵ−２が値「−１」または「＋１」を選択された１６ビットレジスタの内容に付け加えるよう、発生される。ＭＵＸ  ＳＥＬＥＣＴ制御信号は、レジスタファイルのバスインタフェース１４′へアドレスを出力するようｍｕｘ１１４を動作させる。ＭＵＸ  ＳＥＬＥＣＴ制御信号のタイミングは、その命令がプリデクリメントであるかまたはポストインクリメントであるかに依存して変化する。もし、プリデクリメントが所望であれば、ＭＵＸ  ＳＥＬＥＣＴ制御信号はＡＬＵ−２がその動作を行なった後に生成され、したがって、ｍｕｘ１１４はＡＬＵ−２による動作の前にＡＬＵ−２の出力をバスインタフェース１４′へ転送できる。他方、もしポストインクリメントが所望であれば、ＭＵＸ  ＳＥＬＥＣＴはｍｕｘ１１４にデータ出力バス１０４からバスインタフェース１４′へ転送させる。いずれの場合にも、ＡＬＵ−２の出力はデータ入力バス１０２を介してレジスタファイルへと送り返され、それによって選択された１６ビットレジスタが更新され得る。
次に図３Ａおよび図３Ｂを参照し、更新を伴うＬＤおよびＳＴ命令がＸ、Ｙ、Ｚ  ＳＥＬＥＣＴ制御信号ならびにＤＡＴＡ１６＿ＩＮ  ＥＮＡＢＬＥおよびＤＡＴＡ１６＿ＯＵＴ  ＥＮＡＢＬＥ制御信号を発生させることがわかる。これらの信号は、ＡＤＩＷ命令およびＳＢＩＷ命令に対するのと同様の態様で機能する。というのは、いずれの場合にも１６ビットレジスタの内容が更新されるからである。これらの制御信号に加えて、ＬＤおよびＳＴ命令のレジスタオペランドＲｄをデコードした結果として、Ｒ０〜Ｒ３１  ＳＥＬＥＣＴおよびＤＡＴＡ８＿ＩＮおよびＤＡＴＡ８＿ＯＵＴ制御信号が生成される。ロード命令については、ＤＡＴＡ８＿ＩＮ制御信号が１６ビットレジスタにより参照されるデータをラッチするよう下位バイトデータ入力ラッチ１２６を動作させ、これは次に、Ｒ０〜Ｒ３１  ＳＥＬＥＣＴ制御信号により選択される８ビットレジスタへロードされる。ストア命令については、ＤＡＴＡ８＿ＯＵＴ制御信号はＲ０〜Ｒ３１  ＳＥＬＥＣＴ制御信号により選択される８ビットレジスタの内容を出力するよう下位バイトデータ出力ラッチ１２２を動作させ、これは次に１６ビットレジスタにより指し示されるメモリロケーションへストアされる。
次に更新を伴わないＬＤおよびＳＴ命令の形について、すなわち、プリデクリメントまたはポストインクリメント演算を伴わないＬＤおよびＳＴ命令の形について考える。図２Ｃを参照し、選択される１６ビットレジスタの更新が行なわれないので、１６ビットレジスタを（データ出力バス１０４を介して）間接アドレスバス１４へ転送するためにＭＵＸ  ＳＥＬＥＣＴ制御信号のみが必要である。図３Ｂを参照し、１６ビットレジスタの更新が行なわれないためＤＡＴＡ１６＿ＩＮ  ＥＮＡＢＬＥ信号が必要とされない点を除いては、更新を伴うＬＤおよびＳＴ命令に対して生成されるものと同じ制御信号が生成される。
ロードおよびストア動作の第３の形は、選択される１６ビットレジスタへ加えられる変位ｑを利用する。これらがＬＤＤおよびＳＴＤ命令である。図２Ｂからわかるように、ＬＤＤおよびＳＴＤ命令はＡＤＩＷおよびＳＢＩＷ命令ときわめて類似した態様で動作する。変位値ｑは制御信号Ｖ5〜Ｖ0により表わされる。ＡＤＤ  ＥＮＡＢＬＥ制御信号はＡＬＵ−２に選択された１６ビットレジスタへ変位を加算させる。しかし、ＡＤＩＷおよびＳＢＩＷとは異なり、ＬＤＤおよびＳＴＤ命令は計算された値をアドレスとして間接アドレスバス１４へ出力することを許可するＭＵＸ  ＳＥＬＥＣＴ信号を生成する。次に図３Ａおよび図３Ｂを参照し、ＬＤＤおよびＳＴＤ命令は２つの例外を除いては本質的にＬＤおよびＳＴ命令と同じ制御信号を生成する。すなわち、１６ビットレジスタの更新が行なわれないためＤＡＴＡ１６＿ＩＮ  ＥＮＡＢＬＥは発生されず、ＬＤＤおよびＳＴＤ命令はＹおよびＺレジスタに限定される。
図３Ｂに示すような飛び越し命令ＩＪＭＰ、ＩＣＡＬＬは、単純に、Ｚレジスタの選択およびＺレジスタの内容の間接アドレスバス１４への出力のためのＤＡＴＡ１６＿ＯＵＴ  ＥＮＡＢＬＥ制御信号の発生に関係する。図２Ｂ中、ＩＪＭＰおよびＩＣＡＬＬ命令はｍｕｘ１１４を動作させるためＭＵＸ＿ＳＥＬＥＣＴ制御信号を発生し、これによって、レジスタファイルのデータ出力バス１０４からアドレスバス１４へＺレジスタの内容を転送することができる。次に、実行制御のフローを変えるためアドレスがＰＣカウンタへロードされる。
図３Ｂに示す桁上げ比較ＣＰＣ命令は、命令のレジスタオペランドＲｄ、Ｒｒの各々に対するＲ０−Ｒ３１  ＳＥＬＥＣＴ制御信号の１つの発生に単純に関係する。ＤＡＴＡ８＿ＯＵＴ制御信号は選択される８ビットレジスタの内容を出力する。
付加的な制御信号（図示せず）が発生され、８ビットＡＬＵ−１に、Ｒｒレジスタの内容と桁上げビットとの和をＲｄレジスタの内容から減算させる。演算の結果はセーブされない。しかし、演算の結果によって状態レジスタ内のフラグがセットされる。
ＣＰＣ命令は、８ビット環境において１６ビット能力を与えることによって、マイクロプロセッサの８ビットアーキテクチャをエンハンスする。８ビット演算による桁上げ結果は１６ビットの効果をもたらすよう続く８ビットＣＰＣ演算において使用され得る。たとえば、以下のように１６ビット比較を実現できる。
0003694531.tif 000007
「ｃｐ」命令は桁上げビットに影響し、桁上げビットは次に続く「ｃｐｃ」命令において使用される。レジスタ対Ｒ３／Ｒ２およびＲ１／Ｒ０は２つの１６ビット値のためのホルダとして有効に働く。
これで、この発明のマイクロコントローラに関して開示される命令および論理回路に関連する制御信号の説明は終わりである。上述の命令の実行に関連する制御信号はこれらの信号のみではないことが理解される。マイクロコントローラの他の素子を制御するために付加的な信号が生成される。たとえば、メモリアクセスに関係する上述の命令のいくつかのためにアドレスおよび読出／書込ストローブが発生される。さらに、制御信号の発行を適切に同期させるため実行タイミング制御が必要とされる。しかし、集積コンピュータ回路分野の当業者は、過度の実験を行なわずとも、この発明を実施するため必要な付加的な制御信号およびこれらの信号の必須タイミングを判断することができる。
【図１】
0003694531.tif 000008
【図２Ａ】
0003694531.tif 000009
【図２Ｂ】
0003694531.tif 000010
【図２Ｃ】
0003694531.tif 000011
【図３Ａ】
0003694531.tif 000012
【図３Ｂ】
0003694531.tif 000013
【図４Ａ】
0003694531.tif 000014
【図４Ｂ】
0003694531.tif 000015
【図５】
0003694531.tif 000016
【図６】
0003694531.tif 000017