理解を容易にするために、可能な場合には、図面に共通する同一の要素を示すために同一の参照番号が使用されている。一例の要素は、他の例に有益に組み込まれ得ることが企図される。
本明細書に記載される例は、概して、温度依存応答を有する光学素子のための温度ロックループのためのデバイス及び方法に関する。一般に、いくつかの例に係るデバイスは、(電気ICを含む)電気集積回路(IC)ダイ及び(光電子回路を含む)光学ダイを含む。光学ダイ及び光電子回路は、光学素子、フォトダイオード、及びヒータを含む。光学素子は、光信号を通過させるように構成され、光学素子は、温度依存光学応答を有する。例示的な光学素子は、リング変調器、ダブルリングフィルタ、マッハツェンダー干渉計(MZI)などを含む。フォトダイオードは、光学素子を通過した光信号の少なくとも一部がフォトダイオードに入射するように、光学素子に対して配置される。ヒータは、光学素子に近接して配置される。電気ICダイ及び電気ICは、コントローラ及び第1のデジタルアナログ変換器(DAC)を含む。フォトダイオードは、コントローラの入力ノードに電気的に結合される。コントローラの出力ノードは、第1のDACの入力ノードに電気的に結合され、第1のDACの出力ノードは、ヒータに電気的に結合される。一般に、コントローラは、光学素子が光信号の目標波長において目標光学応答を有することができるように、ヒータの温度を制御し、それによって光学素子の温度を制御するように構成される。コントローラは、第1のDACに、ディザリングデューティサイクルを有する電圧を出力させることができる。
更に、電気ICのコントローラは、トランスインピーダンス段と、スライサ回路と、プロセッサ(例えば、デジタル信号プロセッサ(DSP))とを含むことができる。トランスインピーダンス段は、トランスインピーダンス増幅器と、第2のDACを有する制御可能電流源とを含むことができる。プロセッサは、DC設定及び温度設定を反復的に追跡するように構成される。DC設定は、第2のDACにバイアス電圧を制御可能電流源に出力させる第2のDACへのコード出力を含むことができ、及び/又は制御可能電流源内のバイアスされたトランジスタを動作可能に結合又は結合解除させることができる1つ以上の選択信号を含むことができる。制御可能電流源は、トランスインピーダンス段によって出力される信号のDC成分を低減及び/又は除去するように構成される。温度設定は、レベル選択値及びデューティコードを含むことができ、いくつかの例では、ディザリングデューティサイクルを有する熱コードが、レベル選択値及びデューティコードに基づいて生成され、第1のDACに出力される。第1のDACからの電圧出力は、光学素子が、例えば、目標波長と整合するピーク又は谷を有する光学応答を有するように、ヒータを制御して光学ダイ内の温度を達成することができる。DC設定及び温度設定は、スライサ回路からサンプリングされた信号に基づいて、及びトランスインピーダンス段から出力されたそれぞれの信号に基づいて追跡されることができる。いくつかの例では、追跡及びロックは、53Gb/s以上などの高速で動作する光学デバイスに対して実施されることができる。
様々な特徴が、図面を参照して以下に記載される。図面は縮尺どおりに描かれている場合もあるし、描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、「特許請求の範囲」に記載された発明の網羅的な説明として又は「特許請求の範囲」に記載された発明の範囲を限定するものとして意図されていない。加えて、図示された例は、示されたすべての態様又は利点を有する必要はない。特定の例に関連して記載される態様又は利点は、必ずしもその例に限定されず、そのように図示されていなくても、又はそのように明示的に記載されていなくても、任意の他の例において実施され得る。更に、本明細書に記載される方法は、特定の動作順序で記載される場合があるが、他の例による他の方法は、より多くの動作又はより少ない動作によって様々な他の順序(例えば、様々な動作の異なる直列又は並列実行を含む)で実施され得る。
以下の説明では、様々な信号、データ、又はコードは、様々な回路の動作の文脈で記載される。記載された信号、データ、又はコードは、信号、データ、又はコードが印加又は伝播される対応するノードを示し、更に、通信可能に結合及び/又は電気的に接続されるノードを示す。例えば、第1の回路から出力され、第2の回路に入力される信号、データ、又はコードの説明は、(信号、データ、又はコードが第1の回路から出力される)第1の回路の出力ノードが、(信号、データ、又はコードが第2の回路に入力される)第2の回路の入力ノードに通信可能に結合及び/又は電気的に接続されることを示す。そのようなノードの明示的な説明は、以下の説明において省略される場合があるが、当業者であれば、ノードの存在を容易に理解するであろう。更に、所与のノードは、マルチビットデータ又はマルチビットコードなど、複数のビット位置を有してもよい。
図1は、いくつかの例に係るデバイスのパッケージ100を示している。パッケージ100は、電気集積回路(IC)ダイ102と、光学ダイ104と、パッケージ基板106とを含む。電気ICダイ102は、光学ダイ104に送信される電気信号を生成するように構成された様々な回路を含み、光学ダイ104の光学応答を制御するように構成された制御回路を含む。光学ダイ104は、受信された電気信号に基づいて光信号を生成し、例えば、光ファイバを介して光信号を送信するように構成される。
光学ダイ104は、外部電気コネクタ112によって電気ICダイ102(例えば、電気ICダイ102の裏面)に機械的に取り付けられ、電気的に結合される。外部電気コネクタ112は、いくつかの例ではminibumpsである。電気ICダイ102(例えば、電気ICダイ102の前面)は、外部電気コネクタ114によってパッケージ基板106の第1の側に機械的に取り付けられ、電気的に結合される。外部電気コネクタ114は、いくつかの例では、制御コラプスチップ接続(C4)である。外部電気コネクタ116は、パッケージ基板106の第2の側(例えば、パッケージ基板106の第1の側とは反対側)にあり、パッケージ基板106に機械的に取り付けられ、電気的に結合される。
図2は、いくつかの例に係る図1のデバイスの少なくとも一部の簡略図である。図示の例では、電気ICダイ102は、電気IC202を含み、光学ダイ104は、光電子回路204を含む。電気IC202は、コントローラ210及びDAC212を含む。図示されていないが、電気IC202は、光チャネルを介して光信号として送信されることになる電気信号を生成する回路を更に含む。光電子回路204は、光源220と、光学素子222と、光出力チャネル224と、フォトダイオード226と、ヒータ228とを含む。光学素子222は、リング変調器、ダブルリングフィルタ、マッハツェンダー干渉計(MZI)など、光信号を通過させるように構成され、温度依存光学応答を有する任意の光学素子とすることができる。いくつかの例では、ヒータ228は、抵抗器である。しかしながら、任意のヒータが実装されることができる。
一般に、電気IC202の回路は、光電子回路204に伝達される電気信号を生成する。光源220は、受信した電気信号に基づいて光信号を生成し、光信号を光学素子222に送信する。光学素子222から出力された光信号は、光出力チャネル224を介して伝送される。フォトダイオード226は、光学素子222から出力される光信号の一部がフォトダイオード226に入射するように、光学ダイ104内に配置される。フォトダイオード226は、フォトダイオード226に入射する光信号に応答して、(例えば、VDDノードなどの電源ノードに電気的に結合されることによるものを含む)電流を生成するように構成される。フォトダイオード226は、コントローラ210に電気的に結合され、コントローラ210は、フォトダイオード226によって生成された電流を検出するように構成される。コントローラ210は、検出された電流に応答して、デジタル値をDAC212に出力する。DAC212は、デジタル値をアナログ電圧及び/又は電流に変換するように構成される。ヒータ228は、DAC212に電気的に結合され、光学素子222に近接して光学ダイ104内に配置される。DAC212は、アナログ電圧及び/又は電流をヒータ228に出力するように構成される。受信したアナログ電圧及び/又は電流に応答して、ヒータ228は、光学素子222の温度を制御することができる。
いくつかの例では、光学素子222は、光学素子222の温度に基づいて変化することができる光学応答を有する。図3A及び図3Bは、いくつかの例に係る光学素子222の光学応答に対する温度の影響を示すチャートである。図3A及び図3Bのチャートは、x軸に沿って波長(λ)を有し、y軸に沿って光学素子222の光学応答の大きさ(|H|)(例えば、波長の関数として)を有する。図3A及び図3Bは、光学素子222によって出力される光信号の中心波長(λc)302を示している。図3Aは、中心波長(λc)302が光学応答の大きさのピークの右側(RHS)にあるときの影響を示し、図3Bは、中心波長(λc)302が光学応答の大きさのピークの左側(LHS)にあるときの影響を示している。
図3Aは、光学素子222が第1の温度にあるときの第1の応答304を示し、光学素子222が第2の温度にあるときの第2の応答306を示している。第1の温度は、第2の温度よりも低い。このRHSシナリオでは、第1の応答304は、中心波長(λc)302における第2の応答306の大きさ316よりも小さい中心波長(λc)302における大きさ314を有する。光学素子222の温度を第1の温度から第2の温度に上昇させると、中心波長(λc)302における大きさが増大し、中心波長(λc)302が第2の応答306のピークに近付く。逆に、光学素子222の温度を第2の温度から第1の温度に低下させることは、中心波長(λc)302における大きさの減少をもたらすことができ、これは、中心波長(λc)302を第1の応答304のピークから更に遠ざける。
図3Bは、光学素子222が第1の温度にあるときの第1の応答324を示し、光学素子222が第2の温度にあるときの第2の応答326を示している。第1の温度は、第2の温度よりも低い。このLHSシナリオでは、第1の応答324は、中心波長(λc)302における第2の応答326の大きさ336よりも大きい中心波長(λc)302における大きさ334を有する。光学素子222の温度を第1の温度から第2の温度に上昇させることは、中心波長(λc)302における大きさの減少をもたらし、これは、中心波長(λc)302を第2の応答326のピークから更に遠ざける。逆に、光学素子222の温度を第2の温度から第1の温度に低下させることは、中心波長(λc)302における大きさの増加をもたらすことができ、これは、中心波長(λc)302を第1の応答324のピークに近付ける。
一般に、本明細書に記載される例は、温度ロックループによって、光学素子222の温度を制御して、光学素子222の光学応答を制御することができる。ヒータ228は、光学素子222に近接して概して局所化された熱エネルギーを生成するように構成され、ヒータ228は、コントローラ210によって制御される。コントローラ210は、フォトダイオード226によって検出された光信号に応答して、ヒータ228を制御して熱エネルギーを供給し、光学素子222の温度を上昇及び/又は低下させて、例えば、光学素子222の光学応答の大きさのピーク又は谷を光信号の中心波長に近付けることができる。
いくつかの例では、ヒータ228は、光学素子222の温度を能動的に低下させなくてもよい。むしろ、熱エネルギーは、ヒートスプレッダを使用することなどによってパッケージ100から放散することができ、ヒートスプレッダは、ヒータ228によって提供される低減された量の熱エネルギーと結合されたときに、光学素子222の温度の低下(例えば、熱エネルギーの集合的な低下)をもたらすことができる。そのような状況では、熱エネルギーが放散されるよりも大きい割合で熱エネルギーを提供するヒータ228によって温度を上昇させることができ、熱エネルギーが放散されるよりも小さい割合で熱エネルギー(もしあれば)を提供するヒータによって温度を低下させることができる。
図4は、いくつかの例に係る、図2の簡略化された概略図のより詳細な概略図である。コントローラ210は、DC制御可能トランスインピーダンス段と、スライサ回路402と、DAC404と、DSP406とを含む。DC制御可能トランスインピーダンス段は、電流源410と、抵抗器412と、トランスインピーダンス増幅器(TIA)414と、制御可能電流源416と、DAC418とを含む。
フォトダイオード226のカソードは、第1の電源ノード(例えば、VDDノード)に電気的に接続され、フォトダイオード226のアノードは、更にコントローラ210の入力ノードとすることができるDC制御可能トランスインピーダンス段の入力ノード420に電気的に結合される。電流源410は、第1の電源ノード(例えば、VDDノード)と入力ノード420との間に電気的に接続される。電流源410は、電流源410が静電流又は定電流を提供するように構成されるように、静電流によってバイアスされる電流ミラーであるか、又はそれを含むことができる。制御可能電流源416は、入力ノード420と第2の電源ノード(例えば、接地ノード)との間に電気的に接続される。抵抗器412の第1の端子は、入力ノード420に電気的に接続され、抵抗器412の第2の端子(第1の端子の反対側)は、DC制御可能トランスインピーダンス段の出力ノード422に電気的に接続される。TIA414の入力ノードは、入力ノード420に電気的に接続され、TIA414の出力ノードは、出力ノード422に電気的に接続される。
スライサ回路402の信号入力ノードは、DC制御可能トランスインピーダンス段の出力ノード422に電気的に接続される。スライサ回路402の基準電圧入力ノードは、DAC404の出力ノードに電気的に接続される。スライサ回路402の出力ノードは、DSP406の入力ノードに電気的に接続される。いくつかの例では、スライサ回路402は、比較器とすることができるか、又は比較器を含むことができる。DAC404の入力ノードは、基準電圧(Vref)に対応するデジタル値を記憶するメモリ素子(例えば、電気ヒューズ(eFuse)など)に電気的に結合されることができる。基準電圧Vrefは、いくつかの例では、VDD/2とすることができる。
DSP406は、制御可能電流源416及びDAC418を含むDC制御可能トランスインピーダンス段のそれぞれの1つ以上の制御入力ノードに電気的に接続された1つ以上の制御出力ノードを有する。DSP406は、制御可能電流源416の制御入力ノードに電気的に接続された制御出力ノードを有する。DSP406は、DAC418の入力ノードに電気的に接続された別の制御出力ノードを有する。DAC418の出力ノードは、制御可能電流源416のバイアス電圧ノードに電気的に接続される。図示された例では、制御可能電流源416は、制御可能電流源416が制御されることができる2つの機構を有し、これについては後に詳述する。他の例では、1つの及び/又は異なる機構が、制御可能電流源416を制御するために実装されることができる。
DSP406は、DAC212の入力ノードに電気的に接続された別の出力ノードを有する。DSP406は、組み合わせ論理、順序論理、状態機械、及び任意の他の回路を含むか、又はそれらの任意の組み合わせとすることができる。DSP406は、概して、本明細書に記載される機能を実装するように構成され、更に、ハードウェアのみによって、機械実行可能命令を実行するハードウェアによって、又はそれらの組み合わせによって、機能の各々を実装することができる(例えば、機能の一部がハードウェアのみによって実装され、機能の別の部分が機械実行可能命令を実行するハードウェアによって実装される)。
DAC212の出力ノードは、ヒータ228の入力ノードに電気的に結合される。図示された例では、ヒータ228は、抵抗器430を含むか、又は抵抗器である。抵抗器430は、図示の例では、ヒータ228の入力ノードと電源ノード(例えば、接地ノード)との間に電気的に接続される。
動作中、フォトダイオード226は、フォトダイオード226に入射する光信号に応答して電流を生成する。フォトダイオード226によって生成された電流は、入力電流Iinとして入力ノード420においてコントローラ210によって受信される。DC制御可能トランスインピーダンス段は、入力ノード420における入力電流Iinに基づいて、DC制御可能トランスインピーダンス段の出力ノード422において電圧信号を生成する。スライサ回路402は、出力ノード422における電圧信号がDAC404によって出力される基準電圧よりも大きいか否かに基づいて、論理「1」又は論理「0」を生成する。DAC404は、例えば、DAC404の入力ノードに通信可能に結合されたメモリ素子に記憶されたデジタル値に基づいて基準電圧を生成する。基準電圧は、静的電圧とすることができ、したがって、いくつかの例では、メモリ素子に記憶されたデジタル値は、静的とすることができる。DSP406は、スライサ回路402によって生成された論理「1」及び論理「0」をサンプリングする。
DSP406は、図5に示すように、ブロック502においてDC設定を反復的に追跡し、ブロック504において温度設定を追跡する。ブロック502においてDC設定を追跡するとき、DSP406は、入力ノード420における入力電流IinのDC成分を第2の電源ノード(例えば、接地ノード)に分流する電流IDCを提供するように、制御可能電流源416及びDAC418のDC設定を設定する。これは、低減及び/又は除去された出力ノード422における電圧信号のDC成分をもたらすことができる。電圧信号のこのDC成分を低減及び/又は除去することは、スライサ回路402及びDSP406に、フォトダイオード226に入射した光信号に対して論理「1」及び論理「0」をより正確に捕捉させることができる。
一般に、後でより詳細に記載されるように、DSP406は、それに応答して、スライサ回路402から捕捉された論理「1」の数及び論理「0」の数に基づいて、制御可能電流源416の電流IDCを増加又は減少させる。DAC212からヒータ228への電圧出力は、スライサ回路402からのサンプルがブロック502においてDC設定追跡のために捕捉される期間中に、異なるデューティサイクル間でディザリングする。一般に、統計的に有意なサンプルサイズの場合、フォトダイオード226に入射する光信号は、等しい数の論理「1」及び論理「0」を有すると仮定される。したがって、異なるデューティサイクル間でディザリングするDAC212からの電圧出力を用いて、捕捉された論理「1」の数が、捕捉された論理「0」の数よりも例えば著しく大きい場合、DC成分が、出力ノード422における電圧信号内に存在してもよく、DSP406は、それに応じて、出力ノード422における電圧信号のDC成分を低減及び/又は除去するように、制御可能電流源416の電流IDCを調整する。逆に、捕捉された論理「0」の数が、捕捉された論理「1」の数よりも例えば著しく大きい場合、制御可能電流源416の電流IDCは、入力ノード420における入力電流IinのAC成分の一部を誤って迂回させる可能性があり、DSP406は、それに応じて、出力ノード422における電圧信号の迂回されたAC成分を復元するように、制御可能電流源416の電流IDCを調整する。
ブロック504において温度設定を追跡するとき、DSP406は、DAC212に提供されるコードを設定し、次に、電圧及び/又は電流をヒータ228(例えば、抵抗器430)に提供する。電圧及び/又は電流、並びに熱エネルギーがパッケージ100から放散される速度に応じて、光学素子222の温度が維持されることができ、上昇させることができ、又は低下させることができ、それによって光学素子222の光学応答を調整することができる。コードは、ディザリングするデューティサイクルを有する。例えば、コードは、クロック信号が論理的にローである間に1つのデューティサイクルを有し、クロック信号が論理的にハイである間に別の異なるデューティサイクルを有することができる。後でより詳細に記載されるように、DSP406は、クロック信号の個別のサイクル内の所与の時間にサンプリングされる論理「1」の数及び論理「0」の数に基づいて、DAC212に提供されるコードのレベル及び/又はコードのデューティサイクルを応答的に増加又は減少させる。一般に、捕捉された論理「1」及び論理「0」の数は、光信号の中心波長が、部分的にDC設定に起因して、光学素子222の光学応答のRHS上にあるかLHS上にあるかを示す。DSP406は、DAC212に提供されるコードのレベル及び/又はデューティサイクルを、捕捉された論理「1」及び論理「0」の数に基づいて調整させ、その結果、光学素子222の温度が応答して調整される。
例えば、パッケージ100は、周囲温度が変化することができる環境内に配置されることができるため、DSP406は、DC設定を反復的に追跡し、温度設定を追跡して、ヒータが熱エネルギーに変換する、ヒータ228に提供される電気エネルギーの量を調整することができる。各反復において、DC設定は、制御可能電流源416の電流IDCの量が各反復において新たに決定されることができるように、ある所定の初期量にリセットされることができる。温度設定は、反復ごとに調整されることができる。温度設定は、いくつかの例では、反復ごとにリセットされない。
以下の図及び説明は、いくつかの態様においてプログラム可能であるより詳細な例を提供する。他の例は、プログラム可能でなくてもよく、又はより少ない、より多い、若しくは異なる態様でプログラム可能であってもよい。当業者であれば、以下の例を変更して、様々なプログラマビリティを省略又は含める変更を容易に理解するであろう。
図6は、いくつかの例に係るDSP406の概略図を示している。DSP406は、クロック分周回路602と、クロック生成回路604と、マルチプレクサ606、614と、最大/最小計算回路608と、同期回路610と、追跡回路612と、パルス幅変調(PWM)回路616とを含む。図6は、様々な信号の説明を容易にするために、DAC212、418、ヒータ228、スライサ回路402、及び制御可能電流源416を更に示している。
図6を詳細に説明する前に、図6において識別される様々な信号が、図7のタイミングチャートに関して一般的に記載される。この一般的な説明は、後で詳細に記載される動作及び機能を文脈説明するのに役立つ。DSPクロック信号(dsp_clk)は、一般に、DSP406の動作が基づくクロック信号である。追跡クロック信号(track_clk)は、dsp_clkに基づく分周クロック信号である。本明細書に記載される例では、track_clkは、dsp_clkの周波数の半分である周波数を有するが、track_clkの周波数は、dsp_clkの周波数の他の分割された量とすることができる。一例では、dsp_clkの周波数は875MHzであり、track_clkの周波数は437.5MHzである。
サンプリングクロック信号(sampling_clk)及びピークロック信号(slicer_clk_peaklock)は、同じ周波数を有し、位相整合される。sampling_clkは、部分的に、DSP406がブロック502のDC設定追跡段階にあるとき、及びブロック504における温度設定追跡段階にあるときを制御する。sampling_clkは、プログラム可能とすることができる。一般に、sampling_clkは、dsp_clkの周波数よりも数桁小さい周波数を有する。例えば、sampling_clkの周波数は、数十キロヘルツのオーダーから数十メガヘルツのオーダーとすることができる。slicer_clk_peaklockは、一般に、DSP406による決定が、スライサ回路402をリセットする温度設定を増加又は減少させるために行われる各サイクル内の短い時間を除いて、論理「1」レベルにある。
PWMモードクロック信号(pwm_mode_clk)が図7に示されているが、これは、DSP406では明示されていない場合がある。pwm_mode_clkは、PWM回路616から信号が出力される周波数を示す。pwm_mode_clkは、dsp_clkに基づく分周クロック信号である。pwm_mode_clkは、以下に説明する例では、プログラム可能な周波数を有する。pwm_mode_clkの周波数は、プログラム可能であろうとプログラム不可能であろうと、dsp_clkの周波数の任意の分割量とすることができる。一例では、pwm_mode_clkは、2つのモード間でプログラム可能であり、その一方は、dsp_clkの周波数の16分の1である周波数を有するようにpwm_mode_clkを制御し、その他方は、dsp_clkの周波数の64分の1である周波数を有するようにpwm_mode_clkを制御する。
アナログ出力電圧(Vout_thermal_dac)は、DAC212からヒータ228に出力される。Vout_thermal_dacは、DSP406から出力された信号に基づいて、pwm_mode_clkと同じ周波数を有する。Vout_thermal_dacは、kレベル電圧(v[k])と(k+1)レベル電圧(v[k+1])との間で振動する。Vout_thermal_dacのデューティサイクルは、sampling_clkに基づいてディザリングされる。sampling_clkが論理的にローであるとき、Vout_thermal_dacは、デューティサイクルDC0を有し、sampling_clkが論理的にハイであるとき、Vout_thermal_dacは、デューティサイクルDC1を有する。デューティサイクルDC1は、デューティサイクルDC0よりも大きい。
デューティサイクルDC0を有するVout_thermal_dacは、ヒータ228における温度を温度Temp0にさせる。デューティサイクルDC1を有するVout_thermal_dacは、ヒータ228における温度を温度Temp0+deltaTempにさせる。デューティサイクルDC0からデューティサイクルDC1への変化からの遅延702は、温度が応答して変化する前に生じることができる。
ヒータ228における温度は、電気エネルギーがヒータ228によって熱エネルギーに変換される速度と、熱エネルギーがパッケージ100から放散する速度との複合関数とすることができる。Vout_thermal_dacがより大きいとき(例えば、電圧v[k]に対する電圧v[k+1]に対して)、より大きい熱エネルギーがヒータ228において変換される。したがって、Vout_thermal_dacのより大きいデューティサイクルは、Vout_thermal_dacのより小さいデューティサイクルと比較して、より多くの熱エネルギーがヒータ228において変換されることを可能にする(Vout_thermal_dacがデューティサイクルに対して同じ電圧間でディザリングすると仮定する)。これは、より多くの熱エネルギーをヒータ228に生じさせることができ、これは温度上昇を引き起こすことができる。温度の上昇は対数応答とすることができるが、図7は、例示を目的として段階的な上昇又は低下を示している。いくつかの例では、Vout_thermal_dacのデューティサイクルが増加される時間と、ヒータ228における温度が温度Temp0+deltaTempに到達する時間との間の遅延702は、6μs程度である。ディザリングVout_thermal_dacの複数のサイクルは、デューティサイクルが増加される時間と、ヒータ228における温度が温度Temp0+deltaTempに到達する時間との間に生じることができる。
ヒータ228における温度は、どのkレベル電圧v[k]及び(k+1)レベル電圧v[k+1]がディザリングされるべきかを選択することによって、及びVout_thermal_dacをディザリングするデューティサイクルを選択することによって、制御されることができる。kの値を選択することは、Vout_thermal_dacがディザリングする電圧レベルを決定する。これらの電圧レベルを選択することは、ヒータ228において達成されることができる温度の可能な範囲(例えば、温度Temp[k]から温度Temp[k+1]まで)を決定することができる。
ディザリングのためにVout_thermal_dacのデューティサイクルを選択することは、温度Temp[k]から温度Temp[k+1]までの範囲内にあるヒータ228における温度を達成することができる。デューティサイクルは、ヒータ228によって変換された熱エネルギーの蓄積(例えば、積分)に起因して、温度Temp[k]から温度Temp[k+1]までの範囲内のヒータ228における温度の補間を達成することができる。より低いデューティサイクルは、ヒータ228における温度を温度Temp[k]に近付けることができ、より高いデューティサイクルは、ヒータ228における温度を温度Temp[k+1]に近付けることができる。
図6に戻って参照すると、クロック分周回路602は、入力クロック信号の周波数をある量、一例では2で分割するように構成される。クロック分周回路602は、周波数を2で分割するように構成されたクロックトDフリップフロップを含むことができる。dsp_clkは、クロック分周回路602の入力ノードに入力され、track_clkは、クロック分周回路602の出力ノードに出力される。
クロック生成回路604は、track_clk、プログラマブルサンプリング周波数値(prog_sampling_freq)、及びプログラマブルサンプリングオフセット値(prog_sampling_offset)に基づいて、sampling_clk及びslicer_clk_peaklockを生成するように構成される。クロック生成回路604は、sampling_clk及びslicer_clk_peaklockを生成するための任意の適切な論理又は他の回路を含むことができる。prog_sampling_freqは、sampling_clkのための一次周波数を選択することができ、利用可能な一次周波数は、クロック生成回路604によって実装されるアーキテクチャ及び回路によって決定されることができる。prog_sampling_offsetは、sampling_clkのための1つのサイクル内に含めるためにtrack_clkの追加サイクルの数を選択することができ、追加サイクルの利用可能な数は、クロック生成回路604によって実装されるアーキテクチャ及び回路によって決定されることができる。一例として、prog_sampling_freqによって示される選択された一次周波数の各サイクルに対してtrack_clkの32,768サイクルが発生し、prog_sampling_offsetによって示される追加のサイクル数が128であると仮定すると、sampling_clkは、sampling_clkのサイクル当たりtrack_clkの32,896サイクル(例えば、32,768+128)を達成する周波数を有することになる。sampling_clkの周波数は、以下に示すように数学的に表されることができる:
ここで、fsampling_clk及びftrack_clkは、sampling_clk及びtrack_clkのそれぞれの周波数であり、f(prog_sampling_freq)は、prog_sampling_freqによって示される主周波数であり、C(prog_sampling_freq)は、prog_sampling_offsetによって示される追加サイクル数である。以下の表1は、一例におけるftrack_clk、prog_sampling_freq、f(prog_sampling_freq)、prog_sampling_offset、C(prog_sampling_freq)、及びfsampling_clkの例示的な値を列挙している。
クロック生成回路604は、sampling_clkに基づいて、slicer_clk_peaklockを更に生成する。slicer_clk_peaklockは、一般に、sampling_clkの各サイクル中の比較的少量の時間を除いて、スライサ回路402を有効にする論理レベルにあり、slicer_clk_peaklockは、上述したように、スライサ回路402をリセットする論理レベルにある。slicer_clk_peaklockが、スライサ回路402をリセットする論理レベルにある時間は、DSP406が、ブロック504における温度設定追跡段階中に、DAC212へのコード出力を決定し、場合によっては調整することを可能にする。
マルチプレクサ606は、「1」選択入力ノードにおいてtrack_clkを受信し、「0」選択入力ノードにおいてslicer_clk_peaklockを受信するように構成される。マルチプレクサ606は、後述するマルチプレクサ614から入力される制御信号に基づいて、track_clkとslicer_clk_peaklockとを選択的にスライサクロック信号(slicer_clk)として出力するように構成される。一般に、DC設定追跡が有効にされるとき、slicer_clkは、ブロック502のDC設定追跡段階中のtrack_clkであり、slicer_clkは、ブロック504の温度設定追跡段階中のslicer_clk_peaklockである。DC設定追跡が無効にされるとき、slicer_clkは、track_clkである。
最大/最小計算回路608は、sampling_clkのサイクル中に捕捉のターゲットとされる論理「1」及び/又は「0」の最大数及び/又は最小数を計算するように構成される。スライサ回路402から捕捉された信号は相補信号であるため、論理「1」の最大数を決定することは、論理「0」の最小数を示すこともでき、その逆も同様である。したがって、論理「1」及び/又は「0」の最大数及び/又は最小数のいずれか又は組み合わせを使用して、様々な論理が実装されることができる。本明細書に記載される例では、最大/最小計算回路608は、論理「1」の最大数及び最小数を計算するように構成される。最大/最小計算回路608は、最大値及び/又は最小値を計算するための任意の適切な論理又は他の回路を含むことができる。
最大/最小計算回路608は、図示の例では、プログラム可能なTIA DC誤差比値(prog_tia_dc_ratio)、prog_sampling_freq、prog_sampling_offset、及びtrack_clkに基づいて、論理「1」の最大数(MAX1)及び論理「1」の最小数(MIN1)を計算するように構成される。prog_tia_dc_ratioは、sampling_clkの1サイクル内にスライサ回路402から捕捉されたいくつかのサンプルが含むことができるエラーサンプルの割合を示す。例えば、捕捉されたサンプルの数の1%が誤っている可能性があり、サンプルの数が32,896である場合(例えば、上記の例におけるsampling_clkの1サイクル当たりのtrack_clkのサイクルの数)、エラーサンプルの数は、32,896のうちの329とすることができる。
DC設定追跡の場合、sampling_clkの個々のサイクル中にtrack_clkに基づいていくつかのサンプルがスライサ回路402から捕捉される。sampling_clkのサイクル中に、Vout_thermal_dacは、図7に関して上記で説明したように、sampling_clkの異なる部分について異なるデューティサイクルを有する。遅延702の後、sampling_clkの1サイクルの間、したがって、ヒータ228における温度は、光学素子222の応答が同様にディザリングするように、ディザリングするであろう。これらの条件下で、入力電流IinのDC成分が存在し、実質的に除去されない場合、track_clkに基づいてスライサ回路402から捕捉されたサンプルは、論理「0」の数と比較して著しく多い数の論理「1」を有することができ、逆もまた同様である。理想的には、入力電流IinのDC成分は除去され、論理「1」の数は論理「0」の数に等しい。統計的に有意なサンプルサイズの場合、スライサ回路402から捕捉されたサンプル内の論理「1」の数が論理「0」の数に等しくなるように、フォトダイオード226に入射する光信号の論理「1」の数が論理「0」の数に等しいと仮定される。したがって、取り込まれた論理「1」の数が取り込まれた論理「0」の数に等しいことからの任意のずれは、エラーであると想定される。したがって、MAX1は、sampling_clkの1サイクル当たりのtrack_clkのサイクル数の半分に、prog_tia_dc_ratioによって示される割合の半分と1との和を掛けたものとして計算され、MIN1は、sampling_clkの1サイクル当たりのtrack_clkのサイクル数の半分に、prog_tia_dc_ratioによって示される割合の半分と1との和を掛けたものとして計算される。sampling_clkの1サイクル当たりのtrack_clkのサイクル数は、上述したように、prog_sampling_frequencyによって示される主周波数の1サイクル当たりのtrack_clkのサイクル数と、prog_sampling_offsetによって示される追加サイクル数との和として計算されることができる。MAX1は、以下に示すように数学的に表されることができる:
ここで、ftrack_clk、f(prog_sampling_freq)、C(prog_sampling_offset)は、上述した通りであり、E(prog_tia_dc_ratio)は、prog_tia_dc_ratioによって示される割合(100で除算される)である。MAX1が非整数である場合、MAX1は、最も近い整数に切り捨てられる。MIN1は、数学的に以下のように表されることができる:
MIN1が非整数である場合、MIN1は、最も近い整数に切り上げられる。
以下の表2は、表1に示されるようにprog_sampling_freq[1:0]=00及びprog_sampling_offset[3:0]=0000であると仮定して、prog_tia_dc_ratio、E(prog_tia_dc_ratio)、並びに結果として生じるMIN1及びMAX1についての例示的な値を列挙する。
とりわけ、追跡回路612に移る前に、追跡回路612からDAC 418及び制御可能電流源416に出力される信号について説明する。トランスインピーダンス段DACデジタルコード(tia_dac_code)は、追跡回路612からDAC418に出力されるマルチビット値(例えば、8ビット値)である。DAC418は、tia_dac_codeのマルチビット値をアナログバイアス電圧(v_tia_dac)に変換し、このアナログバイアス電圧は、制御可能電流源416に出力される。トランスインピーダンス段電流選択デジタルコード(tia_ictrl)は、追跡回路612から制御可能電流源416に出力されるマルチビットコード(例えば、8ビットコード)である。
一般に、制御可能電流源416は、並列に電気的に接続された複数の直列接続されたトランジスタ対(例えば、直列に電気的に接続されたトランジスタのチャネル)を含む。各対について、トランジスタの一方は、v_tia_dacに電気的に接続されたゲートノードを有して、その抵抗器にバイアスをかけて抵抗を有し、トランジスタの他方は、tia_ictrlの個別のビット位置に電気的に接続されたゲートノードを有して、個別の対のトランジスタを並列構成で選択的且つ動作可能に電気的に接続する。
v_tia_dac及びtia_ictrlを示すために図8を簡単に参照すると、例示的な制御可能電流源416が示されている。制御可能電流源416は、i個の直列接続されたn型トランジスタ対802-0、804-0、802-1、804-1、...802-(i-1)、804-(i-1)(例えば、n型電界効果トランジスタFET)を含む。
n型トランジスタ802、804の直列接続された対の各対に対して、n型トランジスタ802のソースノードは、電源ノード(例えば、接地ノード)に電気的に接続される。n型トランジスタ802のドレインノードは、n型トランジスタ804のソースノードに電気的に接続され、n型トランジスタ804のドレインノードは、ノード810に電気的に接続される。したがって、直列接続されたi個のn型トランジスタ対802、804は、電気的に並列に接続される。n型トランジスタ802のそれぞれのゲートノードは、v_tia_dacが印加されるノードに電気的に接続される。n型トランジスタ804の各ゲートノードは、tia_ictrlの個別のビット値が印加されるノードに電気的に接続される。例えば、n型トランジスタ804-0のゲートノードは、tia_ictrl[0]が印加されるノードに電気的に接続され、n型トランジスタ804-1のゲートノードは、tia_ictrl[1]が印加されるノードに電気的に接続される、などである。v_tia_dacは、所望の抵抗を有するようにn型トランジスタ802にバイアスをかけることができる。n型トランジスタ802を並列に選択的且つ動作可能に接続して実効抵抗を達成するために、tia_ictrlのビット位置は、選択的に、n型トランジスタ804を個別に開(例えば、非導通)状態又は閉(例えば、導通)状態にさせることができる。バイアスされたn型トランジスタ802を並列に動作可能に電気的に接続することは、ノード810を流れる電流IDCを制御することができる。
図6に戻って、同期回路610は、スライサ回路402からの入力信号(tia_in)をtrack_clkに同期させるように構成される。同期回路610は、例えば、クロックトリガフリップフロップとすることができるか、又はクロックトリガフリップフロップを含むことができる。同期回路610は、同期したtia_inを追跡回路612に出力する。
追跡回路612は、tia_inを追跡し、それに応じて、制御可能電流源416を制御するための(例えば、DC設定追跡のための)様々なコードを出力するように構成される。追跡回路612は、クロック分周回路602からtrack_clk、クロック生成回路604からsampling_clk、同期回路610から同期されたtia_in、最大/最小計算回路608からMIN1及びMAX1、並びにプログラム可能なDC追跡信頼性投票値(prog_tia_dc_vote)を受信するように構成される。追跡回路612は、更に、tia_dac_code、tia_ictrl、及び追跡DC設定段階完了信号(tia_dc_track_done)を生成して出力するように構成される。
prog_tia_dc_voteは、sampling_clkの事前定義された数のサイクル内のサンプリングサイクルの数であるか、又はそれを示し、ここで、tia_inから(track_clkに基づいて)捕捉された論理「1」の数は、DC設定追跡段階が完了したかどうかを判定するために、MIN1以上であり、MAX1以下である。
tia_dc_track_doneは、DC設定追跡段階が完了したかどうかを示す。この例では、tia_dc_track_doneは、DC設定追跡段階が進行中である間は論理「0」であり、DC設定追跡段階が完了したときは論理「1」である。
sampling_clkの個別のサイクルについてtrack_clkに基づいて捕捉された論理「1」の数が、sampling_clkの所定のサイクル数が発生する前のprog_tia_dc_voteのサイクル数についてMIN1以上且つMAX1以下である場合、tia_dc_track_doneは、DC設定追跡段階が完了したことを示すために論理「1」に設定される。そうでなければ、sampling_clkの所定数のサイクルが生じた後、tia_dac_code及び/又はtia_ictrlは、制御可能電流源416の電流IDCを調整するように調整され、所定数のサイクルの別の反復が、DC設定追跡段階を継続するように実行される。このDC設定追跡段階の更なる詳細は、後で説明される。
追跡回路612は、tia_dc_track_doneを出力し、このtia_dc_track_doneは、上述したように、DC設定追跡段階中に論理「0」に設定され、DC設定追跡段階が完了すると論理「1」に設定される。マルチプレクサ614の「1」選択入力ノードには、tia_dc_track_doneが反転されて入力される。論理「1」は、マルチプレクサ614の「0」選択入力ノードに入力される。マルチプレクサ614の選択制御入力ノードは、ユーザ設定可能なイネーブル信号とすることができるトランスインピーダンス段DC追跡イネーブル信号(tia_dc_track_en)を受信する。マルチプレクサ614の出力ノードは、マルチプレクサ606の選択制御入力ノードに通信可能に結合される。(tia_dc_track_enが論理「0」に設定されるように)DC設定追跡が無効にされるとき、マルチプレクサ614は、論理「1」をマルチプレクサ606の選択制御入力ノードに出力し、これは、マルチプレクサ606に、slicer_clk_peaklockをslicer_clkとしてスライサ回路402に出力させる。(tia_dc_track_enが論理「1」に設定されるように)DC設定追跡が有効にされるとき、マルチプレクサ614は、反転されたtia_dc_track_doneをマルチプレクサ606の選択制御入力ノードに出力し、これは、マルチプレクサ606に、DC設定追跡段階が完了したときに(例えば、tia_dc_track_doneが論理「1」であるときに)、slicer_clk_peaklockをslicer_clkとしてスライサ回路402に出力させ、DC設定追跡段階中に(例えば、tia_dc_track_doneが論理「0」であるときに)、track_clkをslicer_clkとしてスライサ回路402に出力させる。
追跡回路612及びPWM回路616について説明する前に、PWM回路616からDAC 212へ出力される信号について説明する。出力DAC熱コード(Dout_thermal_code[63:0])は、PWM回路616からDAC212に出力されるマルチビット値(例えば、図示の例では64ビット熱コード)である。この例では、DAC212は、Dout_thermal_code[63:0]の熱コードを、ヒータ228に出力されるVout_thermal_dacに変換する。図9は、これらの信号の態様を示している。いずれの場合も、Dout_thermal_code[63:0]は、pwm_mode_clkの周波数を有する選択されたkビット位置(Dout_thermal_code[k])を有することができ、Dout_thermal_code[k](及び、いくつかのシナリオでは、Dout_thermal_code[k+1]又はDout_thermal_code[k-1])は、選択されたデューティサイクルでディザリングされることができる。pwm_mode_clkの1サイクルは、例えば、時刻t0と時刻t1との間である。更に、pwm_mode_clkの3サイクルは、例示を目的として時刻t0から時刻t2との間である。
Dout_thermal_code[k]は、時刻t0と時刻t2との間のデューティサイクルDC0を有する。例示を目的として、デューティサイクルDC0は50%である。時刻t0と時刻t2との間では、k-1ビット目(Dout_thermal_code[k-1])から0ビット目(Dout_thermal_code[0])までのビット位置が論理「1」である。(k+1)ビット位置(Dout_thermal_code[k+1])から63ビット位置(Dout_thermal_code[63])までのビット位置は、論理「0」である。時刻t0と時刻t2との間のこれらの値を有するDout_thermal_code[63:0]のビット位置は、Vout_thermal_dacを、デューティサイクルDC0に対応するデューティサイクルによって電圧v[k]と電圧v[k+1]との間で振動させ、これは、図7に関して上述したように、ヒータ228における温度を温度Temp0にさせる。
時刻t2において、Dout_thermal_code[k]のデューティサイクルは、デューティサイクルDC1に増加される。Dout_thermal_code[k]は、時刻t2と時刻t4との間のデューティサイクルDC1を有する。例示を目的として、デューティサイクルDC0は70%である。時刻t2から時刻t4までの間、Dout_thermal_code[(k-1):0]は論理「1」であり、Dout_thermal_code[63:(k+1)]は論理「0」である。時刻t2と時刻t4との間でこれらの値を有するDout_thermal_code[63:0]のビット位置は、Vout_thermal_dacを、デューティサイクルDC1に対応するデューティサイクルで電圧v[k]と電圧v[k+1]との間で振動させる。時刻t2と時刻t4との間のVout_thermal_dacは、図7に関して上述したように、ヒータ228における温度を温度Temp0+deltaTempまで上昇させる。図示されるように、ヒータ228における温度は、時刻t2におけるデューティサイクルの増加に続く時刻t3において、温度Temp0から温度Temp0+deltaTempまで増加する。いくつかの例では、(例えば、時刻t2において)Dout_thermal_code[k]のデューティサイクルが増加される時間と(例えば、時刻t3において)ヒータ228の温度が温度Temp0+deltaTempに到達した時間との間の遅延は、6μs程度である。更に、いくつかの例では、pwm_mode_clkのサイクルは、数十ナノ秒程度とすることができ、したがって、Dout_thermal_code[k]を振動させる複数のサイクルが、デューティサイクルが増加される時間と、ヒータ228における温度が温度Temp0+deltaTempに到達する時間との間に生じてもよい。
時刻t4において、Dout_thermal_code[k]のデューティサイクルは、デューティサイクルDC0に減少される。Dout_thermal_code[k]は、図9の時刻t4以降のデューティサイクルDC0を有する。時刻t4以降において、Dout_thermal_code[(k-1):0]は論理「1」であり、Dout_thermal_code[63:(k+1)]は論理「0」である。時刻t4に続くこれらの値を有するDout_thermal_code[63:0]のビット位置は、Vout_thermal_dacを、デューティサイクルDC0に対応するデューティサイクルによって電圧v[k]と電圧v[k+1]との間で振動させる。時刻t4以降のVout_thermal_dacは、ヒータ228の温度を温度Temp0まで低下させる。図示されるように、ヒータ228における温度は、時刻t4におけるデューティサイクルの減少に続く時刻t5において、温度Temp0+deltaTempから温度Temp0に減少する。
ヒータ228における温度は、Dout_thermal_code[63:0]のどのkビット位置が振動されるべきかを選択することによって、及びDout_thermal_code[k]をディザリングするためのデューティサイクルを選択することによって、制御されることができる。kの値を選択することは、Vout_thermal_dacが振動する電圧レベルを決定する。図示の例では、Vout_thermal_dacは、65個の可能な電圧(v[0]、v[1]、..v[64])のうちの1つとすることができる。なぜなら、Dout_thermal_code[63:0]は、64ビットコードだからである。利用可能な電圧は、v[0]<v[1]<v[2]<...<v[64]となるように順次増加する。したがって、kのより大きい値を選択することは、より大きいレベルである電圧v[k]、v[k+1]をもたらすことができ、逆に、kのより小さい値を選択することは、より低いレベルである電圧v[k]、v[k+1]をもたらすことができる。これらの電圧レベルを選択することは、ヒータ228において達成されることができる温度の可能な範囲(例えば、温度Temp[k]から温度Temp[k+1]まで)を決定することができる。
Dout_thermal_code[k]をディザリングするデューティサイクルを選択することは、温度Temp[k]から温度Temp[k+1]までの範囲内にあるヒータ228における温度を達成することができる。デューティサイクルは、ヒータ228によって変換された熱エネルギーの蓄積(例えば、積分)に起因して、温度Temp[k]から温度Temp[k+1]までの範囲内のヒータ228における温度の補間を達成することができる。より低いデューティサイクルは、ヒータ228における温度を温度Temp[k]に近付けることができ、より高いデューティサイクルは、ヒータ228における温度を温度Temp[k+1]に近付けることができる。
図9の例示は、Dout_thermal_code[63:0]を示し、kは0ではなく、63ではない(例えば、いくつかのビット位置が各々論理「1」であり、他のビット位置がそれぞれ論理「0」である)が、kは0とすることができ、63とすることができる。更に、Dout_thermal_code[k]のデューティサイクルは、0%とすることができ、100%とすることができる。いくつかの例では、kが0であり、デューティサイクルが0%である場合、Dout_thermal_code[63:0]は飽和最小値にあり、いくつかの例では、kが63であり、デューティサイクルが100%である場合、Dout_thermal_code[63:0]は飽和最大値にある。
更に、以下のいくつかの例示的なシナリオによって示されるように、異なるデューティサイクル間のディザリングは、Dout_thermal_code[63:0]の複数のビット位置をデューティサイクルで振動させることができる。例えば、ディザリングステップ増加が20%デューティサイクルであり、kビット位置のデューティサイクルが90%である場合、デューティサイクルは、90%デューティサイクルで振動するDout_thermal_code[k](ここで、Dout_thermal_code[(k-1): 0]は論理「1」であり、Dout_thermal_code[63: (k+1)]は論理「0」である)と、10%デューティサイクルで振動するDout_thermal_code[k+1](ここで、Dout_thermal_code[k:0]は論理「1」であり、Dout_thermal_code[63: (k+2)]は論理「0」である)との間でディザリングされることができる。
再び図6を参照すると、追跡回路612は、tia_inを追跡し、それに応じて、ヒータ228を制御するために(例えば、温度設定追跡のために)、デューティコード(duty_code)及びkレベル選択信号(k_sel)をPWM回路616に出力するように構成される。追跡回路612は、プログラム可能なPWM分解能値(prog_pwm_res)及びプログラム可能なPWMステップ値(prog_pwm_step)を受信するように構成される。prog_pwm_resは、Dout_thermal_code[63:0]の1つ以上のビット位置が振動する周波数(例えば、上述したpwm_mode_clkの周波数)を示す値である。prog_pwm_stepは、duty_codeを増加させるステップサイズを示す値である。prog_pwm_res及びprog_pwm_stepは、共に、duty_codeのための利用可能な値を明示的又は暗示的に決定するために使用されることができる。後に詳述するように、k_selは、sampling_clkが論理的にローであるときに、Dout_thermal_code[63:0]のどのkビット位置が、duty_codeによって示されるデューティサイクルで振動されるかを示す。
いくつかの例では、prog_pwm_resは、pwm_mode_clkの1サイクル当たりのdsp_clkのサイクル数を示す値であり、prog_pwm_stepは、duty_codeの増加又は減少当たりのdsp_clkのサイクル数を示す。一例では、dsp_clkは、875MHzの周波数を有し、prog_pwm_resは、pwm_mode_clkの1サイクル当たりdsp_clkの16又は64サイクルを示し、prog_pwm_stepは、duty_codeの増加又は減少当たりのdsp_clkの1、2、4又は8サイクルを示す。表3は、この例を、結果として得られるduty_codeの利用可能な値と共に詳述する。
追跡回路612は、sampling_clkのそれぞれの立ち下がりエッジにおいてtia_inの所定数のサンプルを捕捉するように構成され、捕捉されたサンプルに基づいて、温度設定追跡中にk_sel及び/又はduty_codeを増加又は減少させるように構成される。温度設定追跡のための第1の反復において、k_sel及びduty_codeは、いくつかの値に初期化されることができる。温度設定追跡中、追跡回路612は、tia_inの所定のn個のサンプルを捕捉する。追跡回路612は、論理「1」の数が所定のn個の半分以上であるかどうかを判定する。そうである場合、追跡回路612は、duty_codeが最も高い利用可能な値でない限り、duty_codeを次の利用可能な値に増加させる。duty_codeが利用可能な最高値であるとき、追跡回路612は、(k_selが利用可能な最高値でない限り)k_selを1だけ増加させ、duty_codeを利用可能な最小値にリセットする。k_sel及びduty_codeがそれぞれの利用可能な最高値である場合、PWM回路616からの出力信号は飽和し、k_sel及びduty_codeの値は維持される。そのようなシナリオでは、エラーフラグが設定されることができる。
以下の擬似コードは、上記の表3の例に基づいてk_sel及びduty_codeがどのように増分されることができるかを示す。この擬似コードは、数学的且つ暗黙的に、次の利用可能なduty_codeを決定し、k_sel及びduty_codeを連結することによって、k_selを増分し、適切な状況下でduty_codeをリセットする。
temp_incr=(k_sel x 26)+duty_code+2[(2xprog_pwm_res)+prog_pwm_step]//k_sel及びduty_codeを連結する。増分ステップサイズを加算する
if(temp_incr<4096){k_sel=temp_incr[11:6];duty_code=temp_incr[5:0]}//k_sel及びduty_codeが飽和しておらず、増加させることができる場合、temp_incrから増分されたk_sel及びduty_codeを抽出する。
捕捉された論理「1」の数が所定のn数の半分以上でない場合、追跡回路612は、duty_codeが最も低い利用可能な値でない限り、duty_codeを次の利用可能な値に減少させる。duty_codeが利用可能な最小値であるとき、追跡回路612は、(k_selが利用可能な最小値でない限り)k_selを1だけ減少させ、duty_codeを利用可能な最大値にリセットする。k_sel及びduty_codeがそれぞれの利用可能な最小値である場合、PWM回路616からの出力信号は飽和し、k_sel及びduty_codeの値は維持される。そのようなシナリオでは、エラーフラグが設定されることができる。
以下の擬似コードは、上記の表3の例に基づいてk_sel及びduty_codeがどのように減分されることができるかを示す。この擬似コードは、数学的且つ暗黙的に、次の利用可能なduty_codeを決定し、k_sel及びduty_codeを連結することによって、k_selを減分し、適切な状況下でduty_codeをリセットする。
temp_incr=(k_sel x 26)+duty_code-2[(2xprog_pwm_res)+prog_pwm_step]//k_sel及びduty_codeを連結する。増分ステップサイズを減算する
if(temp_incr>-1){k_sel=temp_incr[11:6]; duty_code=temp_incr[5:0]}//k_sel及びduty_codeが飽和しておらず、減少させることができる場合、temp_incrから増分されたk_sel及びduty_codeを抽出する。
k_sel及び/又はduty_codeのいずれかが、追跡回路612によって変更される(例えば、増加される、減少される、又はリセットされる)場合、追跡回路612は、tia_dc_track_doneを論理「0」にリセットし、tia_dac_code及びtia_ictrlを0にリセットする。k_sel及びduty_codeの値を維持した後、又はtia_dc_track_done、tia_dac_code、及びtia_ictrlをリセットした後、温度設定追跡が完了し、追跡回路612はDC設定追跡にループバックする。
追跡回路612は、DC設定追跡及び温度設定追跡を実装するために、機械実行可能命令を更に実行することができる任意の論理、状態機械(例えば、有限状態機械)、及び/又は他の回路を実装することができる。
図6に関連して、図10は、いくつかの例に係るPWM回路616の概略図である。PWM回路616は、dsp_clk、track_clk、prog_pwm_res、プログラマブルデューティサイクルディザリングステップ値(prog_pwm_dither_step)、sampling_clk、k_sel、及びduty_codeを受信するように構成され、Dout_thermal_code[63:0]を生成して出力するように構成される。PWM回路616は、k_sel、duty_code、及びprog_pwm_dither_stepに基づいて、ディザリングkレベル選択値(k_sel_dither)及びディザリングデューティコード値(duty_code_dither)を生成するように構成され、sampling_clkが論理的にローであるとき、k_sel及びduty_codeに基づいて、及びsampling_clkが論理的にハイであるとき、k_sel_dither及びduty_code_ditherに基づいて、Dout_thermal_code[63:0]を生成して出力するように構成される。
PWM回路616は、一般に、prog_pwm_dither_stepによって示されるデューティサイクルステップサイズをk_sel及びduty_codeに加算することによって、k_sel_dither及びduty_code_ditherを生成するように構成された演算/論理ユニット(ALU)1002を含む。PWM回路616のALU1002は、k_sel及びduty_codeを連結し、ここで、duty_codeは最下位ビット位置であり、k_selは次に上位のビット位置であり、prog_pwm_dither_stepによって示されるデューティサイクルステップサイズを、連結されたk_sel及びduty_codeに加算する。加算の後、連結されたk_sel及びduty_codeのビット位置の数の後の次の最上位ビット位置が「1」である場合、結果の残りの下位ビット位置はクリアされてもよい。加算後、連結されたk_sel及びduty_codeのビット位置の数の後の次の最上位ビット位置が「0」である場合、そのビット位置及び(連結からの)k_selへの配置に対応する結果の残りの下位ビット位置は、k_sel_ditherであり、(連結からの)duty_codeへの配置に対応する最下位ビット位置は、duty_code_ditherである。更に、ALU1002は、prog_pwm_resに基づいてprog_pwm_dither_stepに対してチェック演算を実行するための論理を含むことができる。その後明らかになるように、利用可能なデューティサイクル、したがって利用可能なduty_code_ditherは、prog_pwm_resによって示されるモードに基づいて制限されることができる。表3の例では、prog_pwm_resが「0」であればprog_pwm_dither_stepのチェックは行われないが、prog_pwm_dither_stepが4の倍数でなく、prog_pwm_resが「1」であれば、prog_pwm_dither_stepを次の4の倍数に丸めるチェックが行われる。以下の擬似コードは、所与のビット長を有する様々な値を用いたALU1002のこの演算の一例を示す。
(prog_pwm_res==1){prog_pwm_dither_step=整数(prog_pwm_dither_step/4)×4}//prog_pwm_dither_stepがprog_pwm_res=1で示されるモードにおいて4の倍数でないとき、prog_pwm_dither_stepを最も近い4の倍数に丸める。
temp_concat=(k_sel x 26+duty_code//temp_concatは、13ビット([12:0])であり、k_sel及びduty_codeは、各々6ビット([5:0])であり、temp_concat[12]においてk_sel及びduty_codeを「0」と連結する。
temp_accum_dither=temp_concat+prog_pwm_dither_step
if(temp_accum_dither[12]== 1){temp_accum_dither=4096}//temp_accum_dither>=4096である場合、temp_accum_dither=4096(temp_accum_dither[12]=1及びtemp_accum_dither[11:0]= 0)と設定する
k_sel_dither=temp_accum_dither[12:6]//temp_accum_ditherからk_sel_ditherを抽出する
duty_code_dither=temp_accum_dither[5:0]//temp_accum_ditherからduty_code_ditherを抽出する
以下の表4は、上記の擬似コードによって生成されるいくつかの例示的な値を示す。
PWM回路616は、異なるデューティサイクルを有する中間信号(PWM_int[m])を生成及び出力するように構成された状態機械及び/又はカウンタ1004を含み、PWM_int[m]は、dsp_clk及びprog_pwm_resに基づく。例えば、所与のmに対して、PWM_int[m]は、m位置及びprog_pwm_resに基づいてdsp_clkのいくつかのサイクルに対してPWM_int[m]として論理「1」をアサートし、続いてprog_pwm_resに基づいてdsp_clkの残りのサイクルに対してPWM_int[m]として論理「0」をアサートすることによって生成されることができる。図11A及び図11Bは、いくつかの例に係る、異なるprog_pwm_resに基づく様々なPWM_int[m]のタイミング図である。
図11Aは、表3に示されるようにprog_pwm_res=0であるときの信号を示す(例えば、13.67MHzのpwm_mode_clkの周波数又はpwm_mode_clkの1サイクル当たりdsp_clkの64サイクルを示す)。図10では、pwm_mode_clkは明示的に生成されるのではなく、図11Aに参照として示されている。図11Aは、このモードにおける各PWM_int[m]及びpwm_mode_clkの1サイクルに対応する、dsp_clkの64サイクルであるスパン1102を示している。このモードでは、状態機械及び/又はカウンタ1004は、個別のPWM_int[m]の各サイクルの開始時に、PWM_int[m]を論理「1」に設定する。状態機械及び/又はカウンタ1004は、dsp_clkのm個のサイクルの間、PWM_int[m]を論理「1」として維持する(例えば、dsp_clkの立ち上がりエッジの数をカウントすることによって)。dsp_clkの(m+1)サイクルにおいて、状態機械及び/又はカウンタ1004は、PWM_int[m]を論理「0」に設定し、PWM_int[m]のサイクルにおけるdsp_clkのサイクルの残りの数を通して、PWM_int[m]をその値に維持する。例として、PWM_int[0]は、dsp_clkのサイクルがない場合に論理「1」であり、dsp_clkのサイクルごとに論理「0」である。PWM_int[1]は、PWM_int[1]のサイクル内のdsp_clkの1つの初期サイクルに対して論理「1」であり、PWM_int[1]のサイクル内のdsp_clkの63個の後続サイクルに対して論理「0」である。PWM_int[2]は、PWM_int[2]のサイクル内のdsp_clkの2つの初期サイクルに対して論理「1」であり、PWM_int[2]のサイクル内のdsp_clkの62個の後続サイクルに対して論理「0」である。PWM_int[63]は、PWM_int[63]のサイクル内のdsp_clkの最初の63サイクルにわたって論理「1」であり、PWM_int[63]のサイクル内のdsp_clkの最後のサイクルにわたって論理「0」である。
図11Bは、表3に示されるようにprog_pwm_res=1であるときの信号を示している(例えば、54.69MHzのpwm_mode_clkの周波数又はpwm_mode_clkの1サイクル当たり16サイクルのdsp_clkを示す)。図11Aと同様に、図11Bには、pwm_mode_clkが参照として示されている。図11Bは、更に、このモードにおける各PWM_int[m]及びpwm_mode_clkの1サイクルに対応する、dsp_clkの16サイクルであるスパン1104を示している。このモードでは、状態機械及び/又はカウンタ1004は、個別のPWM_int[m]の各サイクルの開始時に、PWM_int[m]を論理「1」に設定する。状態機械及び/又はカウンタ1004は、dsp_clkの(m/4)個のサイクルの間、PWM_int[m]を論理「1」として維持する(例えば、dsp_clkの立ち上がりエッジの数をカウントすることによって)。dsp_clkの((m/4)+1)サイクルにおいて、状態機械及び/又はカウンタ1004は、PWM_int[m]を論理「0」に設定し、PWM_int[m]のサイクルにおけるdsp_clkのサイクルの残りの数を通して、PWM_int[m]をその値に維持する。例として、PWM_int[0]は、dsp_clkのサイクルがない場合に論理「1」であり、dsp_clkのサイクルごとに論理「0」である。PWM_int[4]は、PWM_int[4]のサイクル内のdsp_clkの1つの初期サイクルに対して論理「1」であり、PWM_int[4]のサイクル内のdsp_clkの15個の後続サイクルに対して論理「0」である。PWM_int[8]は、PWM_int[8]のサイクル内のdsp_clkの2つの初期サイクルに対して論理「1」であり、PWM_int[8]のサイクル内のdsp_clkの14個の後続サイクルに対して論理「0」である。PWM_int[60]は、PWM_int[60]のサイクル内のdsp_clkの最初の15サイクルにわたって論理「1」であり、PWM_int[60]のサイクル内のdsp_clkの最後のサイクルにわたって論理「0」である。このモードでは、状態機械及び/又はカウンタ1004は、任意のPWM_int[m]を無効にすることができ、mは4の倍数ではない。
図11A及び図11Bから明らかなように、PWM_int[m]のデューティサイクルは、mの値の増加とともに増加する。また、デューティサイクルは、図11A及び図11Bに示される異なるモード間で異なるように分配されることができる。例えば、PWM_int[4]を例にとると、図11Aでは、PWM_int[4]は、スパン1102内のdsp_clkの最初の4サイクルに対して論理「1」であり、スパン1102内のdsp_clkの残りの60サイクルに対して論理「0」であるのに対して、図11Bでは、PWM_int[4]は、スパン1102全体に分散されたdsp_clkの1サイクルの4つのインスタンスに対して論理「1」であり、スパン1102内のdsp_clkの残りの60サイクルに対して論理「0」である。
図10に戻って参照すると、PWM回路616は、マルチプレクサ1010、1020、1030、1032及びフリップフロップ1012、1014、1022、1024、1034を更に含む。マルチプレクサ1010は、ALU1012に通信可能に結合され、duty_codeを受信するように構成された「0」選択入力ノードを有し、ALU1002に通信可能に結合され、duty_code_ditherを受信するように構成された「1」選択入力ノードを有する。マルチプレクサ1010は、sampling_clkを受信するように構成された選択制御入力ノードを有する。マルチプレクサ1010は、フリップフロップ1012の入力ノードに通信可能に結合された出力ノードを有する。フリップフロップ1012は、フリップフロップ1014の入力ノードに通信可能に結合された出力ノードを有する。フリップフロップ1014は、マルチプレクサ1030の選択制御入力ノードに通信可能に結合された出力ノードを有する。フリップフロップ1012は、track_clkを受信するように構成されたクロック入力ノードを有し、フリップフロップ1014は、dsp_clkを受信するように構成されたクロック入力ノードを有する。明らかなように、マルチプレクサ1010及びフリップフロップ1012、1014の各入力ノード及び出力ノードは、マルチビットノードとすることができる。したがって、フリップフロップ1012又はフリップフロップ1014は、単一で概略的に示されているが、各々が個別のビット位置に対応する複数の単一ビットフリップフロップが、図示されたフリップフロップに対して実装されることができる。
マルチプレクサ1020は、ALU1002に通信可能に結合され、k_selを受信するように構成された「0」選択入力ノードを有し、ALU1002に通信可能に結合され、k_sel_ditherを受信するように構成された「1」選択入力ノードを有する。マルチプレクサ1020は、sampling_clkを受信するように構成された選択制御入力ノードを有する。マルチプレクサ1020は、フリップフロップ1022の入力ノードに通信可能に結合された出力ノードを有する。フリップフロップ1022は、フリップフロップ1024の入力ノードに通信可能に結合された出力ノードを有する。フリップフロップ1024は、マルチプレクサ1032の選択制御入力ノードに通信可能に結合された出力ノードを有する。フリップフロップ1022は、track_clkを受信するように構成されたクロック入力ノードを有し、フリップフロップ1024は、dsp_clkを受信するように構成されたクロック入力ノードを有する。明らかなように、マルチプレクサ1020及びフリップフロップ1022、1024の各入力ノード及び出力ノードは、マルチビットノードとすることができる。したがって、フリップフロップ1022又はフリップフロップ1024は、単一で概略的に示されているが、各々が個別のビット位置に対応する複数の単一ビットフリップフロップが、図示されたフリップフロップに対して実装されることができる。
マルチプレクサ1030は、図示の例では、ALU1002に通信可能に結合され、個別のPWM_int[m]を受信するように構成された、64個の「m」選択入力ノードを有し、mは0から63である。マルチプレクサ1030は、PWMデューティコード信号(pwm_duty_code)を出力するように構成された出力ノードを有する。
マルチプレクサ1032は、図示の例では、65個の「q」選択入力ノードを有し、qは0から64である。65個の「q」選択入力ノードの各々は、64ビット入力ノードであり、個別の熱コード(therm[q])を受信するように構成される。各therm[q]について、マルチプレクサ1030から出力されたpwm_duty_codeは、個別のtherm[q]のqビット位置にマッピングされ、q未満である個別のtherm[q]の各ビット位置が論理「1」に設定され、qよりも大きい個別のtherm[q]の各ビット位置は、論理「0」に設定される。一般に、各therm[q]に対して、64ビット熱コードが生成され、qビット位置はpwm_duty_codeで振動している。therm[64]の各ビット位置は、論理「1」に設定される(例えば、therm[64]の各ビット位置は、q=64未満である)。therm[64]は、飽和条件とすることができる。マルチプレクサ1032は、フリップフロップ1034の入力ノードに通信可能に結合された出力ノードを有する。フリップフロップ1034は、Dout_thermal_code[63:0]が供給されるPWM回路616の出力ノードである出力ノードを有する。フリップフロップ1034は、dsp_clkを受信するように構成されたクロック入力ノードを有する。明らかなように、マルチプレクサ1032及びフリップフロップ1034の各入力ノード及び出力ノードは、図示された例において64ビットノードである。したがって、フリップフロップ1034は単一で概略的に示されているが、各々が個別のビット位置に対応する64個の単一ビットフリップフロップが、図示されたフリップフロップ1034のために実装されることができる。
図10の更なる動作の説明において、フリップフロップ1012、1014、1022、1024、1034の動作は省略されている。これらのフリップフロップは、一般に、track_clk又はdsp_clkなどの個別のクロックに信号を同期させる。このような動作は、当業者には容易に明らかであり、したがって、簡潔にするために省略される。
動作において、ALU1002は、上述したように、k_sel_dither及びduty_code_ditherを生成して出力し、状態機械及び/又はカウンタ1004は、上述したように、PWM_int[m]を生成して出力し、ここで、mは0から63である。sampling_clkが論理ローであるとき(例えば、マルチプレクサ1010、1020のための「0」選択に対応して)、マルチプレクサ1010は、マルチプレクサ1030の選択制御入力ノードにduty_codeを出力し、それによって、マルチプレクサ1030は、pwm_duty_codeとしてPWM_int[duty_code]を出力する。したがって、マルチプレクサ1030は、所望のデューティサイクルを有する信号を出力する。更に、sampling_clkが論理ローであるとき、マルチプレクサ1020は、k_selをマルチプレクサ1032の選択制御入力ノードに出力し、それにより、マルチプレクサ1032は、therm[k_sel]をDout_thermal_code[63:0]として出力する。したがって、マルチプレクサ1032は、所望のビット位置において所望のデューティサイクルを有する信号を有する熱コードを出力する。
sampling_clkが論理的にハイであるとき(例えば、マルチプレクサ1010、1020に対する「1」選択に対応して)、マルチプレクサ1010は、マルチプレクサ1030の選択制御入力ノードにduty_code_ditherを出力し、これは、マルチプレクサ1030にpwm_duty_codeとしてPWM_int[duty_code_dither]を出力させる。したがって、マルチプレクサ1030は、所望のデューティサイクルを有する信号を出力する。更に、sampling_clkが論理的にハイであるとき、マルチプレクサ1020は、k_sel_ditherをマルチプレクサ1032の選択制御入力ノードに出力し、これは、マルチプレクサ1032に、therm[k_sel_dither]をDout_thermal_code[63:0]として出力させる。したがって、マルチプレクサ1032は、sampling_clkが論理的にローであったときに出力される熱コードとは異なることができる、所望のビット位置において所望のデューティサイクルを有する信号を有する熱コードを出力する。
一般に、sampling_clkが論理的にローであるとき、以下のようになる:
Dout_thermal_code[63:0]=therm[k_sel]=
{(63-k_sel)’d0,pwm_duty_code=PWM_int[duty_code],(k_sel)’b1}
sampling_clkが論理的にハイであるとき、以下のようになる:
Dout_thermal_code[63:0]=therm[k_sel_dither]=
{(63-k_sel_dither)’d0,pwm_duty_code=PWM_int[duty_code_dither],(k_sel_dither)’b1}
図12A及び図12Bは、いくつかの例に係る、DSP406の追跡回路612の動作1200A、1200Bのフローチャートである。ここで、DSP406の全体的な動作について、図12A及び図12Bのフローチャートを用いて説明する。概して、図12Aは、DC設定追跡を示し、図12Bは、温度設定追跡を示している。
最初に、ユーザは、様々なプログラム可能な値の値をプログラムする。ユーザは、プログラム可能な値のためにDSP406にアクセス可能なメモリ、レジスタなどに値を書き込むことができる。ユーザは、prog_pwm_res、prog_pwm_step、prog_pwm_dither_step、prog_sampling_freq、prog_sampling_offset、prog_tia_dc_ratio、prog_tia_dc_vote、及びtia_dc_track_enの値を書き込む。
更に、クロック分周回路602は、上述したようにdsp_clkからtrack_clkを生成する。クロック生成回路604は、上述したように、prog_sampling_freq、prog_sampling_offset及びtrack_clkに基づいて、sampling_clk及びslicer_clk_peaklockを生成する。最大/最小計算回路608は、上述したように、prog_tia_dc_ratio、prog_sampling_freq、prog_sampling_offsetに基づいて、MAX1及びMIN1を計算する。
図12Aの動作1200Aを参照すると、ブロック1202において、tia_dac_code、tia_ictrl、k_sel、tia_dc_track_done、多数決カウンタ(count_majority_vote)、ラウンドトラックカウンタ(round_dc_track)が0に設定され、duty_codeがduty_codeの利用可能な値の範囲の中間値に設定される。tia_dac_code及びtia_ictrlを0に設定することによって、制御可能電流源416によって生成される電流は、最小量に低減され、及び/又はオフにされ、これは、電流IinからのDC成分の除去を最小量に低減し、及び/又は電流IinからのDC成分を除去しない。duty_codeを中間値(例えば、図10の例では32)に設定することは、sampling_clkがローであるとき、PWM回路616のマルチプレクサ1030にPWM_int[duty_code]を出力させ、その結果、出力PWM_int[duty_code]は、50パーセント又はその近くのデューティサイクルを有する。k_selを0に設定することは、PWM回路616のマルチプレクサ1032に、sampling_clkがローのときに、therm[k_sel=0]={63’d0,pwm_duty_code=PWM_int[duty_code]}をDout_thermal_code[63:0]として出力させる。更に、ALU1002は、ブロック1202において設定されたk_sel及びduty_codeとprog_pwm_dither_stepとに基づいて、k_sel_dither及びduty_code_ditherを生成する。PWM回路616のマルチプレクサ1032は、sampling_clkがハイのとき、therm[k_sel_dither]={(63-k_sel_dither)’d0,pwm_duty_code=PWM_int[duty_code_dither],(k_sel_dither)’b1}をDout_thermal_code[63:0]として出力する。したがって、Dout_thermal_code[63:0]は、sampling_clkに基づいて異なるデューティコードの間でディザリングするように設定され、これは、Vout_thermal_dac及びヒータ228における温度に応答してディザリングさせる。
ブロック1204において、tia_dc_track_doneが0に等しいかどうかの判定が行われる。tia_dc_track_doneが0に等しくない場合、動作は、後述する図12Bの温度設定追跡に進む。tia_dc_track_doneが0に等しい場合、ブロック1206において、tia_inのサンプルが、sampling_clkの1サイクルの間、track_clkのそれぞれの立ち上がりエッジにおいて捕捉され、論理「1」の数がカウントされる。上述したように、sampling_clkの1サイクル中に、Dout_thermal_code[63:0]のデューティサイクルがディザリングし、それにより、ヒータ228における温度がディザリングする。sampling_clkの1つのサイクルを通してtia_inのサンプルを捕捉することは、ヒータ228の異なる温度に起因する光学素子222の異なる光学応答に対する応答であるサンプルが捕捉されることをもたらすことができる。
ブロック1208において、捕捉された論理「1」の数がMIN1以上且つMAX1以下であるかどうかの判定が行われる。一般に、ブロック1208の判定は、捕捉された論理「1」の数がprog_tia_dc_ratioによって示される誤差範囲内にあるかどうかを示す。捕捉された論理「1」の数がMIN1及びMAX1内にある場合、ブロック1210において、count_majority_voteが1だけ増分される。ブロック1210に続いて、又は捕捉された論理「1」の数がMIN1及びMAX1内にない場合、ブロック1212において、count_majority_voteがprog_tia_dc_voteに等しいかどうかの判定が行われる。count_majority_voteがprog_tia_dc_voteに等しい場合、ブロック1214において、tia_dc_track_doneが1に設定され、count_majority_vote及びround_dc_trackが0に設定される。ブロック1214に続いて、動作は、ブロック1204にループバックする。
count_majority_voteがprog_tia_dc_voteに等しくない場合、ブロック1216において、round_dc_trackが所定数xに等しいかどうかの判定が行われる。所定数xは、プログラム可能な値とすることができるか、又はアルゴリズムに符号化されることができる。round_dc_trackが所定数xに等しくない場合、ブロック1218において、round_dc_trackは1だけ増分される。ブロック1218に続いて、動作は、ブロック1204にループバックする。
round_dc_trackが所定数xに等しい場合、ブロック1220において、tia_dac_code及び/又はtia_ictrlが増分される。tia_dac_code及び/又はtia_ictrlを増分することは、制御可能電流源416を通る電流IDCを増加させる。tia_dac_code及びtia_ictrlのうちの一方の増分は、いくつかの状況において、他方の減少を伴うことができる。tia_dac_code及びtia_ictrlが変更される方法は、制御可能電流源416の構造及びブロック1220の各反復に対するターゲットステップ増加などの考慮事項に基づくことができる。例えば、tia_dac_codeは、tia_dac_codeがブロック1220の別の反復において飽和されるまで、tia_ictrlを増加させることなく、ブロック1220のいくつかの後続の反復において独立して増加させることができ、その反復において、tia_dac_codeは、低減された値に設定され、tia_ictrlは増加される。低減されたtia_dac_code(及び対応する低減されたv_tia_dac)を用いても、tia_ictrlを増加させることは、n型トランジスタ802、804の別の直列接続された対が、n型トランジスタ804のチャネルを通って流れる累積電流(したがって、電流IDC)が増加されるように、ノード810と電源ノード(例えば、接地ノード)との間に動作可能に電気的に結合されることを引き起こすことができる。ブロック1220に続いて、ブロック1222において、count_majority_vote及びround_dc_trackが0に設定され、動作は、ブロック1204にループバックする。
一般に、ブロック1204~1222による動作のループは、DC設定追跡を形成する。round_dc_trackは、round_dc_trackがx回に等しくなり、tia_dac_code及び/又はtia_ictrlが増加する前に、ブロック1206においてサンプルが捕捉される回数をカウントする。count_majority_voteは、round_dc_trackがx回未満である間に、ブロック1206において捕捉されたサンプルがMAX1及びMIN1によって示される誤差範囲内にある回数をカウントする。count_majority_voteがprog_tia_dc_voteに等しくなるとき、tia_dac_code及びtia_ictrlは、捕捉されたサンプルがある程度の信頼度でMAX1及びMIN1によって示される誤差範囲内にあるように十分な値である。count_majority_voteがprog_tia_dc_voteに等しいことは、DC設定追跡を終了させ、tia_dc_track_doneを1に設定させる。
一般に、x回の反復(例えば、sampling_clkのx回のサイクルについてサンプルを捕捉すること)の後に、捕捉されたサンプルがMIN1及びMAX1によって示される誤差範囲内にあった反復の回数がprog_tia_dc_vote未満である場合、tia_dac_code及び/又はtia_ictrlを増分することによって電流IDCが増加され、count_majority_vote及びround_dc_trackをリセットすることによってDC設定追跡のための後続の反復が継続する。x回の反復が完了する前に、捕捉されたサンプルがMIN1及びMAX1によって示される誤差範囲内にあった反復の回数がprog_tia_dc_voteに等しい場合、tia_dc_track_doneを1に設定することによってDC設定追跡が終了し(ブロック1204に動作を温度設定追跡に進ませる)、温度設定追跡のために電流IDCが設定される。count_majority_vote及びround_dc_trackingは、温度設定追跡に続くDC設定追跡の後続の反復のためにリセットされる。
図12Aの動作1200Aに戻って参照すると、ブロック1204における決定が、tia_dc_track_doneが0に等しくないこと(例えば、DC設定追跡が終了したこと)である場合、ブロック1252において、tia_inのサンプルが、sampling_clkのy個のサイクルの間、sampling_clkのサイクルのそれぞれの時間において捕捉され、捕捉された論理「1」の数及び論理「0」の数がカウントされる。いくつかの例では、各サンプルは、sampling_clkが論理的にローである間に、sampling_clkの立ち上がりエッジの前及びその近くの個別のサイクル中の時間に捕捉される。例えば、各サンプルは、sampling_clkの個別の立ち上がりエッジの前にdsp_clkの10サイクルで捕捉されることができる。このサンプル時間に対応する立ち上がり又は立ち下がりエッジを有する専用信号が実装されることができる。
ブロック1254において、論理「1」及び論理「0」のカウントされた総数がy回に等しいかどうかの判定が行われる。そうでない場合、エラーが発生し、動作がDC設定追跡のためにブロック1204にループバックするように、温度設定追跡が終了する。論理「1」及び論理「0」のカウントされた総数がy回に等しい場合、ブロック1256において、論理「1」のカウントされた数がy回の半分以上であるかどうかの判定が行われる。一般に、ブロック1256は、より多くの論理「1」又はより多くの論理「0」がカウントされたかどうかを判定する。
論理「1」のカウントされた数がy回の半分以上である場合、ブロック1258において、k_sel及びduty_codeがそれぞれの最大値であるかどうかの判定が行われる。k_sel及びduty_codeが双方ともそれぞれの最大値である場合(例えば、Dout_thermal_code[63:0]が最大デューティコードであることを示す)、ブロック1260において、k_sel及びduty_codeは、それぞれの値で維持され、エラーフラグが設定されることができる。ブロック1260に続いて、動作がDC設定追跡のためにブロック1204にループバックするように、温度設定追跡が終了する。k_sel及びduty_codeのいずれか又は双方が個別の最大値でない場合、ブロック1262において、上述したように、k_sel及び/又はduty_codeが増加される。ブロック1262に続いて、ブロック1264において、tia_dc_track_done、tia_dac_code、及びtia_ictrlが0に設定され、これは、温度設定追跡を終了し、後続のDC設定追跡のための変数をリセットする。ブロック1264に続いて、動作は、DC設定追跡のためにブロック1204にループバックする。
論理「1」のカウントされた数がy回の半分以上でない場合、ブロック1266において、k_sel及びduty_codeがそれぞれの最小値であるかどうかの判定が行われる。k_sel及びduty_codeが双方ともそれぞれの最小値にある場合(例えば、Dout_thermal_code[63:0]が最小デューティコードにあることを示す)、ブロック1260において、k_sel及びduty_codeはそれぞれの値で維持され、エラーフラグが設定されることができる。ブロック1260に続いて、動作がDC設定追跡のためにブロック1204にループバックするように、温度設定追跡が終了する。k_sel及びduty_codeのいずれか又は双方が個別の最小値でない場合、ブロック1268において、k_sel及び/又はduty_codeは、上述したように減少される。ブロック1268に続いて、ブロック1270において、tia_dc_track_done、tia_dac_code、及びtia_ictrlが0に設定され、これは、温度設定追跡を終了し、後続のDC設定追跡のための変数をリセットする。ブロック1270に続いて、動作は、DC設定追跡のためにブロック1204にループバックする。
k_sel及びduty_codeを変化させることは、PWM回路616に、k_sel_dither及びduty_code_ditherを応答的に変化させる。k_sel、duty_code、k_sel_dither、及びduty_code_ditherを変更することは、Dout_thermal_code[63:0]に、異なるデューティコード間でディザリングさせ、これはひいては、Vout_thermal_dacに、異なるデューティサイクル間で、場合によっては異なる電圧レベル間でディザリングさせる。Vout_thermal_dacへの変化は、ヒータ228における温度を増加又は減少させる。
DC設定は、(Dout_thermal_code[63:0]のディザリングデューティサイクルから生じる)第1の温度と第2の温度との間で、sampling_clkに基づいて、ディザリングにわたってブロック1206において捕捉されたサンプルに基づいて決定される。記載される例では、sampling_clkが論理的にハイであるとき、第1の温度が光学素子222において生じ、sampling_clkが論理的にローであるとき、第1の温度よりも高い第2の温度が光学素子222において生じる。一般に、第1の温度及び第2の温度における光学素子222の光学応答は、図3A又は図3Bに示されるようなものとすることができる。
図3AのRHSシナリオでは、光学素子222が第2の温度にあり、中心波長(λc)302において大きさ316を有する第2の応答306を有するときに捕捉されたサンプルは、光学素子222が第1の温度にあり、中心波長(λc)302において大きさ314を有する第1の応答304を有するときに捕捉されたサンプルに対して、より低い損失を有する。記載される例では、サンプルは、sampling_clkが論理的にローであるとき、及びsampling_clkがローであるときのサイクルの終わり近くで捕捉され、それは、光学素子222が第2の温度に到達するか、又はほぼ到達することを可能にする。サンプルが、光学素子222が第2の温度にあるときに捕捉されるとき、DC設定と比較して、大きさ316における応答306のより低い損失は、より多くの捕捉されたサンプルが論理「1」であることをもたらす。したがって、論理「1」のカウントされた数がサンプルの総数の半分以上であることは、図3Aのように、光信号の中心波長(λc)302が光学応答のRHS上にあることを一般に示す。温度設定(例えば、k_sel及び/又はduty_code)は、概して、光学素子222の光学応答のピークを光信号の中心波長(λc)302に向かって移動させるように、応答して増加される。
図3BのLHSシナリオでは、光学素子222が第2の温度にあり、中心波長(λc)302において大きさ336を有する第2の応答326を有するときに捕捉されたサンプルは、光学素子222が第1の温度にあり、中心波長(λc)302において大きさ334を有する第1の応答324を有するときに捕捉されたサンプルと比較して、より大きな損失を有する。光学素子222が第2の温度にあるときにサンプルが捕捉されるとき、DC設定に対して、大きさ336における応答326の損失が大きいほど、捕捉されたサンプルのうち論理「1」となるものが少なくなる。したがって、論理「1」のカウントされた数がサンプルの総数の半分以上でないことは、図3Bのように、光信号の中心波長(λc)302が光学応答のLHS上にあることを一般に示す。温度設定(例えば、k_sel及び/又はduty_code)は、概して、光学素子222の光学応答のピークを光信号の中心波長(λc)302に向かって移動させるように、応答して減少させられる。
当業者は、この温度設定追跡に対する変更(例えば、実装された論理に対する変更)を容易に理解することができる。例えば、ブロック1252において、sampling_clkがハイであるときにサンプルが捕捉される場合、論理「1」のカウントされた数がy回の半分以上であるとき、k_sel及び/又はデューティコードを減少させることができ、論理「1」のカウントされた数がy回の半分以上でないとき、k_sel及び/又はデューティコードを増加させることができる。
図12A及び図12Bによって示されるように、DC設定追跡及び温度設定追跡は、図5に示されるように反復的に実行される。各反復を追跡するDC設定を実行する前に、tia_dac_code及びtia_ictrlは、tia_dac_code及びtia_ictrlがtia_dac_code及びtia_ictrlの任意の以前の値から独立して決定されるように設定又はリセットされる。更に、温度設定追跡の反復は、温度設定追跡の前の反復によって生成されたk_sel及びduty_codeの値に基づくことができる。DC設定追跡及び温度設定追跡の反復により、例えば、デバイスが配置される環境の周囲温度が変化した場合に、デバイスが連続的に再較正されることができる。
図13は、いくつかの例に係るデバイスの簡略化された概略図である。デバイス(図1のようなパッケージ内にあってもよい)は、電気ICダイ102上の電気IC 1302と、光学ダイ104上の光電子回路1304とを含む。電気ICは、コントローラ210-1、210-2、210-3、DAC212-1、212-2、212-3、及びコントローラ1303を含む。各コントローラ210-1、210-2、210-3及び対応するDAC212-1、212-2、212-3は、上述したコントローラ210及びDAC212のように構成され、概してそのように動作する。コントローラ1303は、コントローラ210-1、210-2、210-3に通信可能に結合され、コントローラ210-1、210-2、210-3間の動作を制御するように構成される。図示されていないが、電気IC1302は、光チャネルを介して光信号として送信される電気信号を生成する回路を更に含む。
光電子回路1304は、光源(具体的には図示せず)と、共通チャネル経路1310と、奇数チャネル経路1312と、偶数チャネル経路1314と、マッハツェンダー干渉計(MZI)波長スプリッタ1320と、MZIフィルタ1322、1324と、フォトダイオード226と、ヒータ228-1、228-2、228-3とを含む。ヒータ228-1は、MZI波長スプリッタ1320に近接して光学ダイ104内に配置される。ヒータ228-2は、MZIフィルタ1322に近接して光学ダイ104内に配置される。ヒータ228-3は、MZIフィルタ1324に近接して光学ダイ104内に配置される。
共通チャネル経路1310は、奇数チャネル光信号1340及び偶数チャネル光信号1342を搬送するように構成される。MZI波長スプリッタ1320は、共通チャネル経路1310から奇数チャネル光信号1340及び偶数チャネル光信号1342を受信し、奇数チャネル光信号1340を奇数チャネル経路1312に分割し、偶数チャネル光信号1342を偶数チャネル経路1314に分割するように構成される。MZIフィルタ1322は、奇数チャネル経路1312から奇数チャネル光信号1340を受信し、スプリアス偶数チャネル光信号を抑制し、光チャネル上で奇数チャネル光信号1340を送信するように構成される。MZIフィルタ1324は、偶数チャネル経路1314から偶数チャネル光信号1342を受信し、スプリアス奇数チャネル光信号を抑制し、光チャネル上で偶数チャネル光信号1342を送信するように構成される。
フォトダイオード226は、MZIフィルタ1322、1324から出力された光信号の一部がフォトダイオード226に入射するように、光学ダイ104内に配置される。フォトダイオード226は、フォトダイオード226に入射する光信号に応答して電流を生成するように構成される。
フォトダイオード226の出力ノード1330は、コントローラ210-1、210-2、210-3のDC制御可能トランスインピーダンス段の各入力ノード420-1、420-2、420-3に電気的に結合される。ヒータ228-1は、DAC212-1に電気的に結合される。ヒータ228-2は、DAC212-2に電気的に結合され、ヒータ228-3は、DAC212-3に電気的に結合される。
動作中、フォトダイオード226は、フォトダイオード226に入射するMZIフィルタ1322、1324からの光信号に応答して電流を生成する。フォトダイオード226によって生成された電流は、入力ノード420-1、420-2、420-3において、コントローラ210-1、210-2、210-3の間で分割され、個別の入力電流Iin1、Iin2、Iin3として受信される。各コントローラ210-1、210-2、210-3は、上述したように、個別の入力電流Iin1、Iin2、Iin3で動作する。コントローラ1303は、コントローラ210-1、210-2、210-3を制御して、コントローラ210-1、210-2、210-3間でDC設定追跡及び温度設定追跡を順次実行する。
図14は、いくつかの例に係るこの連続動作のフローチャートである。ブロック1402において、DC設定追跡がコントローラ210-1によって実行され、ブロック1404において、温度設定追跡がコントローラ210-1によって実行される。ブロック1406において、DC設定追跡がコントローラ210-2によって実行され、ブロック1408において、温度設定追跡がコントローラ210-2によって実行される。ブロック1410において、DC設定追跡がコントローラ210-3によって実行され、ブロック1412において、温度設定追跡がコントローラ210-3によって実行される。コントローラ1303は、どのコントローラがその温度設定追跡を終了したかに基づいて、どのコントローラがそのDC設定追跡を開始するかを調整及び制御することができる。各コントローラ210-1、210-2、210-3に対する各DC設定追跡は、個別に上述したようなものとすることができ、各コントローラ210-1、210-2、210-3に対する各温度設定追跡は、個別に上述したようなものとすることができる。
したがって、図13及び図14の例は、複数の例えば光学フィルタを制御するために単一のフォトダイオードがどのように実装されることができるかを示している。この例は、同じフォトダイオードを使用する複数のコントローラの順次動作が、光学ダイ内の複数の例えば光学フィルタの温度を制御するように動作することができることを示している。
いくつかの非限定的な例は、以下のように表現されることができる。
実施例1.デバイスであって、
第1のコントローラであって、
入力ノード及び出力ノードを有する第1のDC制御可能トランスインピーダンス段であって、第1のDC制御可能トランスインピーダンス段の入力ノードが、フォトダイオードに電気的に結合されるように構成される、第1のDC制御可能トランスインピーダンス段と、
入力ノード及び出力ノードを有する第1のスライサ回路であって、第1のスライサ回路の入力ノードが第1のDC制御可能トランスインピーダンス段の出力ノードに電気的に結合される、第1のスライサ回路と、
第1のスライサ回路の出力ノードに電気的に結合された入力ノードを有する第1のプロセッサであって、第1のスライサ回路の出力ノード上の信号に基づいて第1のDC制御可能トランスインピーダンス段の出力ノード上の信号のDC成分を低減するように第1のDC制御可能トランスインピーダンス段を制御するように構成された第1のプロセッサと、を備える第1のコントローラと、
第1のプロセッサの出力ノードに電気的に結合された入力ノードを有し、ヒータに電気的に結合されるように構成された出力ノードを有する第1のデジタルアナログ変換器(DAC)であって、第1のプロセッサが、第1のスライサ回路の出力ノード上の信号に基づいて、第1のDACの出力ノード上の出力電圧を制御するように構成される、第1のデジタルアナログ変換器と、を備える、デバイス。
実施例2.
第1のDC制御可能トランスインピーダンス段の入力ノードに電気的に結合されたフォトダイオードと、
光信号を通過させるように構成され、温度依存光学応答を有する光学素子であって、光信号の少なくとも一部がフォトダイオードに入射するようにフォトダイオードに対して配置された光学素子と、
第1のDACの出力ノードに電気的に結合されたヒータであって、光学素子に近接して配置されたヒータと、を更に備える、実施例1に記載のデバイス。
実施例3.第1のDC制御可能トランスインピーダンス段が、
第1のDC制御可能トランスインピーダンス段の入力ノードと第1のDC制御可能トランスインピーダンス段の出力ノードとの間に電気的に接続されたトランスインピーダンス増幅器と、
第1のDC制御可能トランスインピーダンス段の入力ノードと電源ノードとの間に電気的に接続された制御可能電流源と、を備える、実施例1に記載のデバイス。
実施例4.第1のプロセッサが、異なるデューティサイクル間でディザリングするように、第1のDACの出力ノード上の出力電圧を制御するように構成される、実施例1に記載のデバイス。
実施例5.第1のプロセッサが、
反復的に、
第1のDC制御可能トランスインピーダンス段の出力ノード上の信号のDC成分を低減するように第1のDC制御可能トランスインピーダンス段を制御するためのDC設定を決定することであって、第1のプロセッサが、DC設定を使用して第1のDC制御可能トランスインピーダンス段の出力ノード上の信号のDC成分を低減するように第1のDC制御可能トランスインピーダンス段を制御するように構成される、決定することと、
DC設定を決定した後に、第1のDACの出力ノード上の出力電圧を制御するための温度設定を決定することであって、第1のプロセッサが、温度設定を使用して第1のDACの出力ノード上の出力電圧を制御するように構成される、決定することと、を行うように構成される、実施例1に記載のデバイス。
実施例6.前記第1のプロセッサが、
第1のスライサ回路の出力ノード上の信号のサンプルを捕捉し、第1のスライサ回路の出力ノード上の信号から捕捉された第1のサンプルに基づいて第1のDC制御可能トランスインピーダンス段の電流制御設定を生成し、第1のスライサ回路の出力ノード上の信号から捕捉され、第1のサンプルが捕捉された後の第2のサンプルに基づいてデューティコード及びレベル選択コードを生成するように構成された追跡回路と、
デューティコード及びレベル選択コードに基づいてディザデューティコード及びディザレベル選択コードを生成し、第1のDACの入力ノードに出力されるディザデューティサイクルを有する熱コードを生成するように構成されたパルス幅変調回路と、を備える、実施例1に記載のデバイス。
実施例7.
第2のコントローラであって、
入力ノード及び出力ノードを有する第2のDC制御可能トランスインピーダンス段であって、第2のDC制御可能トランスインピーダンス段の入力ノードが、第1のDC制御可能トランスインピーダンス段の入力ノードに電気的に接続され、第2のDC制御可能トランスインピーダンス段の入力ノードが、フォトダイオードに電気的に結合されるように構成される、第2のDC制御可能トランスインピーダンス段と、
入力ノード及び出力ノードを有する第2のスライサ回路であって、第2のスライサ回路の入力ノードが第2のDC制御可能トランスインピーダンス段の出力ノードに電気的に結合される、第2のスライサ回路と、
第2のスライサ回路の出力ノードに電気的に結合された入力ノードを有する第2のプロセッサであって、第2のスライサ回路の出力ノード上の信号に基づいて第2のDC制御可能トランスインピーダンス段の出力ノード上の信号のDC成分を低減するように第2のDC制御可能トランスインピーダンス段を制御するように構成された第2のプロセッサと、を備える第2のコントローラと、
第2のプロセッサの第1の出力ノードに電気的に結合された入力ノードを有し、第2のヒータに電気的に結合されるように構成された出力ノードを有する第2のDACであって、第2のプロセッサが、第2のスライサ回路の出力ノード上の信号に基づいて第2のDACの出力ノード上の出力電圧を制御するように構成される、第2のDACと、を更に備える、実施例1に記載のデバイス。
実施例8.デバイスの温度を制御するための方法であって、
プロセッサによって、プロセッサから、第1のDC制御可能トランスインピーダンス段であって、温度依存光学応答を有する第1の光学素子から渡された光信号を入射させるように構成されたフォトダイオードに電気的に結合された入力ノードを有する第1のDC制御可能トランスインピーダンス段に出力される第1のDC設定を生成することであって、プロセッサが、第1のDC制御可能トランスインピーダンス段の出力ノード上の信号に基づいて第1のDC設定を生成する、生成することと、
第1のDC設定を生成した後に、プロセッサによって、第1の温度設定を生成することであって、プロセッサから、第1の光学素子に近接して配置された第1のヒータに電気的に結合された出力ノードを有する第1のデジタルアナログ変換器(DAC)への第1のコード出力が第1の温度設定に基づいており、プロセッサが、第1のDC制御可能トランスインピーダンス段の出力ノード上の信号に基づいて第1の温度設定を生成する、生成することと、を含む、方法。
実施例9.第1のDC設定を生成すること及び第1の温度設定を生成することが、反復的に実行される、実施例8に記載の方法。
実施例10.第1の温度設定に基づいて、第1のDACの出力ノード上の電圧のデューティサイクルをディザリングすることを更に含む、実施例8に記載の方法。
実施例11.第1のDC設定を生成することが、
反復的に、投票カウンタが第1の所定量に等しくなるまで、
第1のDC制御可能トランスインピーダンス段の出力ノード上の信号に基づいていくつかのサンプルを捕捉することと、
個別の反復の捕捉されたサンプルが誤差範囲内にあるとき、投票カウンタを増分することと、
ラウンドカウンタが第2の所定量未満であるとき、ラウンドカウンタを増分することと、
ラウンドカウンタが第2の所定量以上である場合、
第1のDC設定を調整することと、
投票カウンタ及びラウンドカウンタをリセットすることと、を含む、実施例8に記載の方法。
実施例12.第1の温度設定を生成することが、
第1のDC制御可能トランスインピーダンス段の出力ノード上の信号に基づいていくつかのサンプルを捕捉することと、
捕捉されたサンプルが論理「1」の過半数を有するかどうかに基づいて、第1の温度設定を調整することと、を含む、実施例8に記載の方法。
実施例13.第1のDC制御可能トランスインピーダンス段が、
第1のDC制御可能トランスインピーダンス段の入力ノードと第1のDC制御可能トランスインピーダンス段の出力ノードとの間に電気的に接続されたトランスインピーダンス増幅器と、
第1のDC制御可能トランスインピーダンス段の入力ノードと電源ノードとの間に電気的に接続された制御可能電流源であって、第1のDC設定が制御可能電流源の電流を制御する、制御可能電流源と、を備える、実施例8に記載の方法。
実施例14.第1のコードが、ディザリングするデューティサイクルを有する熱コードである、実施例8に記載の方法。
実施例15.
第1の温度設定を生成した後に、温度依存光学応答を有する第2の光学素子から渡された光信号を入射させるように更に構成されたフォトダイオードに電気的に結合された入力ノードを有する第2のDC制御可能トランスインピーダンス段に出力される第2のDC設定であって、第2のDC制御可能トランスインピーダンス段の出力ノード上の信号に基づいて生成される第2のDC設定を生成することと、
第2のDC設定を生成した後に、第2の温度設定を生成することであって、第2の光学素子に近接して配置された第2のヒータに電気的に結合された出力ノードを有する第2のDACへの第2のコード出力が第2の温度設定であって、第2のDC制御可能トランスインピーダンス段の出力ノード上の信号に基づいて生成される第2の温度設定に基づいている、生成することと、を更に含む、実施例8に記載の方法。
実施例16.デバイスであって、
光信号を通過させるように構成され、温度依存光学応答を有する光学素子と、
光学素子を通る光信号の少なくとも一部が入射するように、光学素子に対して配置されたフォトダイオードと、
光学素子に近接して配置され、電気エネルギーを熱エネルギーに変換するように構成されたヒータと、
トランスインピーダンス段であって、トランスインピーダンス段の入力ノードがフォトダイオードに電気的に結合され、トランスインピーダンス段が、トランスインピーダンス段の入力ノードと電源ノードとの間に電気的に接続された制御可能電流源を備える、トランスインピーダンス段と、
スライサ回路であって、スライサ回路の入力ノードがトランスインピーダンス段の出力ノードに電気的に結合される、スライサ回路と、
プロセッサであって、プロセッサの入力ノードがスライサ回路の出力ノードに電気的に結合され、プロセッサが、スライサ回路の出力ノード上の出力信号に基づいて制御可能電流源の電流を制御するように構成され、スライサ回路の出力ノード上の出力信号に基づいてヒータに提供される電気エネルギーの量を制御するように構成される、プロセッサと、を備える、デバイス。
実施例17.デジタルアナログ変換器(DAC)を更に備え、DACの入力ノードが、プロセッサの出力ノードに電気的に結合され、DACの出力ノードが、ヒータに電気的に結合され、プロセッサが、DACの出力ノード上の出力電圧を制御することによって、ヒータに提供される電気エネルギーの量を制御するように構成される、実施例16に記載のデバイス。
実施例18.プロセッサが、DACの入力ノードに電気的に結合されたプロセッサの出力ノード上に、ディザリングデューティサイクルを有する熱コードを出力するように構成される、実施例17に記載のデバイス。
実施例19.プロセッサが、制御可能電流源の電流を制御するための第1の設定を生成するように構成され、プロセッサが、投票カウンタが第1の所定量に等しくなるまで、反復的に第1の設定を生成するように構成され、
スライサ回路の出力ノード上の出力信号のいくつかの第1のサンプルを捕捉することと、
個別の反復の捕捉された第1のサンプルが誤差範囲内にあるとき、投票カウンタを増分することと、
ラウンドカウンタが第2の所定量未満であるとき、ラウンドカウンタを増分することと、
ラウンドカウンタが第2の所定量に等しい場合、
第1の設定を調整することと、
投票カウンタ及びラウンドカウンタをリセットすることと、を含む、実施例16に記載のデバイス。
実施例20.プロセッサが、ヒータに提供される電気エネルギーの量を制御するための熱コードであって、プロセッサの出力ノード上に出力される熱コードを生成するように構成され、プロセッサが、
スライサ回路の出力ノード上の出力信号のいくつかの第2のサンプルを捕捉することと、
捕捉された第2のサンプルが論理「1」の過半数を有するかどうかに基づいて選択設定を調整することと、
選択設定に基づいて熱コードを生成することと、によって熱コードを生成するように構成される、実施例19に記載のデバイス。
上記は特定の例を対象とするが、他の例及び更なる例が、その基本的な範囲から逸脱することなく考案されてもよく、その範囲は、以下の実施例によって決定される。