(57)【特許請求の範囲】
【請求項１】
電気的にプログラム可能な設定ポイントを備え、前記プログラム可能な設定ポイントに格納された設定データによって定まるプログラム可能な設定を有する設定可能ロジックアレイと、
前記設定データを格納するのに適合したプログラム可能な設定メモリと、
前記集積回路に対するミッション機能用の命令を格納し、前記設定データを前記設定メモリから前記設定可能ロジックアレイ内の前記プログラム可能な設定ポイントへ転送するのに使用する設定機能用の命令を格納するのに適合したメモリと、
前記メモリと接続し、前記メモリから前記各命令を取り出し、実行するプロセッサと、
インサーキットプログラム機能による上書きまたは修正から保護され、且つ、前記設定メモリから前記設定ポイントへの前記設定データの不完全な転送から回復するために使用される設定ロードバックアップ機能の命令を格納する保護メモリと、
を備えてなることを特徴とする集積回路。
【請求項２】
前記メモリは、不揮発性メモリを備えていることを特徴とする請求項１に記載の集積回路。
【請求項３】
前記メモリは、フローティングゲートメモリを備えていることを特徴とする請求項１に記載の集積回路。
【請求項４】
前記メモリは、読み出し専用メモリを備えていることを特徴とする請求項１に記載の集積回路。
【請求項５】
前記メモリは、前記設定機能用の第１の不揮発性メモリ手段と、前記ミッション機能用の第２のメモリ手段を備えていることを特徴とする請求項１に記載の集積回路。
【請求項６】
前記メモリは、前記設定機能用の第１の揮発性メモリ手段と、前記ミッション機能用の第２のメモリ手段を備えていることを特徴とする請求項１に記載の集積回路。
【請求項７】
前記プロセッサと接続する監視タイマを有し、
前記設定機能には、前記監視タイマの使用が含まれることを特徴とする請求項１に記載の集積回路。
【請求項８】
前記設定機能には、前記集積回路上の入力ポートを介して前記プログラム可能な設定メモリのロードが含まれることを特徴とする請求項１に記載の集積回路。
【請求項９】
前記設定機能には、前記集積回路上の入力ポートを介して暗号化された設定データの受け取りと、前記設定データの復号化、及び、復号化された設定データでの前記プログラム可能な設定メモリのロードが含まれることを特徴とする請求項１に記載の集積回路。
【請求項１０】
前記設定機能には、前記集積回路上の入力ポートを介して圧縮された設定データの受け取りと、前記設定データの伸張、及び、圧縮された設定データでの前記プログラム可能な設定メモリのロードが含まれることを特徴とする請求項１に記載の集積回路。
【請求項１１】
前記プログラム可能な設定メモリは、不揮発性メモリを備えることを特徴とする請求項１に記載の集積回路。
【請求項１２】
前記プログラム可能な設定メモリは、揮発性メモリを備えることを特徴とする請求項１に記載の集積回路。
【請求項１３】
前記電気的にプログラム可能な設定ポイントは、不揮発性の電荷プログラム可能なメモリセルを備えることを特徴とする請求項１に記載の集積回路。
【請求項１４】
前記設定機能は、前記集積回路上の入力ポートを介して前記プログラム可能な設定メモリのロードを含み、
前記ロード機能をサポートする前記プロセッサと前記設定メモリとの間のインタフェース、及び、前記設定可能ロジックアレイへの設定データの転送をサポートする前記設定メモリと前記設定可能ロジックアレイとの間のインタフェースを備えることを特徴とする請求項１に記載の集積回路。
【請求項１５】
前記設定機能は、前記集積回路上の入力ポートを介して前記プログラム可能な設定メモリのロードを含み、
前記ロードと前記設定可能ロジックアレイへの設定データの転送をサポートする前記プロセッサと設定メモリとの間のインタフェース、及び、前記設定可能ロジックアレイへの設定データの転送をサポートする前記プロセッサと前記設定可能ロジックアレイとの間のインタフェースを備えることを特徴とする請求項１に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムオンチップ集積回路、及び、用途特化型或いはカスタムオンチップ型のロジックデバイスとして適用可能な内蔵型の設定可能（Ｃｏｎｆｉｇｕｒａｂｌｅ）ロジックアレイを含むその他のプロセッサデバイスに関する。
【背景技術】
【０００２】
例えば、プログラム可能ロジックデバイス（ＰＬＤ）、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、更に一般的には、プログラム可能ロジックアレイ（ＰＬＡ）として知られている製品を含む設定可能ロジックアレイは、益々高密度のものが設計されている。かかる高密度デバイスを設定（Ｃｏｎｆｉｇｕｒｅ）するための技術は、典型的には、チップ上のまたは通常システムバスを介して設定可能ロジックアレイと通信するホストコンピュータ上で実行される専用ロジックを必要とする。設定可能ロジックアレイコア用の設定データの管理は複雑なロジックを要する（例えば、ローマンに付与された米国特許第６０４９２２２号（特許文献１）参照）。当該デバイスを設定するための専門技術により、当該技術が適用可能な周辺環境が限定される。
【０００３】
設定可能ロジックアレイは、ユーザが当該デバイス上にユーザ指定機能を実行するために設けられたプログラム可能素子の設定を指定する設定データをローディングすることにより設定可能となっている。尚、当該デバイス上のプログラム可能素子は、プログラム可能設定ポイントと言われる。例えば、ＦＰＧＡはロジック素子のアレイと、設定データを用いてフィールド（使用現場）でプログラム可能な何千ものプログラム可能内部接続付きの配線接続を備える。設定データは、チップ上にＳＲＡＭのようなメモリセルで通常実現されるメモリ素子で形成される設定ポイントに保存される。他の設定可能ロジックアレイは、ＲＯＭ（読み出し専用メモリ）、フラッシュメモリ、ＥＰＲＯＭ（電気的プログラム可能読み出し専用メモリ）のようなメモリセルで実現される不揮発性設定メモリを含む。
【０００４】
設定可能ロジックアレイにおけるプログラム可能スイッチ及び他の設定ポイントとして、電荷プログラム可能な不揮発性メモリ素子が使用されてきた（例えば、米国特許第５２４７４７８号（特許文献２）、米国特許第５７６４０９６号（特許文献３）、及び、米国特許第６１２２２０９号（特許文献４）、参照）。
【０００５】
設定可能ロジックアレイにおける一つの問題点は、チップがプリント回路ボードに装着されている場合、または、機能しているシステムに組み込まれている場合におけるチップ上への設定データのローディングである。この点に関しては、米国特許第４８７９６８８号の「インシステム・プログラム可能ロジックデバイス」（特許文献５）、米国特許第５９９５７４４号の「プログラム可能デバイスのネットワーク設定」（特許文献６）、米国特許第６０２８４４５号の「ＦＰＧＡ設定用のデコーダ構成とＦＰＧＡ設定方法」（特許文献７）、米国特許第６０４９２２２号の「内蔵型メモリを使用するFPGA設定」（特許文献８）、及び、米国特許第６１０２９６３号の「ＰＬＤのインシステム再設定を支援するインシステム・プログラム及び検証能力を備えた、電気的に消去可能で再プログラム可能な不揮発性集積回路ストレージデバイス」（特許文献９）等を参照されたい。
【特許文献１】米国特許第６０４９２２２号明細書
【特許文献２】米国特許第５２４７４７８号明細書
【特許文献３】米国特許第５７６４０９６号明細書
【特許文献４】米国特許第６１２２２０９号明細書
【特許文献５】米国特許第４８７９６８８号明細書
【特許文献６】米国特許第５９９５７４４号明細書
【特許文献７】米国特許第６０２８４４５号明細書
【特許文献８】米国特許第６０４９２２２号明細書
【特許文献９】米国特許第６１０２９６３号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００６】
システムオンチップ（ＳＯＣ）デバイスは更にシステムの複雑さを増す。つまり、ＳＯＣシステムは設計が難しく、設計変更が高くつく。プロセッサコアに設定可能ロジックアレイを追加することにより、そのプロセッサコアに関連するロジックは変更可能となり設計がもっと容易になる。従って、設定可能ロジックアレイ中のロジックは使用するプログラム可能ロジックに関連する業界ツールを用いて設定可能であり、他方、プロセッサコアは従来のソフトウェアプログラミング技術を用いてプログラム可能である。それにも拘らず、設定可能ロジックアレイモジュールに対する設定データの管理上の問題は依然と存在する。ＳＯＣ技術は、設計が難しく、設計変更が高くつくという複雑システムにおける古典的問題を抱える。プロセッサコアと設定可能ロジックアレイの組み合わせは、ＰＬＡ設定ツールを使用したロジック設定を許容することで、プロセッサに関連するロジックを変更する能力を改良する一方法である。
【０００７】
システムオンチップ設計におけるより大きな自由度と設定可能ロジックの設定管理に対する技術改良の要望がある。
【０００８】
本発明は、上述の問題点に鑑みてなされたものであり、内蔵型設定可能ロジックを用いたシステムオンチップ設計に対しより大きな自由度を提供し、設定可能ロジックの設定ロードを提供する。
【課題を解決するための手段】
【０００９】
本発明は、設定可能ロジックアレイ、プロセッサコア、及び、メモリを備えるシステムオンチップ集積回路を提供する。該メモリは、システムオンチップに対するミッション機能用の命令と外部ソースから当該集積回路の入力ポートを介して当該集積回路上へ設定データをロードするために使用される設定ロード機能用の命令を格納するのに適応している。プロセッサコアは、メモリからそれらの命令をフェッチして実行する。
【００１０】
幾つかの実施態様において、前記メモリは、設定可能ロジックアレイ内の電気的にプログラム可能な設定ポイントに設定データをロードするために用いる設定機能用命令も格納する。他方、幾つかの実施態様において、該設定機能は、設定可能ロジックアレイに関連するそれに特化したロジックを用いて実行される。プロセッサと設定可能ロジックアレイまたはチップ上の設定可能ロジック間のインタフェースは該設定機能をサポートする。
【００１１】
前記メモリは、設定ロード機能用の命令を格納する第１メモリアレイを含み、一実施態様では、その第１メモリアレイは、読み出し専用メモリ、フローティングゲートメモリ、窒化物ＭＯＳメモリ等の不揮発性メモリである。同様に、設定機能用の命令は前記第１メモリアレイに格納され得る。好ましくは、設定ロード機能用の命令は、プログラム可能メモリに格納され、その結果、設定ロード機能が、設定データの種々のリモートソース（遠隔のデータ源）、及び、そのリモートソースとの通信経路を確立するためのプロトコルに適応するために回路内で変更できる。
【００１２】
プロセッサコアによって実行されるように設定された方法で設定機能とオンチップでの設定ロード機能の少なくとも何れかを提供することにより、本発明のシステムオンチップ集積回路が、設定可能ロジックアレイの設定ロードが好ましい広範な環境に容易に適用可能となる。
【００１３】
前記ミッション機能は、使用中におけるシステムのミッションを達成するユーザ指定命令と用途指定命令の少なくとも何れか一方を含む。前記メモリは、一実施態様において、高速ＳＲＡＭや高速ＤＲＡＭ等の揮発性メモリを用いて実現されるミッション機能用の命令を格納するメモリアレイを備える。他の実施態様において、ミッション機能用の命令を格納するメモリアレイは、読み出し専用メモリ、フローティングゲートメモリ、窒化物ＭＯＳメモリ等の不揮発性メモリを含んでもよい。また、幾つかの実施態様において、ミッション機能用の命令を格納するメモリアレイは、揮発性メモリと不揮発性メモリを組み合わせて含んでもよい。
【００１４】
別の実施態様において、インシステム設定ロード用及び前記ミッション機能の設定ロードの命令は、チップ上の不揮発性メモリに格納される。このように、設定可能ロジックアレイに対する設定データと前記ミッション機能に使用される命令の両方のローディングが、回路ボードやその他のシステム内にチップが実装された後に、そのシステムオンチップ内にプログラム可能となる。
【００１５】
幾つかの実施態様では、設定ロード機能と設定機能の少なくとも何れか一方は監視タイマを使用する工程を含む。該集積回路はプロセッサに連絡する監視タイマ回路を備える。
【００１６】
設定可能ロジックアレイは、該設定可能ロジックアレイ内の電気的にプログラム可能な設定ポイントに格納された設定データによって定義されるプログラム可能な設定を有する。例えば、前記電気的にプログラム可能な設定ポイントは、フローティングゲートメモリセル、他の電荷プログラム可能な不揮発性メモリセルを備える。設定データは、設定可能ロジックアレイの設定処理中に設定ポイントに転送される。
【００１７】
幾つかの実施態様において、設定データの格納に適応したプログラム可能な設定メモリが集積回路上に含まれている。かかる実施態様に応じて、設定機能は前記設定メモリから設定可能ロジックアレイ内のプログラム可能設定ポイントへの設定データの転送を含む。また、設定ロード機能は、システムオンチップ集積回路上の入力ポートを介して設定データのリモートソースから前記設定メモリへの設定データのローディングを含む。幾つかの実施態様において、前記プログラム可能な設定メモリは、フローティングゲートメモリ、または、他の電荷プログラム可能な不揮発性メモリ等の不揮発性のプログラム可能なメモリセルを用いて実現される。幾つかの実施態様において、前記プログラム可能な設定メモリは、設定可能ロジックアレイの迅速な設定変更をサポートするために高速ＳＲＡＭを用いて実現される。また、幾つかの実施態様は、設定データのオンチップでの格納と操作をサポートするために、不揮発性メモリと揮発性の高速メモリの両方を含む。
【００１８】
更に、他の実施態様において、前記プロセッサコアは、リセット等の初期化イベントに応答して、設定ロード機能及び設定機能を実行する。本発明に係るＳＯＣ（システムオンチップ）集積回路の実施態様は、監視タイマを含み、該監視タイマ期間の終了によって初期化イベントが起動される。設定ロード機能は、監視タイマ期間をリモートソースから設定データを受信する手順に適した期間に設定する手順を含む。もし、該監視タイマ期間が終了すると、設定ロード機能の再実行を含む初期化機能が実行される。
【００１９】
更に、他の実施態様において、前記メモリは、設定ロード機能、ミッション機能、及び、設定機能用の命令を格納する。かかる実施態様において、第１設定ロード機能が、設定ロード機能による上書きや修正から保護されたメモリ内に格納される。該第１設定ロード機能は、保護されたメモリに対して予め設定されたデフォルト位置から設定データを提供する経路を提供する。第２設定ロード機能が、保護されていないメモリに格納され、前記デフォルト位置から変化可能な設定データのリモートソースとの通信に用いられる。もし、第２設定ロード機能を変更する設定ロード動作の実行中に初期化イベントが発生した場合、該設定ロード動作の回復動作のために、第１設定ロード機能を使用できる。
【００２０】
本発明の他の特徴及び長所は、後述する図面、発明の実施形態、及び、特許請求の範囲の開示より明らかとなる。
【発明を実施するための最良の形態】
【００２１】
本発明に係るシステムオンチップ集積回路の実施の形態につき、図１〜図８を参照して説明する。図１に、基本的なシステムオンチップ（ＳＯＣ）集積回路１０を示す。集積回路１０は、例えば、当業界で周知の標準的な８０５１またはＡＲＭモジュール等のマイクロコントローラ・コアモジュール１１を備える。また、別態様として、ディジタルシグナルプロセッサコア、高性能ＲＩＳＣプロセッサコア、または、その他のマイクロプロセッサモジュール、ディジタルシグナルプロセッサモジュール等の他のデータプロセッサコアを、前記マイクロコントローラ・コアモジュール１１と置換または追加してもよい。集積回路１０は、更に、保護されたメモリ（以下、「保護メモリ」と言う。）１３とプログラム可能メモリ１４を含む。保護メモリ１３は、典型的にはブート機能等を格納し、上書きや修正から保護されている。プログラム可能メモリ１４は、典型的には集積回路１０に対するミッション機能を格納している。集積回路１０は、更に入出力構造１２を備え、集積回路１０へ入力する或いは集積回路１０から出力するシリアルまたはパラレルまたはその両方のデータ経路を提供する。
【００２２】
集積回路１０内には、設定可能ロジックアレイ１５がプロセッサコア１１を補完すべく設けられている。設定可能ロジックアレイ１５は、フィールドプログラム可能ゲートアレイまたはその他のタイプの設定可能ロジックモジュールを用いて実現される。設定可能ロジックアレイ１５は、その機能を定義するための設定データを格納する設定ポイントを備える。典型的には、設定可能ロジックアレイ１５は、特化されたロジックを実行して、前記ミッション機能を追加する目的で、ＳＯＣ集積回路上に含まれる。本実施例では、保護メモリ１３とプログラム可能メモリ１４の一方が、プロセッサコア１１によって実行される命令を格納する。該命令は、設定データを設定可能ロジックアレイ１５の前記設定ポイントに転送する設定機能を実行するロジックを含む。該命令は、また、入出力構造１２を介して設定データを外部ソースから前記集積回路上にローディングするための通信経路を確立する設定ロードを実行するロジックを含む。
【００２３】
図２は、ＳＯＣ集積回路１０の変形例の簡略化されたブロック図である。図２に示す実施例において、オンチップ・プロセッサが設定可能ロジックアレイ１５の一部（セグメント１５Ａ）によって実現されている。該セグメント１５Ａに対する設定データは、セグメント１５Ａ内の不揮発性の設定ポイント内、或いは、集積回路１０上の保護メモリ１３内に格納されている。本実施例では、集積回路１０の初期化によって、設定データが保護メモリ１３からセグメント１５Ａに転送される。設定可能ロジックアレイ１５のセグメント１５Ａで構成されるプロセッサは、マイクロコントローラコア１１または他のプロセッサコアと同様に命令を実行する。
【００２４】
図３は、本発明に係るＳＯＣ集積回路１０の他の変形例の簡略化されたブロック図である。図３に示す実施例において、設定メモリ１６が集積回路１０のチップ上に含まれる。設定メモリ１６は、マイクロコントローラコア１１または他のチップ上の設定ロジックの制御下で初期化とともに設定可能ロジックアレイ１５に転送される設定可能ロジックアレイ１５の設定データを格納する。設定メモリ１６は、製造段階において、設定可能ロジックアレイ１５の最小限の設定データセットを確立するために読み出し専用メモリを用いて実現される。別システムにおいて、設定メモリ１６は、プログラム可能であり、マイクロコントローラコア１１が実行する制御命令の下、設定ロード機能を用いて外部ソースからロード可能である。更に別システムでは、設定メモリ１６は、読み出し専用メモリとプログラム可能メモリの組み合わせで構成される。
【００２５】
図４は、本発明の実施形態におけるＳＯＣ集積回路１０のより詳細な機能ブロック図である。本実施形態において、図４に示す各構成要素は全て単一の集積回路チップ上に構成されている。該チップは、マイクロコントローラコア１００を含み、該マイクロコントローラコア１００は、特定目的の回路または図２を参照して説明したような設定可能ロジックアレイのセグメントを用いて実現される。マイクロコントローラコア１００は、ブートベクタ１０１と監視タイマ１０３をサポートするのに用いられるタイマ回路１０２を備える。マイクロコントローラコア１００は、入出力ポート１０４、少なくとも１つの割り込みライン１０５、及び、他の信号入力と出力１０６をサポートする。集積回路内のメモリはマイクロコントローラコア１００によって実行される命令を格納する。該メモリは、集積回路上の設定可能ロジックアレイ１１０をサポートする設定ロード機能と設定機能を含む設定ハンドラのための命令を格納する第１メモリアレイ１０７を含む。幾つかの実施態様では、該設定ハンドラは、割り込み信号や監視タイマのリセット等によって起こるリセットのような初期化イベントに応答して実行される初期化機能を含む。該メモリは、ＳＯＣ集積回路に対するミッション機能用の命令を格納する第２メモリアレイ１０８を含む。該メモリは、ブート機能、インサーキット（回路内）プログラム機能、及び、設定可能ロジックアレイの設定ロードバックアップ機能を含む保護された機能を格納する第３メモリアレイ１０９を含む。第３メモリアレイ１０９は、リセットイベント及びインサーキットプログラム手順や設定ロード手順の失敗等の初期化機能中のシステムの回復を提供するＩＣＰ機能によって上書きや修正から保護されている。
【００２６】
該メモリは、マスクＲＯＭ、フラッシュメモリ、ＳＲＡＭメモリ、及び、その他特定の実現に適した同等のメモリを含む、種々のメモリセル技術を用いて実現される。典型的には、保護された第３メモリアレイ１０９は、マスクＲＯＭ、フラッシュメモリ等の不揮発性メモリで実現される。フラッシュメモリまたはその他の電気的にプログラム可能なメモリで実現される場合、設定ロード動作や偶発的な上書きや修正から第３メモリアレイ１０９を保護するロジック構成が実現される。
【００２７】
図４に示す実施例では、集積回路上の設定可能ロジックアレイ１１０は、フラッシュベースの設定可能ロジックアレイで実現されている。フラッシュベースの設定可能ロジックアレイにおいては、前記設定ポイントが不揮発性であるので、設定データはリセットや電源遮断が起きても保持される。
【００２８】
マイクロコントローラコア１００と設定可能ロジックアレイ１１０間のインタフェースは集積回路上に形成される。該インタフェースは、当業界で周知の他の構造の中において、データレジスタ１１１、設定レジスタ１１２、及び、タイミングレジスタ１１３を含み、これらレジスタによって、データ、設定データ、及び、タイミング信号がモジュール間でやり取りされる。ステータスレジスタ１１５は、設定データを用いた設定可能ロジックアレイの設定を確実に成功させるためのプロトコル中の設定機能によって利用される。
【００２９】
マイクロコントローラコア１００は、マルチプレクサ１１４で代表される命令パスを介して前記各メモリアレイ１０７，１０８，１０９を含む該メモリから命令を取り出す。集積回路上に含まれる、例えばＳＲＡＭやレジスタアレイを含む他のメモリ構造は、マイクロコントローラコア１００または設定可能ロジックアレイ１１０によって実行される機能をサポートする。
【００３０】
図４に示す実施例では、第１メモリアレイ１０７に格納された設定ハンドラの設定ロード機能がＳＯＣ集積回路と設定データのリモートソースとの間の通信経路を確立する。該通信経路は、入出力ポート１０４を介して設定データを受信する。設定データは、設定ハンドラの設定機能によって設定レジスタ１１２を介して設定可能ロジックアレイ１１０内のフラッシュベースの設定ポイントに転送される。
【００３１】
設定ロード動作中のリセットやその他の初期化が発生すると、当該設定ロード機能は再実行される。
【００３２】
保護メモリ１０９またはその他のメモリにＩＣＰプログラムも格納される。ＩＣＰプログラムは、設定ハンドラを上書きまたは修正するのに用いられるので、設定ロード機能は、ユーザが選択したリモートソースから設定データを受信するのに適合することができる。これらの実施例において、設定可能ロジックアレイの設定ロードバックアップ機能が、保護メモリアレイ１０９に格納されている。第１メモリアレイ１０７に格納された設定ハンドラが変化した場合、システムは保護メモリアレイ１０９に格納された機能を用いて回復される。尚、本発明によって使用に適するインサーキットプログラム機能は、米国特許第６４０１２２１号、米国特許第６４９３７８８号、米国特許第５９０１３３０号の各明細書に詳細に記載されている。
【００３３】
図５は、本発明に係るＳＯＣ集積回路の他の構成例を示す。図５において、図４と同様の構成要素には共通の参照符号を付している。図５に示す変形構成例によれば、設定可能ロジックアレイ１５０は、フラッシュベースの設定可能ロジックアレイまたは他の不揮発性設定ポイントベースの設定可能ロジックアレイを用いて実現する必要はない。例えば、設定可能ロジックアレイ１５０は、ＳＲＡＭベースの設定ポイントを有する標準的なフィールドプログラム可能ゲートアレイ（ＦＰＧＡ）を用いて実現できる。
【００３４】
設定可能ロジックアレイ１５０に対する設定データは、マイクロコントローラコア１００がアクセス可能な集積回路上のメモリの一部として形成される不揮発性設定データメモリアレイ１５１内に格納されている。本実施例では、設定データメモリアレイ１５１とマイクロコントローラコア１００との間のインタフェースとして振舞う制御回路１５２を用いる。メモリアレイ１０７内の設定ハンドラの設定ロード機能は、リモートソースと設定データメモリアレイ１５１間の通信経路を確立するべく機能する。メモリアレイ１０７内の設定ハンドラの設定機能は、設定動作中に設定データを設定データメモリアレイ１５１からマイクロコントローラコア１００を介して設定可能ロジックアレイ１５０に転送するべく機能する。
【００３５】
図６は、本発明に係るＳＯＣ集積回路の他の構成例を示す。図６において、図５と同様の構成要素には共通の参照符号を付している。図６に示す変形構成例によれば、設定可能ロジックアレイ１６０は、プログラム可能ロジックデバイス（ＰＬＤ）モジュールを用いて実現できる。設定可能ロジックアレイ１６０に対する設定データは、マイクロコントローラコア１００がアクセス可能な集積回路上のメモリの一部として形成される不揮発性設定データメモリアレイ１６１内に格納されている。制御回路１６２が、設定データメモリアレイ１６１と設定可能ロジックアレイ１６０との間のインタフェースとして振舞うため、メモリアレイ１０７内の設定ハンドラの設定機能により、設定データは、設定データメモリアレイ１６１から設定機能で指定されるデータパス１７０，１７１を介して直接に設定可能ロジックアレイ１６０に転送される。データパス１７０，１７１は、データ幅の広いパラレルデータパスまたは設定機能に適合するその他の高速または特別に構成されたデータパスを用いて形成される。本実施例では、メモリアレイ１０７内の設定ハンドラの設定機能は単純化或いは削除でき、制御回路１６２を用いて多くの機能が達成できる。
【００３６】
メモリアレイ１０７内の設定ハンドラの設定ロード機能は、リモートソースと設定データメモリアレイ１６１間の通信経路を確立するべく機能する。
【００３７】
図７は、本発明に係るＳＯＣ集積回路の他の構成例を示す。図７において、図６と同様の構成要素には共通の参照符号を付している。図７に示す変形構成例によれば、該メモリは、暗号化／復号化機能用の命令とデータ圧縮／伸張機能用の命令の少なくとも何れか一方を格納するメモリアレイ１７２により補完される。図７に示す構成例によれば、設定ロード機能は、リモートソースと設定データメモリアレイ１６１間の通信経路を確立するべく機能する。設定データは、リモートソースから暗号化されたフォーマット、圧縮されたフォーマット、または、その両方のフォーマットで受信される。設定ロード機能は、設定データを設定データメモリアレイ１６１にローディングするときに、メモリアレイ１７２から復号化とデータ伸張機能の少なくとも何れかを働かせる。或いは、設定機能が、設定データを設定可能ロジックアレイの設定ポイントに転送するときに、メモリアレイ１７２から復号化とデータ伸張機能の少なくとも何れかを働かせる。図４及び図５を参照して示した実施例を含むＳＯＣ集積回路の様々な実施例において、暗号化／復号化機能用の命令とデータ圧縮／伸張機能用の命令の少なくとも何れか一方を格納するメモリアレイ１７０の追加はなされる。
【００３８】
図８は、プロセッサコア（ＣＰＵ２１２）と設定可能ロジックアレイ２５１を含むＳＯＣ集積回路に対する本発明の一側面に基づく、インサーキット・プログラミングと設定ロードのための耐故障（フォールトトレラント）システムの主たる機能要素の幾つかを示すブロック図である。該インサーキット・プログラミング処理と設定ロードシステムは、不揮発性メモリ２００、ＲＡＭ２０８、ＣＰＵ２１２、及び、周辺回路２１４を含む。インサーキット・プログラミング処理と設定ロードシステムは、また、ジャンプブートベクター２１６、マルチプレクサ（ＭＵＸ）２１０、インサーキットプログラム／設定ロード（ＩＣＰ／ＣＬ）ステータスレジスタ２１８、リモートホストアドレスレジスタ２２０、及び、ＩＣＰ／ＣＬ監視機構２２２を含む耐故障性を実現する構成要素を備える。
【００３９】
更に具体的には、ＣＰＵ２１２は、マイクロコントローラ、マイクロプロセッサ、または、ディジタル信号プロセッサを含む如何なるタイプの処理システムでもよい。ＣＰＵ２１２は、ＣＰＵ２１２によって実行されるコードとデータを記憶するランダムアクセスメモリであるＲＡＭ２０８と接続する。ＣＰＵ２１２は、更に、ＭＵＸ２１０と表示されるデータパスを介して不揮発性メモリ２００と接続する。
【００４０】
不揮発性メモリ２００は、フラッシュメモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及び、ＲＯＭメモリを含む、システムの電源が遮断したときに記憶を維持する如何なるタイプのメモリであってもよい。不揮発性メモリ２００は、ブートプログラム２０２、ユーティリティプログラム２０４、インサーキットプログラム（ＩＣＰ）ハンドラ２０６、設定ハンドラ２５０、及び、ミニ・ブートコード２０７を備える。ブートプログラム２０２は、システムのハードウェア及びソフトウェアリソースを初期化するためのシステム初期化中に実行されるプログラムの集まりである。ブートプログラム２０２は、設定ロード処理中に修正可能なプログラム可能なメモリに格納されている。不揮発性メモリ２００は、また、ユーティリティプログラム２０４を備え、該ユーティリティプログラム２０４は、システムの動作中にミッション機能を実施するＣＰＵ２１２によって実行されるプログラムを含む。ユーティリティプログラム２０４は、また、インサーキットプログラミングロード処理を介してプログラムできるメモリ内に含まれる。不揮発性メモリ２００は、また、システムの設定ロード機能を遂行し、設定ロード機能を介してプログラムできるメモリに記憶された設定ハンドラ２５０を含む。不揮発性メモリ２００は、また、インサーキットプログラミング処理を介してプログラムできるメモリに記憶された設定ハンドラ２５０を含む。設定ハンドラ２５０は、図４〜図７に関して上述した機能を実行する。
【００４１】
不揮発性メモリ２００は、また、ミニ・ブートコード２０７を備える。該ミニ・ブートコード２０７は、通常ブートと設定ハンドラプログラムの同じインサーキットプログラム処理中に修正不可能な保護メモリ内に記憶される。ミニ・ブートコード２０７は、ブートプログラム２０２と同じ機能の多くを遂行するシステム初期化命令の代替セットである。しかしながら、ブートプログラム２０２、インサーキットプログラム処理２０６、または、設定ハンドラ機能２５０を潜在的に誤らせたり使用できなくする或るインサーキットプログラム処理の最中にエラーがある場合に、ミニ・ブートコード２０７は、唯一行動を起こす。つまり、ミニ・ブートコード２０７は、通常ブートの同じインサーキットプログラム処理中に修正不可能なメモリ内に格納されなければならない。本発明の一実施例では、ミニ・ブートコード２０７は、マスクＲＯＭに格納され、ブートプログラム２０２、ユーティリティプログラム２０４、設定ハンドラ２５０、及び、インサーキットプログラム（ＩＣＰ）ハンドラ２０６がプログラム可能なフラッシュメモリに格納されている。
【００４２】
ＣＰＵ２１２は、更に、ＩＣＰ処理中に耐故障性を容易にするハードウェア構成要素と接続している。ＣＰＵ２１２は、ＭＵＸ２１０と接続し、ＭＵＸ２１０は、ＩＣＰ／ＣＬステータスレジスタ２１８からの制御入力と同様に、不揮発性メモリ２００及びジャンプブートベクター２１６を入力として受け付ける。ＭＵＸ２１０は、ＩＣＰ／ＣＬステータスレジスタ２１８の状態に応じて、不揮発性メモリ２００とジャンプブートベクター２１６の間で、ＣＰＵ２１２を選択的にスイッチする。もし、ＩＣＰ／ＣＬステータスレジスタ２１８の状態がダーティ（不正）な場合、該状態は、前回のＩＣＰ動作または設定ロード動作を修正する動作が完了していないことを示し、ＣＰＵ２１２は、システム初期化中にジャンプブートベクター２１６に対し、ミニ・ブートコード２０７を指示するジャンプ命令を入力として受け取る。他方、ＩＣＰ／ＣＬステータスレジスタ２１８の状態がクリーン（正常）な場合、該状態は、設定ロード動作が処理中でないことを示し、ＣＰＵ２１２は、システム初期化中に不揮発性メモリの初期位置を入力として受け取る。ＣＰＵ２１２は、更に、リモートホストアドレスレジスタ２２０に接続している。リモートホストアドレスレジスタ２２０は、インサーキットプログラム中にシステムがリセットされた場合にリモートホストアドレスのバックアップコピーを保持する。ＣＰＵ２１２は、また、リード（読み出し）／ライト（書き込み）パス２３０及びリセットライン２３２を介してＩＣＰ／ＣＬ監視機構２２２と接続する。ＩＣＰ／ＣＬ監視機構２２２は、タイムアウト期間レジスタ２２６とタイマ２２４と一致ロジック２２８を備える。タイマ２２４とタイムアウト期間レジスタ２２６の両方は、リード／ライトパス２３０を介してＣＰＵ２１２によって初期化可能に構成されている。タイマ２２４の値がタイムアウト期間レジスタ２２６のタイムアウト期間と一致すると、一致ロジック２２８がリセット信号を、リセットライン２２３を通してＣＰＵ２１２に送出する。一実施例において、上記の耐故障性を容易にするハードウェア構成要素は、インサーキットプログラム処理から保護されたプログラム可能メモリ素子を含む。
【００４３】
ＣＰＵ２１２は、更に、周辺回路２１４と接続する。周辺回路２１４は、図中周辺回路２１４の左手に２重矢印で表示するように、システムユーザ２４４との通信に使用される入力及び出力デバイスを備える。周辺回路２１４は、また、インターネット２３４、その他の通信回線や通信路と接続するためのインタフェースを備える。インターネット２３４はそれ自体がリモートホスト２３６、２３８、２４０と接続する。リモートホスト２３８は、ブート及びユーティリティプログラムの新バージョンを記憶したディスク装置２４２と接続する。ブート及びユーティリティプログラムの新バージョンは、例えば、新しいインサーキットプログラム機能や新しい設定ロード機能等であり、インターネット２３４を介してシステムにダウンロードされる。
【００４４】
設定ロード処理は一般的に以下のように動作する。ＣＰＵ２１２が、周辺回路２１４を介してユーザ２４４と通信する。ユーザ２４４はＣＰＵ２１２に対し、設定ロード処理を開始する設定ハンドラ２５０を起動する。設定ハンドラ２５０は、周辺回路２１４を介してインターネット２３４へ、インターネット２３４を介してリモートホスト２３８へと繋がる接続を形成する。そして、リモートホスト２３８は、ディスク装置２４２からインターネット２３４を介して不揮発性メモリ２００へのデータのダウンロードを開始する。データ転送が開始すると同時に、ＩＣＰ／ＣＬ監視機構２２２内のタイムアウト期間レジスタ２２６に所定の期待値が設定され、タイマ２２４が初期化される。
【００４５】
設定ロード処理が円滑に進行すると、本発明の耐故障性機能は活性化されない。他方、設定ロード処理に過大な遅延が発生すると、タイマ２２４の計時がタイムアウト期間レジスタ２２６の設定値と一致し、リセット信号がリセットライン２３２を介してＣＰＵ２１２に送出される。この結果、ＣＰＵ２１２は一連のブート処理を開始する。もし、システムが設定ロード処理中にリブートされると、ＩＣＰ／ＣＬステータスレジスタ２１８がダーティ（不正）値に設定される。これにより、ＭＵＸ２１０がジャンプブートベクター２１６をＣＰＵ２１２に導き、ＣＰＵ２１２がブートプログラム２０２に代えて、ミニ・ブートコード２０７からブートを行う。ＩＣＰ／ＣＬステータスレジスタ２１８がクリーン（正常）値に設定されている場合は、設定ロード処理は完了しており、ＭＵＸ２１０はＣＰＵ２１２にブートプログラム２０２からのブートを行なわせる。
【００４６】
ミニ・ブートコード２０７は、ＣＰＵ２１２に対し、設定ロード処理を再初期化するために接続すべきリモートホストを決定する値をリモートホストアドレスレジスタ２２０から先ず読み出すことにより、設定ロード処理を再スタートさせる。これにより、設定ロード処理は再開される。別実施例において、ミニ・ブートコード２０７は、オンチップ不揮発性メモリ等のデフォルト位置から、或いは、ＳＯＣ集積回路と接続が予定されるリモートホストとの通信によって、設定データセットにアクセスするように設計された設定ロードプログラムを含む。
【００４７】
ＩＣＰ処理は、一般的に以下のように動作する。ＣＰＵ２１２が、周辺回路２１４を介してユーザ２４４と通信する。尚、周辺回路２１４の幾つかは、典型的には、ＳＯＣ集積回路の一部ではないが、入出力ポートを介してユーザとの通信を行う。ユーザ２４４は、ＣＰＵ２１２に対し、ＩＣＰ処理を開始するＩＣＰハンドラ２０６の起動を行わせる。ＩＣＰハンドラ２０６は、周辺回路２１４を介してインターネット２３４へ、インターネット２３４を介してリモートホスト２３８へと繋がる接続を形成する。そして、リモートホスト２３８は、ディスク装置２４２からインターネット２３４を介して不揮発性メモリ２００へのデータのダウンロードを開始する。データ転送が開始すると同時に、ＩＣＰ／ＣＬ監視機構２２２内のタイムアウト期間レジスタ２２６に所定の期待値が設定され、タイマ２２４が初期化される。
【００４８】
ＩＣＰ処理が円滑に進行すると、本発明の耐故障性機能は活性化されない。他方、ＩＣＰ処理に過大な遅延が発生すると、タイマ２２４の計時がタイムアウト期間レジスタ２２６の設定値と一致し、リセット信号がリセットライン２３２を介してＣＰＵ２１２に送出される。この結果、ＣＰＵ２１２は一連のブート処理を開始する。もし、システムがＩＣＰ処理中にリブートされると、ＩＣＰ／ＣＬステータスレジスタ２１８がダーティ（不正）値に設定される。これにより、ＭＵＸ２１０がジャンプブートベクター２１６をＣＰＵ２１２に導き、ＣＰＵ２１２がブートプログラム２０２に代えて、ミニ・ブートコード２０７からブートを行う。ＩＣＰ／ＣＬステータスレジスタ２１８がクリーン（正常）値に設定されている場合は、ＩＣＰ処理は完了しており、ＭＵＸ２１０はＣＰＵ２１２にブートプログラム２０２からのブートを行なわせる。
【００４９】
ミニ・ブートコード２０７は、ＣＰＵ２１２に対し、ＩＣＰ処理を再初期化するために接続すべきリモートホストを決定する値をリモートホストアドレスレジスタ２２０から先ず読み出すことにより、ＩＣＰ処理を再スタートさせる。これにより、ＩＣＰ処理は再開される。
【００５０】
幾つかの実施例において、ＩＣＰ処理は設定ハンドラを上書き或いは修正することができる。かかる実施例では、ＩＣＰ処理は、ＳＯＣ集積回路上に設定ハンドラの２つの複製を確立するために、先ず設定ハンドラ２５０を不揮発性メモリにコピーする。一方の複製が修正される。もし、該修正が成功裏に完了すれば、他方の複製は削除される。しかしながら、もし、該修正が成功裏に完了しなければ、設定ハンドラの安全な複製がシステム動作の回復のために用いられる。
【００５１】
以上、本発明を好適実施例と上述の詳細な具体例に基づいて説明したが、これらの実施例や具体例は本発明の説明を目的としており、本発明を限定的に解釈するものではない。更に、上記説明から当業者が容易に変更または組み合わせてできるものは、本発明の趣旨及び特許請求の範囲に含まれるものと考えられる。
【図面の簡単な説明】
【００５２】
【図１】本発明に係るシステムオンチップ集積回路の一実施形態における簡略化したブロック図。
【図２】本発明に係るシステムオンチップ集積回路の他の実施形態における簡略化したブロック図。
【図３】本発明に係るシステムオンチップ集積回路の他の実施形態における簡略化したブロック図。
【図４】本発明に係るシステムオンチップ集積回路の各実施形態におけるより詳細な機能ブロック図。
【図５】本発明の一実施形態におけるオンチップ設定データメモリを含むシステムオンチップ集積回路の機能ブロック図。
【図６】本発明の他の実施形態におけるオンチップ設定データメモリを含むシステムオンチップ集積回路の機能ブロック図。
【図７】本発明の一実施形態におけるオンチップ設定データメモリを含み、暗号化・復号化とデータ圧縮・伸張の少なくとも何れかの機能をサポートするシステムオンチップ集積回路の機能ブロック図。
【図８】本発明に係るシステムオンチップ集積回路の開発環境を示す説明図。図中、設定データはリモートソースから提供され、システムオンチップ集積回路は、該リモートソースとの通信経路を確立するために設定ロード機能の設定ロードを許可する。
【符号の説明】
【００５３】
１０：  集積回路
１１：  マイクロコントローラ・コアモジュール
１２：  入出力構造
１３：  保護メモリ
１４：  プログラム可能メモリ
１５：  設定可能ロジックアレイ
１６：  設定メモリ
１００：  マイクロコントローラコア
１０１：  ブートベクタ
１０２：  タイマ回路
１０３：  監視タイマ
１０４：  入出力ポート
１０５：  割り込みライン
１０６：  他の信号入力と出力
１０７：  第１メモリアレイ（設定ハンドラ）
１０８：  第２メモリアレイ
１０９：  第３メモリアレイ
１１０：  設定可能ロジックアレイ
１１１：  データレジスタ
１１２：  設定レジスタ
１１３：  タイミングレジスタ
１１４：  マルチプレクサ
１１５：  ステータスレジスタ
１５０：  設定可能ロジックアレイ
１５１：  設定データメモリアレイ
１５２：  制御回路
１６０：  設定可能ロジックアレイ
１６１：  設定データメモリアレイ
１６２：  制御回路
１７０：  データパス
１７１：  データパス
１７２：  メモリアレイ
２００：  不揮発性メモリ
２０２：  ブートプログラム
２０４：  ユーティリティプログラム
２０６：   インサーキットプログラム（ＩＣＰ）ハンドラ
２０７：  ミニ・ブートコード
２０８：  ＲＡＭ
２１０：  マルチプレクサ（ＭＵＸ）
２１２：  プロセッサコア（ＣＰＵ）
２１４：  周辺回路
２１６：  ジャンプブートベクター
２１８：  インサーキットプログラム／設定ロード（ＩＣＰ／ＣＬ）ステータスレジスタ
２２０：  リモートホストアドレスレジスタ
２２２：  ＩＣＰ／ＣＬ監視機構
２２４：  タイマ
２２６：  タイムアウト期間レジスタ
２２８：  一致ロジック
２３０：  リード（読み出し）／ライト（書き込み）パス
２３２：  リセットライン
２３４：  インターネット
２３６：  リモートホスト
２３８：  リモートホスト
２４０：  リモートホスト
２４２：  ディスク装置
２４４：  システムユーザ
２５０：  設定ハンドラ
２５１：  設定可能ロジックアレイ
【図１】
0004659371.tif 000002
【図２】
0004659371.tif 000003
【図３】
0004659371.tif 000004
【図４】
0004659371.tif 000005
【図５】
0004659371.tif 000006
【図６】
0004659371.tif 000007
【図７】
0004659371.tif 000008
【図８】
0004659371.tif 000009