TT Lab
はじめる
学ぶ 学習パス コース

電子回路入門 — センサー入力の検証

ADCの取得時間と前チャネルの記憶

TT Labで続きを見る

一言でいうと

センサーが正しい電圧を出していても、ADCのサンプルコンデンサがその電圧まで移動する時間が足りなければ、新しいチャネルに、前のチャネルの痕跡が残ります。

なぜ必要なのか

宇宙温室のセンサー2つを、交互に読みます。最初のセンサーは1.8V、2つ目のセンサーは0.3Vです。プログラムは確かに2つ目のチャネルを選んだのに、数字は約0.764Vに当たります。センサーのアドレスを間違えたのでしょうか、キャッシュが残っているのでしょうか。どれも可能な仮説ですが、今回のモデルでは、アナログ入力の取得時間が原因です。コードを直す前に、どんな状態がどこに残っているのかを切り分けなければなりません。

前のモジュールのRC回路は、入力につながり続けていました。ここでは、スイッチが閉じているときだけ、サンプルコンデンサが入力側とつながります。スイッチが開いている時間まで充電時間に加えると、実際には得られなかった時間を、計算に入れることになります。周期が1µsだからといって、コンデンサが1µsの間、入力に追従するわけではありません。

どう動くのか

今回の教育用の回路は、理想電圧源、ソース抵抗Rs、オン抵抗が100Ωのスイッチ、接地につながった20pFのサンプルコンデンサで構成します。コンデンサの初期電圧は0Vです。最初のチャネルの1.8Vを2回取得した後、入力を0.3Vに変えて、さらに2回取得します。実際のセンサー、マルチプレクサーIC、変換器のメーカーモデルをつないだのではなく、入力の記憶現象を1つだけ取り出した回路です。

閉じた区間の時定数は、τ=(Rs+Ron)Cです。Rs=10kΩ、Ron=100Ω、C=20pFなら、τ=202nsです。前の電圧がVold、現在の入力がVtarget、閉じた時間がTなら、次の電圧は、Vtarget+(Vold−Vtarget)exp(−T/τ)です。最初はVold=0ですが、次の取得では、直前の結果を使わなければなりません。毎回0に初期化する計算は、チャネルの記憶を消してしまいます。

スイッチがオフのときも、モデルの抵抗は無限大ではなく、10¹²Ωです。したがって、微小なリークがあります。解析式では、オフの区間のリークを無視し、シミュレーションと比べるときは、小さな差を許容します。2つの計算が数学的に完全に同じだと主張しない理由です。hold区間で電圧が大きく動くなら、スイッチが本当にオフになっているか、観測時間を誤って選んでいないかから確認します。

200nsという数字にも境界がある

制御電圧は100ns後に立ち上がりを始め、立ち上がり・立ち下がりにそれぞれ1nsかかります。ハイレベル幅は200ns、繰り返し周期は1µsで、スイッチのしきい値は0.5Vです。スイッチは、立ち上がりの途中でオンになり、立ち下がりの途中でオフになります。したがって、実際の接続時間は201nsです。ハイレベル幅と実際の接続時間を同じ変数で扱うと、小さな誤差の原因を、プログラムの外に探すことになります。

観測は、制御電圧が完全に下がった後、25nsの時点で行います。k番目の取得の観測時刻は、100ns+k×1µs+ハイレベル幅+27nsです。ここで27nsには、立ち上がり1ns、立ち下がり1ns、待機25nsが入っています。一方、解析式の接続時間には、しきい値を基準に、幅+1nsを使います。同じ時間の数字ではないという点が、今回のラボの核心です。

取得の順序 現在の入力 公称モデルの取得後の電圧 解釈
1回目 1.8V 約1.135V 0Vから出発して、まだ十分に充電されていない
2回目 1.8V 約1.554V 前の電圧から続けて充電された
3回目 0.3V 約0.764V 前のチャネルの高い電圧が残っている
4回目 0.3V 約0.471V 新しい入力に近づくが、まだ差が残る

この数字は、後の課題を代わりに解く正解ファイルではありません。入力・抵抗・容量・取得幅を変えれば、計算し直して、実際の波形を読む必要があります。特に、high_vとlow_vというフィールド名は、1つ目・2つ目のチャネルを意味するだけで、常に前の値のほうが高いという制約はありません。反対の方向に切り替わる入力も扱って初めて、原因を値の大きさにハードコードせずに済みます。

波形ファイルが作られたというだけでは足りない

ngspiceは、この回路の時間に沿った電圧を計算します。出力には、time、v(vin)、v(gate)、v(hold)の4つの列があります。最初の列は秒で、残りはボルトです。元の入力と保存された電圧は、別々のノードです。アナライザーが2つの列を取り違えて読むと、すべての誤差が0に近づく、非常にもっともらしい偽の成功を作り出すことがあります。

読み込むときは、ヘッダー、4つの列、有限の数値、厳密に増加する時間、最初と最後の時刻を検査します。終了コード0やファイルの存在だけで、分析を始めません。この授業を準備したとき、実際に数値設定を厳しくしすぎた実行は、波形が最後まで到達しなかったのに、プロセスが0で終了しました。データがないことと、要求する条件が失敗したことは、別の結果でなければなりません。

求める時刻が2つの行の間にあれば、線形補間します。次の行をそのまま持ってくると、電圧が速く変化する区間で、時間の偏りが生じます。逆に、波形が2µsで終わっているのに、3.327µsの値を要求されたなら、最後の電圧を付け足して埋めることはしません。これは補間ではなく、根拠のない外挿です。途中に重複した時間があると、分母が0になることがあるので、パーサーを通しません。

今回の実装は、波形全体を1回読み、観測時刻を探すときに二分探索を使えます。サンプルごとに最初から全体をなぞる方式より、繰り返しの分析のコストを減らせます。提供されるヘルパーは、シミュレーターのログと、回路・設定・波形を、新しいフォルダーに一緒に残します。次の実行で以前の証拠を上書きしないように、すでにある出力フォルダーは拒否します。

誤差・モデル・収束は3つの問い

最初の問いは、サンプル電圧が、目標の入力とどれだけ違うか、です。教育用のコード幅は、Vref/2ⁿです。3.3V・12ビットなら、1LSBは約805.664µVで、その半分は約402.832µVです。ここでは、実際の変換コードを生成せず、電圧の誤差をこの幅で割ります。4095は最大値の番号であり、この規約の状態の個数ではありません。

2つ目の問いは、観測が、私たちが計算した回路モデルと合っているか、です。実際の波形と、前の電圧を引き継ぐ解析式との最大の差を求め、100µV以内かどうかを確認します。合っていなければ、回路・初期条件・ノードの選択・時間軸から確認します。入力電圧をそのまま結果にコピーして、目標の誤差だけを0にしても、モデル一致の検査は通過できないようにしなければなりません。

3つ目の問いは、数値解析の間隔を変えても、結論が維持されるか、です。同じ条件を、5psと2.5psの最大時間間隔で実行し、4つのサンプルの最大の差が10µV以内かどうかを比べます。収束の比較は、解析式との照合とは役割が違います。2つの実行が、同じように誤った回路を使っていても、互いには一致することがあるからです。逆に、回路は合っているのに、数値の間隔が粗くて、報告する桁が安定しないこともあります。

最終的な判定には、10µVの判定マージン区間を置きます。絶対誤差に10µVを足しても、1/2 LSB以下ならpass、誤差から10µVを引いても1/2 LSBより大きければfail、その間にかかればborderlineです。モデルの不一致は、4つのサンプルすべてをinvalid_modelと表示します。borderlineをpassに丸めません。このマージンの値は、今回の実験の運用規約であり、すべての数値誤差の厳密な上界や、実際の計測の不確かさの認証値ではありません。

現場での姿

条件を比較するときは、他の変数を固定した理由を説明する必要があります。同じ入力と容量で、ソース抵抗を100Ωに下げた理想モデルは、今回の1/2 LSBの基準を通過しました。取得幅を350nsに延ばした10kΩのモデルは、誤差は減りましたが、基準には入りませんでした。「改善した」と「十分」を区別する、簡単な事例です。複数の条件で通過した候補が出ても、実際の製品に使う部品を選んだという意味ではありません。

実際のバッファーを設計するなら、出力の駆動能力、ノイズ、安定度、入力範囲と電源条件を、追加で検証しなければなりません。今回のモデルには、そのバッファー自体も、ADCの電荷注入・保護ダイオード・非線形性・温度偏差もありません。したがって、「サンプル回路で通過した条件」として報告し、実物の精度や安全性を保証しません。実際の機器に電圧を印加したり、レーザーや電力回路をつないだりする課題ではありません。

NXPのアナログ検証職の求人は、整定時間とADCの理解、Pythonによる自動化、データシートに基づく検証計画と結果の分析を求めています。この授業は、そのうちの小さな検証サイクルを練習するように設計したもので、実際のシリコン検証の経験や、該当する職務の要求の全体の代わりにはなりません。

次のラボですること

設定の検証、波形の読み込み、補間、観測、再帰的な予測、誤差の判定、単一のレポート、条件比較とCLIを、順に実装します。最終的なレポートには、元の設定と観測値、モデルの差、収束したかどうか、条件付きの候補を、一緒に残します。候補の番号だけを残すと、なぜ選んだのかを、後で説明し直せません。最低2つの条件を実際に実行した後、入力の向きが違う場合にも、結果を検算してみてください。

公式資料と確認の範囲