JP2001517343A - Riscアーキテクチャを有する8ビットマイクロコントローラ - Google Patents

Riscアーキテクチャを有する8ビットマイクロコントローラ

Info

Publication number
JP2001517343A
JP2001517343A JP54167098A JP54167098A JP2001517343A JP 2001517343 A JP2001517343 A JP 2001517343A JP 54167098 A JP54167098 A JP 54167098A JP 54167098 A JP54167098 A JP 54167098A JP 2001517343 A JP2001517343 A JP 2001517343A
Authority
JP
Japan
Prior art keywords
register
instruction
bit
control signal
microcontroller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP54167098A
Other languages
English (en)
Other versions
JP4386467B2 (ja
Inventor
ウォラン,ベガルド
ボーゲン,アルフ−エギル
ミクルブスト,ガウテ
ブライアント,ジョン・ディ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Atmel Corp
Original Assignee
Atmel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Atmel Corp filed Critical Atmel Corp
Publication of JP2001517343A publication Critical patent/JP2001517343A/ja
Application granted granted Critical
Publication of JP4386467B2 publication Critical patent/JP4386467B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7814Specially adapted for real time processing, e.g. comprising hardware timers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

(57)【要約】 8ビットRISCベースのマイクロコントローラ(図1)は、汎用8ビット専用算術論理演算装置(ALU)(22)に加えて算術論理演算装置(ALU2)を有する8ビットレジスタファイル(20)を含む。レジスタファイルはさらに、間接アドレス指定のため論理16ビットレジスタを提供するためレジスタの対を組合せるための手段(図6)を含む。専用ALUは、レジスタ対に対して所定の算術機能を加え、それによって、これがなければ汎用8ビットALUに課せられることとなる計算処理を緩和する、16ビットALUである。この発明のさらなる特徴は、論理16ビットレジスタの内容(14’)と組合されさらに大きなアドレス指定範囲を提供するページングレジスタ(RAMPx、y、z)を含むことである。この発明の8ビットマイクロコントローラのさらに他の特徴は、単一の命令でレジスタファイル内のどのビット位置にも直接読出および書込を行なうための手段(134)である。これにより、先行技術におけるマイクロコントローラで必要とされたようなさまざまなロード、シフトおよび/またはマスキング動作を行なう必要が回避される。

Description

【発明の詳細な説明】 RISCアーキテクチャを有する8ビットマイクロコントローラ 発明の分野 この発明は、マイクロコントローラ一般に関し、特に、より少数の命令セット を実行するマイクロコントローラに関する。 背景技術 現在のサブミクロンCMOS技術では、複雑なメモリおよび周辺論理の実現の ために十分なシリコン面積を残しつつ、複雑なマイクロコントローラアーキテク チャをチップ上に集積することが可能である。32ビットおよび64ビットのハ イエンドRISCマシンにおいて最も一般に使用されている設計アーキテクチャ および方法論は、低コストの8ビットマイクロコントローラシステムにおいても 効率的に利用および応用できる。このようなパワフルでありながらも費用対効果 のよいマイクロコントローラにより、システムの全体としての集積度は上昇し続 けている。ハードウェアアーキテクチャにおいてより効率的なプログラムを実行 することができ、より多くのハードウェア機能を集積することができる。 近年、RISCアーキテクチャは人気を増している。最も目立つのは、アップ ル・コンピュータ、IBMおよびモトローラが共同開発したパワーPC(登録商 標)である。RISCプロセッサを定義する特徴についての合意は存在しないも のの、さまざまなRISCアーキテクチャ間には共通した特徴がある。すなわち 、(1)ほとんどの命令が1サイクル内に実行される。(2)別個の簡単なロー ド/ストア命令がしばしば2サイクル内に実行される。(3)命令のデコーディ ングが典型的にはマイクロコーディングされるのではなくハードワイヤードで構 成され、実行時間が速くなっている。(4)ほとんどの命令は固定フォーマット を有しそのため命令のデコーディングが簡素になっている。(5)命令セットが 小さくアドレス指定モードが少ない。(6)データ経路が高度にパイプライン化 されており、処理の平衡性の程度が高い。(7)より低速のシステムRAMへの お よびそこからの過剰なデータ転送を回避するための大きな高速レジスタの組(レ ジスタファイルとしても知られる)。 半導体製造業者数社がマイクロコントローラを製造している。たとえばテキサ ス・インスツルメンツ社は8ビットマイクロコントローラであるTMS370C x1xシリーズを提供する。これらのマイクロコントローラはRISCアーキテ クチャを用いていないが、RAMとしてもまたは汎用レジスタの組としても使用 できるRAM(128バイトまたは256バイト)を設けている。モトローラ社 は、テキサス・インスツルメンツ社の装置に似た2目的RAMを用いる8ビット マイクロコントローラのMC6805ファミリーを提供する。マイクロチップ・ テクノロジー社はマイクロコントローラ、PIC16C5Xファミリーを提供す る。これらのマイクロコントローラは、データとプログラム命令とが別個のメモ リおよびバスを有する、2つのバスのあるハーバードアーキテクチャを使用する 。PIC16C5XはシステムRAMと共有されるレジスタファイルを用いる。 PIC16C5Xは1レベル命令パイプライン方式を使用する。つまり、1つの 命令が実行されている間に、次の命令がプログラムメモリからプリフェッチされ る。RAMはレジスタとしては2倍なので、内部レジスタの組は現実にはない。 すべてのメモリはスタティックRAMとして存在するため、レジスタ動作に関係 する性能が低下する。 上述のように、設計サイクルが速いことは、マイクロコントローラの設計にお いて重要な関心事である。マイクロコントローラでの設計においてソフトウェア が果たす役割が重要であることは疑いがない。したがって、マイクロコントロー ラ設計の利便性は、プログラマーとハードウェア設計者との仕様のインターフェ イスすなわちマイクロコントローラの命令セットに直接関係する。いかなる計算 可能な機能も合理的な量のプログラムスペース内で実現できなければならないと いう点で、命令セットは完全でなければならない。命令セットは頻繁に使用され る機能が比較的少数の命令で実現可能でなければならないという点で効率的でな ければならない。 したがって、アプリケーションソフトウェアの開発者に完全かつ効率的な命令 セットを提供するマイクロコントローラ設計を提供することが望ましい。 発明の概要 この発明は8ビットRISCアーキテクチャを有するコントローラである。8 ビットのデータバスが、RAMメモリストア、レジスタファイル、汎用8ビット 算術論理演算装置(ALU)および状態レジスタの間のデータ経路を提供する。 マイクロコントローラはハーバードアーキテクチャを実現し、RAMストアとは 別個にプログラムメモリストアを、そして、データバスとは別個にプログラムデ ータバスを備える。 レジスタファイルは複数の8ビットレジスタを含む。レジスタファイル中のレ ジスタのいくつかは論理16ビットレジスタを提供するよう組合せることができ る。論理16ビットレジスタは効率的なアドレス計算を行ない、データメモリお よびプログラムメモリに対する間接的アドレスポインタとして使用される。デー タメモリ用であるにせよまたはプログラムメモリ用であるにせよ、16ビットの アドレススペースはプログラムアドレススペースおよびデータアドレススペース の両方を増加させることによって、マイクロコントローラの柔軟性および利便性 を著しく向上させる。この発明の好ましい実施例においては、レジスタファイル は3つの個別の論理16ビットレジスタとしてアクセスされ得る(すなわち読出 /書込され得る)3対の8ビットレジスタを備える。 さらに16ビットアドレス指定の利点を高めるため、レジスタファイル専用の 特別な第2の算術論理演算装置が利用される。第2のALUは16ビットの加算 器を含み、論理16ビットレジスタに対し16ビット算術演算を行なう。第2の ALUは16ビットの結果を論理16ビットレジスタにストアし直すことができ る。さらに、この16ビットの結果はアドレスとして機能し得る。したがって、 汎用8ビットALUの負荷を増やしたりそれによって装置の動作速度を減じたり することなく、第2のALUの存在によって、効率的な16ビットアドレス計算 が行なわれる。 レジスタファイル内に設けられる論理16ビットレジスタのさらなる拡張は、 8ビットRAMページングレジスタの使用である。RAMページングレジスタの 8ビットは、論理16ビットレジスタの16ビットと論理的に連結されており、 論理24ビットアドレスを提供する。この特徴によって、基本的には8ビットの 設計である基礎アーキテクチャを持つマイクロコントローラにかつてないアドレ ス指定範囲が与えられる。特に、ページングレジスタはメモリを64K(64* 1024)バイトのページ、256ページのRAMとして形成し、64Kページ 各々がページングレジスタにより参照される。この発明の好ましい実施例におい ては、レジスタファイルにより設けられる3つの論理16ビットレジスタ各々に 対し1つずつ3つのページングレジスタがある。 この発明のレジスタファイルは、レジスタファイルに含まれる論理の伝搬遅延 に等しい遅延を持つレジスタのアクセスを特徴とする。このような組合せ遅延は クロック周期よりもはるかに短いため、レジスタアクセスは1クロックサイクル 内に余裕を持って行われる。この発明はさらに、すべての演算各々を単一のクロ ック周期内に行なうことができる汎用算術論理演算装置(ALU)を特徴とする 。この発明は、したがって、実質的にすべてのALU演算を単一クロックサイク ル内に行なうことができる。 さらにこの発明により、レジスタファイル内のレジスタは、RAMのアドレス スペースの一部分を占める。この特徴によって、通常RAMアクセスと関連付け られる従来のアドレス指定モードが可能となり、レジスタが通常のメモリロケー ションであるかのようにレジスタにアクセスすることができる。さらに、このよ うなメモリロケーションはマイクロコントローラに対して高速メモリに見えるで あろう。 レジスタファイルのレジスタ内の任意のビット位置へおよびビット位置からの 1ビットのデータの転送をビットストアが可能にする。好ましい実施例において は、ビットストアは状態レジスタ内に位置付けられる。このビット転送特徴によ り、これ以外の場合には時間のかかる数多くのレジスタシフト動作を行なう必要 なくレジスタのビット位置を直接操作することができる。多くのマイクロコント ローラ応用例において典型的であるように、1バイトのデータに含まれる個別の ビットは他のビットとは独立した意義を有する。従来の技術のマイクロコントロ ーラの命令セットは典型的にはレジスタの左シフトおよび右シフトのためのシフ ト命令を含む。したがってレジスタの所定のビット位置のビットへのアクセスは 、ビットを右または左のいずれかにシフトさせることにより達成される。これは 、 原データの保存が必要ならばレジスタの内容をセーブすることが必要となる、破 壊動作である。加えて、この動作は、時間がかかり、実現するためにはいくつか のプログラム命令が必要である。この発明のビット転送動作は、任意のビット位 置にアクセスするための、より時間効率がよく、使うスペースが少ない手段を提 供する。 桁上げ比較命令は、レジスタファイルに含まれる8ビットレジスタを16ビッ トにエンハンスする。命令セットのこの特徴は、8ビット環境において16ビッ トの量の比較を実現するための効率的な方法を提供し、それによってさらにこの 発明の8ビットマイクロコントローラの計算能力を高める。 図面の簡単な説明 図1は、この発明のマイクロコントローラの概略レイアウト図である。 図2は、図1に示すレジスタファイルの内部の図である。 図3は、図2に示すレジスタファイル内のレジスタの構成を示す図である。 図4は、図3に示すレジスタ書込可能化回路の詳細な図である。 図5Aおよび図5Bは、図4において使用されるORゲート構造を示す図であ る。 図6は、図1に示す状態レジスタの内部構成を示す図である。 図7は、図1に示す汎用ALUの内部構成を示す図である。 図8Aおよび図8Bは、図7の汎用ALU内に含まれる2つのALUサブユニ ットを示す図である。 図9はプログラムカウンタを示す図である。 図10は、この発明によるページングレジスタを使用しての24ビット論理ア ドレスの形成を示す図である。 図11は、ウォッチドッグ・タイマ回路を示す図である。 図12は、図10に示すページングレジスタを組入れた図1のマイクロコント ローラの図である。 図13は、N個の入力を持つ可能化ANDゲートの図である。 発明を実施するためのベストモード 図1を参照し、この発明のマイクロコントローラ10が8ビットデータバス1 2構造のまわりに設計される。データバスは、マイクロコントローラに含まれる さまざまな構成要素に対しデータ経路を提供する。オンボードRAMは汎用デー タストアとして役立つ。RAMとは別個の8ビットレジスタファイル(REGISTER FILE)20がマイクロコントローラ用の高速8ビットメモリストアの組を提供 する。 レジスタ内にストアされるデータに対して算術計算を行なうために、汎用算術 論理演算装置ALU−1 22がレジスタファイルに結合される。ALU−1の 出力は8ビットデータバス12および状態レジスタ(STATUS REGISTER)24の 両方に結合される。状態レジスタに含まれるさまざまな状態ビットは、ALU− 1の結果に応じてセットされる。 以下に説明するように、状態レジスタ24内に含まれるビットは、割込許可フ ラグ、ビット転送フラグ、ハーフ・キャリーフラグ、2の補数のオーバフローフ ラグ、負フラグ、負フラグと2の補数のフラグとの排他的論理和に等しい符号ビ ット、ゼロフラグ、およびキャリーフラグを含む。状態レジスタは、状態ビット への読出/書込アクセスを可能にするよう、データバス12に結合される。デー タバス12に結合される付加的な構成要素は、サブルーチンの呼出/リターンお よび割込処理のために使用されるスタックポインタ(STACK POINTER)、タイマ 、割込回路、タイミングおよび制御回路、EEPROM、およびUARTを含む 。ポートドライバ(PORT DRIVERS)により駆動されるI/Oデータレジスタ(I/ O DATA REGISTERS)は、マイクロコントローラに対するI/O経路19を提供す る。 直接アドレスバス16は、プログラムの実行中にRAMロケーションおよびレ ジスタファイルへの直接アクセスを提供する。間接アドレスバス14は間接アド レス指定を行なう。間接アドレスバス14はレジスタファイルからアドレスを受 取るための手段、すなわち、アドレスをRAMまたはプログラムカウンタ(PROG RAM COUNTER)28に伝送するためレジスタファイルを間接アドレスバス14に 結合するバスインターフェイス14’を含む。 マイクロコントローラ10の命令実行構成要素は、プログラムメモリ (PROGRAM MEMORY)に結合されるプログラムカウンタ28を含む。好ましい実施 例においては、プログラムメモリは、プログラマブル・フラッシュ・メモリであ る。プログラムカウンタにより指定されたプログラム命令はプログラムメモリか らフェッチされ命令レジスタ(INSTRUCTION REGISTER)に与えられる。命令レジ スタから、プログラム命令が命令デコーダ(INSTRUCTION DECODER)によりデコ ードされさまざまな制御信号が発生される。制御信号は、制御ライン(CONTROL LINE)によってマイクロコントローラ10の他の構成要素へ運ばれ、デコードさ れたプログラム命令によって動作が行なわれる。命令実行構成要素を結合するバ スは集合的にプログラムバスと呼ばれる。データストアとは別個のプログラムメ モリストアの配置およびデータバス12とは別個のプログラムバスの使用は、一 般にハーバードアーキテクチャと呼ばれる。 前述のように、レジスタファイルは複数の8ビットレジスタからなる。この発 明の好ましい実施例においては、32個の8ビットレジスタがある。しかし、レ ジスタファイル内のレジスタがより多くてもまたはより少なくてもマイクロコン トローラが同様に良好に動作するであろうということが指摘される。汎用算術論 理演算装置ALU−1は8ビットの演算子であり、レジスタファイルから選択さ れたレジスタの間で8ビットの算術演算を行なう。ALU−1の出力はレジスタ ファイル内のレジスタへとデータバス12を介して送り返され得る。以下にさら に詳細に説明するように、8ビットレジスタのいくつかは対にして組合されるこ とができ、それによって論理16ビットレジスタが提供される。好ましい実施例 においては、図1に示すように、3対の8ビットレジスタが3つの論理16ビッ トレジスタX、Y、Zを提供する。 図2を参照し、この発明のレジスタファイルは、32個の8ビットレジスタR 0からR31を備えるレジスタ回路100を含む。レジスタファイルは、3つの 出力A、B、Cと、3つの入力D_BUS、D_ALU2H、D_ALU2Lと を含む。以下に説明するように、レジスタ回路100は最後の6つのレジスタR 26からR31を3対の論理16ビットレジスタR27/R26(X)、R29 /R28(Y)、R31/R30(Z)として準備できる。2つの16ラインデ ータバス102および104からなる共通バスインターフェイスは、それぞれ1 6ビットレジスタに対しデータ入力バスおよびデータ出力バスを提供する。 データ出力バス104は、B出力およびA出力を含み、B出力は16ビット値 の上位バイトを提供し、A出力は16ビット値の下位バイトを提供する。データ 入力バス102はレジスタファイルへの、D_ALU2L(下位バイト)入力お よびD_ALU2H(上位バイト)入力に分かれる。 レジスタファイルの備える16ビットレジスタはRAMおよびプログラムスペ ースのアドレス指定のための間接アドレスレジスタポインタとして使用される。 メモリアクセスを容易にするため、アドレス計算用にポストインクリメントおよ びプリデクリメントなどの所定の16ビット算術演算が行なわれる。16ビット レジスタに対して16ビットの算術を行なうためにALU−1を使用することも 可能であるが、このような動作はALU−1が8ビット設計であるためかなり非 効率的であろう。 したがって、図2に示すレジスタファイルは、論理16ビットレジスタにかか わる16ビット計算を容易にするためレジスタファイルに専用される第2の算術 論理演算装置ALU−2を含む。算術論理演算装置ALU−2は16ビット設計 であり、間接アドレスポインタに典型的に必要とされる特定の演算を行なうよう カストマイズされる。ALU−2は、レジスタファイルのデータ出力バス104 により与えられる第1の入力を有する。ALU−2はセレクタ110により与え られる第2の入力を有する。セレクタ110は、3つの選択肢の中から1つの数 値を選択する。すなわち、数値−1、数値+1および定数K_INである。AL U−2の出力はデータ入力バス102を通じてX、Y、Zレジスタへと送り返さ れ、レジスタの内容の更新が可能にされる。mux114はレジスタファイルの バスインターフェイス14’に結合される。mux114の1入力はALU−2 の出力に結合され、一方、muxの第2の入力はデータ出力バス104に結合さ れる。この構成によって、mux114は、ALU−2またはレジスタ回路10 0のいずれかから選択的にデータを出力することができる。 以下に挙げる制御信号は、上に説明したレジスタファイルの特徴である動作に 関係する。これらの信号は、V_SEL、ALU2_OP、およびADDR_S ELを含む。これらの信号は、命令デコーダ(INSTRUCTION DECODER)から発す るさまざまな制御ライン(CONTROL LINE)により運ばれる。これらの制御信号に 関してのレジスタファイルの動作を、この発明のマイクロコントローラのプログ ラム命令に関して以下に説明する。 図2に示すレジスタ回路100の内部構成を図3の論理図に示す。この発明の 一実施例において、32個のレジスタR0〜R31が設けられ、その各々が8ビ ットの出力ライン121の組と8ビットの入力ライン123の組とを有する。実 際に設けられるレジスタの数はこの発明の本質部分ではない。 各レジスタは、図3の各フリップフロップ内の「x8」の参照によって示され るように、8つのD型フリップフロップのバンクを含む。レジスタの出力ライン 121は、レジスタに含まれる8つのフリップフロップの各々の出力Qを含む。 同様に、レジスタの入力ライン123は、レジスタに含まれる8つのフリップフ ロップの各々の入力Dを含む。 図3に示すように、偶数番号のレジスタR0、R2、・・・R30は、8ビット 4:1mux130の出力に結合される共通入力を有する。同様の態様で、奇数 番号のレジスタR1、R3、・・・R31は、偶数番号のレジスタからは分離され 8ビット4:1mux132の出力に結合される共通入力を有する。4:1mu x130は、4つの8ビット入力D_BUS、K_IN、D_BUS[n]、お よびD_ALU2Lのうち1つを選択し、偶数番号のレジスタへの入力とする。 4:1mux132は、4つの8ビット入力のうち1つを選択し、奇数番号のレ ジスタへの入力とする。セレクタD_SELは、両方のmuxに結合され、mu x130および132の各々の第1、第2、第3または第4の入力のいずれかを 選択する。mux130の第1の入力D_BUSは、8ビットデータバスからと られる。mux130の第2の入力K_INは、この発明のマイクロコントロー ラの命令セットの説明に関連して以下に説明するように、所定の命令のオペラン ドから導出される8ビットの定数である。mux130の第4の入力D_ALU 2Lは、ALU−2(図2)の16ビット出力の下位バイトである。mux13 0へのD_BUS[n]入力は、データバス12からのビットラインの1つを指 す。このビットラインnは、mux130への第3の8ビット入力として8回複 製される。D_BUS[n]入力は、以下に説明するBLD命令とともに使用さ れる。 mux130の出力は、mux132の第1の入力、第2の入力および第3の 入力として複製される。mux132の第4の入力D_ALU2Hは、ALU− 2の16ビット出力の上位バイトである。したがって、D_SELがmuxの第 1の入力、第2の入力または第3の入力を選択するとき、偶数番号のレジスタお よび奇数番号のレジスタには同じ入力、すなわち、D_BUS、K_IN、また はD_BUS[n]が与えられる。D_SELが第4のmux入力を選択すると き、偶数番号のレジスタの入力にはD_ALU2Lが与えられ、奇数番号のレジ スタの入力はD_ALU2H入力が与えられる。D_ALU2L入力およびD_ ALU2H入力の意義は、Xレジスタ、YレジスタおよびZレジスタに関する説 明において明らかとなるであろう。 各レジスタR0〜R31に対応する8つのフリップフロップのバンクには、D リードに入力を与えフリップフロップのクロックラインCKをアサートすること によって、書込が行なわれる。この発明のレジスタアーキテクチャの利点は、レ ジスタへの書込の柔軟性である。動作モードに依存して、16ビットデータを、 1ワードのデータとしてレジスタ対に書込むこともでき、8ビットデータを1バ イトのデータとしてレジスタに書込むこともでき、または、レジスタの特定のビ ットを1ビットのデータとして書込むこともできよう。この柔軟性は、正しいレ ジスタおよびビットが書込まれるよう、適切なCK信号をアサートするセレクタ 制御回路134により与えられる。R_SEL制御ラインおよびWE_R制御ラ インは協働して選択されたレジスタに対応する8つのフリッブフロップに書込を 行なう。WE_XH、WE_XL、WE_YH、WE_YL、WE_ZHおよび WE_ZLの制御ラインは、16ビットのX、YおよびZレジスタへの書込を可 能化する。R_SEL、BIT_SELおよびWE_BIT制御ラインは、協働 して、選択されたレジスタの選択されたビットへビットを書込む。 レジスタの内容は、mux120、122および124を通じて与えられ、こ れらのmuxの出力が、それぞれ図2に示すA、BおよびC出力である。これら の出力muxは各々、8ビット32:1muxであり、32個の8ビット入力の うち1つを選択する。32個のレジスタの各々の出力は、mux120、122 および124の各々の対応する入力に結合される。制御ラインR_OUTA、R _OUTB、R_OUTCはmuxを動作させ、所望のレジスタの内容を出力さ せる。 mux120の8ビット出力は、8:1mux136へ与えられ、8:1mu x136においてBIT_SEL制御ラインが8ビットのうち1つを選択するた め役立つ。mux136の出力は、選択されたビットがクリアされているかまた はセットされているかをテストするようBTST_CLR制御ラインおよびBT ST_SET制御ラインにより動作されるビットテスト回路138に結合される 。ビットテスト回路の出力がBR_SKP制御ラインを駆動する。 この発明により、マイクロコントローラは、説明した8ビットレジスタに加え て、論理16ビットレジスタを備える。これは、レジスタファイル内のレジスタ の対を取出しそれらを単一のレジスタとして取扱うことによって達成される。こ の態様で、3つの16ビットレジスタX、Y、Zが提供される。Xレジスタは、 レジスタ対R27/R26からなり、Yレジスタはレジスタ対R29/R28か らなり、ZレジスタはR31/R30レジスタ対からなる。 次に図3のセレクタ制御回路134をさらに詳細に示す図4を参照する。デコ ーダユニット140は、デコーディングR_SELに応答して32個の出力の任 意の1つをアサートする1:32デコーダである。デコーダの出力ライン各々は 、レジスタに対応する。出力は、2つの可能化ANDゲート142および144 に与えられる。図13に、1ビット可能化入力A、Nビット入力BおよびNビッ ト出力を有する可能化ANDゲート50の構造の詳細を示す。図13の拡大詳細 図は、このようなゲートがN個の2入力ANDゲートを含むことを示す。N個の ANDゲートの各々の第1の入力は、可能化入力Aを受取り、ANDゲートの第 2の入力はB入力のNビットのうち1つを受取る。したがって、可能化入力Aが アサートされているならば、ゲート50はB入力を出力へと通らせる。可能化入 力Aがアサートされていない場合は、可能化ANDゲート50のすべてのN個の 出力がLOWである。再び図4を参照し、可能化ゲート142は、WE_Rによ り可能化され、可能化ゲート144はWE_BITにより可能化される。 さらに、可能化ゲート142の32出力の各々が、合成ORゲート150〜1 81の入力に結合される。可能化ゲート144の32出力の各々が1:8mux M0〜M31に結合される。各muxM0〜M31の8出力は、合成ORゲート 150〜181の他入力に結合される。各合成ORゲートは、レジスタR0〜R 31に関連付けられる。図5Aは、合成ORゲート150の構成を示す。合成O Rゲート150は、8つの別個の2入力ORゲート150A〜150Hからなる 。1ビット入力ライン190が、可能化ゲート142の出力から始まりORゲー ト150A〜150Hの各々の第1の入力に結合される。8ビット入力ライン1 91はmuxM0の出力から始まる。入力ライン191の各々は、ORゲートの 第2の入力に結合される。図からわかるように、ORゲートは各々、レジスタR 0のフリップフロップの1つのCKライン(CKO〜CK7)に結合される。こ の構成が、合成ORゲート150〜175に適用される。 再び図4を参照し、いくつかの合成ORゲート、すなわちゲート176〜18 1が第3の入力を有する。この第3の入力は、X、Y、Zレジスタの書込に関連 するWE_XL、WE_XH、WE_YL、WE_YH、WE_ZLおよびWE _ZH制御ラインの1つからくる。合成ORゲート176の詳細を示す図5Bか らわかるように、付加的な1ビット制御ライン194が、ORゲート176A〜 176Hの各々の第3の入力に結合される。この構成が合成ORゲート176〜 181に適用される。 上述のように、R_SEL制御ラインおよびWE_R制御ラインは協働して、 8ビットデータを選択されるレジスタに書込む。これは、データをレジスタに対 応するフリップフロップへクロックすることによって達成される。たとえば、デ ータをレジスタR0に書込む場合を考える。5ビット制御ラインR_SELが選 択レジスタROにセットされる。デコーダ140がラインをデコードし、それに よって、可能化ゲート142を通じてORゲート150の入力ライン190へ結 合されるレジスタROに対応する出力ラインをアサートする。図5Aに示すよう に、入力ライン190はレジスタROのフリップフロップすべてを同時にクロッ クし、それによって、フリップフロップ(図3)のD入力に現われるデータを入 力する。 R_SEL、WE_BITおよびBIT_SEL制御ラインを説明する前に、 状態レジスタ24の説明について図6を参照する。状態レジスタは、8つのフリ ップフロップを含み、フリップフロップ各々がこの発明において使用される状態 ビットの各々に対応する。すなわち、割込許可フラグI、ビット転送フラグT、 ハーフ・キャリーフラグH、2の補数のオーバフローフラグV、負フラグN、負 フラグと2の補数のフラグとの排他的論理和に等しい符号ビットS、ゼロフラグ ZおよびキャリーフラグCである。Iフリップフロップへの入力は直接F_SE T制御ラインに結合される。Tフリップフロップへの入力は、ORゲートを通じ てF_SET制御ラインおよびANDゲート228の出力に結合される。残りの フリップフロップへの入力は、それぞれのORゲートを通じてF_SET制御ラ インおよび可能化ANDゲート230(図13)の8出力に結合される。 8:1mux202は、状態レジスタフラグすべての出力を受け、F_OUT 制御ラインの設定によってフラグのうち選択される1つを出力する。mux20 2の出力は、ビットテスト手段208へ与えられ、BR_SKP制御信号を生成 する。mux202の出力はまた、ANDゲート218にも与えられ、ANDゲ ートの出力はデータバスD_BUS[n]のビットNに結合される。さらに、H 、S、V、N、ZおよびCフラグが以下に説明する汎用ALU22へ与えられる 。 各フリップフロップは、対応するフリップフロップを単にリセットするだけで 特定のフラグをクリアすることを実質的に可能とするリセットRを含む。各リセ ットは、可能化ANDゲート224の8出力の1つに結合される。可能化AND ゲート224は、T_SEL制御ラインにより可能化される。 Iフリップフロップのクロック入力は、可能化ANDゲート226の出力に結 合される。Tフリップフロップのクロック入力は、ORゲートを通じて可能化ゲ ート226およびT_SEL制御ラインに結合される。残りのフリップフロップ は、それぞれのORゲートを通じて可能化ゲート226およびF_SETALU 制御ラインに結合される。 mux210は、8ビットバスから入力D_BUSを受ける。BIT_SEL 制御ラインは、8ビットのうち1つをANDゲート228に出力し、ANDゲー トの出力はTフリップフロップへ与えられる。T_SEL制御ラインは、AND ゲート228への可能化入力として役立つ。 可能化ANDゲート230は汎用ALU22から入力を受け、F_SETAL U制御ラインにより可能化される。この要素は、ALUの動作の間にALUから 受けた状態フラグを更新するため役立つ。これについてはALU22の説明に関 連しさらに説明する。 デコーダ204、206は各々、F_SEL制御ラインをデコードし、その8 出力のうち1つをアサートし、この出力がそれぞれ可能化ANDゲート224お よび226に与えられる。F_CLR制御ラインはゲート224を可能化する。 F_SET制御ラインはゲート226を可能化する。 ビットテスト手段208は、ORゲート216へ出力を与える1対のANDゲ ート212および214を含む。ゲート214は、mux202に結合される反 転入力を有する。ゲート214への他入力は、FTST_CLR制御ラインに結 合される。ゲート212への入力はmux202の出力とFTST_SET制御 ラインとである。 mux202の出力はまた、T_OUT制御ラインにより可能化されるAND ゲート218に結合される。ANDゲート218の出力は、8ビットデータバス のビットラインnに結合されるよう図示される。 この発明の8ビットマイクロコントローラの他の特徴について説明する。レジ スタの任意のビット位置にロードまたはストアを行なうための従来の技術におい ては、レジスタシフト動作および/またはレジスタマスキング動作が必要となり 、コードの効率が下がりコードサイズが増加することを説明した。さらに、これ は破壊動作であって、もし元のデータの保存が必要であればレジスタの内容をセ ーブせねばならない。 図3〜6に示すR_SEL、WE_BITおよびBIT_SEL制御ラインを 考える。これらの制御ラインはレジスタ回路100(図3)を動作させ、選択さ れるレジスタの特定のビット位置に単一のビットを書込ませる。書込まれるビッ トは、状態レジスタ24から獲得され、D_BUS[n]を通じて与えられる。 この動作は、mux202のTフリップフロップの出力を選択するようF_OU T(図6)をセットし、データバスへの出力を駆動するようANDゲート218 を可能化するためT_OUTをアサートすることによって達成される。さらに、 mux130のD_BUS[n]入力を選択するD_SELによって、mux1 30およびmux132の8つの出力ラインの各々においてこのビットが利用可 能となる。このため、書込まれるビットがすべてのレジスタのすべてのフリップ フロップの入力に与えられる(図4)。たとえば、レジスタR26のビット位置 2へビットが書込まれると考える。レジスタR26を選択するようセットされた R_SEL制御ラインがデコーダ140(図4)によりデコードされ、対応する 出力ラインがアサートされる。WE_BIT制御ラインが、レジスタR26に対 応する1:8mux、すなわちmuxM26の入力へデコードされた出力が通る ことができるよう、アサートされる。ビット位置2を選択するようセットされる BIT_SEL制御ラインが、muxM26も含む各muxを動作させ、その1 ビット入力をその8個の出力のうち第2の出力へとゲートで制御して通す。mu xM26の次に、その8つの出力ラインは、図5Bに示す合成ORゲート176 の入力193として役立つ。入力193の各ライン[0−7]は、ORゲート1 76A〜176Hから特定のフリップフロップへと通される。しかし、1つのラ イン、この場合はライン[1]のみがアサートされるので、選択されるレジスタ のフリップフロップのうち1つだけがビットを受けるようクロックされる。 次に、図7に示すこの発明の汎用ALU22について説明する。ALU22は 、各々が特定の演算を行なうことができる、複数の演算サブユニットOP1〜O Pnを含む。汎用ALUにより行なわれる典型的な演算は、加算、論理演算およ びシフト演算を含み、各々別個のサブユニットにより行なわれる。ALUへの入 力、すなわちA、B、K_INおよび状態レジスタ24からのフラグは、サブユ ニットの各々に与えられる。サブユニットは、それらに対応する演算を同時に行 ない、8ビットの結果22Cおよび6ビットの状態結果22Dを生成する。この パラレルアーキテクチャにより、シリアルでの実現に比べ実行時間が速くなり、 どのようなALU演算でも単一のクロックサイクル内で行なうことができる。 次に、サブユニットの結果22Cがセレクタ22Aに与えられる。セレクタは 、演算サブユニットの1つの結果をデータバス12へと出力するよう、ALU1 _OPにより制御される。状態結果22Dは同様の態様で処理され、各々ALU 1_OPにより制御されるセレクタ22Bへ与えられ、それによって、状態レジ ス タ24は、選択される演算に対応する状態結果を受ける。 ALU22はまた、XORゲート23および9入力ANDゲート24を含む。 XORは、A入力およびB入力の8ビットの各々の間でビットごとにXOR演算 を行なう。XOR演算の8つの結果は、ANDゲートの8つの反転入力に与えら れる。A=Bのときは、XOR演算の8つの結果すべてが論理「0」となるであ ろう。この場合、CPSE制御ラインがアサートされるとき、ANDゲートが論 理「1」を出力することとなりBR_SKP制御ラインがアサートされる。 上述のように、サブユニットOPnは各々、特定の算術または論理演算を行な い、A、Bおよび/またはK_IN入力に演算を行ない、結果22Cを与え、適 切な状態フラグを更新する。図8Aおよび図8Bは2つの典型的な演算サブユニ ットを示す。図8Aは、A入力とK_INを通じて与えられる即時定数との論理 ANDを実現する。図8BはA入力の論理左シフトを実現する。 プログラムのシーケンス化の説明のため次に図9を参照する。命令が、プログ ラムメモリ25からフェッチされ、命令レジスタ21にロードされる。命令デコ ード23は、フェッチされた命令をデコードし、命令を実行するためマイクロコ ントローラの他の部分へ制御ラインによって送られる制御信号を生成するための 論理を含む。命令デコーダは、サブルーチン命令および割込に応答してスタック ポインタをインクリメントまたはデクリメントするためSP_INCおよびSP _DECをアサートする。 同時に、命令デコーダ23は、また、次の命令をフェッチするためプログラム カウンタ28を「インクリメント」するための信号を生成する。これらの信号は 、=q、−q、+q、+3、+2および+1を含む。「=q」は、絶対アドレス qへの分岐を指定する命令のために使用される。「+q」および「−q」信号は 、qの量の前向きおよび後向きの相対的分岐を指定する命令のために使用される 。いずれの場合にも、量qが命令内に含まれる。「+3」信号および「+2」信 号はスキップ命令のために使用されるが、スキップするメモリロケーションの数 は、スキップされている命令のサイズに依存する。「+1」信号は単にプログラ ムカウンタを次の命令にインクリメントする。さらに、プログラムカウンタは、 次の命令のアドレスのソースとしてX、YまたはZレジスタの1つを利用する命 令の ために、レジスタファイル20から入力を受ける。プログラムカウンタはまた、 次の命令のアドレスの他のソースとしてRAM27からの入力を受け、RAM内 のロケーションは、X、YおよびZレジスタの1つまたはスタックポインタ26 により指定される。 典型的には、命令デコーダは「+1」信号を発行し、現在の命令が実行されて いる間に、プログラムカウンタ28およびプログラムフラッシュにまさに次の命 令をプリフェッチさせる。しかし、BR_SKP制御ラインがアサートされてい るときは、プログラムカウンタ28および命令レジスタ21は、プリフェッチさ れた命令を廃棄させられ、新しいアドレスを計算し、新しい命令をフェッチし、 新しいアドレスは命令に依存する。特定の分岐命令の説明に関連してさらに詳細 を説明する。 この発明の8ビットマイクロコントローラの他の特徴は、図10に示すような エンハンスされたアドレス指定能力である。レジスタファイルの外部にある付加 的な3つのレジスタ、すなわち、RAMページングレジスタRAMPX、RAM PY、RAMPZが図示される。RAMページングレジスタは、先行技術の8ビ ットマイクロコントローラと比較してアドレス指定範囲を著しく増加させるよう 、対応する論理16ビットレジスタX、Y、Zと関連して動作する。開示される 実施例においては、RAMページングレジスタは8ビットレジスタである。しか し、これは絶対ではなく、異なったビット長を有するレジスタでもこの発明が容 易に機能し得ることは明らかとなるであろう。 図10を参照し、どのようにアドレスが形成されるかの概略を示す。各RAM ページングレジスタは、対応する16ビットレジスタと連結される。たとえば、 RAMページングレジスタRAMPXの8ビットは、Xレジスタの16ビットと 連結され、24ビットアドレスを形成する。好ましい実施例においては、RAM PXの8ビットが24ビット論理アドレスの上位ビットX[23・・・16]とし て働き、一方、Xレジスタの16ビットが24ビット論理アドレスの下位ビット X[15・・・0]となる。この編成によって作られるメモリモデルは、64Kバ イト(64*1024)のページの組であり、64Kページは各々8ビットRA Mページングレジスタによりアクセスされ、全部で256ページである。 次に図12を参照し、この発明の開示される実施例の文脈におけるRAMペー ジングレジスタの実施例を説明する。RAMページングレジスタRAMPX、R AMPY、RAMPZは各々、8ビットデータバス12に結合され、プログラム 実行中8ビットページ参照を受ける。セレクタ11(たとえば3:1マルチプレ クサ)は、RAMページングレジスタの各々から8ビットを受け、RAMページ ングレジスタのうち選択された1つの8ビットをセレクタの出力に転送する。レ ジスタファイル20のバスインターフェイス14’の16ビットは、セレクタ1 1からの8ビットと連結され、24ビットアドレスを形成し、この24ビットア ドレスは間接アドレスバス14により搬送される。 この発明の拡張された24ビットアドレス指定により、24ビットアドレスは RAMの16M(16*1024*1024)をアドレス指定することができる ので、外部に設けられたRAM(図示せず)を使用することが可能である。マイ クロコントローラと外部RAM(図示せず)との間のデータアクセスのため、外 部24ビットアドレスバス17と8ビットデータバス15とが含まれる。この発 明により、レジスタファイル20、I/Oデータレジスタ(I/Oスペース)、 オンボードRAMおよび外部RAMは、同一のデータアドレススペースを占める 。レジスタファイルは第1の32アドレスロケーションを占め、次にI/Oスペ ースおよびN個のアドレスロケーションを占めるオンボードRAMに割り当てら れるアドレスがあり、NはRAMのサイズである。残りのアドレススペースは外 部RAMによって与えられる。したがって、アドレス範囲00から(N−1)は 、オンボードメモリ(レジスタファイル、I/Oスペース、およびRAM)のメ モリロケーションをマッピングし、一方、残りのアドレス範囲Nから(16M− 1)は、外部RAM内のメモリロケーションをマッピングする。たとえば、もし オンボードメモリが全部で64Kバイトであれば、オンボードアドレス範囲は、 $00から$FFFF(「$」は16進表現を意味する)となり、一方、外部R AMのアドレス範囲は$10000から$FFFFFFとなる。オンボードメモ リの量は、この発明の利便性または操作性に影響することなく変更でき、実際の メモリの量は利用可能なシリコン面積、装置のジオメトリおよびデザインルール などの設計上の基準に依存することが留意される。 オンボードメモリおよび外部RAMが、所定のアドレスについて確実に正しく アクセスされるようにするため、内部アドレスバス14または外部アドレスバス 17のいずれかへアドレスを転送するため第2のセレクタ13が使用される。好 ましい実施例においては、セレクタ13は、単一のMUX入力が2つの出力のう ち1つへと転送される1:2muxである。ここで、単一の入力とは、セレクタ 11から出る24ビットアドレスラインである。セレクタ13の1出力はアドレ スバス14に結合され、他出力は外部アドレスバス17に結合される。オンボー ドメモリのアドレス範囲内のアドレスを検出すると、セレクタ13はその入力を アドレスバス14に転送させられる。24ビットアドレスのうち下位の16ビッ ト[15・・・0]のみがアドレスバス14に転送される。逆に、外部メモリのア ドレス範囲内のアドレスを検出すると、セレクタ13はその入力を外部アドレス バス17へ転送する。いくつかの検出方式のうち任意のものを使用することがで き、そのいずれも通常の技量を有する設計者の能力の範囲内にある。たとえば、 24ビットアドレスの上位8ビット(ビット[23・・・0])を合せて論理和を とり、その結果を使用してセレクタ13を制御してもよい。もし、論理和演算の 結果がFALSEであれば、そのアドレスがオンボードメモリのアドレス範囲内 にあることを意味し、その場合、セレクタ13はその入力を内部アドレスバス1 4へ転送せねばならない。もし、論理和演算の結果がTRUEであれば、アドレ スが完全な24ビットアドレスであることを意味し、その場合、セレクタ13は その入力を外部アドレスバス17へ転送せねばならない。 この発明の8ビットマイクロコントローラの特徴に関するハードウェアの詳細 を説明したが、次にマイクロコントローラの命令セットの説明をする。 表1は、命令セットを実現するためマイクロコントローラを制御する制御ライ ンの概要である。 表1:制御ライン 表2はデータラインの概要である。 表2:データライン 表3は、算術および論理演算の概要であり、特定の演算が制御ラインALU1 _OPにより選択される。いくつかの命令は2つのレジスタAおよびBに対して 動作する。他の命令は、レジスタおよび定数値k(すなわち「即時」データ)に 対して動作する。 表3:ALU−1演算(ALUI OP:n) 表4は専用ALU−2の算術演算の概要である。 表4:ALU−2演算(ALU2 OP) この発明におけるほとんどの命令は、単一のクロックサイクル中に行なわれる 。各レジスタの内容は、それらに対応するフリップフロップ(図3)の出力にお いて常に利用可能である。したがって、選択されたレジスタの内容はほぼ即時に m ux120、122および124の出力において利用可能であり、muxに含ま れる組合せ回路の伝搬遅延に等しい遅延しか要しない。この時間期間を通常「組 合せ遅延」と呼ぶ。 1つのクロックサイクルの間に以下の算術および論理命令が実行される。すな わち、ADD、ADC、SUB、SUBI、SBC、SBCI、AND、AND I、OR、ORI、EOR、COM、NEG、SBR、CBR、INC、DEC 、TST、CLR、SER、LSL、LSR、ROL、ROR、ASR、SWA P、CP、CPC、CPIである。図2からわかるように、A入力およびB入力 は、命令がフェッチされデコードされたほぼ直後に汎用ALU22に対して利用 可能となる。R_OUTA制御ラインは、レジスタの内容を選択し、ALU22 の2つの入力の一方に出力する。R_OUTBは同様に、もし命令が第2のレジ スタオペランドを指定するならばアサートされる。代替的に、K_IN制御ライ ンが、即時データを使用する命令に対してはALUへの2進入力として役立つ。 一方、ALU(図7)のサブユニットOPnは、それぞれの演算を行ない、AL Uへの入力が準備されるとすぐに、若干の組合せ遅延後に結果が利用可能となる 。命令に対応するサブユニットの結果22Cは、ALU1_OP制御ラインを通 じて選択され、データバス12へ置かれる。同時に、D_SEL制御ライン(図 3)がmux130および132を動作させ、データバス入力D_BUSを選択 させる。R_SEL(およびWE_R)制御ラインは、結果がストアされるレジ スタを選択し、「組合せ遅延」後に、結果がレジスタへとクロックされる。同時 に、ALUによりセットされた状態フラグが、F_SETALUのアサートによ って状態レジスタ(図6)へクロックされる。 乗算命令MULは、2つの8ビットレジスタの乗算を行ない、16ビットの結 果をR0/R1レジスタ対にストアする。他のALU命令とは異なり、MUL命 令には2クロックサイクルかかる。各1サイクルが、16ビットの積の半分をレ ジスタ対のレジスタの片方にストアするため使われる。 MOV命令は、レジスタの間でのデータ転送を1クロックサイクル中に行なう 。MOV命令は、ソースレジスタおよび行先レジスタを指定する。図2、3およ び図4を参照し、R_OUTC制御ラインは、mux124を動作させ、指定さ れ たソースレジスタの内容をデータバス12へと駆動する。同時に、D_SEL制 御ラインは、mux130および132を動作させ、レジスタの入力Dに現われ るようD_BUSを出力させる。そしてR_SELおよびWE_R制御ラインは 、行先レジスタにクロックするよう、セレクタ制御回路134を動作させ、それ によって、D_BUSにより与えられる内容をストアする。 LDI命令は、指定されたデータがレジスタにロードされるのを可能にする。 データは、LDI命令の機械演算コードにおいて指定され、mux130のK_ IN入力として現われる。D_SEL制御ラインは、K_INを出力するようm ux130および132を動作させ、一方、R_SELおよびWE_R制御ライ ンは、指定されたレジスタにクロックするよう、セレクタ制御回路134を動作 させる。 16ビットX、Y、Zレジスタにおける演算は、X、Y、Zレジスタによりア ドレス指定されるメモリロケーションから指定されたレジスタへデータを転送す るためのLD命令、および、指定されたレジスタからX、Y、Zレジスタにより アドレス指定されるメモリロケーションにデータを転送するためのST命令を含 む。LD命令およびST命令には、実行のため2クロックサイクルかかる。図2 および図3を参照し、第1のクロックサイクルの間に、R_OUTA制御ライン およびR_OUTB制御ラインが、所望の16ビットレジスタのレジスタ対(X :R27/R26、Y:R29/R28、Z:R31/R30)を選択する。A DDR_SEL制御ラインは、B:A出力を間接アドレスバス14へ送るようセ レクタ114を動作させる。さらに、ST命令の場合には、R_OUTC制御ラ インが、そこからデータを読出すべきレジスタを選択し、データをバス12へ置 く。第2のクロックサイクルの間、メモリからバス12へとデータをロードする ため(LD)またはデータをメモリに書込むため(ST)のいずれかのためメモ リがストローブされる。さらに、LD命令の場合には、R_SEL制御ラインお よびWE_R制御ラインが、指定されたレジスタにD_BUSからデータを書込 むため選択される。 LD命令およびST命令は各々、特定のC言語特徴をサポートするために良く 適した2つのバリアント、すなわち、ポストインクリメント(LD+、ST+) 演算およびプリデクリメント(LD−、ST−)演算を有する。上述のように、 図2に示す専用ALU−2は、このような演算に必要な16ビット算術演算を行 なう。 ポストインクリメント:第1のクロックサイクルにおいて、上に説明したLD 命令およびST命令についてのアクティビティに加えて、V_SEL制御ライン が+1入力を選択し、ALU2_OPが、16ビットアドレスがバス14に置か れた後、付加的な演算を行なうよう専用ALU_2を動作させる。加算102の 結果は、レジスタ回路100のD_ALU2H入力およびD_ALU2L入力に 結合される。図3のD_SEL制御ラインは、D_ALU2Hmux入力および D_ALU2Lmux入力を選択し、D_ALU2HをR27,R29およびR 31へ送り、D_ALU2LをR26、R28およびR30へ送る。次に、デー タを正しいレジスタ対に書込むため、適切なWE_[XYZ]L制御ラインおよ びWE_[XYZ]H制御ラインがアサートされる。 プリデクリメント:第1のクロックサイクルにおいて、上に説明したLD命令 およびST命令についてのアクティビティに加えて、V_SELは、−1入力を 選択し、ALU2_OPがALU−2に加算を行なわさせる。結果は、(i)上 述のようにレジスタ回路にフィードバックされ、(ii)プリデクリメントアドレ スとして使用されるようADDR_SELにより選択される。 LD命令およびST命令は各々、テーブル参照演算を簡素化するための第3の バリアント(LDD、STD)を有する。LDD命令およびSTD命令は、メモ リアクセス前に16ビットアドレスレジスタに加えられる変位値を指定する。第 1のクロックサイクルにおいて、LD命令およびST命令について上に説明した アクティビティに加え、V_SELは、K_IN入力を選択し、ALU2_OP が、ALU−2に加算を行なわさせる。結果は、ADDR_SELにより選択さ れ、変位アドレスとして役立つ。 LD命令およびST命令についての計算を行なうのに加えて、専用ALU−2 は、16ビット加算命令および減算命令、すなわちADIW命令およびSBIW 命令を容易にするため使用される。専用ALU−2は、1クロックサイクルでの X、Y、Zレジスタの計算を可能にするが、これはさもなくば汎用ALU22を 使用しては不可能である。ADIW命令およびSBIW命令は、X、Y、Zレジ スタの1つとそこに加算される定数値とを指定する。動作においては、R_OU TA制御ラインおよびR_OUTB制御ラインが、指定されたレジスタ対を専用 ALU−2への第1の入力として選択する。V_OUTは、K_IN(定数値) をALU−2への第2の入力として選択する。ALU2_OPは、加算演算また は減算演算のいずれかを選択する。結果102は、レジスタ回路100のD_A LU2H入力およびD_ALU2L入力へフィードバックされる。図3に示すD _SEL制御ラインは、D_ALU2HおよびD_ALU2Lmux入力を選択 し、D_ALU2HをR27、R29およびR31へ送り、D_ALU2LをR 26、R28およびR30へ送る。次に、データを所望のレジスタ対に書込むた め、適切なWE_[XYZ]L制御ラインおよびWE_[XYZ]H制御ライン がアサートされる。 マイクロコントローラは、各々1クロックサイクルで実行される、状態レジス タ24のさまざまなフラグをセットしクリアするため命令を与える。これらは、 BSETおよびBCLR、ならびにSExおよびCLxを含み、xはI、T、H 、S、V、N、ZまたはCである。アセンブリ言語レベルでは、SEx命令およ びCLx命令は付加的なオペランドを必要としないが、BSET命令およびBC LR命令は、影響を及ぼすフラグを特定する状態フラグオペランドsを含む。 図6を参照し、制御信号F_SELは、影響を及ぼすフラグを選択するため、 デコーダ204および206を動作させる。フラグクリア命令の場合には、F_ CLR制御ラインは、可能化信号として役立ち、影響されるフラグに対応する可 能化ANDゲート224で出力を与える。出力は、フリップフロップのリセット R入力に結合され、フリップフロップをクリアする。フラグセット命令の場合に は、F_SET制御ラインが2つの目的のため役立つ。第1に、(F_SELに より選択される)状態フラグの1つをセットするために各フリップフロップに入 力を与える。第2に、F_SET制御ラインは、可能化ANDゲート226のた めの可能化信号であり、その出力は入力をクロックインするためにフリップフロ ップクロックラインに結合される。 上述のように、この発明のマイクロコントローラの特徴は、1クロックサイク ルでのBST命令およびBLD命令により与えられる、ビットアクセス能力であ る。BST命令は、状態レジスタのTフラグへコピーされるべきレジスタ内のビ ット位置およびレジスタを指定する。R_OUTC制御ラインは、mux124 によりデータバス12へと駆動されるべき内容を持つレジスタを選択する。同時 に、BIT_SEL制御ラインは、mux210(図6)を動作させ、所望のビ ットをデータバスから選択させ、所望のビットは、T_SEL制御ラインをアサ ートすることによって、Tフリップフロップへロードされる。 BLD命令は、Tフラグ内にストアされるビットを指定されたレジスタの指定 されるビット位置へロードする。F_OUT制御ラインは、Tフラグを選択する ようmux202を動作させ、一方、T_OUT制御ラインは、出力をデータバ スのビットnへと駆動する。同時に、図3を参照し、D_SEL制御ラインは、 mux130および132の第3の入力を選択し、それによって、すべてのレジ スタに入力としてD_BUSNを与える。R_SEL、BIT_SELおよびW E_BIT制御ライン(図4、図5Aおよび図5B)は、所望のレジスタ/ビッ ト位置のフリップフロップをクロックする。 各々変位量を指定する以下の条件付分岐命令が与えられる。 上述の分岐命令に加え、指定されたレジスタの指定されたビットのテストの結 果に基づいて、次の命令をスキップするためのSBRC命令およびSBRS命令 が与えられる。同様にCPSE命令は、2つのレジスタの内容を比較し、比較の 結果に基づいて、次の命令をスキップする、すなわち、もし2つのレジスタの内 容が等しければスキップする。これらの命令は、分岐が行なわれるか否かに依存 して、1クロックサイクルまたは2クロックサイクルで実行される。 図6および図9を参照し、BRxx命令のフェッチに際して、F_OUT制御 ラインは、mux202から所望の状態フラグを出力するため、制御信号を搬送 し、FTST_SETまたはFTST_CLRのいずれかがアサートされ、ビッ トテスト手段208が適切なビットテストを行なう。一方、プログラムカウンタ 28は、インクリメントされており、次の命令がプリフェッチされている。もし ビットテストがフェールであると、プリフェッチされている命令が、次に実行さ れる命令としてとられる(taken)。もし、ビットテストがパスであれば、 BR_SKP制御ラインがアサートされ、プログラムカウンタに、分岐アドレス を形成させ、命令レジスタ25に新しい命令がロードされる。新しい命令のロー ドには第2のクロックサイクルが必要である。 図3を参照し、SBRC命令およびSBRS命令を参照してのBR_SKP制 御信号の生成が図示される。所望のレジスタがmux120によってR_OUT A制御ラインを通じて選択され、mux136の入力に結合される。BIT_S EL制御ラインは、所望のビットを出力するようmux136を動作させ、所望 のビットは次にBTST_CLRまたはBTST_SET制御ラインのいずれか のアサートによってビットテスト手段138においてテストされる。テストの結 果に依存して、BR_SKP制御ラインがアサートされる。 図3および図7を参照し、CPSE命令に関してのBR_SKP制御信号の発 生について説明する。問題となる2つのレジスタの内容が、R_OUTA制御ラ インおよびR_OUTB制御ラインを通じてのmux120および122の動作 によって、汎用ALU22のA入力およびB入力において利用可能となる。XO Rゲート23およびANDゲート24を通じてALU内で「比較」演算が行なわ れる。制御ラインCPSEがANDゲートの出力を可能化するようアサートされ 、A=BのときにBR_SKPがアサートされる。 以下の無条件分岐命令が与えられる。RJMP命令は、相対ジャンプアドレス を生成するためプログラムカウンタに加算される変位値を指定する。IJMP命 令は、Zレジスタの内容をジャンプアドレスとして利用する。JMP命令はプロ グラムカウンタにロードされるジャンプアドレスを指定する。IJMP命令は、 Zレジスタに含まれるレジスタ対R31/R30を選択するため、R_OUTA 制御ラインおよびR_OUTB制御ラインに対して制御信号を生成する。図2か らわかるように、mux114は、ADDR_SELにより動作させられ、Zレ ジスタの内容を間接アドレスバス14へ駆動し、これは次にプログラムカウンタ 28にロードされる。 以下のサブルーチン関連命令が与えられる。CALL命令は、サブルーチンの 開始アドレスであるアドレスを指定する。RCALL命令は、サブルーチンの開 始アドレスを生成するためプログラムカウンタに加算される変位値を指定する。 ICALL命令は、サブルーチンの開始アドレスとしてZレジスタの内容を利用 する。ICALL命令の実行中、レジスタファイル20は、IJMP命令につい て上に説明したのと同様の態様で動作する。サブルーチン呼出命令はまた、リタ ーンアドレスをセーブするよう、スタックポインタとスタック、すなわちスタッ クポインタによりアドレス指定されるRAM内の区域とに動作する。 サブルーチンリターン命令は、単にプログラムカウンタにスタックの一番上の 内容をロードし、それに従ってスタックポインタを更新する標準RET命令を含 む。さらに、割込ハンドラからのリターンのためRETI命令が設けられる。R ETI命令は、RETと同様の態様で動作するが、状態レジスタにIフラグをセ ットするという付加的な作用を伴う。 PUSH命令およびPOP命令は、SP_INC制御ラインおよびSP_DE C制御ラインをアサートし(RAM内の)スタックに書込を行なうかまたはスタ ックから読出を行なうことによって、スタックポインタを動作させる。 レジスタファイルのレジスタのように一連のフリップフロップを含むI/Oポ ートデータレジスタとレジスタとの間でデータバス12を通じてデータを転送す るためにIN命令およびOUT命令が使用される。IN命令は、I/Oポートか らレジスタへデータをロードする。指定されるポートのデータレジスタの内容は 、データバス12へと駆動される。D_SEL制御ラインは、D_BUSを出力 するようmux130および132を動作させる。R_SEL制御ラインおよび WE_R制御ラインは、セレクタ制御回路134を動作させ、所望のレジスタを データにクロックインさせる。逆に、OUT命令は、レジスタからI/Oポート へデータをロードする。データは、R_OUTCをアサートすることにより、指 定されるレジスタからデータバスへとロードされる。選択されたポートのデータ レ ジスタのフリップフロップは、次に、データバス12上に現われるデータにクロ ックインするよう動作させられる。 LPM命令は、プログラムメモリからレジスタROへデータのバイトをロード する。プログラムメモリ内のアドレスは、Zレジスタ内に含まれる。Zレジスタ は、mux120および122でレジスタR31/R30へ出力するようR_O UTAおよびR_OUTBをアサートし、得られた16ビット値(図2)をmu x114を通じてアドレスバス14へと駆動することによってアクセスされる。 プログラムメモリがアクセスされ、データがデータバスへとロードされる。D_ SEL制御ライン(図3)は、D_BUS入力を選択し、一方、R_SEL制御 ラインおよびWE_R制御ラインは、レジスタR0に対応するフリップフロップ にクロックするようセレクタ制御回路を動作させ、それによってD_BUSをレ ジスタR0にロードする。 SLEEP命令は、マイクロコントローラをスリープモードにセットする。割 込で起動されると、プログラムカウンタおよび命令レジスタは、割込ハンドラを 実行する前にSLEEP命令に続いて命令をロードし実行するよう動作させられ る。 マイクロコントローラは、ユーザにより選択可能な所定の時間期間の間にタイ マがリセットされない限りマイクロコントローラをリセットするウォッチドッグ ・タイマ300(図1)を含む。図11は、タイマ300が、セレクタ304に 結合される複数の出力を有するカウンタ302を含むことを示す。カウンタは、 1MHzで動作する内部発振器によりクロックされる。カウンタの各出力は、所 定数のカウント後にアサートされる。したがって、カウンタ302は、複数の遅 延時間を有する遅延手段として動作する。図11に示すように、カウンタ出力は 、16mSのインクリメントで、16mSから2048mSまでの遅延時間を備 え得る。遅延時間は、セレクタ304を通じて制御ラインWD_SELにより選 択され、その出力は、WD_E制御ラインにより可能化される可能化ANDゲー ト306へ結合される。選択された遅延時間に等しい時間期間が経過したとき、 対応するカウンタ出力がハイとなり、それによってMCU RESETラインを アサートする。WD_SELおよびWD_E制御ラインは、ウォッチドッグ・レ ジ スタ308に含まれるフリップフロップの出力である。データは、データバス1 2を通じてレジスタ308に読込まれる。 WDR命令は、ウォッチドッグ・タイマ300をリセットするため使用される 。命令デコーダ23は、カウンタ302をリセットするWD_RST信号を生成 する。したがって、タイマが可能化されるとき(WD_Eがハイのとき)、WD R命令は、選択された遅延時間に対応する頻度で実行されねばならず、さもなく ばマイクロコントローラがリセットされる。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ミクルブスト,ガウテ ノルウェー、エン―7013 トロントハイ ム、テグルブレネルバイエン、7・アー (72)発明者 ブライアント,ジョン・ディ アメリカ合衆国、94024 カリフォルニア 州、ロス・アルトス、ミラー・アベニュ、 1693 【要約の続き】 う必要が回避される。

Claims (1)

  1. 【特許請求の範囲】 1.マイクロコントローラであって、 命令セットと、 命令セットから選択される命令をストアするためのプログラムメモリと、 命令の実行に応答して制御信号を与えるための複数の制御ラインを有する命令 実行ユニットと、 プログラムメモリから命令を獲得し、獲得された命令を命令実行ユニットにロ ードするためのフェッチ手段と、 フェッチ手段を命令実行ユニットに結合するプログラムバスと、 プログラムメモリとは別個のデータメモリとを含み、前記データメモリはアド レススペースを有し、前記マイクロコントローラはさらに、 プログラムバスとは別個の8ビットデータバスを含み、前記データバスはデー タメモリに結合され、前記マイクロコントローラはさらに、 データバスに結合されるレジスタファイルを含み、前記レジスタファイルは、 複数の8ビットレジスタを有し、前記レジスタファイルはさらに、2つの8ビッ トレジスタに単一の論理16ビットレジスタとしてアクセスするための組合せ手 段を有し、前記レジスタファイルはさらに、組合せ手段を通じてアクセスさせる 論理16ビットレジスタにおいて、算術機能を行なうため組合せ手段に結合され る専用ALUを有し、前記マイクロコントローラはさらに、 2つの8ビットレジスタの内容を受けるためレジスタファイルに結合される第 1および第2の入力を有する汎用ALUを含み、前記汎用ALUは、定数値デー タを受けるための第3の入力を有し、前記汎用ALUは1クロックサイクルで出 力を生成するため、第1、第2および第3の入力に選択的に動作するための手段 を有し、前記汎用ALUはデータバスに結合される出力を有し、前記マイクロコ ントローラはさらに、 データバスおよび汎用ALUに結合される状態レジスタを含み、前記状態レジ スタは、割込許可フラグ、ビット転送フラグ、ハーフ・キャリーフラグ、2の補 数のオーバフローフラグ、負フラグ、符号ビット、ゼロフラグおよびキャリービ ットを含むフラグを有し、前記状態レジスタはさらに、フラグの1つにアクセス し、テストするためのビットテスト手段を有し、前記マイクロコントローラはさ らに、 プログラムの実行中に、データメモリまたはレジスタファイルのいずれかに直 接アクセスするため命令実行ユニットに結合される直接アドレスバスと、 プログラムの実行中にレジスタファイルにデータメモリへ間接的にデータアク セスさせるための間接アドレスバスとを含み、前記間接アドレスバスは、16ビ ットアドレスとして役立つよう組合せ手段から16ビット値を受けるためのアド レス受取手段を有し、前記マイクロコントローラはさらに、 データメモリのアドレススペース内に規定されるアドレスを有し、そのため、 レジスタとしてもメモリロケーションとしてもアクセス可能である、レジスタフ ァイルの8ビットレジスタとを含む、マイクロコントローラ。 2.ページングレジスタと、前記ページングレジスタの内容および前記組合せ手 段から与えられる16ビットデータの両方からアドレスを形成するためのアドレ ス形成手段とをさらに含む、請求項1に記載のマイクロコントローラ。 3.前記ページングレジスタは8ビットレジスタであり、前記ページングレジス タは、前記8ビットデータバスに結合され、したがって、前記ページングレジス タへの値のロードが各々64Kバイトの256個のページの1つを指定する、請 求項2に記載のマイクロコントローラ。 4.ビット識別子およびレジスタを指定する機械演算コードを各々有するBST 命令およびBLD命令をさらに含み、前記命令実行ユニットは、BST命令およ びBLD命令の実行に応答してビット操作制御信号を生成するため有効であり、 前記ビット操作制御信号は、(i)レジスタおよびビット識別子により特定され るビット位置にアクセスするためレジスタファイルを動作させるため、および、 (ii)アクセスされたビット位置の内容を状態レジスタ内のビット転送フラグへ と、またはビット転送フラグの内容をアクセスされたビット位置へと転送するた め有効である、請求項1に記載のマイクロコントローラ。 5.行先レジスタおよびソースレジスタの対を指定する機械演算コードを各々有 する第1の複数の命令をさらに含み、前記命令実行ユニットは、第1の命令の1 つの実行に応答して第1の制御信号を生成するため有効であり、前記第1の制御 信号は、(i)ソースレジスタ対の内容を間接アドレスとして提供するようレジ スタファイルの組合せ手段を動作させるため、(ii)間接アドレスにより指定さ れるメモリロケーションの内容にアクセスするようデータメモリを動作させるた め、および、(iii)メモリロケーションの内容を行先レジスタにストアするた めレジスタファイルを動作させるため有効であり、前記第1の命令は、LD、L D+、LD−およびLDDを含む、請求項4に記載のマイクロコントローラ。 6.行先レジスタ対およびソースレジスタを指定する機械演算コードを各々有す る第2の複数の命令をさらに含み、前記命令実行ユニットは、第2の命令の1つ の実行に応答して第2の制御信号を生成するため有効であり、前記第2の制御信 号は、(i)ソースレジスタの内容にアクセスするためレジスタファイルを動作 させるため、(ii)行先レジスタ対の内容を間接アドレスとして提供するためレ ジスタファイルの組合せ手段を動作させるため、および、(iii)間接アドレス により指定されるメモリロケーションにソースレジスタの内容をストアするよう データメモを動作させるため有効であり、前記第2の命令は、ST、ST+、S T−およびSTDを含む、請求項5に記載のマイクロコントローラ。 7.前記命令実行ユニットはさらに、LD+命令およびST+命令の実行に応答 して、レジスタ対の内容をインクリメントするようレジスタファイルの専用AL Uを動作させる制御信号を生成するため有効である、請求項6に記載のマイクロ コントローラ。 8.前記命令実行ユニットはさらに、LD−命令およびST−命令の実行に応答 して、レジスタ対の内容をデクリメントするためレジスタファイルの専用ALU を動作させる制御信号を生成するため有効である、請求項6に記載のマイクロコ ントローラ。 9.LDD命令およびSTD命令の機械演算コードはさらに、変位値を含み、前 記命令実行ユニットはさらに、LDD命令およびSTD命令の実行に応答して、 組合せ手段により与えられる間接アドレスに変位値を加算するためレジスタファ イルの専用ALUを動作させる制御信号を生成するため有効である、請求項6に 記載のマイクロコントローラ。 10.乗数レジスタおよび被乗数レジスタを指定する機械演算コードを有する乗 算命令をさらに含み、前記乗算命令は関連付られる上位バイト行先レジスタおよ び下位バイト行先レジスタを有し、前記命令実行ユニットは、乗算命令の実行に 応答して乗算制御信号を生成するため有効であり、前記乗算制御信号は、(i) 乗数レジスタおよび被乗数レジスタにより特定されたレジスタの内容を汎用AL Uへの入力として与えるためレジスタファイルを動作させるため、(ii)乗算演 算を行なうため汎用ALUを動作させるため、および、(iii)上位バイト行先 レジスタおよび下位バイト行先レジスタにより特定されるレジスタに乗算演算の 出力をストアするためレジスタファイルを動作させるため有効である、請求項6 に記載のマイクロコントローラ。 11.第1のレジスタおよび第2のレジスタを指定する機械演算コードを各々有 する第3の複数の命令をさらに含み、前記命令実行ユニットは、第3の命令の1 つの実行に応答して第3の制御信号を生成するため有効であり、前記第3の制御 信号は、(i)第1および第2のレジスタの内容を汎用ALUへの入力として与 えるためレジスタファイルを動作させるため、(ii)演算コードにおいて指定さ れるALU演算を行なうため汎用ALUを動作させるため、および、(iii)A LU演算の出力を第1のレジスタにストアするためレジスタファイルを動作させ るため有効であり、前記第3の命令は、ADD、ADC、SUB、SBC、AN D、ORおよびEORを含む、請求項10に記載のマイクロコントローラ。 12.レジスタおよび定数値を指定する機械演算コードを各々有する第4の複数 の命令をさらに含み、前記命令実行ユニットは、第4の命令の1つの実行に応答 して第4の制御信号を生成するため有効であり、前記第4の制御信号は、(i) レジスタの内容を汎用ALUへの第1の入力として与えるためレジスタファイル を動作させるため、(ii)定数値を汎用ALUへの第4の入力として与えるため 、(iii)演算コードで指定されるALU演算を行なうよう汎用ALUを動作さ せるため、および、(iv)ALU演算の出力をレジスタにストアするためレジス タファイルを動作させるため有効であり、前記第4の命令はSUBI、SBCI 、ANDI、ORI、SBRおよびCBRを含む、請求項11に記載のマイクロ コントローラ。 13.レジスタを指定する機械演算コードを各々有する第5の複数の命令をさら に含み、前記命令実行ユニットは、第5の命令の1つの実行に応答して第5の制 御信号を生成するため有効であり、前記第5の制御信号は、(i)レジスタの内 容を汎用ALUへの入力として与えるためレジスタファイルを動作させるため、 (ii)演算コードにおいて指定されるALU演算を行なうため汎用ALUを動作 させるため、および、(iii)ALU演算の出力をレジスタにストアするためレ ジスタファイルを動作させるため有効であり、前記第5の命令はCOM、NEG 、INC、DEC、TST、CLRおよびSERを含む、請求項12に記載のマ イクロコントローラ。 14.状態ビットおよび変位値を指定する機械演算コードを各々有する第6の複 数の命令をさらに含み、前記命令実行ユニットは、第6の命令の1つの実行に応 答して第6の制御信号を生成するため有効であり、前記第6の制御信号は、 (i)状態ビットをテストするためビットテスト手段を動作させるため、および 、 (ii)テストされた状態ビットの結果に基づいて、実行のためにロードされる次 の命令が、現在の命令の位置から変位値に等しい量だけ変位されたプログラムメ モリ内の位置から獲得されるようフェッチ手段を任意に動作させるため有効であ り、前記第6の命令は、BREQ、BRNE、BRCS、BRCC、BRSH、 BRLO、BRMI、BRPL、BRHS、BRHC、BRTS、BRTC、B RVS、BRVC、BRID、BRIE、BRBC、BRBS、BRGEおよび BRLTを含む、請求項13に記載のマイクロコントローラ。 15.レジスタ対および定数値を指定する機械演算コードを各々有する第7の複 数の命令をさらに含み、前記命令実行ユニットは、第7の命令の1つの実行に応 答して第7の制御信号を生成するため有効であり、前記第7の制御信号は、(i )レジスタ対の内容を専用ALUの入力として与えるためレジスタファイルの組 合せ手段を動作させるため、(ii)定数値を専用ALUへの他入力として与える ため、(iii)加算または減算を行なうためALUを動作させるため、および、 (iv)演算の結果をレジスタ対にストアするためレジスタファイルを動作させる ため有効であり、前記第7の命令はADIWおよびSBIWを含む、請求項14 に記載のマイクロコントローラ。 16.ビット識別子およびレジスタを指定する機械演算コードを各々有する第8 の複数の命令をさらに含み、前記命令実行ユニットは、第8の命令の1つの実行 に応答して第8の制御信号を生成するため有効であり、前記第8の制御信号は、 (i)レジスタにアクセスし、ビット識別子により指定されるビットをテストす るためレジスタファイルを動作させるため、および、(ii)テストされたビット の結果に基づいて、次の命令をスキップするようフェッチ手段を任意に動作させ るため有効であり、前記第8の命令はSBRCおよびSBRSを含む、請求項1 5に記載のマイクロコントローラ。 17.定数値およびレジスタを指定する機械演算コードを有するCPI命令をさ らに含み、前記命令実行ユニットは、CPI命令の実行に応答してCPI制御信 号を生成するため有効であり、前記CPI制御信号は、(i)レジスタの内容を 専用ALUへの第1の入力として与えるようレジスタファイルを動作させるため 、(ii)定数値を専用ALUへの第2の入力として与えるため、および、(iii )第1の入力から第2の入力を減算するよう専用ALUを動作させるため有効で ある、請求項16に記載のマイクロコントローラ。 18.第1のレジスタおよび第2のレジスタを指定する機械演算コードを有する CPC命令をさらに含み、前記命令実行ユニットは、CPC命令の実行に応答し てCPC制御信号を生成するため有効であり、前記CpC制御信号は、(i)第 1および第2のレジスタの内容を専用ALUへの入力として与えるためレジスタ ファイルを動作させるため、および、(ii)Rf−Rs−C、ただし Rfは第1のレジスタであり、 Rsは第2のレジスタであり、 Cはキャリービットである、を計算するため、専用ALUを動作させるため有 効である、請求項17に記載のマイクロコントローラ。 19.第1のレジスタおよび第2のレジスタを指定する機械演算コードを有する CP命令をさらに含み、前記命令実行ユニットは、CP命令の実行に応答してC P制御信号を生成するため有効であり、前記CP制御信号は、(i)それぞれ第 1のレジスタおよび第2のレジスタの内容を専用ALUへの第1の入力および第 2の入力として与えるためレジスタファイルを動作させるため、および、(ii) 第1の入力から第2の入力を減算するため専用ALUを動作させるため有効であ る、請求項18に記載のマイクロコントローラ。 20.第1および第2のレジスタを指定する機械演算コードを有するCPSE命 令をさらに含み、前記命令実行ユニットは、CPSE命令の実行に応答してCP SE制御信号を生成するため有効であり、CPSE制御信号は、(i)それぞれ 第1および第2のレジスタにより指定されるレジスタの内容を汎用ALUへの第 1の入力および第2の入力として与えるため、レジスタファイルを動作させるた め、(ii)第1の入力と第2の入力とを比較するため汎用ALUを動作させるた め、および、(iii)比較の結果に基づいて、次の命令をスキップするためフェ ッチ手段を任意に動作させるため有効である、請求項19に記載のマイクロコン トローラ。 21.変位値を指定する機械演算コードを各々有する第9の複数の命令をさらに 含み、前記命令実行ユニットは、第9の命令の1つの実行に応答して第9の制御 信号を生成するため有効であり、前記第9の制御信号は、実行のためにロードさ れる次の命令が、現在の命令の位置から変位値に等しい量だけ変位されたプログ ラムメモリ内の位置から獲得されるよう、フェッチ手段を動作させるため有効で あり、前記第9の命令はRJMPおよびJMPを含む、請求項20に記載のマイ クロコントローラ。 22.IJMP命令をさらに含み、前記命令実行ユニットは、IJMP命令の実 行に応答してIJMP制御信号を生成するため有効であり、IJMP制御信号は 、(i)2つのレジスタの内容を単一の変位値として与えるためレジスタファイ ルの組合せ手段を動作させるため、および、(ii)実行のためロードされる次の 命令が、現在の命令の位置から単一の変位値に等しい量だけ変位されたプログラ ムメモリ内の位置から獲得されるよう、フェッチ手段を動作させるため有効であ る、請求項21に記載のマイクロコントローラ。 23.変位値を指定する機械演算コードを各々有する第10の複数の命令をさら に含み、前記命令実行ユニットは、第10の命令の1つの実行に応答して第10 の制御信号を生成するため有効であり、前記第10の制御信号は、(i)実行さ れる次の命令のプログラムメモリ内の位置をスタックヘ移すため、および、(ii )実行のためロードされる次の命令が、現在の命令の位置から変位値に等し い量だけ変位されたプログラムメモリ内の位置から獲得されるようフェッチ手段 を動作させるため有効であり、前記第10の命令はRCALLおよびCALLを 含む、請求項22に記載のマイクロコントローラ。 24.ICALL命令をさらに含み、前記命令実行ユニットは、ICALL命令 の実行に応答してICALL制御信号を生成するため有効であり、前記ICAL L制御信号は、(i)2つのレジスタの内容を単一の変位値として与えるためレ ジスタファイルの組合せ手段を動作させるため、(ii)次に実行される命令のプ ログラムメモリ内での位置をスタックへと移すため、および、(iii)実行のた めロードされる次の命令が、現在の命令の位置から単一の変位値に等しい量だけ 変位されたプログラムメモリ内の位置から獲得されるよう、フェッチ手段を動作 させるため有効である、請求項23に記載のマイクロコントローラ。 25.変位値を指定する機械演算コードを各々有する第11の複数の命令をさら に含み、前記命令実行ユニットは、第11の命令の1つの実行に応答して第11 の制御信号を生成するため有効であり、前記第11の制御信号は、(i)プログ ラムメモリ内の位置を獲得するためスタックをポップ(pop)するため、およ び、(ii)実行のためロードされる次の命令が、スタックから獲得されるプログ ラムメモリ内の位置に基づくようフェッチ手段を動作させるため有効であり、前 記第11の命令は、RETおよびRETIを含む、請求項24に記載のマイクロ コントローラ。 26.前記命令実行ユニットはさらに、RETI命令の実行に応答して、グロー バル割込フラグをセットするよう状態レジスタを動作させる制御信号を生成する 、請求項25に記載のマイクロコントローラ。 27.行先レジスタおよびデータソースを指定する機械演算コードを各々有する 第12の複数の命令をさらに含み、前記命令実行ユニットは、第12の命令の1 つの実行に応答して第12の制御信号を生成するため有効であり、前記第12の 制御信号は、(i)もしデータソースがレジスタであれば、レジスタの内容にア クセスするためレジスタファイルを動作させるため、および、(ii)もしデータ ソースがレジスタであればアクセスされるレジスタの内容を、または、もしデー タソースが定数値であればデータソースそれ自体のいずれかを行先レジスタにス トアするようレジスタファイルを動作させるため有効であり、前記第12の命令 はMOVおよびLDIを含む、請求項26に記載のマイクロコントローラ。 28.レジスタを指定するPUSH命令をさらに含み、前記命令実行ユニットは 、PUSH命令の実行に応答してPUSH制御信号を生成するため有効であり、 前記PUSH制御信号は、(i)スタック内の次の位置を指し示すためスタック ポインタを更新するため、および、(ii)レジスタの内容を受けるようスタック を動作させるため有効である、請求項27に記載のマイクロコントローラ。 29.レジスタを指定するPOP命令をさらに含み、前記命令実行ユニットは、 POP命令の実行に応答してPOP制御信号を生成するため有効であり、前記P OP制御信号は、(i)スタックの内容をレジスタにストアするためスタックを 動作させるため、および、(ii)スタック内の前の位置を指し示すようスタック ポインタを更新するため有効である、請求項28に記載のマイクロコントローラ 。 30.ポートおよびレジスタを指定する機械演算コードを各々有するIN命令お よびOUT命令をさらに含み、前記命令実行ユニットは、IN命令およびOUT 命令の一方の実行に応答してポート制御信号を生成するため有効であり、前記ポ ート制御信号は、(i)レジスタにアクセスするためにレジスタファイルを動作 させるため、および、(ii)アクセスされるレジスタからポートへ内容を転送す るかまたはポートの内容をアクセスさせるレジスタに転送するかのため有効であ る、請求項29に記載のマイクロコントローラ。 31.LPM命令をさらに含み、前記命令実行ユニットは、LPM命令の実行に 応答してLPM制御信号を生成するため有効であり、前記LPM制御信号は、( i)2つのレジスタの内容をプログラムアドレスとして与えるためレジスタファ イルの組合せ手段を動作させるため、(ii)プログラムアドレスにより指定され るプログラムメモリのメモリロケーション内のデータにアクセスするため、およ び、(iii)レジスタ内にアクセスされたデータをストアするためレジスタファ イルを動作させるため有効である、請求項30に記載のマイクロコントローラ。 32.第13の複数の命令をさらに含み、前記命令実行ユニットは、第13の命 令の1つの実行に応答して第13の制御信号を生成するため有効であり、前記第 13の制御信号は、(i)状態レジスタ内のビットにアクセスするため状態レジ スタを動作させるため、および、(ii)アクセスされたビットをセットまたはク リアのいずれかするため有効であり、前記第13の命令は、SEC、CLC、S EN、CLN、SEZ、CLZ、SEI、CLI、SES、CLS、SEV、C LV、SET、CLT、SEH、CLH、BSETおよびBCLRを含む、請求 項31に記載のマイクロコントローラ。 33.レジスタを指定するLSL命令をさらに含み、前記命令実行ユニットは、 LSL命令の実行に応答して第1のシフト制御信号を生成するため有効であり、 前記第1のシフト制御信号は、(i)レジスタにアクセスするためレジスタファ イルを動作させるため、(ii)アクセスされたレジスタの最上位ビットをキャリ ービットにシフトするため、(iii)ビットを左に1つ位置をシフトさせるため 、および、(iv)最下位ビットをクリアするため有効である、請求項32に記載 のマイクロコントローラ。 34.レジスタを指定するLSR命令をさらに含み、前記命令実行ユニットは、 LSR命令の実行に応答して第2のシフト制御信号を生成するため有効であり、 前記第2のシフト制御信号は、(i)レジスタにアクセスするためレジスタファ イルを動作させるため、(ii)アクセスされたレジスタの最下位ビットをキャリ ービットにシフトするため、(iii)ビットを右に1つ位置をシフトさせるため 、および、(iv)最上位ビットをクリアするため有効である、請求項33に記載 のマイクロコントローラ。 35.レジスタを指定するROL命令をさらに含み、前記命令実行ユニットは、 ROL命令の実行に応答して第3のシフト制御信号を生成するため有効であり、 前記第3のシフト制御信号は、(i)レジスタにアクセスするためレジスタファ イルを動作させるため、(ii)ビットを左に1つ位置をシフトさせるため、(ii i)キャリービットを最下位ビットにシフトさせるため、および、(iv)最上位 ビットをキャリービットにシフトさせるため有効である、請求項34に記載のマ イクロコントローラ。 36.レジスタを指定するROR命令をさらに含み、前記命令実行ユニットは、 ROR命令の実行に応答して第4のシフト制御信号を生成するため有効であり、 前記第4のシフト制御信号は、(i)レジスタにアクセスするためレジスタファ イルを動作させるため、(ii)ビットを右に1つ位置をシフトさせるため、(ii i)キャリービットを最上位ビットにシフトさせるため、および、(iv)最下位 ビットをキャリービットにシフトさせるため有効である、請求項35に記載のマ イクロコントローラ。 37.レジスタを指定するASR命令をさらに含み、前記命令実行ユニットは、 ASR命令の実行に応答して第5のシフト制御信号を生成するため有効であり、 前記第5のシフト制御信号は、(i)レジスタにアクセスするためレジスタファ イルを動作させるため、(ii)ビットを右に1つ位置をシフトさせるため、およ び、(iii)最下位ビットをキャリービットにシフトさせるため有効である、請 求項36に記載のマイクロコントローラ。 38.レジスタを指定するSWAP命令をさらに含み、前記命令実行ユニットは 、SWAP命令の実行に応答してスワップ制御信号を生成するため有効であり、 前記スワップ制御信号は、(i)レジスタにアクセスするためレジスタファイル を動作させるため、および、(ii)アクセスされたレジスタの上位ニブルおよび 下位ニブルをスワップするため有効である、請求項37に記載のマイクロコントロ ーラ。 39.SLEEP命令をさらに含み、前記命令実行ユニットは、SLEEP命令 の実行に応答してスリープ制御信号を生成するため有効であり、前記スリープ制 御信号は、マイクロコントローラをスリープモードにするため有効である、請求 項38に記載のマイクロコントローラ。 40.ウォッチドッグ・リセットラインおよびMCUリセットラインを有するウ ォッチドッグ・タイマと、時間期間の遅延後にMCUリセットライン上の信号を アサートするための遅延手段とをさらに含み、前記MCUリセットラインは、遅 延手段による信号のアサートに際してマイクロコントローラのリセットを起こす よう結合され、前記ウオッチドッグ・リセットラインは遅延期間を開始するよう 遅延手段に結合され、前記マイクロコントローラはさらに、WDR命令を含み、 前記命令実行ユニットは、WDR命令の実行に応答してウォッチドッグ・リセッ トライン上の信号をアサートし、それによって遅延期間を開始するため有効であ る、請求項39に記載のマイクロコントローラ。
JP54167098A 1997-03-27 1998-03-13 Riscアーキテクチャを有する8ビットマイクロコントローラ Expired - Lifetime JP4386467B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/824,932 1997-03-27
US08/824,932 US5809327A (en) 1997-03-27 1997-03-27 Eight-bit microcontroller having a risc architecture
PCT/US1998/005049 WO1998044427A1 (en) 1997-03-27 1998-03-13 Eight-bit microcontroller having a risc architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009073431A Division JP5199931B2 (ja) 1997-03-27 2009-03-25 Riscアーキテクチャを有する8ビットマイクロコントローラ

Publications (2)

Publication Number Publication Date
JP2001517343A true JP2001517343A (ja) 2001-10-02
JP4386467B2 JP4386467B2 (ja) 2009-12-16

Family

ID=25242688

Family Applications (2)

Application Number Title Priority Date Filing Date
JP54167098A Expired - Lifetime JP4386467B2 (ja) 1997-03-27 1998-03-13 Riscアーキテクチャを有する8ビットマイクロコントローラ
JP2009073431A Expired - Lifetime JP5199931B2 (ja) 1997-03-27 2009-03-25 Riscアーキテクチャを有する8ビットマイクロコントローラ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009073431A Expired - Lifetime JP5199931B2 (ja) 1997-03-27 2009-03-25 Riscアーキテクチャを有する8ビットマイクロコントローラ

Country Status (12)

Country Link
US (1) US5809327A (ja)
EP (1) EP1012735B1 (ja)
JP (2) JP4386467B2 (ja)
KR (1) KR100462951B1 (ja)
CN (1) CN1121014C (ja)
CA (1) CA2275172C (ja)
DE (1) DE69839487D1 (ja)
HK (1) HK1024546A1 (ja)
MY (1) MY115901A (ja)
NO (1) NO324825B1 (ja)
TW (1) TW367439B (ja)
WO (1) WO1998044427A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055211A (en) * 1997-07-03 2000-04-25 Microchip Technology Incorporated Force page zero paging scheme for microcontrollers using data random access memory
US6243798B1 (en) * 1997-10-28 2001-06-05 Microchip Technology Incorporated Computer system for allowing a two word jump instruction to be executed in the same number of cycles as a single word jump instruction
US6754809B1 (en) * 1999-12-30 2004-06-22 Texas Instruments Incorporated Data processing apparatus with indirect register file access
KR100602374B1 (ko) * 2000-08-31 2006-07-14 어보브반도체 주식회사 스택 구조를 사용하여 코드 집적도를 높인 리스크 프로세서
KR100399068B1 (ko) * 2001-04-25 2003-09-26 주식회사 하이닉스반도체 마이크로 컨트롤러 유닛의 효율적인 테스트 방법
KR20010079326A (ko) * 2001-07-06 2001-08-22 한제섭 리스크 코아의 집적회로
US7506133B2 (en) * 2003-08-20 2009-03-17 Seiko Epson Corporation Method and apparatus for high speed addressing of a memory space from a relatively small address space
EP1643358A1 (en) * 2004-10-01 2006-04-05 Nokia Corporation Pre-loading data
CN100430890C (zh) * 2005-08-31 2008-11-05 上海海尔集成电路有限公司 一种8位risc微控制器
US8533439B2 (en) 2005-11-07 2013-09-10 Atmel Corporation Elastic shared RAM array including contiguous instruction and data portions distinct from each other
DE102007049354A1 (de) * 2007-10-15 2009-04-16 Robert Bosch Gmbh Verfahren zum Testen eines Adressbusses in einem logischen Baustein
TWI425354B (zh) * 2007-10-16 2014-02-01 Mstar Semiconductor Inc 資料存取系統及方法
CN102033733B (zh) * 2011-01-14 2012-12-19 北方工业大学 新型mcu结构
US20130086366A1 (en) * 2011-09-30 2013-04-04 Qualcomm Incorporated Register File with Embedded Shift and Parallel Write Capability
CN103077137A (zh) * 2011-10-25 2013-05-01 北京大豪科技股份有限公司 中断控制方法及中断控制单元
US9201446B2 (en) * 2012-02-01 2015-12-01 Microchip Technology Incorporated Timebase peripheral
CN103166476A (zh) * 2012-12-26 2013-06-19 黄冠雄 一种交流电数控调压控流传输系统
US9477473B2 (en) 2012-12-31 2016-10-25 Cadence Design Systems, Inc. Bit-level register file updates in extensible processor architecture
US9448801B2 (en) * 2012-12-31 2016-09-20 Cadence Design Systems, Inc. Automatic register port selection in extensible processor architecture
CN104809079B (zh) * 2015-04-14 2018-01-16 昆腾微电子股份有限公司 分页寄存器的访问方法和装置
KR102132933B1 (ko) * 2019-09-09 2020-07-10 국방과학연구소 소프트웨어의 제어 흐름 보호장치 및 그 방법
US11251900B2 (en) * 2019-12-20 2022-02-15 Silicon Laboratories Inc. System, apparatus and method for automatically determining configuration parameters for wireless devices
CN112929673B (zh) * 2021-01-19 2022-04-01 Tcl华星光电技术有限公司 解码方法、解码设备及可读存储介质
CN113128172B (zh) * 2021-04-23 2023-10-27 中国科学院计算技术研究所 超导寄存器堆装置及其控制方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
JPS62281040A (ja) * 1986-05-30 1987-12-05 Fujitsu Ltd ペ−ジ管理方式
JPS6330946A (ja) * 1986-07-25 1988-02-09 Alps Electric Co Ltd マルチタスクにおけるペ−ジング方式
US5193206A (en) * 1989-12-27 1993-03-09 Motorola, Inc. Reduce instruction set microprocessor
US5333284A (en) * 1990-09-10 1994-07-26 Honeywell, Inc. Repeated ALU in pipelined processor design
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
JP3181307B2 (ja) * 1991-04-25 2001-07-03 株式会社東芝 命令処理装置
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
JPH06266557A (ja) * 1993-03-15 1994-09-22 Fujitsu Ltd データ処理装置及びデータ処理方法
US5692170A (en) * 1995-04-28 1997-11-25 Metaflow Technologies, Inc. Apparatus for detecting and executing traps in a superscalar processor
US5737548A (en) * 1995-11-07 1998-04-07 Yach; Randy L. RISC-based microcontroller with peripheral function added to a split data bus

Also Published As

Publication number Publication date
US5809327A (en) 1998-09-15
KR20000076310A (ko) 2000-12-26
MY115901A (en) 2003-09-30
HK1024546A1 (en) 2000-10-13
JP2009223897A (ja) 2009-10-01
EP1012735A4 (en) 2006-05-17
CN1121014C (zh) 2003-09-10
JP5199931B2 (ja) 2013-05-15
CA2275172A1 (en) 1998-10-08
TW367439B (en) 1999-08-21
NO994169L (no) 1999-11-29
EP1012735B1 (en) 2008-05-14
CN1251185A (zh) 2000-04-19
JP4386467B2 (ja) 2009-12-16
CA2275172C (en) 2003-03-18
NO994169D0 (no) 1999-08-27
DE69839487D1 (de) 2008-06-26
EP1012735A1 (en) 2000-06-28
WO1998044427A1 (en) 1998-10-08
KR100462951B1 (ko) 2004-12-23
NO324825B1 (no) 2007-12-10

Similar Documents

Publication Publication Date Title
JP5199931B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
Segars et al. Embedded control problems, Thumb, and the ARM7TDMI
EP0138419B1 (en) Central processing unit for a digital computer
TWI476597B (zh) 資料處理裝置及半導體積體電路裝置
EP0776504B1 (en) Integrated circuit with multiple functions sharing multiple internal signal buses for distributing bus access control and arbitration control
EP0221191B1 (en) Alu and condition code control unit for data processor
JPH0719215B2 (ja) マイクロプロセッサ
EP0011412B1 (en) Bipartite control store for microprogrammed data processor
JPS6236256B2 (ja)
JP3694531B2 (ja) Riscアーキテクチャを有する8ビットマイクロコントローラ
JPH08505483A (ja) 高速プログラマブルロジックコントローラ
JPH06105432B2 (ja) マイクロプロセッサ
JP2004086837A (ja) データ処理装置
JP3705811B2 (ja) 再構成可能なプログラム状態語を有するマイクロコントローラ
CA1250666A (en) Central processing unit for a digital computer
Gwennap Hobbit Enables Personal Communicators
Maejima et al. The VLSI Control Structure of a CMOS Microcomputer
Silio Jr Basics of Computer Architecture
JPH0680495B2 (ja) マイクロプロセッサ
JPH0658629B2 (ja) データ処理装置
JP2007048317A (ja) データ処理装置
JPH0456340B2 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080401

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080630

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080811

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080731

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080908

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080829

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081001

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090601

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090702

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090914

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090929

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131009

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term