(57)【特許請求の範囲】
【請求項１】
システム・インターフェースを通して外部装置に接続しているオンチップ・プログラミング機能を持つマイクロコントローラであって、
ＣＰＵと、
前記ＣＰＵに接続している主データ・バスと、
前記ＣＰＵと前記システム・インターフェースとの間に接続し、前記主データ・バスから前記システム・インターフェースへ送られる状態データを一時的に記憶する状態レジスタと、前記システム・インターフェースから受信する入力データを一時的に記憶する入力レジスタと、前記主データ・バスから前記システム・インターフェースへ送られる出力データを一時的に記憶する出力レジスタとを含むＩ／Ｏレジスタ・セットと、
プログラム・コードを記憶するためのフラッシュ・メモリ・ユニットと、
入力が前記主データ・バスを解して前記Ｉ／Ｏレジスタ・セットに接続し、前記フラッシュ・メモリ・ユニットにプログラムされる新しいファームウェアを受信するラッチ・セットと、
第一のマルチプレクサと、第二のマルチプレクサと、第三のマルチプレクサとを有するマルチプレクサ・セットと、
前記読出しモードで動作するときには前記主データ・バスを前記出力レジスタに接続し、書込みモードで動作するときには前記第二のマルチプレクサを前記出力レジスタに接続する第四のマルチプレクサと、
前記マルチプレクサ・セットを制御するための選択信号および前記ラッチ・セットを制御するためのイネーブル／ディスエーブル信号を発生する読出し／書込みコントローラとを備え、
前記読出し／書込みコントローラは、
前記読出しモードの場合には、前記選択信号を第一の論理状態に切り替えて、前記フラッシュ・メモリ・ユニットに記憶されているプログラム・コードを前記主データ・バスから取り出すことができるように前記主データ・バスを前記マルチプレクサ・セットを介して前記フラッシュ・メモリ・ユニットに接続し、前記イネーブル／ディスエーブル信号により前記ラッチ・セットを動作不能にし、
前記書込みモードの場合には、前記選択信号を第二の論理状態に切り替えて、前記Ｉ／Ｏレジスタ・セットを通して前記システム・インターフェースから受信した前記新しいファームウェアを、最初、ラッチ・セットに送り、その後で、マルチプレクサ・セットを通してラッチ・セットからフラッシュ・メモリ・ユニットに送り、それにより、前記新しいファームウェアを前記フラッシュ・メモリ・ユニットに書き込むことができるように前記ラッチ・セットの出力を前記フラッシュ・メモリ・ユニットに接続し、前記イネーブル／ディスエーブル信号により前記ラッチ・セットを動作可能にすることを特徴とするマイクロコントローラ。
【請求項２】
請求項１に記載のマイクロコントローラにおいて、前記ラッチ・セットが、各々が前記マルチプレクサ・セットに接続している出力ポートおよび前記主データ・バスに接続している入力ポートを有する第一のラッチ、第二のラッチ、および第三のラッチを含み、
前記第一のラッチは、前記Ｉ／Ｏレジスタ・セットを通して前記システム・インターフェースから受信した消去制御コードをラッチし、
前記第二のラッチは、前記Ｉ／Ｏレジスタ・セットを通して前記システム・インターフェースから受信したデータ信号をラッチし、
前記第三のラッチは、前記Ｉ／Ｏレジスタ・セットを通して前記システム・インターフェースから受信したアドレス信号をラッチすることを特徴とするマイクロコントローラ。
【請求項３】
請求項２に記載のマイクロコントローラにおいて、前記マルチプレクサ・セットの前記第一のマルチプレクサ、第二のマルチプレクサ、および第三のマルチプレクサは、各々が第一のポート、第二のポート、第三のポート、および選択制御ポートを有し、
前記第一のマルチプレクサは、前記第一のポートが前記第四のマルチプレクサを介して前記主データ・バスに接続し、前記第二のポートが前記ラッチ・セットの前記第一のラッチの出力ポートに接続し、前記第三のポートが前記フラッシュ・メモリ・ユニットに接続し、前記選択制御ポートが前記読出し／書込みコントローラに接続していて、前記読出し／書込みコントローラから受信する前記選択信号が第一の論理状態である場合には前記読出しモードで動作して前記第三のポートと前記第一のポートを相互接続し、また前記選択信号が第二の論理状態である場合には前記書込みモードで動作して前記第三のポートと前記第二のポートを相互接続するように、前記読出し／書込みコントローラにより制御され、
前記第二のマルチプレクサは、前記第一のポートが前記第四のマルチプレクサを介して前記主データ・バスに接続し、前記第二のポートが前記ラッチ・セットの前記第二のラッチの出力ポートに接続し、前記第三のポートが前記フラッシュ・メモリ・ユニットに接続し、前記選択制御ポートが前記読出し／書込みコントローラに接続していて、前記読出し／書込みコントローラから受信する前記選択信号が第一の論理状態である場合には前記読出しモードで動作して前記第三のポートと前記第一のポートを相互接続し、また前記選択信号が第二の論理状態である場合には前記書込みモードで動作して前記第三のポートと前記第二のポートを相互接続するように、前記読出し／書込みコントローラにより制御され、
前記第三のマルチプレクサは、前記第一のポートが前記第四のマルチプレクサを介して前記主データ・バスに接続し、前記第二のポートが前記ラッチ・セットの前記第三のラッチの出力ポートに接続し、前記第三のポートが前記フラッシュ・メモリ・ユニットに接続し、前記選択制御ポートが前記読出し／書込みコントローラに接続していて、前記読出し／書込みコントローラから受信する前記選択信号が第一の論理状態である場合には前記読出しモードで動作して前記第三のポートと前記第一のポートを相互接続し、また前記選択信号が第二の論理状態である場合には前記書込みモードで動作して前記第三のポートと前記第二のポートを相互接続するように、前記読出し／書込みコントローラにより制御されることを特徴とするマイクロコントローラ。
【請求項４】
請求項３に記載のマイクロコントローラにおいて、
前記第四のマルチプレクサは、第一のポート、第二のポート、第三のポート、および選択制御ポートを有し、前記第一のポートが前記第一のマルチプレクサの第一のポート、第二のマルチプレクサの第一のポート、および第三のマルチプレクサの第一のポートに接続し、前記第二のポートが前記第二のマルチプレクサの第二のポートに接続し、前記第三のポートが前記主データ・バスおよび前記Ｉ／Ｏレジスタ・セットに接続し、前記選択制御ポートが前記読出し／書込みコントローラに接続していて、前記読出し／書込みコントローラから受信する前記選択信号が第一の論理状態である場合には前記読出しモードで動作して前記第三のポートと前記第一のポートを相互接続し、また前記選択信号が第二の論理状態である場合には前記書込みモードで動作して前記第三のポートと前記第二のポートを相互接続するように、前記読出し／書込みコントローラにより制御されることを特徴とするマイクロコントローラ。
【請求項５】
ＣＰＵと、
前記ＣＰＵに接続している主データ・バスと、
前記主データ・バスとシステム・インターフェースとの間に接続し、前記主データ・バスから前記システム・インターフェースに送られる状態データを一時的に記憶する状態レジスタと、前記システム・インターフェースから受信する入力データを一時的に記憶する入力レジスタと、前記主データ・バスから前記システム・インターフェースへ送られる出力データを一時的に記憶する出力レジスタとを含むＩ／Ｏレジスタ・セットと、
前記Ｉ／Ｏレジスタ・セットと外部装置との間に接続しているシステム・インターフェースと、
前記フラッシュ・メモリ・ユニットのプログラミングを制御するためのプログラム・コードを記憶するフラッシュ・メモリ・ユニットとを有するマイクロコントローラ上で使用するプログラミング制御ユニットであって、
前記プログラミング制御ユニットが、
入力が前記主データ・バスを介して前記Ｉ／Ｏレジスタ・セットに接続し、前記フラッシュ・メモリ・ユニットにプログラムされる新しいファームウェアを受信するラッチ・セットと、
第一のマルチプレクサと、第二のマルチプレクサと、第三のマルチプレクサとを有するマルチプレクサ・セットと、
前記読出しモードで動作するときには前記主データ・バスを前記出力レジスタに接続し、書込みモードで動作するときには前記第二のマルチプレクサを前記出力レジスタに接続する第四のマルチプレクサと、
前記マルチプレクサ・セットを制御するための選択信号および前記ラッチ・セットを制御するためのイネーブル／ディスエーブル信号を発生する読出し／書込みコントローラとを備え、
前記読出し／書込みコントローラは、
前記読出しモードの場合には、前記選択信号を第一の論理状態に切り替えて、前記フラッシュ・メモリ・ユニットに記憶されている前記プログラム・コードを前記主データ・バスから取り出すことができるように前記主データ・バスを前記マルチプレクサ・セットを介して前記フラッシュ・メモリ・ユニットに接続し、前記イネーブル／ディスエーブル信号により前記ラッチ・セットを動作不能にし、
前記書込みモードの場合には、前記選択信号を第二の論理状態に切り替えて、前記Ｉ／Ｏレジスタ・セットを通して前記システム・インターフェースから受信した前記新しいファームウェアを、最初、前記ラッチ・セットに送り、その後で、前記マルチプレクサ・セットを通してラッチ・セットからフラッシュ・メモリ・ユニットに送り、それにより、前記新しいファームウェアを前記フラッシュ・メモリ・ユニットに書き込むことができるように、前記ラッチ・セットの出力を前記フラッシュ・メモリ・ユニットに接続し、前記イネーブル／ディスエーブル信号により前記ラッチ・セットの動作を可能にすることを特徴とするプログラミング制御ユニット。
【請求項６】
請求項５に記載のプログラミング制御ユニットにおいて、前記ラッチ・セットが、各々が前記マルチプレクサ・セットに接続している出力ポートおよび前記主データ・バスに接続している入力ポートを有する第一のラッチ、第二のラッチ、および第三のラッチを含み、
前記第一のラッチは、前記Ｉ／Ｏレジスタ・セットを通して前記システム・インターフェースから受信した消去制御コードをラッチし、
前記第二のラッチは、前記Ｉ／Ｏレジスタ・セットを通して前記システム・インターフェースから受信したデータ信号をラッチし、
前記第三のラッチは、前記Ｉ／Ｏレジスタ・セットを通して前記システム・インターフェースから受信したアドレス信号をラッチすることを特徴とするプログラミング制御ユニット。
【請求項７】
請求項６に記載のプログラミング制御ユニットにおいて、前記マルチプレクサ・セットの前記第一のマルチプレクサ、第二のマルチプレクサ、および第三のマルチプレクサは、各々が第一のポート、第二のポート、第三のポート、および選択制御ポートを有し、
前記第一のマルチプレクサは、前記第一のポートが前記主データ・バスに接続し、前記第二のポートが前記ラッチ・セットの前記第一のラッチの出力ポートに接続し、前記第三のポートが前記フラッシュ・メモリ・ユニットに接続し、前記選択制御ポートが前記読出し／書込みコントローラに接続していて、前記読出し／書込みコントローラから受信する前記選択信号が第一の論理状態である場合には前記読出しモードで動作して前記第三のポートと前記第一のポートを相互接続し、また前記選択信号が第二の論理状態である場合には前記書込みモードで動作して前記第三のポートと前記第二のポートを相互接続するように、前記読出し／書込みコントローラにより制御され、
前記第二のマルチプレクサは、前記第一のポートが前記主データ・バスに接続し、前記第二のポートが前記ラッチ・セットの前記第二のラッチの出力ポートに接続し、前記第三のポートが前記フラッシュ・メモリ・ユニットに接続し、前記選択制御ポートが前記読出し／書込みコントローラに接続していて、前記読出し／書込みコントローラから受信する前記選択信号が第一の論理状態である場合には前記読出しモードで動作して前記第三のポートと前記第一のポートを相互接続し、また前記選択信号が第二の論理状態である場合には前記書込みモードで動作して前記第三のポートと前記第二のポートを相互接続するように、前記読出し／書込みコントローラにより制御され、
前記第三のマルチプレクサは、前記第一のポートが前記主データ・バスに接続し、前記第二のポートが前記ラッチ・セットの前記第三のラッチの出力ポートに接続し、前記第三のポートが前記フラッシュ・メモリ・ユニットに接続し、前記選択制御ポートが前記読出し／書込みコントローラに接続していて、前記読出し／書込みコントローラから受信する前記選択信号が第一の論理状態である場合には前記読出しモードで動作して前記第三のポートと前記第一のポートを相互接続し、また前記選択信号が第二の論理状態である場合には前記書込みモードで動作して前記第三のポートと前記第二のポートを相互接続するように、前記読出し／書込みコントローラにより制御されることを特徴とするプログラミング制御ユニット。
【請求項８】
請求項７に記載のプログラミング制御ユニットにおいて、
前記第四のマルチプレクサは、第一のポート、第二のポート、第三のポート、および選択制御ポートを有し、前記第一のポートが前記第一のマルチプレクサの第一のポート、第二のマルチプレクサの第一のポート、および第三のマルチプレクサの第一のポートに接続し、前記第二のポートが前記第二のマルチプレクサの第二のポートに接続し、前記第三のポートが前記主データ・バスおよび前記Ｉ／Ｏレジスタ・セットに接続し、前記選択制御ポートが前記読出し／書込みコントローラに接続していて、前記読出し／書込みコントローラから受信する前記選択信号が第一の論理状態である場合には前記読出しモードで動作して前記第三のポートと前記第一のポートを相互接続し、また前記選択信号が第二の論理状態である場合には前記書込みモードで動作して前記第三のポートと前記第二のポートを相互接続するように、前記読出し／書込みコントローラにより制御されることを特徴とするプログラミング制御ユニット。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコントローラ・アーキテクチャに係り、特に埋設フラッシュ・メモリおよびフラッシュ・メモリ用のオンチップ・プログラミング機能を持つマイクロコントローラ・アーキテクチャに関する。
【０００２】
【従来の技術】
＜関連出願への相互参照＞
本出願は、その全文を引用によって本明細書の記載に援用した、１９９８年１０月６日付の台湾特許出願番号８７１１６５２８の優先権の利益を主張する。
ＩＢＭ互換パソコン（ＰＣ）のようなコンピュ−タ・システムにおいては、インテル社の８０４２または８７４２マイクロコントローラのような専用マイクロコントローラが、キーボードまたはマウスのような周辺入力装置からのデータ入力の制御に使用されている。８０４２ユニットは、２Ｋ×８ＲＯＭ（読出し専用メモリ）と一緒に埋設されていて、一方、８７４２ユニットは、ＥＥＰＲＯＭ（電気的に消去可能で、プログラム可能な読出し専用メモリ）またはフラッシュ・メモリのような、２Ｋ×８再プログラム可能なメモリ・ユニットと一緒に埋設されている。これら埋設メモリ・ユニットは、キーボードまたはマウスからのデータ信号の入力制御用のファームウェアを記憶するために使用される。
【０００３】
種々の異なる国々で使用するために設計したキーボードのような種々の種類のキーボードが、パソコンと一緒に使用するために市販されているので、マイクロコントローラに予め設置されているキーボード／マウス入力制御用ファームウェアは、新しいキーボードを使用する場合には、互換性を実現するために交換しなければならない。８０４２ユニットの埋蔵ＲＯＭは、再プログラムすることができない。８７４２ユニットの場合には、その埋設ＥＥＰＲＯＭまたはフラッシュ・メモリは、再プログラムが可能であるが、その場合には、ＩＣパッケージに内蔵されている８７４２ユニットを、最初、パソコンの内部の回路基板から取り外し、その後で特殊なプログラマにより再プログラムし、最後に新しいファームウェアをプログラムしてから、回路基板に再度取り付けなければならないので、再プログラムするのが面倒である。それ故、再プログラムの作業が不便で、面倒で、コストが掛かる。図３および図４を参照しながら、以下に従来のマイクロコントローラ・アーキテクチャを説明する。
【０００４】
図３は、キーボード／マウス入力を制御するために、パソコンと一緒に使用する、従来のマイクロコントローラのアーキテクチャを示す、簡単なブロック図である。このマイクロコントローラは、インテル社の８０４２および８７４２仕様と互換性を持つ。
図に示すように、参照番号１００で示す従来のマイクロコントローラ・アーキテクチャは、ＣＰＵ（中央処理装置）１１０、クロック・ゼネレータ１１５、Ｉ／Ｏレジスタ・セット１２０（状態レジスタ１２１、入力レジスタ１２２、および出力レジスタ１２３を含む）、データ・メモリ・ユニット１３１、プログラム・コード・メモリ・ユニット１３２、Ｉ／Ｏ（入力／出力）ユニット１１７、およびタイマー／カウンタ１１８を備える。使用中、マイクロコントローラ１００は、システム・インターフェース１９０を通して、ＩＢＭ互換パソコン（ＰＣ）のようなホスト・コンピュータ１９１に接続している。一方、Ｉ／Ｏユニット１１７は、キーボード１８１およびマウス１８２のような複数の周辺入力装置に接続している。
【０００５】
ＣＰＵ１１０は、マイクロコントローラ１００の全体の動作を制御する。クロック・ゼネレータ１１５は、ＣＰＵ１１０の動作を駆動するためのクロック信号を発生するために使用される。タイマー／カウンタ・ユニット１１８は、マイクロコントローラ１００の特定の動作に対して、タイマーまたはカウンタとして選択的に使用される。
Ｉ／Ｏレジスタ・セット１２０は、システム・インターフェース１９０を通して、マイクロコントローラ１００とホスト・コンピュータ１９１との間を移動するＩ／Ｏデータおよびコマンドを一時的に記憶するのに使用される。状態レジスタ１２１は、システム・インターフェース１９０を通して、マイクロコントローラ１００から、ホスト・コンピュータ１９１に送られる状態データを一時的に記憶するのに使用される。入力レジスタ１２２は、システム・インターフェース１９０を通して、ホスト・コンピュータ１９１から受信する入力データを一時的に記憶するのに使用される。出力レジスタ１２３は、システム・インターフェース１９０を通して、マイクロコントローラ１００からホスト・コンピュータ１９１に送られる出力データを一時的に記憶するのに使用される。
【０００６】
このマイクロコントローラ１００においては、プログラム・コードおよびデータは異なるメモリ・ユニットに別々に記憶される。すなわち、プログラム・コードはプログラム・コード・メモリ・ユニット１３２に記憶され、一方、マイクロコントローラ１００の動作中に発生したデータは、データ・メモリ・ユニット１３１に記憶される。データ・メモリ・ユニット１３１は、揮発性メモリであり、一方、プログラム・コード・メモリ・ユニット１３２は、固定ＲＯＭ、ＥＰＲＯＭ（電気的にプログラム可能な読出し専用メモリ）またはフラッシュ・メモリの中のどれかである。プログラム・コード・メモリ・ユニット１３２に記憶されたプログラム・コードは、Ｉ／Ｏユニット１１７を通して、マイクロコントローラ１００に接続しているキーボード１８１およびマウス１８２の入力制御を行うために使用される。図４は、キーボード／マウス入力制御の手順のステップを示す。
【０００７】
図３と一緒に図４について説明すると、第一のステップ２１０においては、コンピュータの電源をオンにするか、コンピュータをリセットした直後に初期化が行われる。初期化の際に行われる動作は、コンピュータ業界では周知であるので、ここでは詳細な説明は省略する。この初期化が終了すると、上記手順は次のステップ２２０へ行く。
ステップ２２０においては、キーボード要求をキーボード１８１に送るべきかどうかのチェックが行われる。「イエス」である場合には、手順はステップ２２１へ行き、そこでシステム・インターフェース１９０を通して、ホスト・コンピュータ１９１からキーボード要求が取りだされる。その後、手順はステップ２２２へ行き、そこでキーボード要求が、Ｉ／Ｏユニット１１７を通して、キーボード１８１に送られる。この手順が終了すると、手順はステップ２２０に戻り、ステップ２２０からのプログラム・ループが反復して行われる。ステップ２２０の結果が「ノー」である場合には、手順はステップ２３０へ行く。
【０００８】
ステップ２３０においては、マウス要求をマウス１８２に送るべきかどうかのチェックが行われる。「イエス」である場合には、手順はステップ２３１へ行き、そこでシステム・インターフェース１９０を通して、ホスト・コンピュータ１９１からマウス要求が取りだされる。その後、手順はステップ２３２へ行き、そこでこのマウス要求がＩ／Ｏユニット１１７を通してマウス１８２に送られる。この手順が終了すると、手順はステップ２２０に戻り、ステップ２２０からのプログラム・ループが反復して行なわれる。ステップ２３０の結果が「ノー」である場合には、手順はステップ２４０へ行く。
【０００９】
ステップ２４０においては、キーボード・データ信号が、キーボード１８１から入力中であるかどうかのチェックが行われる。「イエス」である場合には、手順はステップ２４１へ行き、そこでキーボード・データ信号が、Ｉ／Ｏユニット１１７を通してキーボード１８１から受信される。その後、手順はステップ２４２へ行き、そこで受信キーボード・データ信号が、システム・インターフェース１９０を通して、ホスト・コンピュータ１９１に送られる。この手順が終了すると、手順はステップ２２０に戻り、ステップ２２０からのプログラム・ループが反復して行われる。ステップ２４０の結果が「ノー」である場合には、手順はステップ２５０へ行く。
【００１０】
ステップ２５０においては、マウス・データ信号が、マウス１８２から入力中であるかどうかのチェックが行われる。「イエス」である場合には、手順はステップ２５１へ行き、そこでマウス・データ信号が、Ｉ／Ｏユニット１１７を通してマウス１８２から受信される。その後、手順はステップ２５２へ行き、そこで受信マウス・データ信号が、システム・インターフェース１９０を通してホスト・コンピュータ１９１に送られる。この手順が終了すると、手順はステップ２２０に戻り、ステップ２２０からのプログラム・ループが反復して行われる。ステップ２５０の結果が「ノー」である場合には、手順はステップ２２０へ行く。
【００１１】
【発明が解決しようとする課題】
上記手順は、図３のプログラム・コード・メモリ・ユニット１３２で、ファームウェアとして実行される。しかし、図３のマイクロコントローラ・アーキテクチャの一つの欠点は、プログラム・コード・メモリ・ユニット１３２に記憶されているファームウェアを再プログラムできないか、再プログラムするのが難しいということである。プログラム・コード・メモリ・ユニット１３２が、ＲＯＭである場合には、ファームウェアは固定されていて、全ＲＯＭを新しいファームウェアを記憶している新しいものと交換しない限りは更新することができない。ＥＰＲＯＭの場合には、ファームウェアを更新することができるが、その場合は、ＥＰＲＯＭを、最初、回路基板から取り外し、その後で特殊なプログラマにより再プログラムし、最後に、回路基板に再度取り付けなければならないので、再プログラム作業が不便で面倒である。それ故、再プログラム作業は非常にコストが掛かる。
【００１２】
それ故、本発明の一つの目的は、埋設フラッシュ・メモリと、フラッシュ・メモリ用のオンチップ・プログラミング機能を持つマイクロコントローラ・アーキテクチャであって、埋設フラッシュ・メモリに記憶されているファームウェアが、従来技術と比較して、再プログラミングがより便利に容易に行えるように、回路基板からマイクロコントローラを取り外さなくても、チップ上でプログラミングを行うことができるようにするマイクロコントローラ・アーキテクチャを提供することである。
【００１３】
【課題を解決するための手段】
本発明の上記および他の目的により、オンチップ・プログラミング機能を持つ、新しいマイクロコントローラ・アーキテクチャを実現することができる。動作中、マイクロコントローラは、システム・インターフェースを通して、ＰＣのような外部ユニットに接続している。本発明のマイクロコントローラ・アーキテクチャは、ＣＰＵ、主データ・バス、Ｉ／Ｏレジスタ・セット、フラッシュ・メモリ・ユニット、ラッチ・セット、マルチプレクサ・セット、および読出し／書込みコントローラを備える。
【００１４】
主データ・バスは、ＣＰＵに接続している。Ｉ／Ｏレジスタ・セットは、ＣＰＵとシステム・インターフェースとの間に接続している。フラッシュ・メモリ・ユニットは、プログラム・コードを記憶するために使用される。入力がＩ／Ｏレジスタ・セットに接続しているラッチ・セットは、フラッシュ・メモリ・ユニットにプログラムされる新しいファームウェアを受信するために使用される。マルチプレクサ・セットは、読出しモードで動作中、フラッシュ・メモリ・ユニットを選択的に主データ・バスに接続し、書込みモードの場合、フラッシュ・メモリ・ユニットをラッチ・セットの出力に接続する。読出し／書込みコントローラは、読出しモードで動作中、フラッシュ・メモリ・ユニットを主データ・バスに接続し、書込みモードの場合、フラッシュ・メモリ・ユニットをラッチ・セットの出力に接続するように、マルチプレクサ・セットを制御するための選択信号を発生することができる。読出し／書込みコントローラは、また読出しモードで動作中、ラッチ・セットを動作不能にし、書込みモードで動作中、ラッチ・セットの動作を可能にするような方法で、ラッチ・セットを制御するためのイネーブル／ディスエーブル信号を発生することができる。
【００１５】
読出しモードで動作している場合、読出し／書込みコントローラは、主データ・バスをフラッシュ・メモリに接続するような方法で、マルチプレクサ・セットを切り替え、フラッシュ・メモリ・ユニットに記憶されているプログラム・コードが、主データ・バスから取り出される。書込みモードで動作している場合には、読出し／書込みコントローラは、ラッチ・セットの出力をフラッシュ・メモリに接続するようにマルチプレクサ・セットを切り替える。Ｉ／Ｏレジスタ・セットを通して、システム・インターフェースから受信した、新しいファームウェアは、最初、ラッチ・セットに送られ、その後で、マルチプレクサ・セットを通して、ラッチ・セットからフラッシュ・メモリ・ユニットに送られ、それにより、新しいファームウェアは、フラッシュ・メモリ・ユニットに書込みを行うことができる。
【００１６】
上記の新しいマイクロコントローラ・アーキテクチャは、マイクロコントローラの埋設フラッシュ・メモリに記憶しているファームウェアが、チップ上において簡単にプログラムを行うことができるようにするオンチップ・プログラミング機能を備える。本発明を使用すれば、コンピュータ・マザーボードからマイクロコントローラ全体を取り外さなくても、ホスト・コンピュータからのソフトウェア制御によりプログラミングを行うことができる。それ故、従来技術と比較すると、プログラミング作業をより簡単に容易に行うことができる。
【００１７】
ラッチ・セットは、第一のラッチ、第二のラッチおよび第三のラッチを含む。第一のラッチは、マルチプレクサ・セットに接続している出力ポートと、主データ・バスに接続している入力ポートを有する。第一のラッチは、Ｉ／Ｏレジスタ・セットを通して、システム・インターフェースから受信した消去制御コードをラッチするために使用される。第二のラッチは、マルチプレクサ・セットに接続している出力ポートと、主データ・バスに接続している入力ポートを有する。第二のラッチは、Ｉ／Ｏレジスタ・セットを通してシステム・インターフェースから受信したデータ信号をラッチするために使用される。第三のラッチは、マルチプレクサ・セットに接続している出力ポートと、主データ・バスに接続している入力ポートを有する。第三のラッチは、Ｉ／Ｏレジスタ・セットを通してシステム・インターフェースから受信したアドレス信号をラッチするために使用される。
【００１８】
マルチプレクサ・セットは、第一のマルチプレクサ、第二のマルチプレクサおよび第三のマルチプレクサを含む。各マルチプレクサは、第一のポート、第二のポート、第三のポート、および選択制御ポートを有する。第一のポートは、主データ・バスに接続している。第二のポートは、ラッチ・セットの対応するラッチの出力ポートに接続している。第三のポートは、フラッシュ・メモリ・ユニットに接続している。選択制御ポートは、読出し／書込みコントローラから選択信号を受信するように接続している。さらに、各マルチプレクサは、読出しモードで動作している場合、第三のポートと第一のポートを相互接続するように、また書込みモードで動作している場合、第三のポートと第二のポートを相互接続するように読出し／書込みコントローラにより制御される。
【００１９】
マイクロコントローラ・アーキテクチャは、さらに、第四のマルチプレクサを備える。第四のマルチプレクサは、第一のポート、第二のポート、第三のポート、および選択制御ポートを有する。第一のポートは、第一のマルチプレクサの第一のポート、第二のマルチプレクサの第一のポート、および第三のマルチプレクサの第一のポートに接続している。第二のポートは、第二のマルチプレクサの第二のポートに接続している。第三のポートは、主データ・バスおよびＩ／Ｏレジスタ・セットに接続している。選択制御ポートは、読出し／書込みコントローラから、選択信号を受信するように接続している。同様に、第四のマルチプレクサは、読出しモードで動作している場合、第三のポートと第一のポートを相互接続するように、また書込みモードで動作している場合、第三のポートと第二のポートを相互接続するように、読出し／書込みコントローラにより制御される。
【００２０】
Ｉ／Ｏレジスタ・セットは、状態レジスタ、入力レジスタおよび出力レジスタを含む。主データ・バスと、システム・インターフェースとの間に接続している状態レジスタは、主データ・バスからシステム・インターフェースへ送られる状態データを一時的に記憶するのに使用される。主データ・バスと、システム・インターフェースとの間に接続している入力レジスタは、システム・インターフェースから受信する入力データを一時的に記憶するのに使用される。主データ・バスと、システム・インターフェースとの間に接続している出力レジスタは、主データ・バスからシステム・インターフェースへ送られる出力データを一時的に記憶するのに使用される。
添付の図面を参照しながら、好適な実施形態の下記の詳細な説明を読めば、本発明をより完全に理解することができる。
【００２１】
【発明の実施の形態】
図１および図２を参照しながら、以下に本発明のマイクロコントローラ・アーキテクチャの好適な実施形態について説明する。
図１について説明すると、参照番号３００で示す本発明のマイクロコントローラ・アーキテクチャは、ＣＰＵ３１０、クロック・ゼネレータ３１５、Ｉ／Ｏレジスタ・セット３２０（状態レジスタ３２１、入力レジスタ３２２、および出力レジスタ３２３を含む）、データ・メモリ・ユニット３３１、フラッシュ・メモリ・ユニット３３２により実行されるプログラム・コード・メモリ・ユニット３３２、プログラミング制御ユニット３５０、Ｉ／Ｏユニット３１７、およびタイマー／カウンタ３１８を備える。使用中、マイクロコントローラ３００は、システム・インターフェース３９０を通して、ＩＢＭ互換パソコン（ＰＣ）のような、ホスト・コンピュータ３９１に接続している。一方、Ｉ／Ｏユニット３１７は、キーボード３８１およびマウス３８２のような複数の周辺入力装置に接続することができる複数の接続ポートを有する。
【００２２】
ＣＰＵ３１０は、マイクロコントローラ３００の全体の動作を制御する。クロック・ゼネレータ３１５は、ＣＰＵ３１０の動作を駆動するためのクロック信号を発生するために使用される。タイマー／カウンタ・ユニット３１８は、マイクロコントローラ３００の特定の動作に対して、タイマーまたはカウンタとして選択的に使用される。
【００２３】
Ｉ／Ｏレジスタ・セット３２０は、システム・インターフェース３９０を通して、マイクロコントローラ３００とホスト・コンピュータ３９１との間を移動するＩ／Ｏデータおよびコマンドを一時的に記憶するのに使用される。状態レジスタ３２１は、システム・インターフェース３９０を通して、マイクロコントローラ３００からホスト・コンピュータ３９１に送られる状態データを一時的に記憶するのに使用される。入力レジスタ３２２は、システム・インターフェース３９０を通して、ホスト・コンピュータ３９１から受信する入力データを一時的に記憶するのに使用される。出力レジスタ３２３は、システム・インターフェース３９０を通して、マイクロコントローラ３００からホスト・コンピュータ３９１に送られる出力データを一時的に記憶するのに使用される。
【００２４】
本発明の特徴は、マイクロコントローラ３００の特定の機能を実行する制御ファームウェアを記憶するためのフラッシュ・メモリ・ユニット３３２を備えることと、フラッシュ・メモリ・ユニット３３２に記憶しているファームウェアのオンチップ・プログラミングを行うための関連プログラミング制御ユニット３５０を備えることである。その詳細については以下に説明する。
このマイクロコントローラ３００においては、プログラム・コードおよびデータは異なるメモリ・ユニットに別々に記憶される。すなわち、プログラム・コードは、フラッシュ・メモリ・ユニット３３２に記憶され、一方、マイクロコントローラの動作中に発生した一時的なデータは、揮発性メモリであるデータ・メモリ・ユニット３３１に記憶される。
【００２５】
プログラミング制御ユニット３５０は、フラッシュ・メモリ・ユニット３３２への新しいファームウェアのプログラミングを制御するのに使用される。図１に示すように、プログラミング制御ユニット３５０は、読出し／書込みコントローラ３５１、一組のマルチプレクサ３５２（第一のマルチプレクサ３６１、第二のマルチプレクサ３６２、および第三のマルチプレクサ３６３を含む）、一組のラッチ３５３（第一のラッチ３７１、第二のラッチ３７２、および第三のラッチ３７３を含む）、および独立の第四のマルチプレクサ３５４を含む。
【００２６】
マイクロコントローラ３００は、フラッシュ・メモリ・ユニット３３２上での動作を、フラッシュ・メモリ・ユニット３３２に記憶したファームウェアを実行のために取り出す場合には読出しモードに切り替えることができ、また新しいファームウェアをフラッシュ・メモリ・ユニットにプログラムする場合には書込みモードに切り替えることができる。
【００２７】
読出しモードの場合には、読出し／書込みコントローラ３５１は、主データ・バス３０５をフラッシュ・メモリ３３２に接続し、それにより、ＣＰＵ３１０が、フラッシュ・メモリ・ユニット３３２に記憶しているプログラム・コードにアクセスできるように、マルチプレクサ・セット３５２（すなわち、第一、第二および第三のマルチプレクサ３６１、３６２、３６３）を切り替える。
【００２８】
書込みモードの場合には、読出し／書込みコントローラ３５１は、ラッチ・セット３５３（すなわち、第一、第二および第三のラッチ３７１、３７２、３７３）をフラッシュ・メモリ３３２に接続するように、マルチプレクサ・セット３５２を切り替える。このモードの場合、フラッシュ・メモリ・ユニット３３２にプログラムされる新しいプログラムは、最初、システム・インターフェース３９０を通して、ホスト・コンピュータ３９１により入力レジスタ３２２に送られ、その後、主データ・バス３０５を通してラッチ・セット３５３に送られる。それ故、ラッチ・セット３５３が、マルチプレクサ・セット３５２を通して、フラッシュ・メモリ・ユニット３３２に接続している場合には、ラッチ・セット３５３に一時的に記憶された新しいプログラム・コードをフラッシュ・メモリ・ユニット３３２に送り、その内部に書き込むことができる。
【００２９】
第四のマルチプレクサ３５４も、読出し／書込みコントローラ３５１により制御される。読出しモードの場合、読出し／書込みコントローラは、主データ・バス３０５を出力レジスタ３２３に接続するように第四のマルチプレクサ３５４を切り替える。書込みモードの場合には、第四のマルチプレクサ３５４は、フラッシュ・メモリ・ユニット３３２に、すでにプログラムした新しいプログラム・コードを確認のために取り出して、ホスト・コンピュータ３９１に送ることができるように、第二のマルチプレクサ３６２のＢポートを出力レジスタ３２３に接続する。
【００３０】
フラッシュ・メモリ・ユニット３３２は、プログラム・コード用のアドレス・データを受信するためのアドレス・ポートＡ、データ入力および出力用のデータ・ポートＤ、および消去／書込み制御コードを受信するための制御ポートＣを有する。アドレス・ポートＡは、第三のマルチプレクサ３６３のＹポートに接続し、データ・ポートＤは、第二のマルチプレクサ３６２のＹポートに接続し、制御ポートＣは、第一のマルチプレクサ３６１のＹポートに接続している。ラッチ・セット３５３の第一、第二および第三のラッチ３７１、３７２、３７３は、読出し／書込みコントローラ３５１からの単一のイネーブル／ディスエーブル信号により制御される。しかし、実際には、第一、第二および第三のラッチ３７１、３７２、３７３は、所定のシーケンスで発生した異なる信号によっても動作させることができる。例えば、入力レジスタ３２２の幅が８ビット、データ・ポートＤの幅が８ビット、アドレス・ポートＡの幅が１１ビットである場合、読出し／書込みコントローラ３５１は、下位の８ビットおよび上位の８ビットを継続してフラッシュ・メモリ・ユニット３３２に送ることができるように、受信したデータを所定の制御シーケンスでラッチするため、対応するラッチが動作できるように設計することができる。
【００３１】
通常の動作中には、マイクロコントローラ３００は、フラッシュ・メモリ・ユニット３３２に記憶したプログラム・コードを取り出し、実行するために、読出しモードでフラッシュ・メモリ・ユニット３３２を動作する。このモードの場合、読出し／書込みコントローラ３５１は、選択信号ＳＡを第一の論理状態に切り替え、それにより、マルチプレクサ・セット３５２（すなわち、第一、第二および第三のマルチプレクサ３６１、３６２、３６３すべて）に、主データ・バス３０５をフラッシュ・メモリ・ユニット３３２に接続させ、同時に、第四のマルチプレクサ３５４を主データ・バス３０５に接続させる。そうすることにより、ＣＰＵ３１０は、フラッシュ・メモリ・ユニット３３２に記憶したプログラム・コードを取り出し、実行することができる。
フラッシュ・メモリ・ユニット３３２に記憶したファームウェアを更新する必要がある場合、ホスト・コンピュータ３９１は、システム・インターフェース３９０を通して、マイクロコントローラ３００にプログラミング要求信号を送る。それに応えて、マイクロコントローラ３００は、フラッシュ・メモリ・ユニット３３２ファームウェアの動作を書込みモードに切り替える。
【００３２】
書込みモードの場合には、フラッシュ・メモリ・ユニット３３２にプログラムする新しいファームウェアが、システム・インターフェース３９０を通して、ホスト・コンピュータ３９１によりラッチ・セット３５３に送られ、同時に、読出し／書込みコントローラ３５１は、選択信号ＳＡを第二の論理状態に切り替え、それにより、マルチプレクサ・セット３５２（すなわち、第一、第二および第三のマルチプレクサ３６１、３６２、３６３すべて）に、フラッシュ・メモリ・ユニット３３２をラッチ・セット３５３（すなわち、第一、第二および第三のラッチ３７１、３７２、３７３）の出力に接続させる。新しいファームウェアは、その後、消去／書込み制御コードが、第一のラッチ３７１にラッチされるように、ラッチ・セット３５３に一時的に記憶される。新しいプログラム・コードは、第二のラッチ３７２に記憶される。アドレス・データは、第三のラッチ３７３にラッチされる。それ故、マルチプレクサ・セット３５２が、ラッチ・セット３５３をフラッシュ・メモリ・ユニット３３２に接続している場合には、消去／書込み制御コードは、最初、フラッシュ・メモリ・ユニット３３２の古いファームウェアの消去を制御するために、フラッシュ・メモリ・ユニット３３２に送られる。その後、新しいプログラム・コードが、第二のラッチ３７２から、フラッシュ・メモリ・ユニット３３２に送られ、第三のラッチ３７３にラッチされているアドレス・データにより指定されたアドレスに記憶される。
【００３３】
選択信号ＳＡが第二の状態である場合には、この信号により、そのＹポートとＢポートとを相互接続し、それにより、第二のマルチプレクサ３６２のＢポートを接続し、フラッシュ・メモリ・ユニット３３２のＤポートが、出力レジスタ３２３に接続するように、第四のマルチプレクサ３５４が切り替えられる。それ故、プログラミング・プロセスが終了すると、ホスト・コンピュータ３９１は、システム・インターフェース３９０および出力レジスタ３２３を通して、新しいプログラム・コードを確認するために、フラッシュ・メモリ・ユニット３３２のプログラム済みの新しいプログラム・コードに、直ちにアクセスすることができる。
確認の結果、新しいプログラム・コードが正しい場合には、ホスト・コンピュータ３９１は、システム・インターフェース３９０を通して、マイクロコントローラ３００に肯定応答信号を発行し、それにより、マイクロコントローラ３００が、フラッシュ・メモリ・ユニット３３２上の動作を読出しモードに切り替える。これにより、新しいファームウェアのフラッシュ・メモリ・ユニット３３２へのプログラミングが終了する。
【００３４】
このアーキテクチャを使用して、マイクロコントローラ３００は、Ｉ／Ｏユニット３１７を通してマイクロコントローラ３００に接続しているキーボード３１８およびマウス３８２を含む周辺入力装置を制御するのに使用する、フラッシュ・メモリ・ユニット３３２に記憶したプログラム・コードを更新することができる。キーボード／マウス入力制御ファームウェアを更新する必要がある場合には、システム・インターフェース３９０を通して、ホスト・コンピュータ３９１からマイクロコントローラ３００へプログラミング要求が発行される。それに応じて、マイクロコントローラ３００は、フラッシュ・メモリ・ユニット３３２への新しいファームウェアのプログラミングを開始するために、プログラミング制御ユニット３５０を作動させる。その後で、周辺入力装置の入力制御を行うために、新しいプログラム・コードが実行される。
【００３５】
図２は、図１の本発明のマイクロコントローラの埋設フラッシュ・メモリ３３２に記憶されたファームウェアに含まれる手順のステップを示すフローチャートである。
図１および図２について説明すると、第一のステップ４１０においては、コンピュータ３９１の電源をオンにするか、リセットした直後に初期化が行われる。初期化の際に行われる動作は、コンピュータ業界では周知であるので、ここでは詳細な説明は省略する。初期化が終了すると、上記手順は次のステップ４２０へ行く。
【００３６】
ステップ４２０においては、キーボード要求をキーボード３８１に送るべきかどうかのチェックが行われる。「イエス」である場合には、手順はステップ４２１へ行き、そこでシステム・インターフェース３９０を通して、ホスト・コンピュータ３９１からキーボード要求が取り出される。その後、手順はステップ４２２へ行き、そこでキーボード要求が、Ｉ／Ｏユニット３１７を通して、キーボード３８１に送られる。この手順が終了すると、手順はステップ４２０に戻り、ステップ４２０からのプログラム・ループが反復して行われる。ステップ４２０の結果が「ノー」である場合には、手順はステップ４３０へ行く。
【００３７】
ステップ４３０においては、マウス要求をマウス３８２に送るべきかどうかのチェックが行われる。「イエス」である場合には、手順はステップ４３１へ行き、そこでシステム・インターフェース３９０を通して、ホスト・コンピュータ３９１からマウス要求が取り出される。その後、手順はステップ４３２へ行き、そこでマウス要求がＩ／Ｏユニット３１７を通して、マウス３８２に送られる。この手順が終了すると、手順はステップ４２０に戻り、ステップ４２０からのプログラム・ループが反復して行われる。ステップ４３０の結果が「ノー」である場合には、手順はステップ４４０へ行く。
【００３８】
ステップ４４０においては、キーボード・データ信号が、キーボード３８１から入力中であるかどうかのチェックが行われる。「イエス」である場合には、手順はステップ４４１へ行き、そこでキーボード・データ信号が、Ｉ／Ｏユニット３１７を通して、キーボード３８１から受信される。その後、手順はステップ４４２へ行き、そこで受信キーボード・データ信号が、システム・インターフェース３９０を通して、ホスト・コンピュータ３９１に送られる。この手順が終了すると、手順はステップ４２０に戻り、ステップ４２０からのプログラム・ループが反復して行われる。ステップ４４０の結果が「ノー」である場合には、手順はステップ４５０へ行く。
【００３９】
ステップ４５０においては、マウス・データ信号が、マウス３８２から入力中であるかどうかのチェックが行われる。「イエス」である場合には、手順はステップ４５１へ行き、そこでマウス・データ信号が、Ｉ／Ｏユニット３１７を通して、マウス３８２から受信される。その後、手順はステップ４５２へ行き、そこで受信マウス・データ信号が、システム・インターフェース３９０を通して、ホスト・コンピュータ３９１に送られる。この手順が終了すると、手順はステップ４２０に戻り、ステップ４２０からのプログラム・ループが反復して行われる。ステップ４５０の結果が「ノー」である場合には、手順はステップ４６０へ行く。
【００４０】
ステップ４６０においては、プログラミング要求信号が、受信中であるかどうかのチェックが行われる。「イエス」である場合には、手順はステップ４６１へ行き、そこでフラッシュ・メモリ・ユニット３３２上の動作が、書込みモードに切り替えられる。その後、手順はステップ４６２に行き、そこで新しいプログラム・コードが、システム・インターフェース３９０を通して、ホスト・コンピュータ３９１から受信され、フラッシュ・メモリ・ユニット３３２の特定のアドレスに書き込まれる。書込み動作が終了すると、フラッシュ・メモリ・ユニット３３２に記憶された新しいプログラム・コードが、確認のために取り出され、ホスト・コンピュータ３９１に送られる。この手順が終了すると、手順はステップ４２０に戻り、ステップ４２０からのプログラム・ループが反復して行われる。ステップ４６０の結果が「ノー」である場合には、手順はステップ４２０へ戻る。
【００４１】
つまり、本発明は、マイクロコントローラの埋設フラッシュ・メモリ・ユニットに記憶したファームウェアがチップ上で、容易にプログラムを行えるようにするオンチップ・プログラミング機能を持つ、新しいマイクロコントローラ・アーキテクチャを提供する。マイクロコントローラは、例えば、ホスト・コンピュータと、キーボードおよびマウスのような複数の周辺入力装置との間に接続しているデータ入力コントローラとして使用することができる。キーボード／マウス入力制御ファームウェアを更新する必要がある場合には、要求は、最初、ホスト・コンピュータからマイクロコントローラに送られ、それに応じて、マイクロコントローラのプログラミング制御ユニットが、マイクロコントローラの埋設フラッシュ・メモリへの新しいファームウェアのプログラミングを制御する。ホスト・コンピュータ側には、ユーザが、マイクロコントローラを取り外さないで、ソフトウェア制御によりプログラミングを行い、その後、プログラミングを行うための特殊なプログラミング装置を使用することができるように、装置ドライバを設置することができる。
【００４２】
それ故、本発明のマイクロコントローラ・アーキテクチャは、従来技術より優れている。本発明を使用すれば、コンピュータのマザーボードから、マイクロコントローラ・ユニット全体を取り外さないで、ホスト・コンピュータからのソフトウェア制御によりプログラミングを行うことができる。それ故、従来技術と比較すると、プログラミング作業をより簡単にまたより容易に行うことができる。
例示としての好適な実施形態により本発明を説明してきたが、本発明の範囲は開示した実施形態に限定されないことを理解されたい。それどころか、種々の修正および類似の装置も本発明に含まれる。それ故、上記すべての修正および類似の装置がすべて本発明の範囲に含まれるように特許請求の範囲を広く解釈すべきである。
【図面の簡単な説明】
【図１】本発明のオンチップ・プログラミング機能を持つマイクロコントローラのアーキテクチャを示すブロック図である。
【図２】図１の本発明のマイクロコントローラの埋設フラッシュ・メモリに記憶された、ファームウェアに含まれる手順のステップを示すフローチャートである。
【図３】従来のマイクロコントローラの簡単なブロック図である。
【図４】図３の従来のマイクロコントローラのメモリに記憶されたファームウェアに含まれる手順のステップを示すフローチャートである。
【符号の説明】
３００    マイクロコントローラ
３０５    主データ・バス
３１０    ＣＰＵ
３１８    タイマー／カウンタ・ユニット
３２０    Ｉ／Ｏレジスタ・セット
３３２    フラッシュ・メモリ・ユニット
３５０    プログラミング制御ユニット
３５１    読出し／書込みコントローラ
３５２    マルチプレクサ・セット
３５３    ラッチ・セット
３５４    第四のマルチプレクサ
【図１】
0004042940.tif 000002
【図２】
0004042940.tif 000003
【図３】
0004042940.tif 000004
【図４】
0004042940.tif 000005