"患者の組織に刺激を与えるように構成された複数の第1の電極及び複数の第2の電極を含む埋め込み型刺激装置であって、前記複数の第1の電極の刺激を制御するための第1の刺激回路ブロックを含む第1の集積回路と、前記複数の第2の電極の刺激を制御するための第2の刺激回路ブロックを含む第2の集積回路と、を備え、前記第1の電極又は第2の電極のいずれかを陽極として選択可能であり、前記第1の電極又は第2の電極のいずれかを陰極として選択可能である、ことを特徴とする埋め込み型刺激装置。マイクロコントローラと、前記第1及び第2の刺激回路ブロック及び前記マイクロコントローラと通信するバスと、をさらに備え、前記マイクロコントローラは、前記バスを介して前記陽極及び前記陰極を選択する、ことを特徴とする請求項1に記載の装置。前記バスは、前記第1の集積回路のための第1のチップ選択信号、及び前記第2の集積回路のための第2のチップ選択信号を含む、ことを特徴とする請求項2に記載の装置。前記第1及び第2の集積回路を収容するための導電性ケースをさらに備え、前記第1の電極の1つ又は前記第2の電極の1つが前記ケースを構成する、ことを特徴とする請求項1に記載の装置。患者の組織に刺激を与えるように構成された複数の第1の電極及び複数の第2の電極を含む埋め込み型刺激装置であって、前記複数の第1の電極の刺激を制御するための第1の刺激回路ブロックを含む第1の集積回路と、前記複数の第2の電極の刺激を制御するための第2の刺激回路ブロックを含む第2の集積回路と、を備え、前記第1及び第2の集積回路は、前記第1の電極の少なくとも1つ及び前記第2の電極の少なくとも1つの刺激を発生させるための刺激イネーブルコマンドを受け取るように構成される、ことを特徴とする埋め込み型刺激装置。前記刺激イネーブルコマンドは、前記第1の電極の少なくとも1つ、及び少なくとも1つの第2の電極の同時刺激を発生させる、ことを特徴とする請求項5に記載の装置。マイクロコントローラと、前記第1及び第2の刺激回路ブロック及び前記マイクロコントローラと通信するバスと、をさらに備え、前記マイクロコントローラは、前記バス上で前記刺激イネーブルコマンドを発生するように構成される、ことを特徴とする請求項5に記載の装置。前記バスは、並列バスを含み、前記刺激イネーブルコマンドは、マルチビットコマンドを含む、ことを特徴とする請求項7に記載の装置。前記刺激イネーブルコマンドは、前記第1の集積回路及び前記第2の集積回路の両方のアドレスレジスタにおいて受け取られる、ことを特徴とする請求項7に記載の装置。前記バスは、前記第1の集積回路のための第1のチップ選択信号、及び前記第2の集積回路のための第2のチップ選択信号を含む、ことを特徴とする請求項7に記載の装置。前記マイクロコントローラは、前記第1及び第2のチップ選択信号の両方がアサートされたことによって前記刺激イネーブルコマンドを発生するように構成される、ことを特徴とする請求項10に記載の装置。前記第1及び第2の集積回路を収容するための導電性ケースをさらに備え、前記第1の電極の1つ又は前記第2の電極の1つが前記ケースを構成する、ことを特徴とする請求項5に記載の装置。本譲受人が所有し、その全体が引用により本明細書に組み入れられている米国特許出願公開2008/0319497号’497出願に、図3A~図3Cに示すIPG100のための改善されたアーキテクチャ150が開示されている。この’497出願のアーキテクチャは本開示と関連性があるので、その関連する態様の説明にも時間を費やす。図3Aの改善されたIPGアーキテクチャ150は、通信プロトコルによって制御されるバス190を介して、様々なIPG機能回路ブロックを単一の集積回路IC200上に統合するものであり、これについて以下でさらに説明する。集中化バス190は、複数の多重アドレス及び並列に動作するデータ回線を含む並列バスである。しかしながら、これは厳密に必要なわけではなく、同様に代わりのバス190としてシリアルバスを含むこともできる。バス190と通信し、プロトコルに従うようにするために、各回路ブロックは、このプロトコルに従うバスインターフェイス回路215を含む。各回路ブロックは、このプロトコルに従うので、他のブロックの設計に影響を与えずにあらゆる所与の回路ブロックを容易に修正又はアップグレードして、IPG回路のデバッグ及びアップグレードを容易にすることができる。さらに、集中化バス190を集積回路から取り除くことができるので、別の回路をオフチップで容易に追加してIPGを修正し又はこれに機能を追加することができ、これについても以下でさらに説明する。回路ブロックの各々は、IPG内の標準機能を実行する。例えば、遠隔通信ブロック62は、IPG遠隔通信コイル13に結合し、外部コントローラ12図2と通信するためのトランシーバ回路を含む。充電/保護ブロック64は、IPG充電コイル18に結合し、外部充電器50図2から受け取った電力を整流するとともに電源バッテリ26を制御された方式で充電するための回路を含む。刺激回路ブロック175は、電極E1~E16に結合され、これらの電極に生じる刺激パルスのプログラム振幅及び極性を設定するための回路を含む。ブロック175は、この刺激プログラムに応答して指定された電極電流を供給するデジタルアナログコンバータDAC82を備えた電極用ドライバも含む。なお、電極E1~E16は、リード102及び104図1A上の対応する電極106に接続される前に、オフチップ減結合コンデンサC1~CNに接続され、このような減結合コンデンサC1~CNは、安全のためにIPGから患者に直流DC電流が注入されるのを防ぐが、その他の点では刺激性能に影響を与えない。EPROMブロック177は、システム内のあらゆる関連データログデータなどをキャッシュし、シリアルインターフェイスブロック167を介して、オフチップで追加のメモリ66を提供することもできる。アナログデジタルA/Dブロック74は、バッテリ電圧Vbat又は電極に生じる電圧などの様々なアナログ信号をIPG100が解釈できるようにデジタル化し、このような電圧を含むアナログバス192に結合される。割り込みコントローラブロック173は、他の回路ブロックからの様々な割り込みを受け取り、これらの割り込みは、その即時の重要性に起因して、バス190及びその通信プロトコルとは無関係に受け取られる。なお、この割り込みコントローラブロック173は、アナログ信号及びデジタル信号の両方を処理するので、IC200は混合モードチップを含む。刺激回路ブロック175は、電極E1~E16に結合され、これらの電極に生じる刺激パルスのプログラム振幅及び極性を設定するための回路を含む。ブロック175は、この刺激プログラムに応答して指定された電極電流を供給するデジタルアナログコンバータDAC82を備えた電極用ドライバも含む。なお、電極E1~E16は、リード102及び104図1A上の対応する電極106に接続される前に、オフチップ減結合コンデンサC1~CNに接続され、このような減結合コンデンサC1~CNは、安全のためにIPGから患者に直流DC電流が注入されるのを防ぐが、その他の点では刺激性能に大きく影響を与えない。内部コントローラ160は、他の全ての回路ブロックのマスタコントローラとして機能する。詳細には、他の回路ブロックの各々は、セットアップレジスタ及びステータスレジスタ図示せずを含む。セットアップレジスタは、初期化時にコントローラ160によって書き込まれ、各ブロックを構成して有効にする。その後、各回路ブロックは、そのステータスレジスタに関連データを書き込むことができ、これをコントローラ160が必要に応じて読み取ることができる。マスタコントローラ160によって課せられるこのような制御とは別に、コントローラ160外部の回路ブロックは、単純な状態機械を利用してこれらの回路ブロックの動作を管理することができ、この状態機械は、セットアップレジスタを介して有効にされ修正される。図3Aから分かるように、IC200は、電源26の接続、コイル18、13の接続、外部メモリ66の接続、及び刺激電極の接続に必要とされるような複数の外部端子202例えば、ピン、ボンドパッド、半田バンプなどを含む。その他の外部端子202は、集中化バス190がIC200外部の他の装置と通信できるようにするために、集中化バス190を構成する様々な信号専用にされる。図3Bでは、バス190を構成する様々な信号を見ることができ、このバス上で通信を行うためのプロトコルも開示している。図示のように、集中化バス190は、同期のためのクロック信号CLK、時分割アドレス及びデータ信号A/Dx、アドレスラッチイネーブル信号ALE、アクティブロー書き込み許可信号W/E、及びアクティブロー読み取り許可信号R/Eを含む。クロック信号の周波数CLKは、32kHz~1MHzの範囲に及ぶことができ、これはコンピュータ化されたプロトコルでは一般に遅いが、IPGの動作にとっては適当な速さであり、通常は約数十マイクロ秒~数十ミリ秒の刺激パルスを提供する。図示のように、このプロトコルは、アドレスの後にこのアドレスの関連データが続くというかなり単純なデータ前アドレス方式を使用する。アドレスとデータを区別するために、アドレスの発生時にのみアドレスラッチイネーブル信号ALEがアクティブになって、これによりクロックの立ち下がりエッジ時にアドレスがラッチされるようにする。次の立ち下がりクロックエッジ時に特定のアドレスに対応するデータを書き込むべきかそれとも読み取るべきかは、書き込み及び読み取り許可信号W/E;R/Eのアサーションに依存する。このプロトコルの性質は、集中化バス190に結合された全ての機能ブロックがアドレスを、又はより好ましくはアドレスの範囲を指定されていることを意味する。例えば、コンプライアンス電圧の値を保持するデータレジスタのアドレスA/Dブロック74でをADDR[3401]とし、刺激回路ブロック175内の電極E6がもたらす刺激の振幅及び持続時間に関するアドレスを、それぞれADDR[7655]及びADDR[7656]とすることができる。様々な機能ブロックが関連アドレスを認識するのを支援するために、また各ブロックの能力が集中化バス190のプロトコルに従って機能するのを確実にするために、各ブロックはバスインターフェイス回路215を含む。このバスインターフェイス回路は、上記で組み入れた’497出願に詳しく記載されているので、ここではこの詳細について繰り返さない。’497出願に記載されるように、回路ブロックがバス190を介して結合され、そのプロトコルを使用して通信する場合、回路エラーを修正するためにいずれかの特定のブロックに変更を加えること、及び/又はIC200を次世代IPGで使用できるようにアップグレードすることは、比較的単純なことになる。また、バス190は、IC200の外部に設けられているので、IC200の外部にあるIPG100を修正すること又はIPG100に機能を追加することは容易である。例えば、図3Cに示すように、さらなるメモリ300好ましくは不揮発性メモリを追加することができる。或いは、例えば外部マイクロコントローラ240を介して、IC200の外部にシステム制御を追加することもできる。外部マイクロコントローラ240をIC200とともに使用する場合でも、’497出願には、マイクロコントローラ204とIC200内の内部コントローラ160の間で制御を仲裁する方法が記載されている。ここでも、この詳細については繰り返さない。’497出願に記載されるアーキテクチャの別のオフチップ拡張では、本開示に特に関連する事項として、第1のIC200と同様に構成された別のIC200’を追加することができる。これにより、IC200及び200’を載置されたIPG100は、32個、すなわち両ICから16個ずつの刺激電極を提供できるようになる。換言すれば、複数の刺激ICを互いにデイジーチェーン化することにより、IPGの容量を増大させることができる。このような実施形態では、IC200又は200’の一方における内部コントローラ160を停止させ、従って一方のコントローラ160のみがシステムのマスタコントローラとして機能するようにすることができる。本開示では、2つの異なるIC200内で電極ドライバを使用することにより生じる実用的な問題に対処する。図4Aに、2つの電極ドライバIC300及び300’をデイジーチェーン化してIPGの電極容量を2倍にした、すなわち電極を16個から32個にした改善されたアーキテクチャを有するIPG295の改善されたシステム290を示す。IPG295の金属ケースも電極を構成することができるが、単純化のために図示していない。この例では、以下でさらに詳細に説明するように、一方のIC300はマスタとして機能し、他方の300’はスレーブとして機能する。両IC300及び300’はバス297に接続され、このバス297は、背景技術で説明したバスに類似するが、マスタ300のためのチップ選択を含むCS_m、及びスレーブ300’のためのチップ選択を含むCS_sという2つのチップのいずれかを選択するための追加の制御信号を含む。なお、クロック信号CLK、図3Bは、依然として通信プロトコルにおいて重要であるが、システム内の全てのICにより共有されるバス信号の1つとしては含まれておらず、システム290内のクロッキング回路については、以下の図10を参照しながらさらに説明する。バスにはマイクロコントローラ305も接続され、このマイクロコントローラ305は、IC300及び300’の様々な回路ブロックによって処理されないシステム290内の機能を制御し、それ以外は一般にシステムのマスタとして機能する。例えば、バス通信は、最終的にマイクロコントローラ305によって制御され、このマイクロコントローラ305は、以下でさらに説明する通信プロトコルにとって必要なクロックの発生を制御し、バス制御信号図3BのALE、W/E、R/Eなども発生する。別の例では、マイクロコントローラ305が、IPG295が外部コントローラ12図2からの遠隔通信をいつリスンすべきかをスケジュールする。この問題をさらに詳細に記載した米国特許第7,725,194号などを参照されたい。マイクロコントローラ305は、システム290内のメモリフラッシュEPROMチップ307にも接続し、このメモリチップ307は、システムのオペレーティングソフトウェアを保持できるとともに、例えば分析及び/又は患者へのフィードバックのために外部コントローラ12にレポートすべきデータをシステムにログとして記録するための空き領域として機能することもできる。図示の実施形態では、この後詳細に説明するIC300及び300’の各々が、たとえシステム内でマスタ又はスレーブとして機能することが決まっていても同様に製造される。1つの電極ドライバICしか製造しないということは、メーカーがシステム290のために別個のマスタIC及びスレーブICを別様に製造し、追跡し、試験する必要がないので非常に便利である。システム内でいずれのICがマスタとして又はスレーブとして動作するかは、これらがシステム297の残りの要素にどのように接続されるかに依存し、すなわち、このようなチップはボンドプログラム可能である。図4Aに示すように、各ICは入力M/Sを有し、この入力M/Sは、電圧が供給された時にはICにマスタ300であることを通知し、電圧が供給されない時にはICにスレーブ300’であることを通知する。これは、マスタ300の場合には、M/S入力をIPGのPCB上の、バッテリ26の電圧図2Vbatなどの特定のノードに接続し、或いはスレーブ300’の場合には、M/S入力を接地GNDすることによって行うことができる。後で説明するように、所与のICは、スレーブとして動作していると理解した場合、その回路ブロックの一部を停止する。図4Aには、いくつかのオフバス信号195も示している。これらの信号及びその機能については、後程詳細に説明する。図4Bに、同一のマスタ300IC又はスレーブ300’ICのいずれかの回路ブロックを示す。これらの回路ブロックの多くは、背景技術に関連して既に説明したものであり図3Aを参照、ここではこれらのブロックの説明は繰り返さない。図4Bにおいて特に注目すべき目新しいものとして、サンプル及びホールドブロック310、コンプライアンス電圧V生成ブロック320、クロック生成ブロック330、及びマスタ/スレーブM/Sコントローラ350がある。これらの回路ブロックは、IC上の他の回路ブロックと同様にインターフェイス回路215を含み、このインターフェイス回路215は、これらの回路ブロックが上述したプロトコルに従ってバス297上で通信し、バス297によって制御されるようにする。サンプル及びホールド回路ブロック310については後程詳細に説明するが、ここでは、この回路ブロック310が、電極電圧を含む、アナログバス192を構成する様々なアナログ電圧をサンプリングしてホールドするための回路を含むことのみに言及する。サンプル及びホールドブロック310が特定の電圧を分解するように動作すると、この電圧をA/Dブロック74に送信してここでデジタル化し、システム290内の分析に必要とされるあらゆる場所に通信バス297を介して広めることができる。後程説明するように、信号IN1、IN2、OUT1及びOUT2は、2つのIC300及び300’間で様々なアナログ信号をルーティングするために使用される。V生成ブロック320は、刺激回路ブロック175内で電流源DAC82によって使用されるコンプライアンス電圧Vを生成する。V生成ブロック320は、刺激中の電極電圧をモニタすることによってある程度推測できる最適なレベルまで電流源に給電を行うために使用される適当なV電圧にバッテリ電圧Vbatを上昇させる電圧によってこれを行う。IPG内のコンプライアンス電圧Vの生成に関するさらなる詳細については、米国特許第7,872,884号、第7,444,181号、第7,539,538号などを参照されたい。クロック生成器330は、バス297上の通信プロトコルが使用する通信クロックを生成する。しかしながら、上述したように、クロッキング信号は通信バス297の一部を構成するものではない。クロック生成器330の動作については、図10に関連して詳細に説明する。マスタ/スレーブコントローラ350は、上述したM/S入力を受け取り、この入力を解釈して、スレーブとして動作しているか、それともマスタ動作しているかをICに通知し、このことを図4Cにさらに示している。図4Cには、バスベース297接続及びオフバス195接続を含め、マスタ及びスレーブ300及び300’を接続した形で示している。なお、スレーブIC300’内の対応する回路ブロックはダッシュ記号によって示している。上述したように、マスタ/スレーブコントローラ350へのM/S入力は、いずれのICがマスタとして又はスレーブとして機能しているかに応じて異なる高い、低い。スレーブIC300’では、マスタ/スレーブコントローラ350’が接地入力を解釈し、他のいくつかの回路ブロックに、マスタIC300内の同じ回路ブロックの使用を採用するためにこれらの回路ブロックを無効にする旨を通知する。詳細には、スレーブIC300’内では、充電/保護ブロック64’、遠隔通信ブロック62’、A/Dブロック74’、V生成器320’、割り込みコントローラ173’、及び内部コントローラ160’が全て無効にされ、このことを示すために破線で示している。これらの回路ブロックの各々の無効化は、マスタ/スレーブコントローラ350からの情報の受信時に各ブロックにおいて動作する状態機械に従って行うことができ、影響を受けるブロック内のインターフェイス回路内で動作するバスドライバ及びバス受信機を無効にすることによってこのような無効化を行うことができる上記で組み入れた’497出願を参照。しかしながら、スレーブIC300’内では、電極に結合された刺激回路ブロック175’、サンプル及びホールド回路ブロック310’、クロック生成回路330’、及びマスタ/スレーブコントローラ350’自体は依然として動作している。様々なオフチップ信号195に関しては、マスタIC300内で生成されたコンプライアンス電圧VがスレーブIC300’にルーティングされ、スレーブの刺激回路ブロック175’で使用される。充電コイル18及び遠隔通信コイル13は、これらの対応するブロック64及び62がアクティブな場合、マスタIC300にのみ結合される。バッテリ26図2電圧Vbatは、両IC300及び300並びにマイクロコントローラ305、及びIPG100内の他の構成要素によって共有される。外部水晶発振器340は、マスタIC300上でのみCLKIN入力に結合される。図5~図9Cに、両IC300及び300’内のアクティブなサンプル及びホールド回路ブロック310及び310’の動作を示しており、IN1、IN2、OUT1、及びOUT2間で搬送されるオフバス信号195が、両IC内のアナログ信号をモニタするためにシステム内でどのように使用されているかをさらに示している。また、これらの図には、所望の刺激及びモニタ機能を提供するための、バス297上で使用されるコマンドの例も示す。図5には、システム290が提供できる刺激の例を示しており、特に、図5に抵抗Rとして示す患者の組織に単性パルストレインを与えることを示している。同様に、当業者であれば理解するように、また上記で組み入れた同時出願に記載しているように、システム290は二相パルスを提供することもできる。しかしながら、単純化のために単相パルスを示している。図示の例では、マスタIC300からの電極E1を、tDのパルス持続時間にわたって電流Iを供給する陽極として使用し、スレーブIC300からの電極E17を、この電流のシンク-Iのための陰極として使用する。両電極におけるパルスは、tpの周期性を有する。各電極に生じる電流I,-Iは、刺激回路175の一部を構成するデジタルアナログコンバータ、すなわちDAC82によって設定される。周知のように、DAC82は、基準電流Irefを増幅すべき量を指定するデジタル制御信号<P>,<N>に基づいて所望の電流を供給する。陽極ソースとして使用されるDACは、PDACと呼ばれ、陰極シンクとして使用されるDACは、NDACと呼ばれる。システム290などのシステムで使用可能なPDAC及びNDAC回路の仕様に関するさらなる詳細については、米国特許出願公開第2007/0038250号などを参照されたい。この例における電極E1及びE17は、マスタ及びスレーブIC300及び300’によってそれぞれ駆動されるので、所望のパルスの供給には、各ICの刺激回路175及び175’及びDAC82及び82’が関与する。当然ながら、刺激回路175及び175’の各々では、同時に複数の電極を有効にすることもできるが、単純化のために図5にはそれぞれ単一の電極のみを示す。所望のパルスを送出する前に、各ICの刺激回路175に適当な刺激パラメータがロードされる。これらのパラメータ電流の振幅及び極性は、患者に対して設定された、外部コントローラ12図2によって適宜変更できる治療プログラムに基づいてマイクロコントローラ305からバス297を介して通信される。上述したように、これらのパラメータは、バスベースの通信プロトコルにより、様々な回路ブロックに対して指定された様々なアドレスに送信することができる。例えば、電極E1における電流の振幅を刺激回路175内のADDRiに記憶し、極性をADDRjに記憶することができる。これらのパラメータを、各電極に関して連続的に、及びパルスの送出前にロードすることができる。従って、図5のコマンドテーブルを参照すると、トレイン内の第1のパルスであるt1の前に、これらのパラメータが電極E1及びE17の各々にロードされているのが分かる。開示のようにIC300及び300’がデイジーチェーン化されている場合、各2つのICのアクティブな回路ブロック間の区別を正しく行うことが重要である。例えば、図4Cに関連して上述したように、刺激回路ブロック175’、サンプル及びホールド回路ブロック310’、及びクロック生成回路330’は、両ICにおいてアクティブであり、同じアドレスを共有する。2つのIC間の区別は、チップ選択信号CS_m及びCS_sを使用することによって行われる。従って、図5に示すように、E1及びE17は同じアドレスADDRi及びADDRjに関連するが、チップ選択信号を使用してこれらを区別し、適切なIC内の刺激回路175をプログラムする。従って、マスタIC300内の刺激回路175のすなわち、電極E1~E16を駆動するプログラミングを示すCS_mのアサートにより、ADDRi及びjに電極E1の刺激パラメータが書き込まれる。対照的に、スレーブIC300’内の刺激回路175のすなわち、電極E17~E32を駆動するプログラミングを示すCS_sのアサートにより、ADDRi及びjに電極E17の刺激パラメータが書き込まれる。各IC300及び300’の電極に生じる治療パルスを同期させることが重要である。従って、刺激パラメータをロードした後には、IC300及び300’上の様々な電極から刺激パルスが同時に送出されるようにしなければならない。例えば、電極E17における陰極パルスの送出よりもわずかに早く電極E1から陽極パルスが送出された場合、このわずかの時間中に戻り経路のない電荷が患者の組織に注入されることになる。同様に、電極E17における陰極パルスの中断よりもわずかに早く電極E1からの陽極パルスが中断された場合、このわずかの時間中に患者の組織から電荷が激減することになる。このような電荷蓄積により、治療が妨げられることがあり、或いは患者が負傷することもある。パルスの刺激送出を確実にするために、システム290内でバスベースの通信を使用して、両パルスの送出を同時にトリガするようにする。図5に示すように、時刻t1において、すなわち各電極の刺激パラメータがIC300及び300’の各々にロードされた後、チップ選択信号がいずれもアサートされることすなわち、CS_m=CS_s=1により、バス上に並列化マルチビット刺激イネーブルコマンドが発生される。これにより、刺激回路175及び175’が、両方同時に刺激イネーブル信号を受け取り、事前に記憶していた刺激パラメータをそのDAC82及び82’に供給し、従って所望の電流を同時に生成できるようになる。具体的には、この刺激イネーブルコマンドは、適当な時間にわたって適当な制御信号<P>及び<N>を発生することにより、DAC82及び82’を両方同時に有効にする。この例では、刺激イネーブルコマンドを送信してADDRkに登録する。刺激イネーブルコマンドが刺激パラメータとして事前にロードされていない場合、パルス持続時間tDに刺激イネーブルコマンドを含めることができる。別の重要な、及び改善されたシステム290において対処する問題として、電極電圧などの、IC300及び300’内の様々な電圧のモニタリングを取り上げる。様々な理由から、このような電圧を評価することは有益である。刺激中に電極に存在する電圧を知ることは、V生成器320図4Bにおけるコンプライアンス電圧Vを適当かつ電力効率の良い振幅に設定する上で有用になり得る。米国特許第7,444,181号などを参照されたい。また、電極電圧を知ることにより、電極間の抵抗Rを計算できるようになり、これも様々な理由から有用である。所与のIC300における電圧モニタリングは、図6に示すサンプル及びホールド回路310によって行われる。図示のように、サンプル及びホールド回路310は、2つのマルチプレクサMUX1及びMUX2を備え、これらのいずれかが、電極電圧E1~E16、金属ケースの電圧、バッテリ電圧Vbat、コンプライアンス電圧V、又は接地GNDなどの、アナログバス192図4Bを構成する複数の信号から選択を行うことができる。各MUXは、これらの様々な入力の1つを選択するための制御信号を受け取る。実際には、各MUXのための制御信号は、複数のデジタル制御信号を含むことができる。例えば、MUXが16個の異なる入力から選択を行える場合、4つの制御信号を使用することができる。図6に、刺激中の電極E1の電圧を測定する例を示す。MUX1は、単複の制御信号SEL_E1を介してこの電極を選択し、これによりE1の電圧をOUT1に渡すことができるようになる。MUX2は、基準0ボルトなどとして接地GNDを選択し、これをOUT2に渡す。図6のコマンドテーブルに示すように、これらの両選択は、パルスの持続時間中すなわち、tD中の適当な時点でバス297を介して行うことができ、この場合、MUX1にはADDRrを介してアクセス可能であり、MUX2にはADDRsを介してアクセス可能であると想定する。マスタIC300には、モニタ対象の電圧VE1が既に存在するので、これに応じてチップ選択信号が設定されるCS_m=1,CS_s=0。これらの出力OUT1及びOUT2間には、ホールド回路312が介在する。ホールド回路312は、測定対象の電圧を保持して安定化するのに適したあらゆる回路を含むことができ、図示のように単一のコンデンサCを含む。しかしながら、上記で組み入れた同時出願に開示される回路などの、より高性能なホールド回路312を使用することもできる。或いは、特にDC電圧をモニタする際には、ホールド回路312を完全に省くこともできる。コンデンサの各プレート上の電圧が差動増幅器314に送信され、この差動増幅器314は、整定期間後に2つの差分、この場合にはVE1-0すなわちVE1を出力する。次に、このアナログ電圧をA/Dブロック74図4Bに送信し、ここでデジタル化することができる。その後、この値をA/Dブロック74内のADDRtにおいて読み取って、V生成器320図4Bなどのシステム内の他の場所で使用することができる。測定対象の電圧がマスタ300ではなくスレーブIC300’に由来する場合、図7Aに示すように、2つのサンプル及びホールド回路310及び310’間の相互接続が関与する。このような相互接続は、簡単に上述した、図4Aに高レベルで示すオフバス信号IN1、IN2、OUT1及びOUT2を使用するものである。図4Aに示すように、また図7Aにさらに詳細に示すように、スレーブIC300’上のMUX1からのOUT1がマスタIC300のIN1に送られ、これがさらに両マスタICのMUXへの入力として送られる点に留意されたい。スレーブIC300’上のMUX2からのOUT2は、マスタIC300内のIN2に送られ、これもやはり両マスタICのMUXへの入力として送られる。このサンプル及びホールド回路310及び310’の相互接続は、モニタ対象のあらゆる関連する電圧を、スレーブIC300’内のサンプル及びホールド回路310’からマスタIC300内のサンプル及びホールド回路310にプルするように動作する。スレーブIC300’では、ホールド回路312’及び差動増幅器314’が使用されていないので、図7Aではこれらを点線で示している。このサンプル及びホールド回路310及び310’の相互接続では、スレーブ内ではMUXへの入力IN1及びIN2が使用されず、マスタ内では出力OUT1及びOUT2が使用されず、これらもやはり点線で示している。2つのIC300及び300’間のPCB上におけるルーティングにより、スレーブIC300’からのOUT1及びOUT2と、マスタIC300内のIN1及びIN2との間の正しい接続が確立される。図7Aには、電極E17すなわち、スレーブIC300’からのE1上の電圧をモニタすることを示しており、これを行うためのコマンドテーブルを図7Bに示している。MUX1では、そのMUXアドレスADDRrを介してE17が選択されるが、スレーブICが選択されるCS_s=1,CS_m=0。スレーブICからは、他の関心のある電圧はプルされないので、スレーブ内のMUX2は値を選択しない。MUX1からの出力OUT1は、マスタIC300上の入力IN1にオフチップでルーティングされ、これがMUX1において選択される。この場合も、MUX1がADDRrにアドレス指定されるが、今回はマスタが選択されておりCS_m=1,CS_s=0、このマスタが、E17上の電圧をサンプル及びホールド回路312内のコンデンサの上部プレートにルーティングする。この例では、E17上の電圧の絶対値を知ることが望ましいので、マスタ内のMUX2アドレスADDRsは接地入力を選択し、これによりコンデンサの下部プレートには接地がルーティングされる。整定可能になった後、差動増幅器314が、その2つの入力の差分VE17を出力し、上述したようにこれをA/Dブロック74に渡して解釈することができる。刺激中に電極の電圧をモニタすることは、電極間の抵抗を計算する上でさらに有用であり、サンプル及びホールド回路310を使用してこれを行う例を図8A~図9Cに示す。図8A及び図8Bは、図5の例を継承するものであるが、陽極電極E1と陰極電極E17の間の抵抗Rを求めることを目的とする。このような抵抗測定は、両電極の電圧VE1及びVE17の評価を必要とする。ここでは、一方の電圧のみE17を、スレーブIC300’からマスタIC300内のサンプル及びホールド回路310にプルする必要がある。この電極は陰極であるので、この電圧をマスタIC300のIN2にプルするために、スレーブにおいてMUX2が選択されるADDRs;CS_s=1;CS_m=0。マスタのMUX1によって陽極電極E1が選択されADDRr;CS_m=1;CS_s=0、マスタのMUX2によってIN2スレーブIC300’からプルされたE17が選択されるADDRs;CS_m=1;CS_s=0。次に、結果として得られるホールド回路312内のコンデンサの電圧差VE1-VE17が、差動増幅器314の出力に反映される。これらの電圧を形成するために使用される電流は分かっているIので、IPG295では、電極間の抵抗をVE1-VE17/Iとして計算し、恐らくは減結合コンデンサのわずかな電圧降下を考慮するようにこの計算を若干調整することができ、この点については同時出願にさらに詳細に記載されている。図9A~図9Cに、陽極電極E32と陰極電極E17の間の抵抗を図9Aに示すように測定するさらに複雑な例を示す。ここでは、両電極がスレーブIC300’内に見られる。このため、図9Bに示すように、これらの各電極の電圧が、スレーブ内でMUX1及びMUX2によってそれぞれ選択され、これらを入力IN1及びIN2においてそれぞれマスタIC300に渡す。次に、マスタのサンプル及びホールド回路310内のMUXが、これらの入力IN1及びIN2を選択し、陽極E32の電圧をコンデンサ上に配置し、陰極E17の電圧をホールド回路314内の両コンデンサ上に配置する。前回と同様に、差動増幅器314は、2つの差分VE32-VE17を出力し、次に既知の電流Iを使用してこれらの間の抵抗を計算することができる。改善されたシステム290によって対処する別の重要な問題はクロッキングに関し、その詳細を図10に示す。各装置マイクロコントローラ305、マスタIC300及びスレーブIC300’は、機能するためにクロックを必要とする。各装置は、装置の内部機能を実行するためのクロック内部クロック、及び上述したプロトコルに従ってバス297上で通信するためのクロックバスクロックを必要とする図3Bを参照。バス297上の通信を整然と行うためには、各装置においてバスクロックを同期させるべきである。しかしながら、システム290の動作中には、一部の内部クロック又はバスクロックを必要としない時間が存在し得る。例えば、マスタIC300又はスレーブIC300’のいずれかが内部動作を実行中例えば、刺激を提供中であり、バス通信を必要としていない場合、バスクロッキングは必要なく、装置の内部クロックのみがアクティブであればよい。別の例では、マスタIC300のみをクロック制御する必要がある時間が存在し得る。マスタIC300上の電極E1~E16のみが患者の治療に必要である場合のシステム290の使用について検討する。このような期間中、スレーブIC300’は、バス297上で通信することも、いずれの内部動作を実行することも必要ないので、クロック制御する必要は全くない。簡単に言えば、所与の時点に、システム290内の装置の全てがその内部クロック又はバスクロックがアクティブであることを必要とするわけではない。特定のクロックが必要でない場合には、これを無効にすることが望ましく、すなわちクロック遷移中にのみ大きな電力が引き出され、システム内の不必要なクロックを無効にすることで、通常はバッテリ26の容量によって制限される電力を節約することができる図4B。従って、開示するシステムは、離散バス及び必要に応じて選択的に有効又は無効にできる内部クロックをシステム内で使用する。以下で明らかになるように、特定のクロックを独立制御することが望ましいので、マスタクロック信号はバス297によって分散されない。図10に、様々な内部クロック及びバスクロックを示す。マイクロコントローラ305は、クロック信号BUSCLKμcを使用してバス297上で通信し、その内部クロックとしてクロックCLKμcを使用する。上述したように、バスプロトコルは、比較的低速で動作することができ、従ってBUSCLKμcは、約100kHzなどの比較的低速とすることができる。比較すると、マイクロコントローラ305の内部機能を実行する内部クロック信号CLKμcは比較的高速であり、約数MHz又はそれ以上、或いは最新のプロセッサを使用している場合にはGHzにもなり得る。マスタIC300は、クロック信号BUSCLKmを使用してバス297上で通信し、その内部クロックとしてクロック信号CLKmを使用する。同様に、スレーブIC300’は、クロック信号BUSCLKsを使用してバス297上で通信し、その内部クロックとしてクロック信号CLKsを使用する。図示のように、バスクロックBUSCLKm及びBUSCLKsの各々は、これらのそれぞれのIC内の様々な機能ブロックブロック1、ブロック2に、より具体的には、このようなブロックのバスインターフェイス回路215に提供される。これらの機能ブロックは、図4Bに関連して上述した機能ブロックのいずれかを含むことができる。内部クロックCLKm及びCLKsは、ICが内部機能を実行するために使用される。図示してはいないが、内部クロックの1つの重要な用途は、電極に刺激を与えるための基準クロッキングを提供することであり、この基準クロッキングは、バス通信とは無関係に又はより正確には、バス通信によって既に刺激パラメータが与えられた後に生じることができる。図10には、システム290内でこれらの様々なクロックがどのように生成されるかをさらに示しており、特にマスタ及びスレーブIC300及び300’においてそれぞれ動作するクロック生成回路ブロック330及び330’を示している。バス297上の通信はマイクロコントローラ305によって制御され、このマイクロコントローラ305は、バス297上の通信が必要な場合、すなわちマイクロコントローラ305がマスタ又はスレーブIC300又は300’のいずれかとの間でデータを送受信する必要がある場合に制御信号BUSCLKenを発生する。この制御信号BUSCLKenは、マスタIC300の対応する入力部に送信され、図4A及び図10に示すようなオフチップルーティングによってスレーブIC300’の対応する入力部には送信されない。マスタIC300の入力部CLKINでは、水晶発振器340によってオフチップで生成された内部クロック信号CLKiも受け取られるスレーブIC300’では受け取られない。図から分かるように、内部クロック信号及びバスクロック信号は、マイクロコントローラの内部クロックCLKμcを除き全てCLKiから生成される従ってこれに同期する。図10では、水晶発振器340からのCLKiが正しい周波数のものであると想定しており、この場合も約100kHzとすることができる。しかしながら、適切なクロックCLKi図示せずを実現するために、水晶発振器340からの信号をクロック生成回路330内で処理又はバッファすることもできる。水晶発振器340の使用を示しているが、他の種類のクロッキング回路例えば、リング発振器を使用することもできる。さらに、図10には、CLKiを生成されたオフチップとして示しているが、オンチップクロック生成器を使用することもできる。この場合、M/Sコントローラ350及び350’を使用して、マスタIC300内のオンチップクロック生成器を有効にし、スレーブIC300’の同じ生成器を無効にすることができる。IPG内のバッテリ26が枯渇しない限り、一般にCLKiは常に実行されている。CLKiは、ANDゲート260において制御信号BUSCLKenと論理積演算されて、出力CLKOUT1においてマイクロコントローラ305のための通信クロックBUSCLKμCが生成される。これにより、BUSCLKenがアサートされた時にはBUSCLKμCがアクティブになりかつCLKiに同期し、BUSCLKenがアサートされていない時には接地される。なお、スレーブIC300’内では、BUSCLKenの対応する入力が接地され、これによりANDゲート360’への出力も接地され、点線によって示すようにスレーブ上の出力CLKOUT1が停止される。BUSCLKμCがアクティブになり、マイクロコントローラ305がバス297上で通信できるようになると、システムマスタとして機能するマイクロコントローラ305は、マスタ及びスレーブIC300及び300’内のどのクロックを有効にする必要があるかを評価することができる。この評価に応じて、マイクロコントローラ305は、マスタ及びスレーブ内のレジスタ380及び380’にバス297を介してそれぞれ書き込みを行うことができる。3つのレジスタビット、E、B及びIを具体的に示しており、これらは外部external、バスbus及び内部internalを意味する。B及びB’は、バスクロックBUSCLKm及びBUSCLKsをそれぞれ生成するためのイネーブル信号を含む。I及びI’は、内部クロックCLKm及びCLKsをそれぞれ生成するためのイネーブル信号を含む。マスタ及びスレーブの各々は、複数の内部クロック、従って複数の内部クロックレジスタ値を有することができるが、単純化のために図10にはこのようなクロックを1つしか示していない。Eは、IC300の外部のクロックCLKextを、300’などのダウンストリームスレーブICにポーティングするためのイネーブル信号を含む。レジスタ値E、B及びIの各々には、これらの固有のアドレス例えば、ADDRx、ADDRy及びADDRzにおいてアクセス可能であり、マイクロコントローラ305は、上述したチップ選択信号CS_m及びCS_sを使用してこれらのアドレスの各々に選択的に書き込みを行うことができる。マスタIC300から開始して、バスインターフェイス回路215が初期クロックCLKiを受け取る。マイクロコントローラ305のバスクロックBUSCLKμcはCLKiに同期しているので、これにより、マイクロコントローラ305は、マスタIC300の残りがバス297上で十分に通信できるようにしていなくても、レジスタ380内のレジスタ値E、B及びIを設定することができる。マスタIC300が、マイクロコントローラ305と通信するためにそのバスクロックBUSCLKmを必要とする場合、マイクロコントローラ305によってレジスタ値Bが高く設定されるようになる。マスタIC300がその内部クロックCLKmを必要とする場合、レジスタ値Iが設定されるようになる。必要でない場合、これらのレジスタは低く設定される。このようなレジスタ値は、初期化時には高状態にデフォルト設定することができる。BUSCLKμcと同様に、CLKiからはANDゲート365及び366を使用してBUSCLKm及びCLKmがそれぞれ生成され、レジスタ値B及Iがこれらのクロックを有効にする。上述したように、BUSCLKmは、マスタIC300内の他の全ての機能ブロック内のインターフェイス回路215に送信され、従ってBUSCLKmが有効になると、マイクロコントローラ305とマスタIC300の全ての機能との間の完全な通信が可能になる。なお、システム297の全ての有用な実施形態において、マスタIC300内にレジスタB及びIが厳密に必要なわけでない。代わりに、マスタバスクロックBUSCLKm及びマスタ内部クロックCLKmとして、初期クロック信号CLKiを直接使用することができる。しかしながら、そうすると、マイクロコントローラ305が、システムの動作中の有用な時点でこれらのクロック信号を選択的に無効にすることができなくなる。スレーブIC300’は、マスタIC300により発生されたクロック、すなわちクロック信号CLKextのみを受け取る。これは、マイクロコントローラ305がマスタIC300内の外部レジスタEを設定した時に行われる。BUSCLKμc、BUSCLKm及びCLKmと同様に、イネーブル信号この場合はEをCLKiで論理積演算することによってCLKextが形成され、従ってCLKextは、これらの他のクロック全てに同期する。図10に示すように、CLKextはマスタIC300から出力され、マスタ内のスレーブIC300’のCLKIN入力において受け取られ、スレーブ内のCLKiの場所を効果的に取得する。スレーブIC300’の動作が必要でない場合、すなわちスレーブIC300’がバスクロックも内部クロックも必要としない場合、Eが低く設定され、これによりCLKextを接地してスレーブIC300’へのクロック信号を無効にする。クロック信号が受け取られない場合、スレーブIC300’は、公称電力のみを引き出すようになる。スレーブIC300’を動作可能にすべき場合、マスタIC300においてEが高く設定され、CLKextが有効にされる。その後、マイクロコントローラ305は、所与の時点でバスクロックBUSCLKs及び/又は内部クロックCLKsが必要であるかどうかに応じて、スレーブIC300’内の様々なレジスタB’及びI’を設定することができる。システム290は、さらなるダウンストリームスレーブICを含まないので、図示の実施形態では、スレーブIC300’内の対応するレジスタE’は無関係である。従って、スレーブIC300’内のレジスタE’の作用は破線で示している。レジスタB’及びI’への書き込みは、マスタ内のレジスタB及びIと同じアドレスADDRy及びADDRzにおいて行われるが、CS_s=1である。クロックBUSCLKs及びCLKsが有効であるかどうかは、B’及びI’の状態によって決まり、スレーブ内では、これらのイネーブル信号が、ANDゲート365’及び366’においてそれぞれCLKextで論理積演算される。BUSCLKsは、スレーブIC300’内の他の全ての機能ブロック内のインターフェイス回路215に送信される。しかしながら、このことは、必ずしもスレーブ内の全ての回路ブロックが動作していること、又はスレーブ300’との完全な通信が可能であることを意味するわけではない。再考察すると、スレーブIC300’内の回路ブロックの中には、M/Sコントローラ350’図4Cを参照によってインターフェイス回路215が無効にされ、従ってBUSCLKsを受け取ったかどうかに関わらずバス297上で通信できなくなるものもある。CLKextは、最終的にマスタ内のCLKiから導出されるので、クロックBUSCLKs及びCLKsもCLKiに同期する。要約すれば、クロックBUSCLKμc、BUSCLKm、BUSCLKs、CLKm及びCLKsは、全てCLKiに同期し、全てが同じ周波数ここでも約100kHzを有するようになる。CLKiの動作速度が比較的遅い場合、ルーティング又はゲーティングに起因するこれらのクロック間のわずかな遅延は全く無関係である。バス297上の信頼できる通信のために同期する必要があるバスクロックに関しては、同期が特に重要である。しかしながら、刺激パルスの提供中などの、マスタとスレーブの間の内部動作における同期を確実にするには、内部クロックの同期も同様に重要である。この場合も、システム297の全ての有用な実施形態において、スレーブIC300’内にレジスタB’及びI’が厳密に必要なわけではない。代わりに、スレーブバスクロックBUSCLKs及びスレーブ内部クロックCLKsとして、外部クロック信号CLKextを直接使用することができる。しかしながら、そうすると、マイクロコントローラ305が、システムの動作中の有用な時点でこれらのクロック信号を選択的に無効にすることができなくなる。要約すれば、レジスタ値E、B、I、B’及びI’を設定することにより、マイクロコントローラ305は、マスタ及びスレーブIC300’が必要とする様々なバスクロック信号及び内部クロック信号を選択的に制御することができる。システムがスレーブIC300’を必要としない期間に、そのクロックをマスタ内でEを低く設定することによって完全に、又はマスタ内でEを高く設定し、B’及びI’の一方又は両方を低く設定することにより部分的に無効にできることが重要なことである。図10には、単一のマスタ及びスレーブICしか示していないが、本技術は、さらなるダウンストリームスレーブICのクロックを制御するように拡張可能である。本発明の特定の実施形態を図示し説明したが、上述の説明は本発明をこれらの実施形態に限定することを意図するものではない。当業者には、本発明の思想及び範囲から逸脱することなく様々な変更及び修正を行えることが明らかであろう。従って、本発明は、特許請求の範囲により定義される本発明の思想及び範囲に含めることができる代替物、修正物及び同等物を含むことが意図される。"