AN1007 MCP3551 デルタシグマ ADC の応用設計法 Author: DataView ソフトウェアは、ここで論ずる多くの問 題に適切なヒストグラムや領域描画グラフにより、リ アルタイムでシステムノイズ特性を視覚化して評価で きるようにするものです。 Craig L. King Microchip Technology Inc. まえがき アンチエイリアスフィルタの設計と入力セトリング 時間の問題の項も含まれています。PICmicro マイクロ コントローラ用のソフトウェアとハードウェア SPI™ 用のシリアル通信ファームウェアが、C とアセンブラ で記述されて提供されています。C 言語で書かれたソ フトウェア SPI™ のコードは、MCP3551 22-Bit DeltaSigma ADC PICtail™ Demo Board の実行コードとし ても提供されています。 MCP3551 デルタ−シグマ ADC は高分解能のコン バータです。このアプリケーションノートでは、この デバイスを使うときの、いろいろな設計テクニックに ついて論じています。まず典型的な応用回路について 論じ、ノイズ解析の項が続きます。このデバイスは、 他の高分解能の ADC と同じように、ノイズ電圧より 小さな LSB サイズとなっています。このため、デバイ スの(そしてシステムの)性能は、単にバイナリ出力 列を見ているだけでは解析できません。データを集め、 視覚的に結果を解析することが必要です。そのために は、回路設計をする時には、PC にデータを取り出す 方法を用意しておくことが重要です。本アプリケー ションノートでは、センサーやシステム性能評価を素 早くするために、MCP3551 22-Bit Delta-Sigma ADC PICtail™ Demo Board の回路と DataView® ソフトウェ アの使い方を説明し、同様に、デバイスを PICmicro® マイクロコントローラにインターフェースする方法を 説明します。 標準的な接続 システムノイズ解析とデバッグ用として、MCP3551 22-Bit Delta-Sigma ADC PICtail™ Demo Board にセン サーを接続した MCP3551 デバイスの標準的な応用を 図 1 に示します。 0.1 µF 1.0 µF To VREF 8 0.1 µF To VDD ~0.1-2 kΩ 1 2 VIN+ VREF MCP3551 3 VIN- VSS VDD SPI™ Bus SCK SDO CS 5,6,7 3 3 PICmicro® MCU 8 4 MCP3551 22-Bit ΔΣ ADC PICtail™ Demo Board PIC18F4550 5 USB 2x16 LCD ( または同等品 ) PC 上で実行 DataView® ソフトウェア USB インターフェースで DataView ソフトウェアへ PC 上でノイズ解析 図 1: システムノイズとデバッグ用の典型的なブリッジセンサーの接続図 © 2006 Microchip Technology Inc. DS01007A_JP-page 1 AN1007 温度、圧力、重量などの物理的状態のセンサーは、 その多くが図 1のようなホイートストーンブリッジで 構成されています。ブリッジは、1から4の要素のど れでも物理的状態に感応するものにでき、できれば放 射状の構成として、センサーと ADC リファレンス電 圧の両方をシステムリファレンスでドライブするよう にし ま す。ひ と つ の 例 は General Electric 社の NovaSensor® という絶対圧力センサー (NPP-301) で、 図 2 のように4要素の可変ブリッジとなっています。 NPP-301 デバイスは、3V の電池で使ったとき、標 準で 60 mV のフルスケール出力となっています。この デバイスの圧力範囲は 100 kPa となっています。 MCP3551 の出力ノイズ規格は 2.5 µVRMS です。 下記式は圧力 (P、単位:パスカル ) と高度 (h、単 位:メートル ) の関係の一次近似式です。 h log ( P ) ≈ 5 – -------------15500 MCP3551 ADC で設計するときには、まず最初のス テップは、センサー性能の評価をして、システム全体 分解能を上げるためにはどのようなステップにするか (も し あ れ ば)を 決 定 す る こ と で す。多 く の 場 合、 MCP3551 デバイスで直接センサー出力をディジタル 化する使い方ができ、他の外付けの信号補正回路を必 要としません。 フルスケールレンジが 60 mV で解像度が 2.5 µV で 使うと、直接ディジタル化(メートルで)したときの 結果の解像度は 0.64 メートルとなり、およそ 2 フィー トとなります。 この使い方は議論の例題として使っただけであるこ とに注意して下さい。すなわち、最終的なシステム設 計のときは、温度効果や一次近似による誤差を含めな ければなりません。 0.1 µF 1.0 µF To VDD 1 2 VREF VIN+ 3 6 2 VIN3 NPP-301 8 VDD MCP3551 VSS 4 5 SCK To SPI™ SDO CS 5,6,7 VBAT + - 高度計 図 2: 直接ディジタル化の例題。これは低電力の絶対圧力センサーモジュールで、GE 社の NovaSensor (NPP-301) シリーズで使われている低価格の表面実装の圧力センサーです。 MCP3551 のような高分解能 ADC は、低分解能 ADC と増幅段を含めた置き換えに使うことができます。 図 3 のシステムブロック図は、典型的な信号処理回路 です。この例では、要求精度は 12 ビットです。12 ビッ ト ADC が選択され、変換前に信号増幅のため増幅段 が必要となっていました。12 ビット精度を達成するた め、ADC の全入力範囲を使わなければなりません。こ の例では、信号のコモンモードが変化するため、何ら かのオフセット補正が必要で、加算アンプが必要にな ります。 (つまり、信号は増幅前にセンター配置されな ければなりません。) OSC 入力 信号 + 加算 アンプ + PGA VREF 低分解能 ADC MCU/CPU 補正用 DAC 図 3: 低分解能 ADC と信号処理回路を使った 応用例 DS01007A_JP-page 2 © 2006 Microchip Technology Inc. AN1007 この場合には、高分解能のMCP3551デバイスを使っ て信号処理回路全部を省略することができます。 VREF PICmicro® マイクロコントローラ 入力 信号 MCP3551 図 4: 高分解能 ADC を使って信号処理回路 を省略する 高分解能 ADC の広いダイナミックレンジ(つまり MCP3551 の場合は 22 ビット)により増幅システムを 省略することができます。上記の例では、12 ビット精 度が要求でした。22 ビットのダイナミックレンジで は、ADC の入力レンジ内のどこにでも 12 ビット精度 の範囲を置くことができます。図 5 は、VREF = 2.5V ( 注 : スケールは合わせてはいない ) でのこの比較を示 しています。 2.5V 注意すべきは、式 1 による ENOB(または有効分解 能)の式は、純粋な DC 信号を前提としていることで す。正弦波信号は、同じピークレベルに単調に広がっ たランダム信号より、AC 電力が 1.76 dB だけ高くな ります。もし応用が AC 信号を扱うなら、ADC 性能は AC FFT を使って周波数領域でみることになります。 これらの描画は、信号対ノイズ比 (SNR) または、信号 対 ( ノイズ+歪)比 (SINAD) を表します。しかし、こ れらは低バンド幅のデルタシグマのデータシートには 通常ありません。 ENOB は本来、高 AC 入力のときに比べ、高 DC 入 力の方が優れています。なぜなら AC 入力のときは、 信号に不確定に加わる信号の位相が 90° に近くなると 値が 0 に近くなってしまうからです。 標準 SNR (dB)_=_6.02n+1.76 (VRMS_=_VPEAK/ 2√(2) から求めるか、信号を純粋な正弦波とする ) を 使って ENOB を計算するには、式 2 を使います。計 算結果の ENOB は、1.76 dB または 0.292 ビットだけ 小さな ENOB となります。 式 2: FSR 20 • log ⎛ --------------------------⎞ ⎝ RMS Noise⎠ ER in bits rms = ----------------------------------------------------6.02 2,097,152 20 ビット 8192 4096 0V 12 ビット 0 図 5: MCP3551/3 の広いダイナミックレンジと 12-bit ADC との比較 MCP3551/3 ビットとノイズの解析 高分解能のコンバータでは、LSB の大きさはデバイ スノイズより小さくなっています。 (つまりデバイスか らの出力コードには常にばらつきがあるということで す。)この出力ノイズ規格は、出力コードの分布から計 算で測定できます。出力コードの分布は、デバイスの 有効解像度または等価ビット数 (ENOB) を定義しま す。出力コードの分布は、ある標準偏差を持っていま す。この標準偏差はデバイスの RMS ノイズ (σ) です。 RMS ノイズ(測定可能な最小の信号)とデバイスのフ ルスケール入力レンジ(測定できる最大信号)の比が、 ADC の有効分解能となります。これを式 1 の定義で、 2 進数の ENOB に変換します: 式 1: ln ( FSR ⁄ RMS Noise )ENOB = --------------------------------------------------ln ( 2 ) © 2006 Microchip Technology Inc. 100 mVフルスケール出力のセンサーを使ったとき、 MCP3551 分解能ベースの ENOB は次の式で計算でき ます: 式 3: ln ( ( 100mV ) ⁄ ( 2.5μV ) )ENOB = -------------------------------------------------------ln ( 2 ) ここで : ENOB = 15.3 bits MCP3551 の出力ノイズまたは有効分解能は、 VREF = 5V で 21.9 ビット RMS という規格です。予測さ れるピークノイズビット数(ふらつかないビット数) は統計的解析で求められますが、これは次項で論じま す。 注意すべきは、ADC の VREF 電圧を低くしても、デ バイスの出力ノイズあるいは有効分解能は改善されな いということです。これはノイズが入力構成品の熱雑 音で占められているからです。 応用によっては、必要なシステム分解能を達成する ためには信号増幅が必要になることもあります。本ア プリケーションノートには、このような使い方で必要 な信号処理回路の解析は含まれていません。 センサーそして最終的にはシステムの分解能を決定 するには、全ての誤差を考慮しなければなりません。 大部分の誤差の補正は使い方に依存しています。例え ば、誤差規格が 0.01% の電池を考えてみて下さい。 DS01007A_JP-page 3 AN1007 補正をしないと、100 mV フルスケール出力のセン サーに対して MCP3551 の分解能が大変細かいのにも かかわらず、センサーがシステム全体の分解能を 13.2 ビットに抑えてしまいます。 定義によれば、ノイズは波形や姿形がない非周期性 の信号です。このランダム性は、ガウス分布(正規分 布)の RMS 測定のような統計的特性を扱うには最適 です。システムを設計していて性能を計測したいとき には、RMS ノイズの方がピークピークノイズより再現 性が高くなります。図 6 は、2つの異なる ADC 出力 の分布を RMS と PEAK という異なる値で表したもの です。 will supply new figure 図 8: 示 DataView ソフトウェアの領域描画表 デバッグポーリングとデータログ 2σ σ 図 6: 2つの出力の正規(ガウス)分布 DataView® ソフトウェアツールは、MCP3551 を使っ て、リアルタイムのヒストグラムを表示する視覚化 ツールです。ソフトウェアは、その時の分布の RMS ノイズを計算します。さらに、分布に含まれるサンプ ル数を、平均の経験則として知られている方法で数値 化し表示します。 ® 図 7: DataView ソフトウェアは、システム 性能をヒストグラム形式で表示する DataView ソフトウェアは、USB のポーリング間隔 をミリセカンドから時間という広い範囲で変えられる という柔軟性があります。長期間のデータ解析を必要 とする応用では、長期間の性能を見ることができるよ うにシステムキャッシュを設定できます。DataView ソ フトウェアの USB ポーリング間隔を変えることで、設 計者は、高分解能システムに典型的な、長期変動とい うシステム問題を簡単に調べることができます。( 図 9 参照 ) この特徴のさらなる情報については MCP3551 22-Bit Delta-Sigma ADC PICtail™ Demo Board User’s Guide (DS51579) を参照して下さい。 図 9: システム変動解析用の USB ポーリング 間隔制御 前述の例では、RMS ノイズは 0.8 ppm でリファレ ンス電圧は 2.5V. でした。このシステムでは、式 1 を 使って ENOB は 21.6 となりました。 ソフトウェアはまた、領域描画ウィンドウを使って 時間ベースのシステム解析を行うこともできます。こ の視覚化解析ツールにより、システムドリフトなどの 時間ベースの誤差を解析することができます。 DS01007A_JP-page 4 © 2006 Microchip Technology Inc. AN1007 ピークノイズ予測と無雑音ビット ピークピークノイズを計測したり予測することは、 RMS ノイズを計測することよりかなり難しいことで す。また、このピークピークノイズは、無雑音ビット またはふらつきなしビットともいわれます。ここで、 分布の中で発生する出力コードの可能性を予想してみ ましょう。分布が正規分布あるいはガウス分布(ノイ ズは完全にランダムと仮定)に従うという事実に基づ いて、標準統計表を用いて表 1 が作成できます。最初 の欄の乗数は、ピーク -RMS の比となります。この乗 数(または比)は、信号の電力成分を解析するときの 信号の 波高因子 としても知られています。しかし、ノ イズを解析するときには、この乗数は、各用途の要求 に基づいて選択すべきです。 システムのデバッグ中は、正しいピークピークウィ ンドウを求めるのに、統計学の経験則が一般的規則と して適用できます。経験則によれば、正規分布に従う データの 68% が平均の 1 標準偏差以内に収まり、95% が 2 標準偏差内に、99.7% が 3 標準偏差内に収まると されています。ディジタルシステム設計では、もっと も一般的な選択は平均の 3.3 標準偏差で 99.9% の確率 です。この厳密さより厳しくするかゆるくしたシステ ム設計は、表 1 の他の RMS- ピーク比か波高因子を参 照して下さい。 σ 2σ 図 10: 平均からの n σ ( 標準偏差 )、表 1 に基づく 例として、やや高信頼の無雑音ビットを要する応用 を選択したとします。 (例えば心不全用の電子式心臓細 動除去器のフィードバックループなど) © 2006 Microchip Technology Inc. DataView ソフトウェアを使って求めたシステムノ イズは 0.5 ppm, RMS となります。 e N ( RMS ) = 0.5ppm e N ( p – p ) = e N ( RMS ) • K = ( 0.5ppm ) • ( 10 ) = 5.0ppm N 22 codes = -------------------2 1ppm = 2--------------------1000000 1000000 = 4.194 codes e N ( p – p ) = 5ppm = 20.97 codes = 21 codes ここで、乗数は 5 を選択してやや控えめとし、結果 ウィンドウは、21 個の出力コード幅をもっています。 表 1: 無雑音ビット予測用の信頼表 平均周辺の分布ウィンドウ ( ピークピークウィンドウ ) ウィンドウ ウィンドウ内 内に入る出 に入らない出 力コードの 力コードの確 率 確率 2.0 x RMS または 1 σ 68% 3.0 x RMS または 1.5 σ 87% 13% 4.0 x RMS または 2σ 95.4% 4.6% 32% 5.0 x RMS または 2.5 σ 98.8% 1.2% 6.0 x RMS または 3 σ 99.73% 0.27% 6.6 x RMS または 3.3 σ 99.9% 0.10% 8.0 x RMS または 4 σ 99.954% 0.046% 10.0 x RMS または 5 σ 99.994% 0.006% アナログフロントエンド (AFE) の設計 アンチエイリアシングとセトリング時間の問題を見 る前に、入力構成とデバイスの動作をまず評価しなけ ればなりません。MCP3551 デバイスの入力ピンは、ス イッチキャパシタタイプの入力です。入力ピンは直接 デルタシグマ変調器に接続されています。ここでは内 部発振器を 4 で割った周波数 (fINT/4) で、入力をオー バーサンプリングしています。結果はリファレンスと 入力間で4相サンプリング方式となります。サンプリ ング時間 tCONV の間に、ADC は常時差動入力電圧とリ ファレンス電圧を比較し、この電荷を入力コンデンサ に転送します。図 11 は MCP3551 デバイスを使った ときの、このタイミングの説明図です。 DS01007A_JP-page 5 AN1007 112.64 kHz 入力サンプル 112.64 kHz 電荷転送 112.64 kHz リファレンスサンプリング 112.64 kHz 電荷転送 28.16 kHz X 512 1次フィルタ X 512 X 512 2次フィルタ 3次フィルタ X 512 4次フィルタ tDATA = 72.72 ms 図 11: MCP3551 デバイスの内部タイミング。セトリング時間問題には電荷転送周波数の注視が必 要。エイリアス問題には、28.16 kHz というオーバーサンプリング周波数に注視が必要。 アンチエイリアスフィルタの設計 ADC のアーキテクチャにかかわらず、アンチエイリ アスフィルタがしばしば必要とされます。デルタシグ マ ADC も例外ではありません。図 12 の SINC フィル タ応答に基づけば、簡単で安価な RC フィルタだけで、 オーバーサンプリング周波数付近の不必要な信号を取 り除くには十分です。 MCP3551 デバイスは 28.16 kHz のオーバーサンプ リング周波数となっています。MCP3553 デバイスは 30.72 kHz というオーバーサンプリング周波数となっ ていて、より高いデータレートまたはナイキスト周波 数とするため、低いオーバーサンプリング比 (OSR) と なっています。MCP3551 と MCP3553 デバイスのナ イ キ ス ト あ る い は 出 力 デ ータ レ ー ト は、それ ぞ れ 13.75 Hz と 60 Hz です。 ています。 (エイリアス部では -20 dB です)従って、 アンチエイリアシングフィルタでさらに 20 dB を加え れば 100 dB を得られます。 マイクロチップのフリーの FilterLab® フィルタ設計 ツールを使えば、簡単に単極の指定フィルタカットオ フ周波数の RC 減衰器を評価でき、またエイリアスさ れた信号周波数成分の評価もできます。図 13 は、カッ トオフ周波数 1 kHz で、サンプリング周波数 30.72 kHz において 30 dB 以上として設計された RC を示してい ます。 注意すべきは、サンプリング周波数の整数倍で、 SINC フィルタの応答が繰り返され、そこでは SINC フィルタ応答はゼロになることです。 減衰 (dB) MCP3551 の SINC フィルタ応答は、図 12 のように 周波数が上がると減衰が大きくなるこぶを持っていま す。アンチエイリアスフィルタへの要求は、SINC フィ ルタの減衰特性を意識して選択するべきです。 0 -10 -20 -30 -40 -50 -60 -70 -80 -90 -100 -110 -120 図 13: FilterLab® フィルタ設計ツールで RC 応 答を表示 入力インピーダンス 0 10 20 30 40 50 60 70 80 90 100 110 周波数(Hz) 図 12: MCP3551 の改変型 SINC フィルタ 注意すべきは、不適切な部品を使うとフルスケール にならず、普通はより小さな振幅となることです。 図 12 から、最大の SINC こぶはおよそ 60 dB 下がっ 図 11 に示したようにデバイスの入力におけるス イッチング周波数は、内部発振器の周波数にすべての フェーズで等しくなっています。入力ピンの抵抗は、 スイッチング周波数に容量と等価容量 (CEQ) を乗じる ことで計算できます。結果の RC は、デバイスへ入力 するときに必要とされるセトリング時間を決定しま す。 入力に何らかの RC が追加されると、デバイスの内 部オーバーサンプリング内に入力信号が完全にセトリ ングされなくなる原因となります。ここで重要なこと は、デルタシグマ構成で実行されるオーバーサンプリ DS01007A_JP-page 6 © 2006 Microchip Technology Inc. AN1007 絶対計測精度を得るためには、必要な内部電荷が定 着されなければなりません。 (これは、オフセットやゲ イン調整をしていないシステムでは、最終電荷の割合 として定義されます。)例えば、目標絶対精度が 1 ppm とすると、以下のセットリングタイムがなければなり ません。それはRC時定数(T)の倍数として表されます。 オフセット・ゲインの影響の解析をしたいときには、 内部 RC のセトリングタイム曲線を、希望するシステ ム精度と比べながら解析すればできます。図 14 は内 部抵抗と容量 (RSW と CEQ) だけの RC 充電カーブを 示しています。 式 4: 電圧 (V) ングと平均化によって、ここに追加された追加 RC は 毎回のオーバーサンプルされる電荷にかかわることで す。結果のデバイス出力への影響は、変換オフセット とゲインのエラーになります。デバイスの直線性は 悪 くはなりません。出力ノイズ特性も、入力抵抗によっ て追加される熱雑音が出力ノイズ規格を超えないと仮 定すれば、悪くはなりません。 –t ----⎞ ⎛ τ VC = VF ⎜ 1 – e ⎟ ⎝ ⎠ t = nτ VC V e = 1 – -----VF 1.0 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 –n VC = VF ( 1 – e ) e –n VC = 1 – ------ = Ve VF n = – ln ( V e ) = -ln ( 1ppm ) 0 0.005 0.01 0.015 = 13.8 時間 (t) 図 14: 標準 RC 曲線。入力信号が x ppm 以 内にセットされるのに必要な時間を考慮しなけ ればなりません。 © 2006 Microchip Technology Inc. この例では、1 ppm の絶対精度を得るためには、時 定数の14倍の時間が定着を完全にするために必要とさ れます。式 4 を使うと、他の精度要求に対しても同じ 計算が使えます。繰り返すと、補正されてオフセット やゲインエラーが無いシステムでは、セトリングタイ ムの解析は必須ではありません。なぜなら、各サンプ リングごとにデルタシグマでオーバーサンプリングし 平均化しているからです。 DS01007A_JP-page 7 AN1007 通信ファームウェア MCP3551 ADC はシリアル SPI™ デバイスです。本 アプリケーションノートには、C とアセンブラ言語の 両方で書かれたコードを含んでいます。MCP3551 22Bit Delta-Sigma ADC PICtail™ Demo Board は、DataView ソ フ ト ウ ェア と USB 経 由 で 接 続 さ れた PIC18F4550 を通して接続されます。またマイクロ チップのC18コンパイラで書かれたコードが提供され ています。使用している SPI 通信プロトコルの概要を 下記に示します: void Read3551(char *data) { unsigned char n; data[2] = ReadSPI(); data[1] = ReadSPI(); data[0] = ReadSPI(); } //MCU checks every 10 ms if conversion is finished if(AquireData & gSampleFlag) { CS_PTBoard_LOW(); // for(n=0;n<5;n++); if (SDIpin == 0) Read3551(outbuffer); CS_PTBoard_HIGH(); // gSampleFlag = 0; //clear timeout indicator if(!mHIDTxIsBusy()) HIDTxReport(outbuffer,3); } シス テ ム が DataView ソ フ ト ウ ェ ア から (PIC18F4550 に USB 経由で ASCII “S” を送ることで) Acquire Dataモードに設定されている間は、AcquireData フ ラ グ が セ ッ ト さ れ て い ま す。こ の 間 は、 MCP3551は常時変換を続けていて、読み出しデータは USB 経由で PC に送られ保存されます。 PIC18F4550 上で実行されるコードは、10 ms ごと に MCP3551 に対し CS の Low パルスを送ります。 Timer1 のフラグとTimerCounter変数がこの時間の セットに使われます。このこの Low パルスは、立上が りエッジが変換時間より短いときは、デバイスを単発 変換モードに設定します。CS パルスが Low の間に、変 換が終了したかどうか判定するために SDO 状態がテ ストされます。ピンが Low であれば、ファームウェア はそのデータを Read3551 サブルーチンを使って取り 出します。Read3551() ルーチンは、3 回に分けて ReadSPI ルーチンを呼び出し、22 ビットワードと 2 ビットのオーバーフローで含んだ 3 バイトを取り出し ます。3 バイトデータが戻されると Sample フラグが リセットされプロセスが完了します。 DS01007A_JP-page 8 © 2006 Microchip Technology Inc. AN1007 スタート USB から RX あり ? Yes No ‘AquireData’ フラグを セット S ASCII 文字か ? P ‘AquireData’ フラグを クリア C Timer0 フラグ セットか (TMR0IF) ? Yes ‘TimerCounter’ を増分 TimerCounter ロールオーバーか? No Yes No ‘gSampleFlag’ セット TimerCounter = FEh TMR0IF をクリア ‘AquireData’ と gSampleFlag セットか? Yes データラインをサンプル 変換完了を チェックする No 変換完了か? Yes MCP3551 をリード データを USB TX バッファにセット No 終わり 図 15: PIC18F4550 フローチャート。視覚による解析に供するため、USB TX バッファを DataView ィ ソ フトウェアに送信する。 © 2006 Microchip Technology Inc. DS01007A_JP-page 9 AN1007 参考文献 付録 A: [1] “Delta-Sigma Data Converters Theory, Design and Simulation”, Steven R. Norsworthy, Richard Schreier, Gabor C. Temes, IEEE Press, 1997, pp. 4-9. デルタシグマ ADC は何倍かのオーバーサンプリン グデバイスです。高分解能、優れた電源周波数除去、 わずかの外付け部品、低電力がこれによるメリットの 一例です。高分解能のメリットは、よく混乱がありま すが、単純なオーバーサンプリングだけの産物ではあ りません。 [2] AN9504, “A Brief Introduction to Sigma Delta Conversion”, David Jarman, Intersil®, 1995. [3] “Modern Business Statistics”, Ronald L. Iman, W.J. Conover, Second Edition, John Wiley & Sons, Inc., 1989. オーバーサンプリング解析 なぜ PICmicro® MCU の SAR ADC はオーバー サンプリングではないのか? 答えは簡単:ノイズの姿形です。高速逐次変換方式 (SAR) ADC の単純なオーバーサンプリングと結果の 平均化だけでは、デルタシグマ ADC の高解像度性能 は達成できません。オーバーサンプリングと平均化で は、サンプル周波数を倍にするごとに 1/2 ビットの精 度改善になるだけです。両アプローチのノイズ電力を 比較することで、この比較の根拠となる理論をここに 示します。 単純なオーバーサンプリング 一般的な量子化単位(または LSB) では、この量子 内のノイズは完全にランダムと仮定するか、ホワイト ノイズと仮定されます。従って、ディジタルまたは量 子化された出力 (ADC) の量子化ノイズ電力と RMS 量 子化電圧は、下記式で求められます: 式 5: q --- e 2 rms 2 q 2= 1--- ∫– q e 2 de = ----12 q ------ (V2) 2 qrms = --------(V) 12 e 例えば、VREF が 5V の 16 ビットコンバータでは、 RMS 量子化ノイズは 22 µV となります。 ナイキストの定理により、このノイズは 0 から fs/2 の周波数帯域に一様に存在することになり、またノイ ズのスペクトラム密度(V/√(Hz))を求めることもでき ます。: 式 6: e V E ( f ) = ( rms ) --2- ⎛ -----------⎞ f s ⎝ Hz⎠ 測定対象となる周波数帯域 (fo) でのノイズ電力を決 めるには、この必要な帯域に渡ってノイズを二乗し、 積分しなければなりません。 DS01007A_JP-page 10 © 2006 Microchip Technology Inc. AN1007 ノイズ姿形の性能を改善することは、高次のデルタ シグマ変調器設計を使うことで実現できます。高次の 変調器のノイズ電力は下記式で要約できます: 式 7: n o2 ( V2 ) = ( e( f)) 2f o n o = ( e rms ) ⎛ -------⎞ ⎝ fs ⎠ 1/2 式 10: (V) M 2f o π n o = e RMS --------------------- ⎛ -------⎞ ⎝ 2M + 1 f s ⎠ ここで : fo < fs/2 デルタシグマ変調器は図 17 のように低周波ノイズ を高周波に押しやることで、オーバーサンプリングの 性能を向上させています。このデルタシグマ変調器の メリットは、ノイズの姿形にあります。一次のデルタ シグマ変調器では、OSR を倍にするごとに、9 dB の 精度改善つまり 1.5 ビット分解能改善となります。 蓄積器の出力は、入力信号に量子化により発生する 誤差、つまり下記の図と式で表される量子化信号と同 じものを加えたものになります: これによれば、M 次の変調器ではサンプリング周波 数を倍にするごとに、ノイズは 3 (2M - 1) dB だけ減少 します。例えば、M = 3 (MCP3551/3 デバイスは3次 の変調器です ) であれば、サンプリング周波数を倍に するごとに、分解能を 2.5 ビット改善できます。この アーキテクチャにより MCP3551/3 のようなデバイス を使えば、ノイズ性能を < 3 µV とすることができま す。図 17 に周波数領域のノイズ姿形を示します。ノ イズは、オーバーサンプリング周波数 (fs) 付近の高い 周波数に押しやられています。さらに注意すべきは、 熱雑音もOSRを倍にする都度、標準平均化規則の3 dB (1/2 ビット ) 改善に従い、信号の一部として処理される ことです。 ディジタル フィルタ 大きさ fs/2fo が OSR(OSR:オーバーサンプリング比)で あることを思い出せば、OSR を大きくすればノイズが OSR の平方根で減少するということが分かります。[1] 従って、サンプリング周波数を倍にするとわずか 3 dBしか性能改善されず、これは0.5ビット分解能増に しかなりません。 1 M + --2 STF 量子化 蓄積 xi yi - + + 遅延 ei 図 16: 一次デルタシグマ変調器のサンプル データからみた等価図 [1] 式 8: yi = xi – 1 + ( ei – ei – 1 ) 0 f0 2f0 ナイキスト 周波数 fs オーバーサンプリング 図 17: 必要な帯域で低ノイズレベルを達成 したデルタシグマ変調器のノイズ姿形。これは 高速 SAR ADC の単純オーバーサンプリングと平 均化だけでは不可能。 (注:STF は Signal Transfer Function の略、すなわ ち信号伝達関数) ノイズ密度 (ei-ei-1) を求め、それを二乗し、最終的 に使う帯域に渡って積分することで、再度ノイズ電力 に変換します: 式 9: 3--- π 2f o 2 n o = e RMS ------- ⎛⎝ -------⎞⎠ 3 fs デルタシグマ変調器は OSR を倍にするごとに 9 dB ( または 1.5 ビット ) 帯域ノイズが減少します。単純な オーバーサンプリングより3倍よくなります。 © 2006 Microchip Technology Inc. DS01007A_JP-page 11 AN1007 付録 B: ソフトウェア - SPI™ 通信のアセンブラプログラム 表 B-1: SPI _ PIC18F252.ASM ;============================================================================= ; Software License Agreement ; ; The software supplied herewith by Microchip Technology Incorporated ; (the “Company”) for its PICmicro(r) microcontroller is intended and ; supplied to you, the Company’s customer, for use solely and ; exclusively on Microchip PICmicro Microcontroller products. The ; software is owned by the Company and/or its supplier, and is ; protected under applicable copyright laws. All rights are reserved. ; Any use in violation of the foregoing restrictions may subject the ; user to criminal sanctions under applicable laws, as well as to ; civil liability for the breach of the terms and conditions of this ; license. ; ; THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES, ; WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED ; TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A ; PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, ; IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR ; CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. ; ;============================================================================= ; Filename: 840DSM.asm ;============================================================================= ; Author: Craig L. King ; Company: Microchip Technology Inc. ; Revision: 1.00 ; Date: July 21, 2004 ; Assembled using MPASM(tm) WIN compiler ;============================================================================= ; Include Files: p18f252.inc V1.3 ;============================================================================= ; ;============================================================================= list p=18f252;list directive to define processor #include <p18f252.inc>;processor specific definitions ; Change the following lines to suit your application. __CONFIG __CONFIG __CONFIG __CONFIG __CONFIG __CONFIG __CONFIG __CONFIG __CONFIG __CONFIG __CONFIG _CONFIG1H, _CONFIG2L, _CONFIG2H, _CONFIG3H, _CONFIG4L, _CONFIG5L, _CONFIG5H, _CONFIG6L, _CONFIG6H, _CONFIG7L, _CONFIG7H, _OSCS_OFF_1H & _HS_OSC_1H _BOR_ON_2L & _PWRT_OFF_2L _WDT_OFF_2H _CCP2MX_OFF_3H _STVR_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L _CPB_OFF_5H & _CPD_OFF_5H _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L _EBTRB_OFF_7H ;---------------------------------------------------------------------------;Constants SPBRG_VAL EQU .64 ;set baud rate 19.2 for 20Mhz clock ;---------------------------------------------------------------------------- DS01007A_JP-page 12 © 2006 Microchip Technology Inc. AN1007 表 B-1: SPI _ PIC18F252.ASM (CONTINUED) ;Bit Definitions GotNewData #define #define #define #define #define #define EQU 0 do 0 di 1 CLK PORTC,2 ADCS PORTC,3 DIN PORTC, 4 BITCOUNT 0x08 ;bit indicates new data received ;transmit bit ;transmit bit ;clock ;chip select ;data in / READY ;---------------------------------------------------------------------------;Variables CBLOCK 0x000 Flags ;byte RxData ;data TxData ;data ParityByte ;byte ParityBit ;byte to store indicator flags received to transmit used for parity calculation to store received parity bit COUNT COUNT2 COUNT3 DLYCNT DLYCNT1 DLYCNT2 byte2 byte1 byte0 ENDC ;---------------------------------------------------------------------------;This code executes when a reset occurs. ResetCode: ORG 0x0000 ;place code at reset vector bra Main ;go to beginning of program ;---------------------------------------------------------------------------;This code executes when a high priority interrupt occurs. ORG 0x0008 HighIntCode: ;place code at interrupt vector ;do interrupts here reset ;error if no valid interrupt so reset ;---------------------------------------------------------------------------;This code executes when a low priority interrupt occurs. ORG LowIntCode: 0x0018 ;place code at interrupt vector ;do interrupts here reset ;error if no valid interrupt so reset ; © 2006 Microchip Technology Inc. DS01007A_JP-page 13 AN1007 表 B-1: SPI _ PIC18F252.ASM (CONTINUED) ; MAIN ROUTINE ;---------------------------------------------------------------------------;Main routine calls the receive polling routines and checks for a byte ;received. It then calls a routine to transmit the data back. ; ; ;This routine sets up the USART and then samples the MCP3551, and sends the 3 bytes out ;on the USART, THEN REPEAT ; ;------------------------------------------------------------------------------ Main: rcall SetupSerial ;set up serial port ;do other initialization here movlw b’11010000’ movwf TRISC MainLoop: ;go get the 3551 data rcall Sample3551 movff byte2,TxData bsf rcall TXSTA,TX9D TransmitSerial ;go transmit the data movff byte1,TxData bcf rcall TXSTA,TX9D TransmitSerial ;go transmit the data movff byte0,TxData bcf rcall TXSTA,TX9D TransmitSerial ;go transmit the data DoOtherStuff:;do other stuff here bra MainLoop ;go do main loop again ;---------------------------------------------------------------------------- DS01007A_JP-page 14 © 2006 Microchip Technology Inc. AN1007 表 B-1: SPI _ PIC18F252.ASM (CONTINUED) ;Check if data received and if so, place in a register and check parity. ReceiveSerial: btfss PIR1,RCIF return ;check if data received ;return if no data btfsc bra btfsc bra RCSTA,OERR ErrSerialOverr RCSTA,FERR ErrSerialFrame ;if overrun error occurred ;then go handle error ;if framing error occurred ;then go handle error movf movwf movf movwf RCSTA,W ParityBit RCREG,W RxData ;get ;and ;get ;and rcall movf xorwf btfsc bra bsf return CalcParity ;calculate parity ParityBit,W ;get received parity bit ParityByte,F ;compare with calculated parity bit ParityByte,0 ;check result of comparison ErrSerlParity ;if parity is different, then error Flags,GotNewData ;else indicate new data received received parity bit save received data save ;error because OERR overrun error bit is set ;can do special error handling here - this code simply clears and continues ErrSerialOverr:bcf RCSTA,CREN bsf RCSTA,CREN return ;reset the receiver logic ;enable reception again ;error because FERR framing error bit is set ;can do special error handling here - this code simply clears and continues ErrSerialFrame:movf RCREG,W return ;discard received data that has error ;error because parity bit is not correct ;can do special error handling here - this code simply clears and continues ErrSerlParity: return ;return without indicating new data ;---------------------------------------------------------------------------;Transmit data in WREG with parity when the transmit register is empty. TransmitSerial:btfss bra movf PIR1,TXIF $-2 ;check if transmitter busy ;wait until transmitter is not busy TxData,W ;get data to be transmitted movf TxData,W movwf TXREG return ;get data to transmit ;transmit the data ;---------------------------------------------------------------------------- © 2006 Microchip Technology Inc. DS01007A_JP-page 15 AN1007 表 B-1: SPI _ PIC18F252.ASM (CONTINUED) ;Calculate even parity bit. ;Data starts in working register, result is in LSB of ParityByte CalcParity: movwf rrncf xorwf movwf rrncf rrncf xorwf swapf xorwf return ParityByte ParityByte,W ParityByte,W ParityByte ParityByte,F ParityByte,F ParityByte,F ParityByte,W ParityByte,F ;get data for parity calculation ;rotate ;compare all bits against neighbor ;save ;rotate ;rotate ;compare every 2nd bit and save ;rotate 4 ;compare every 4th bit and save ;---------------------------------------------------------------------------;Set up serial port. SetupSerial: movlw iorwf movlw movwf movlw movwf movlw movwf clrf return 0xc0 TRISC,F SPBRG_VAL SPBRG 0x64 TXSTA 0xd0 RCSTA Flags ;set tris bits for TX and RX ;set baud rate ;enable nine bit tx and high baud rate ;enable serial port and nine bit rx ;clear all flags ;********************************************************* ;********************************************************* ;------------------------------------------------------------------------------------; ;Sample3551 ; ;This is where you sample the MCP3551 and put your 22-bit ;answer into the following bytes: ; byte 2 -byte 1 -byte 0 ; MSB LSB ; ; This routine returns the data ;------------------------------------------------------------------------------------- DS01007A_JP-page 16 © 2006 Microchip Technology Inc. AN1007 表 B-1: SPI _ PIC18F252.ASM (CONTINUED) Sample3551 clrf clrf clrf byte2 byte1 byte0 ; reset input buffer ; reset input buffer ; reset input buffer bsf bcf CLK ADCS ; clock idle high ;INITIATE THE CONVERSION movlw call .6 VAR1000TcyDELAY ; delay 1ms bsf ADCS ;CS HIGH (Single Conversion mode) movlw call call call .160 VAR1000TcyDELAY VAR1000TcyDELAY VAR1000TcyDELAY ; ; ; ; bcf ADCS ; GET THE CONVERSION DATA BITCOUNT COUNT ; FIRST BYTE CLK CLK STATUS,C DIN STATUS,C byte2, f COUNT, f FIRST_BYTE ; ; ; ; ; ; ; ; movlw movwf FIRST_BYTE bcf bsf bcf btfsc bsf rlcf decfsz goto movlw BITCOUNT movwf COUNT SECOND_BYTE bcf CLK bsf CLK bcf STATUS,C btfsc DIN bsf STATUS,C rlcf byte1, f decfsz COUNT, f goto SECOND_BYTE movlw BITCOUNT movwf COUNT THIRD_BYTE bcf CLK bsf CLK bcf STATUS,C btfsc DIN bsf STATUS,C rlcf byte0, f decfsz COUNT, f goto THIRD_BYTE bsf CLK © 2006 Microchip Technology Inc. total delay delay delay delay 110ms (GREATER THAN TCONV, CAN BE REDUCED) 160k Tcy 250k Tcy 250k Tcy drop clock for next bit set clock to latch bit pre-clear carry check for high or low bit set carry bit roll the carry bit left into position decrement bit counter get next bit ; SECOND BYTE ; ; ; ; ; ; ; ; drop clock for next bit set clock to latch bit pre-clear carry check for high or low bit set carry bit roll the carry bit left into place decrement bit counter get next bit ; THIRD BYTE ; drop clock for next bit ; set clock to latch bit ; pre-clear carry ; check for high or low bit ; set carry bit ; roll the carry bit left into place ; decrement bit counter ; get next bit ;clock idles high DS01007A_JP-page 17 AN1007 表 B-1: SPI _ PIC18F252.ASM (CONTINUED) bsf retlw ADCS 0 ;deselect A/D converter ; We’re finished - Return! ;******************* VARIABLE DELAY SUBROUTINES ******************* ; DLYCNT1 = F9h = 249d DLYCNT2 = W ; DELAY = T((4 DLYCNT1 + 4) DLYCNT2 + 4) ; ; ex. To create a 300ms delay when using a 4Mhz osc, 300-250 = 50 ; movlw .50 ;load .50 into WREG ; call VAR1000TcyDELAY ;call VAR1000TcyDELAY = 50ms delay w/4MHz Osc ; call VAR1000TcyDELAY ;call VAR1000TcyDELAY = 250ms delay w/4MHz Osc ; ;total = 300ms delay ;************ ; The value in W at the time of the CALL = x. Delay = 1000Tcy*x VAR1000TcyDELAY movwf DLYCNT2 ;LOADS CONTROLLING DLY # INTO PRIMARY COUNTER DLOOP2 movlw .249 ;MAXIMIZES THE SECONDARY DLY COUNTER movwf DLYCNT1 ; DLOOP1 clrwdt ;or NOP decfsz DLYCNT1,f ; DECREMENT AND TEST SECONDARY LOOP FOR ZERO goto DLOOP1 ; CONTINUE SECONDARY LOOP decfsz DLYCNT2,f ; DECREMENT AND TEST PRIMARY DLY COUNTER goto DLOOP2 ; CONTINUE PRIMARY LOOP retlw .250 ; preload W for the next CALL VAR1000TcyDELAY ;************ ; VARIABLE 5 Tcy DELAY UP TO 256*5Tcy+5Tcy ; DLYCNT1 = W ; DELAY = T(1 + 5 DLYCNT1 - 1) + CALL + RETLW ; ; ex. To create a 250us delay, (250/5)-1 = 49 ; movlw .49 ;load .49 into WREG ; call VAR5TcyDELAY ; call VAR5TcyDELAY ;************ ; The value in W at the time of the CALL = x. Delay = 5*Tcy + 5Tcy VAR5TcyDELAY movwf DLYCNT1 ; LOADS CONTROLLING DLY # INTO PRIMARY COUNTER DLOOP3 clrwdt ;or NOP nop decfsz DLYCNT1,f ; DECREMENT AND TEST ZERO goto DLOOP3 ; CONTINUE LOOP retlw .250 ; preload W for the next CALL VAR5TcyDELAY ;****************************************************************************** H END DS01007A_JP-page 18 © 2006 Microchip Technology Inc. AN1007 付録 C: 表 C-1: ハードウェア - SPI™ 通信の C 言語プログラム MCP3551.C /********************************************************************* * * Microchip USB C18 Firmware - MCP3551 PICtail(tm) Demo * ********************************************************************* * FileName: MCP3551.c * Dependencies: See INCLUDES section below * Processor: PIC18 * Compiler: C18 2.30.01+ * Company: Microchip Technology Inc. * * Software License Agreement * * The software supplied herewith by Microchip Technology Incorporated * (the Company) for its PICmicro(r) microcontroller is intended and * supplied to you, the Company’s customer, for use solely and * exclusively on Microchip PICmicro(r) microcontroller products. The * software is owned by the Company and/or its supplier, and is * protected under applicable copyright laws. All rights are reserved. * Any use in violation of the foregoing restrictions may subject the * user to criminal sanctions under applicable laws, as well as to * civil liability for the breach of the terms and conditions of this * license. * * THIS SOFTWARE IS PROVIDED IN AN ”AS IS” CONDITION. NO WARRANTIES, * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. * * Author Date Comment *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Pat Richards xx/xx/xx Original. ********************************************************************/ /** I N C L U D E S **********************************************************/ #include <p18cxxx.h> #include <usart.h> #include <spi.h> #include "system\typedefs.h" #include "system\usb\usb.h" #include "io_cfg.h" #include "user\MCP3551.h" // I/O pin mapping /** V A R I A B L E S ********************************************************/ #pragma udata //byte old_sw2,old_sw3; BOOL emulate_mode; rom signed char dir_table[]={-4,-4,-4, 0, 4, 4, 4, 0}; byte movement_length; byte vector = 0; byte AquireData = 1; char buffer[3]; //0 = STOP; 1 = Aquire char inbuffer[BUF_SIZE]; char outbuffer[BUF_SIZE]; byte TimerCounter = 0xF0; static unsigned char gSampleFlag; © 2006 Microchip Technology Inc. // 8 byte input to USB device buffer // 8 byte output to USB device buffer DS01007A_JP-page 19 AN1007 表 C-1: MCP3551.C (CONTINUED) /** P R I V A T E P R O T O T Y P E S ***************************************/ void Read3551(char *data); unsigned char ReadSPI( void ); void CheckBoardConnect(void); /** D E C L A R A T I O N S **************************************************/ #pragma code void UserInit(void) { byte i; CS_PTBoard_HIGH(); //Drive high tris_CS = 0; //Output OpenSPI(SPI_FOSC_16, MODE_11, SMPMID); TRISBbits.TRISB0 = 1; TRISBbits.TRISB1 = 0; //------------------------// initialize variables //------------------------for (i=0; i<BUF_SIZE; i++) { inbuffer[i]=0; outbuffer[i]=0; } //Timer 0 TMR0H = 0; TMR0L = 0; T0CONbits.PSA = 0; T0CONbits.T0PS2 = 1; T0CONbits.T0PS1 = 1; T0CONbits.T0PS0 = 1; T0CONbits.T0CS = 0; }//end UserInit //SDI //SCK // initialize input and output buffer to 0 //clear timer //clear timer //Assign prescaler to Timer 0 //Setup prescaler //Will time out every 51 us based on //20 MHz Fosc //Increment on instuction cycle /****************************************************************************** * Function: void ProcessIO(void) * * PreCondition: None * * Input: None * * Output: None * * Side-Effects: None * * Overview: This function is a place holder for other user routines. * It is a mixture of both USB and non-USB tasks. * * Note: None *****************************************************************************/ DS01007A_JP-page 20 © 2006 Microchip Technology Inc. AN1007 表 C-1: MCP3551.C (CONTINUED) void ProcessIO(void) { char n; // User Application USB tasks if((usb_device_state < CONFIGURED_STATE)||(UCONbits.SUSPND==1)) return; if (HIDRxReport(inbuffer, 1)) { switch(inbuffer[0]) { case START_ACQUISITION: AquireData = 1; CS_PTBoard_LOW(); TimerCounter = 0xFF; break; // USB receive buffer has data // interpret command // 'S' START aquisition of data //Start conversion case STOP_ACQUISITION: AquireData = 0; break; // 'T' STOP aquisition of data case CHANNEL_SELECTION: break; // 'C' A/D Channel Selection default: // unrecognized or null command ; }// END switch(inbuffer[0]) }//END if (HIDRxReport(inbuffer, 1) //Inst. cycle = 200 ns; TMR0IF sets every 51 us if(INTCONbits.TMR0IF) { TimerCounter++; if (!TimerCounter) //if rolled over, set flag. User code will handle the rest. { TimerCounter = 0xFE; gSampleFlag = 1; } INTCONbits.TMR0IF = 0; } //MCU checks every 10 ms if conversion is finished if(AquireData & gSampleFlag) { CS_PTBoard_LOW(); // for(n=0;n<5;n++); if (SDIpin == 0) Read3551(outbuffer); CS_PTBoard_HIGH(); // gSampleFlag = 0; //clear timeout indicator if(!mHIDTxIsBusy()) HIDTxReport(outbuffer,3); } }//end ProcessIO © 2006 Microchip Technology Inc. DS01007A_JP-page 21 AN1007 表 C-1: MCP3551.C (CONTINUED) /****************************************************************************** * Function: void Read3551(char *data) * * PreCondition: None * * Input: Pointer to a string; must be three bytes min * * Output: None * * Side-Effects: None * * Overview: * * Note: *****************************************************************************/ void Read3551(char *data) { unsigned char n; data[2] = ReadSPI(); data[1] = ReadSPI(); data[0] = ReadSPI(); } /****************************************************************************** * Function: CheckBoardConnect(void) * * PreCondition: None * * Input: None * * Output: None * * Overview: Checks if the Stimulus Board is attached. Future expansion. * * Side-Effects: None /******************************************************************************/ void CheckBoardConnect(void) { } /** EOF MCP3551.c********************************************************/ DS01007A_JP-page 22 © 2006 Microchip Technology Inc. マイクロチップデバイスのコード保護機能に関する以下の点に留意ください。 • マイクロチップの製品は各製品独自のマイクロチップデーターシートにある仕様を満たしています。 • 各製品ファミリーは、通常の状態で所定の方法で利用いただければ市場にある類似製品の中で最も安全なファミリーの一つと マイクロチップは信じております。 • 不正かつ非合法な方法を使ったコード保護機能の侵害があります。弊社の理解ではこうした手法は、マイクロチップデーター シートにある動作仕様書以外の方法でマイクロチップ製品を使用することになります。こうした手法を使用した人は、ほとん どの場合、知的財産権の侵害となります。 • マイクロチップはコードの統合性に関心をお持ちの顧客とは協働させていただきます。 • マイクロチップまたは他のセミコンダクターメーカーがコードの安全性を保証したものではありません。コード保護は製品保 護が「破られない」ということを保証するものではありません。 コード保護は常に進化します。マイクロチップは、当社製品のコード保護機能を継続的に改善することをお約束いたします。マク ロチップのコード保護機能を破ることは、デジタル・ミレニアム著作権法に違反します。こうした行為によるソフトウェアーや著 作権に関わる作品への不正アクセスがあった場合、同法に基づき賠償請求する権利があります。 本書の日本語版はユーザーの使用のために提供されます。 Microchip Technology Inc. とその子会社、関連会社、すべ ての取締役、役員、職員、代理人は翻訳の間違いにより起こ るいかなる責も負わないものとします。間違いが疑われる個 所については、Microchip Technology Inc. 発行のオリジナ ル文書を参照いただくようお奨めします。 商標 本書の日本語版はユーザーの使用のために提供されます。 Microchip Technology Inc. とその子会社、関連会社、すべ ての取締役、役員、職員、代理人は翻訳の間違いにより起こ るいかなる責も負わないものとします。間違いが疑われる個 所については、Microchip Technology Inc. 発行のオリジナ ル文書を参照いただくようお奨めします。 AmpLab、FilterLab、Migratable Memory、MXDEV、MXLAB、 PICMASTER、SEEVAL、SmartSensor、The Embedded Control Solutions Company は、米国においてマイクロチッ プテクノロジーインク の登録商標です。 本書に書かれているデバイスアプリケーション等に関する内 容は、参考情報に過ぎません。ご利用のアプリケーションが 仕様を満たしているかどうかについては、お客様の責任にお いて確認をお願いします。これらの情報の正確さ、またはこ れの情報の使用に関し、マイクロチップテクノロジーインク はいかなる表明と保証を行うものではなく、また、一切の責 任を負うものではありません。マイクロチップの明示的な書 面による承認なしに、生命維持装置あるいは生命安全用途に マイクロチップの製品を使用することはすべて購入者のリス クとし、また購入者はこれによって起きたあらゆる損害、ク レーム、訴訟、費用に関して、マイクロチップは擁護され、 免責され、損害をうけないことに同意するものとします。知 的財産権に基づくライセンスを暗示的に与えたものではあり ません。 マイクロチップの名称とロゴ、マイクロチップのロゴ、 Accuron、dsPIC、KEELOQ、microID、MPLAB、PIC、 PICmicro、PICSTART、PRO MATE、PowerSmart、rfPIC、 SmartShunt は米国及び他の国々のにおいて、マイクロチッ プテクノロジーインク の登録商標です。 Analog-for-the-Digital Age、Application Maestro、 dsPICDEM、dsPICDEM.net、dsPICworks、ECAN、 ECONOMONITOR、FanSense、FlexROM、fuzzyLAB、InCircuit Serial Programming、ICSP、ICEPIC、Linear Active Thermistor、MPASM、MPLIB、MPLINK、MPSIM、PICkit、 PICDEM、PICDEM.net、PICLAB、PICtail、PowerCal、 Powerlnfo、PowerMate、PowerTool、rfLAB、rfPICDEM、 Select Mode、Smart Serial、SmartTel、Total Endurance、 UNI/O、WiperLock、及び Zena は、米国及び他の国々のにお いて、マイクロチップテクノロジーインク の登録商標とで す。 SQTP は米国においてマイクロチップテクノロジーインクの サービスマークです。 本書に記載された上記以外の商標は、それぞれの会社の財産 です。 著作権。 © 2006 年マイクロチップテクノロジーインク、米 国で印刷。無断複写・転載を禁じます。 再生紙を使用。 マイクロチップは、1OS/TS-16949 を受けました。本社、アリゾナ 州チャンドラーとテンペとカリフォルニア州マウンテンビューにあ るデザイン及びウエハー施設に対する 2003 年 10 月品質システム認 証です。弊社の品質システムプロセスと手続きは、PICmicro® 8-bit MCUs、KEELOQ® コードホッピングデバイス、シリアル EEPROMs、 マイクロペリフェラル、非揮発性メモリーとアナログ製品を対象と しています。更に、開発システムの設計及び製造に関するマイクロ チップの品質システムは、2000 年に ISO9001 の認証を受けていま す。 © 2006 Microchip Technology Inc. DS01007A_JP-page 23 全世界の販売及びサービス拠点 AMERICAS ASIA/PACIFIC ASIA/PACIFIC EUROPE Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: http://support.microchip.com Web Address: www.microchip.com Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 India - Bangalore Tel: 91-80-4182-8400 Fax: 91-80-4182-8422 China - Beijing Tel: 86-10-8528-2100 Fax: 86-10-8528-2104 India - New Delhi Tel: 91-11-5160-8631 Fax: 91-11-5160-8632 Austria - Wels Tel: 43-7242-2244-399 Fax: 43-7242-2244-393 Denmark - Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 China - Chengdu Tel: 86-28-8676-6200 Fax: 86-28-8676-6599 India - Pune Tel: 91-20-2566-1512 Fax: 91-20-2566-1513 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 China - Fuzhou Tel: 86-591-8750-3506 Fax: 86-591-8750-3521 Japan - Yokohama Tel: 81-45-471- 6166 Fax: 81-45-471-6122 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 China - Hong Kong SAR Tel: 852-2401-1200 Fax: 852-2401-3431 Korea - Gumi Tel: 82-54-473-4301 Fax: 82-54-473-4302 China - Qingdao Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934 Atlanta Alpharetta, GA Tel: 770-640-0034 Fax: 770-640-0307 Boston Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088 Chicago Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 Dallas Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 Detroit Farmington Hills, MI Tel: 248-538-2250 Fax: 248-538-2260 Kokomo Kokomo, IN Tel: 765-864-8360 Fax: 765-864-8387 Los Angeles Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 San Jose Mountain View, CA Tel: 650-215-1444 Fax: 650-961-0286 China - Shanghai Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 China - Shenyang Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 China - Shenzhen Tel: 86-755-8203-2660 Fax: 86-755-8203-1760 China - Shunde Tel: 86-757-2839-5507 Fax: 86-757-2839-5571 China - Wuhan Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 China - Xian Tel: 86-29-8833-7250 Fax: 86-29-8833-7256 Malaysia - Penang Tel: 60-4-646-8870 Fax: 60-4-646-5086 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 Netherlands - Drunen Tel: 31-416-690399 Fax: 31-416-690340 Spain - Madrid Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 UK - Wokingham Tel: 44-118-921-5869 Fax: 44-118-921-5820 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 Taiwan - Hsin Chu Tel: 886-3-572-9526 Fax: 886-3-572-6459 Taiwan - Kaohsiung Tel: 886-7-536-4818 Fax: 886-7-536-4803 Taiwan - Taipei Tel: 886-2-2500-6610 Fax: 886-2-2508-0102 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 Toronto Mississauga, Ontario, Canada Tel: 905-673-0699 Fax: 905-673-6509 DS01007A_JP-page 24 © 2006 Microchip Technology Inc.